Project ContextWe have seen the use of client-side technologies in earlier assignments. This assignment
completes the previous assignment to generate a complete project, where we have a complete
working application by extending the client-side tech to server-side backings to enable dynamic
frontend and data persistence. We extend our knowledge of REST APIs, database, Cloud to
construct a complete application.
Web communication has an inherent flaw of MITM attacks, we mitigate one of the snooping
vulnerabilities by encrypting our traffic between client and the server by using a reverse proxy
to handle HTTPS.
Features to be implemented (minimum requirements)
As an unregistered user, I want to see all person profiles that exist in the database in a UI
structure defined in previous frontend assignment (in one single page, all user profiles stacked
one on top of another).
1. The application should be containerized
2. Create a docker-compose.yml file that constitutes at least 3 services:
a. Mongodb database
b. Your application image.
C. Reverse proxy to communicate over https (caddy or equivalent)
3. docker compose up` should serve the app locally on port 3000 in development and
443(HTTPS) on your EC2 instance.
4. The application should be accessible over the internet using HTTPS protocol.
5. Once started, the application must display the frontend based on Bootstrap CSS
framework (build on the Frontend developed in the last assignment). With multiple user
profiles listed one after the other.6. The application should read data from the containerized database instance (please stick
to mongodb for now). The data read must be an object with at least the following
attributes:
a. Full Name
b. Full Bio
c. Profile picture URL.
7. After user objects from the database are fetched, they should be passed to the view
where they will be enumerated and hence displayed.
8. Insertion of user objects into the database can be done manually by the system
administrator.Process
1. Spin up an express application skeleton using express-generator tool. (‘express -e`)
2. Port over your front-end assignment into the current app.
3. Write your docker file to build an image from this application!
4. Connect to a local instance of mongodb
5. Add code to fetch data in mongodb.
6. Pass along this data to the view and render the same over there.
7. Build up your app and a mongodb as services in a docker compose file. Expose
appropriate ports
8. Make sure this app works locally!
9. Push it to GitHub repository
10. Connect to your EC2 instance, pull the repo, then start your project on EC2 and make
sure it works!
11. Modify your docker file to add caddy to enable HTTPSDeliverables
1. Text data in a single readme.txt file:
a. GitHub Repo link
b. Link to your EC2 deployed link.
2. Code Artifacts:
a. Remove your “node_modules” directory from the project!!
b. Paste the rest of your code in a single directory called “source_code”
c. Submit the zipped “source_code”