This project is a Note-Making Application developed using the Serverless Framework, AWS services, React, and Node.js. The application allows users to create, update, delete, and manage notes in a serverless environment, leveraging AWS Lambda, API Gateway, DynamoDB, and other AWS services for the backend, and a React-based frontend to manage user interactions.
- Serverless Framework: A framework for building and deploying serverless applications. It simplifies the deployment of functions to AWS Lambda.
- AWS: Amazon Web Services for hosting serverless functions and APIs, using services like Lambda, API Gateway, and DynamoDB.
- React: A JavaScript library for building user interfaces, particularly for building the client-side of the note-making application.
- Node.js: JavaScript runtime used for developing the backend API using serverless functions.
Here’s a breakdown of the folder structure:
```bash
SERVERLESS-INT/
├── serverless-stack-api/ # Backend (Serverless API)
│ ├── node_modules/ # Backend dependencies
│ ├── notes-api/ # Notes API functions
│ │ └── tests/ # Unit tests for the API
│ ├── .gitignore # Ignore file for version control
│ ├── fenv.example # Sample environment variables
│ ├── handler.js # Lambda function handlers
│ ├── LICENSE # License file
│ ├── package.json # Node.js backend config
│ ├── package-lock.json # Lock file for backend dependencies
│ └── serverless.yml # Serverless config for AWS resources
├── serverless-stack-client/ # Frontend (React app)
│ ├── node_modules/ # Frontend dependencies
│ ├── public/ # Static assets
│ │ ├── *.png, *.svg, favicon.ico # Icons and favicons
│ │ ├── index.html # HTML entry point
│ │ ├── manifest.json # PWA config
│ │ └── style.css # Global styles
│ ├── src/ # Source code
│ │ ├── components/ # Reusable React components
│ │ │ ├── AuthenticatedRoute.js
│ │ │ ├── LoaderButton.{js,css}
│ │ │ ├── UnauthenticatedRoute.js
│ │ ├── containers/ # Page-level components
│ │ │ ├── ChangeEmail.{js,css}
│ │ │ ├── ChangePassword.{js,css}
│ │ │ ├── Home.{js,css}
│ │ │ ├── Login.{js,css}
│ │ │ ├── NewNote.{js,css}
│ │ │ ├── Notes.{js,css}
│ │ │ ├── NotFound.js
│ │ │ ├── ResetPassword.{js,css}
│ │ │ ├── Settings.{js,css}
│ │ │ ├── Signup.{js,css}
│ │ ├── hooks/ # Custom React hooks
│ │ │ ├── awsLib.js
│ │ │ ├── contextLib.js
│ │ │ ├── errorLib.js
│ │ │ └── hooksLib.js
│ │ ├── App.js # Main app component
│ │ ├── App.css # Global styles
│ │ ├── App.test.js # App test file
│ │ ├── config.js # App configuration
│ │ ├── index.js # React entry point
│ │ ├── index.css # Global styles
│ │ ├── reportWebVitals.js # Performance measurement
│ │ ├── Routes.js # Routing setup
│ │ └── setupTests.js # Test environment config
│ ├── .gitignore # Ignore file for frontend
│ ├── package.json # React dependencies config
│ ├── package-lock.json # Lock file for frontend
│ ├── serverless.yml # Serverless frontend config
│ └── README.md # Frontend documentation
```