You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+42-24Lines changed: 42 additions & 24 deletions
Original file line number
Diff line number
Diff line change
@@ -20,28 +20,45 @@
20
20
21
21
## 💡Lessons Learned
22
22
- Database design and Create, Read, Update in SQL
23
-
- Rewrote the entire application to use Flask SQL Alchemy
24
-
- Developed MVP of application with SQLite locally and Deployed with MySQL on [RDS](https://aws.amazon.com/rds/) instance
25
-
- Using Flask as a server-side framework
23
+
- Rewrote the entire application to use [Flask SQL Alchemy](https://flask-sqlalchemy.palletsprojects.com/en/2.x/), an extension of [SQL Alchemy](https://www.sqlalchemy.org/)
24
+
- Developed MVP of application with [SQLite](https://www.sqlite.org/index.html) locally and Deployed with [MySQL](https://www.mysql.com/)
25
+
- Using [Flask](https://flask.palletsprojects.com/en/1.1.x/) as a server-side micro-framework
- Password hashing using [Werkzeug](https://werkzeug.palletsprojects.com/en/1.0.x/)
29
+
- Caching user sessions with [Redis](https://redis.io/) and [Flask-sessions](https://flask-session.readthedocs.io/en/latest/)
29
30
- Parsing data from API with python
30
31
- Parsing data from SQL queries with python
31
32
- Calculations using data from API and database
32
-
- Continous integration and continuous deployment with Travis CI
33
-
- Deploying application to AWS with [Elastic Beanstalk](https://aws.amazon.com/elasticbeanstalk/) instance and SQL database to a separate [RDS](https://aws.amazon.com/rds/) instance
34
-
- Using AWS Cloudfront as Content Delivery Network (CDN) and connecting Google Domains custom domain to AWS CDN
33
+
- Hosting application on AWS with an [EC2](https://aws.amazon.com/ec2/) instance with an [Ubuntu](https://ubuntu.com/) operating system, [Gunicorn](https://gunicorn.org/) WSGI HTTP server, and [Nginx](https://www.nginx.com/) front-end reverse proxy
34
+
- Using [Ubuntu](https://ubuntu.com/) as an operating system
35
+
-[Gunicorn](https://gunicorn.org/) configuration and error-logging
36
+
-[Nginx](https://www.nginx.com/) configuration and server security/performance optimization
37
+
- Hosting MySQL database on AWS with a [RDS](https://aws.amazon.com/rds/) instance
38
+
- Hosting Redis cache on AWS with an [Elasticache](https://aws.amazon.com/elasticache/) instance
39
+
- Using AWS Cloudfront as a Content Delivery Network (CDN) and connecting Google Domains custom domain to AWS CDN
40
+
- Error logging with [Sentry](https://sentry.io/welcome/) for hosted application in production
41
+
- Continous integration and continuous deployment with [Travis CI](https://travis-ci.org/) and AWS CodeDeploy
42
+
- (Deprecated) Hosting application on AWS with an [Elastic Beanstalk](https://aws.amazon.com/elasticbeanstalk/) instance and MySQL database on AWS with a [RDS](https://aws.amazon.com/rds/) instance
- Initially hosted application on AWS [Elastic Beanstalk](https://aws.amazon.com/elasticbeanstalk/) for a gradual introduction to AWS. Previously only used Heroku to host full-stack web applications, so I chose a similar IaaS offered by AWS. After numerous Elastic Beanstalk policy changes and disconnections, decided to go to the next level down in AWS, which is hosting this application on an EC2 instance. This offered a lot of experience and opportunities for learning about web servers.
60
+
- Ubuntu as OS since it's the most popular operating system for web servers. Gunicorn as the WSGI since it's fast. Nginx as the reverse proxy since it was made with this optimization in mind.
61
+
- Initially stored user sessions in a tmp folder with [`mkdtemp`](https://docs.python.org/3/library/tempfile.html), however Nginx had trouble accessing it in production. Therefore refactored application to store user sessions in a Redis database and hosted the Redis database on AWS [Elasticache](https://aws.amazon.com/elasticache/).
45
62
46
63
## ⚙️ Features
47
64
- Login, sign-up
@@ -52,8 +69,13 @@
52
69
53
70
## 🚀 Getting Started
54
71
### To run this project on your system:
72
+
- Ensure that `python3` and `python3-pip` are installed on your system
55
73
- In your terminal, navigate to the root project directory and run the following commands
0 commit comments