|
1 |
| -# Managin your personal tasks (both the backend API and frontend UI) |
| 1 | +# Managing your personal tasks (both the backend API and frontend UI) |
2 | 2 |
|
3 | 3 | There are a lot of options to choose from when it comes to building a web application. Every step of the way, from the frontend to the backend to deployment, you'll have to choose the tools and technologies. This can be overwhelming.
|
4 | 4 |
|
5 |
| -Which backend framework? What about the testing library? |
6 |
| -Which JavaScript framework? |
7 |
| -Should I use a SQL or NoSQL database? |
8 |
| -Should I deploy to some cloud provider? Will that cost me a lot? |
9 |
| -What about scalability of my application? |
10 |
| -How should I deploy it? Manually or CI/CD? |
11 |
| -If you want to build modern, insanely scalable applications that run on AWS for low prices this is course for you. It will teach you how to: |
12 |
| - |
13 |
| -Build serverless FastAPI APIs that run on AWS Lambda |
14 |
| -Use DynamoDB as the main database for your applications |
15 |
| -Deploy FastAPI apps to AWS Lambda using CI/CD on GitHub Actions and Serverless Framework |
16 |
| -Use Cognito for authentication inside your APIs |
17 |
| -Consume the backend FastAPI API from the frontend Vue application |
18 |
| -Deploy Vue applications to S3 |
19 |
| -Use Cognito for authentication inside Vue applications |
20 |
| -Serve your applications with CloudFront CDNs on custom domains |
21 |
| -Set up monitoring and alerting for your applications with CloudWatch |
| 5 | +- Which backend framework? What about the testing library? |
| 6 | +- Which JavaScript framework? |
| 7 | +- Should I use a SQL or NoSQL database? |
| 8 | +- Should I deploy to some cloud provider? Will that cost me a lot? |
| 9 | +- What about scalability of my application? |
| 10 | +- How should I deploy it? Manually or CI/CD? |
| 11 | + |
| 12 | + |
| 13 | +### We want to show how to build modern, insanely scalable applications that run on AWS. This project shows how to: |
| 14 | + |
| 15 | +- Build serverless FastAPI APIs that run on AWS Lambda |
| 16 | +- Use DynamoDB as the main database for your applications |
| 17 | +- Deploy FastAPI apps to AWS Lambda using CI/CD on GitHub Actions and Serverless Framework |
| 18 | +- Use Cognito for authentication inside your APIs |
| 19 | +- Consume the backend FastAPI API from the frontend Vue application |
| 20 | +- Deploy Vue applications to S3 |
| 21 | +- Use Cognito for authentication inside Vue applications |
| 22 | +- Serve your applications with CloudFront CDNs on custom domains |
| 23 | +- Set up monitoring and alerting for your applications with CloudWatch |
22 | 24 |
|
23 | 25 | ## App overview
|
24 | 26 |
|
25 | 27 | Deploys a web application (both the backend API and frontend UI) for managing your personal tasks. We'll cover the following use cases:
|
26 | 28 |
|
27 |
| -create a task |
28 |
| -list open tasks |
29 |
| -list closed tasks |
30 |
| -close a task |
31 |
| -You'll set up a git repository from scratch, build the API, set up a CI/CD pipeline, build a DynamoDB data model, use Cognito for authentication, build a Vue application, monitor your application, and deploy new versions of the application. |
| 29 | +- create a task |
| 30 | +- list open tasks |
| 31 | +- list closed tasks |
| 32 | +- close a task |
| 33 | + |
| 34 | +In this git repository, we shall build the API, set up a CI/CD pipeline, build a DynamoDB data model, use Cognito for authentication, build a Vue application, monitor your application, and deploy new versions of the application. |
32 | 35 |
|
33 | 36 | ## Tools, Frameworks, and Services
|
34 | 37 |
|
35 | 38 | ### GitHub
|
36 | 39 | GitHub is a solution for managing the full software development lifecycle. You'll use it for:
|
37 | 40 |
|
38 |
| -external git repository |
39 |
| -CI/CD pipeline |
| 41 | +- external git repository |
| 42 | +- CI/CD pipeline |
| 43 | + |
40 | 44 | You can replace it with:
|
41 | 45 |
|
42 |
| -Bitbucket (with pipelines) |
43 |
| -GitLab |
44 |
| -GitHub + CircleCI |
| 46 | +- Bitbucket (with pipelines) |
| 47 | +- GitLab |
| 48 | +- GitHub + CircleCI |
45 | 49 |
|
46 | 50 | ### Poetry
|
47 | 51 | Poetry is a tool used for Python dependency management. You'll use it for managing dependencies.
|
48 | 52 |
|
49 | 53 | You can replace it with:
|
50 | 54 |
|
51 |
| -pip |
52 |
| -pipenv |
| 55 | +- pip |
| 56 | +- pipenv |
53 | 57 |
|
54 | 58 | ### FastAPI
|
55 | 59 | FastAPI is a high-performance, easy-to-learn, fast-to-code, ready-for-production web framework for building APIs with Python. You'll use it for building a web application.
|
56 | 60 |
|
57 | 61 | You can replace it with:
|
58 | 62 |
|
59 |
| -Flask |
60 |
| -Django |
61 |
| -Pyramid |
| 63 | +- Flask |
| 64 | +- Django |
| 65 | +- Pyramid |
62 | 66 |
|
63 | 67 | ### Vue
|
64 | 68 | Vue is a an approachable, performant, and versatile framework for building web user interfaces with JavaScript/TypeScript. You'll use it for building a web application.
|
65 | 69 |
|
66 | 70 | You can replace it with:
|
67 | 71 |
|
68 |
| -React |
69 |
| -Svelte |
70 |
| -Angular |
| 72 | +- React |
| 73 | +- Svelte |
| 74 | +- Angular |
71 | 75 |
|
72 | 76 | ### pytest
|
73 | 77 | The pytest framework makes it easy to write Python tests. You'll use it to write tests for the web application.
|
74 | 78 |
|
75 | 79 | You can replace it with:
|
76 | 80 |
|
77 |
| -unittest |
78 |
| -nose |
| 81 | +- unittest |
| 82 | +- nose |
79 | 83 |
|
80 | 84 | ### AWS DynamoDB
|
81 | 85 | Amazon DynamoDB is "fast, flexible NoSQL database service for single-digit millisecond performance at any scale". You'll use it to persist data used by the web application.
|
82 | 86 |
|
83 | 87 | You can replace it with:
|
84 | 88 |
|
85 |
| -Postgres |
86 |
| -MongoDB |
| 89 | +- Postgres |
| 90 | +- MongoDB |
87 | 91 |
|
88 | 92 | ### AWS Cognito
|
89 | 93 | Amazon Cognito is AWS service that simplifies authentication management by a lot. You'll use it sign-up and sign-in your users.
|
90 | 94 |
|
91 | 95 | You can replace it with:
|
92 | 96 |
|
93 |
| -Auth0 |
94 |
| -Okta |
| 97 | +- Auth0 |
| 98 | +- Okta |
95 | 99 |
|
96 | 100 | ### AWS Cloudwatch
|
97 | 101 | Amazon CloudWatch is a monitoring and observability service. You'll use it to gather and search logs and monitor resources (like CPU and memory usage) used by the web application.
|
98 | 102 |
|
99 | 103 | You can replace it with:
|
100 | 104 |
|
101 |
| -Prometheus |
102 |
| -Datadog |
103 |
| -New Relic |
104 |
| -Splunk |
| 105 | +- Prometheus |
| 106 | +- Datadog |
| 107 | +- New Relic |
| 108 | +- Splunk |
105 | 109 |
|
106 | 110 | ### AWS Lambda
|
107 | 111 | AWS Lambda is a serverless, event-driven compute service that lets you run code for virtually any type of application or backend service without provisioning or managing servers. You'll use it to run API of your web application.
|
108 | 112 |
|
109 | 113 | You can replace it with:
|
110 | 114 |
|
111 |
| -Azure Functions |
112 |
| -GCP Cloud Functions |
| 115 | +- Azure Functions |
| 116 | +- GCP Cloud Functions |
113 | 117 |
|
114 | 118 | ### CloudFormation
|
115 | 119 | CloudFormation is an AWS service used to model, provision, and manage AWS resources. You'll use it to manage the AWS infrastructure (DNS, CloudFront, etc.) required for running your application.
|
116 | 120 |
|
117 | 121 | You can replace it with:
|
118 | 122 |
|
119 |
| -Terraform |
120 |
| -Ansible |
121 |
| -Pulumi |
| 123 | +- Terraform |
| 124 | +- Ansible |
| 125 | +- Pulumi |
122 | 126 |
|
123 | 127 | ### Serverless Framework
|
124 | 128 | Serverless Framework is framework used for developing, deploying, troubleshooting, and securing your serverless applications. You'll use it to manage application resources, like AWS Lambda functions and environment variables, and deploying your applications.
|
125 | 129 |
|
126 | 130 | You can replace it with:
|
127 | 131 |
|
128 |
| -Zappa |
129 |
| -Chalice |
| 132 | +- Zappa |
| 133 | +- Chalice |
130 | 134 |
|
131 | 135 | ### CloudFront
|
132 | 136 | CloudFront is low-latency content delivery network. You'll use it to serve the Vue application from S3 and API from Lambda.
|
133 | 137 |
|
134 | 138 | You can replace it with:
|
135 | 139 |
|
136 |
| -Cloudflare |
137 |
| -Google Cloud CDN |
138 |
| -Microsoft Azure CDN |
| 140 | +- Cloudflare |
| 141 | +- Google Cloud CDN |
| 142 | +- Microsoft Azure CDN |
139 | 143 |
|
140 | 144 | ### Codecov
|
141 | 145 | Codecov is service that helps you track the coverage of your code. You can track changes and compare branches and commits. It helps to focus on changes instead of the current code coverage percentage.
|
142 | 146 |
|
143 | 147 | You can replace it with:
|
144 | 148 |
|
145 |
| -Coveralls |
146 |
| -Github Action Code Coverage Report |
| 149 | +- Coveralls |
| 150 | +- Github Action Code Coverage Report |
147 | 151 |
|
148 | 152 | ### Mangum
|
149 | 153 | Mangum is an adapter for running ASGI applications in AWS Lambda environment. It handles API Gateway events sent to Lambda and responses returned from ASGI application.
|
|
0 commit comments