Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 035f093

Browse files
update README.md
1 parent 6cc8499 commit 035f093

File tree

1 file changed

+1
-55
lines changed

1 file changed

+1
-55
lines changed

‎README.md‎

Lines changed: 1 addition & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -10,62 +10,8 @@
1010
[![Python 3](https://pyup.io/repos/github/JacobGrisham/Finance-Full-Stack-Web-App-using-Flask-and-SQL/python-3-shield.svg)](https://pyup.io/repos/github/JacobGrisham/Finance-Full-Stack-Web-App-using-Flask-and-SQL/)
1111
</div>
1212

13-
## Homework from [Harvard's Introduction to Computer Science CS50 hosted on eDX](https://www.edx.org/course/cs50s-introduction-to-computer-science)
14-
## 🎓 [Web Track](https://cs50.harvard.edu/x/2020/tracks/web/)
15-
- [Finance](https://cs50.harvard.edu/x/2020/tracks/web/finance/): Web application via which you can manage portfolios of stocks. This tool allows you to check real stocks’ actual prices and portfolios’ values, it will also let you buy (okay, "buy") and sell (okay, "sell") stocks by querying [IEX Stock Quote API](https://iexcloud.io/docs/api/#quote) for stocks’ prices.
16-
- I wrote all the code in the templates directory. I wrote most of the code in application.py. Some of the code in helpers.py was provided by instructor
17-
- I styled the application myself, with illustrations provided by [Freepik](http://www.freepik.com/).
13+
## Homework from [Harvard's Introduction to Computer Science CS50 hosted on eDX](https://www.edx.org/course/cs50s-introduction-to-computer-science) 🎓 [Web Track](https://cs50.harvard.edu/x/2020/tracks/web/) - [Finance](https://cs50.harvard.edu/x/2020/tracks/web/finance/)
1814

19-
![Finance Program Demo](img/demo.gif)
20-
21-
## 💡Lessons Learned
22-
- Database design and Create, Read, Update in SQL
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
26-
- Python Class/Models and Schemas
27-
- [Jinja](https://jinja.palletsprojects.com/en/2.11.x/) templating
28-
- 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/)
30-
- Parsing data from API with python
31-
- Parsing data from SQL queries with python
32-
- Calculations using data from API and database
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
43-
44-
## 🛠 Technologies
45-
|Graphic Design |Front-End |Back-End |Database |Deployment |Testing |
46-
| ------------- | ------------- | ------------- | ------------- | ------------- | --------------|
47-
|Inkscape |HTML5 |Python3 |MySQL |AWS EC2 |Pytest |
48-
|Freepik |CSS3 |Flask |SQL Alchemy |Ubuntu |Lighthouse |
49-
|. |Bootstrap 4 |Werkzeug |Flask SQL Alchemy|Gunicorn |. |
50-
|. |Jinja |. |Redis |Nginx |. |
51-
|. |. |. |. |Sentry |. |
52-
|. |. |. |. |AWS RDS |. |
53-
|. |. |. |. |AWS Elasticache|. |
54-
|. |. |. |. |AWS Cloudfront |. |
55-
|. |. |. |. |Travis CI |. |
56-
|. |. |. |. |AWS CodeDeploy |. |
57-
58-
## ⚖️ Methodology
59-
- 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/).
62-
63-
## ⚙️ Features
64-
- Login, sign-up
65-
- Security to prevent certain transactions using error codes 400-404
66-
- Create, Read, and Update for stocks
67-
68-
## 📐 Tests
6915

7016
## 🚀 Getting Started
7117
### To run this project on your system:

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /