📝Papier is a simple note taking app where you can pay to store your important notes.
The project was developed with the purpose of learning the serverless computing model, also known as "Functions as Service" (FaaS), and some of the technologies available in the Amazon AWS platform.
Check out how it looks:
This project was developed with the following technologies:
- AWS Lambda: for the serverless API
- API Gateway: to create, publish, maintain, monitor, and secure APIs
- Serveless Framework: to deploy backend applications as independent functions
- Cognito: for user authentication and securing the API
- DynamoDB: for the database
- Amazon S3: for hosting the app and file uploads
- Stripe: for processing credit card payments
- AWS SDK: for facilitate access to the AWS Services
- Seed: for automating Serverless deployments
- Sentry: for error reporting
- React: for the single page app
- React Router Dom: for routing
- React Bootstrap: for the UI kit
- Context API: provides a way to pass data through the component tree without having to pass props down manually at every level
- Jest Dom: for unit tests
- AWS Amplify: for easily connect to the backend
- React Stripe: for accepting credit card payments in React
- React Icons: for include popular icons in our project
- Netlify: for automating React deployments
First, we have the Cognito User Pool that is going to store all users and help sign in and sign them up. Once a user has been authenticated, he/she is verified with the Cognito Identity Pool, and then assigned to an IAM role. This role limits what the user has access to in the AWS account. So in summary, an authenticated user has access to two resources:
- Files in the S3 bucket that are inside a folder with their federated identity id as the name of the folder.
- The APIs we deployed using API Gateway.
We also have the API Gateway that handles any requests are done to our endpoints by sending them to the respective Lambda function. Since our DynamoDB database is not exposed publicly, it is only invoked by the Lambda functions. Finally, we use an S3 bucket to help our users upload files as attachments for their notes directly.
[Under Construction]
This project is under the MIT license. See the LICENSE for more information.
Made with ☕ and ❤️ by Natalie Bravo.