Serverless journal application where a user can pen down their thoughts, feelings and inspired images.
- The application allows users to create, update, delete diary items.
- The application allows users to upload a file.
- The application only displays items/Diaries for a logged in user.
- A user needs to authenticate in order to use an application
- The code is split into multiple layers separating business logic from I/O related code.
- Code is implemented using async/await and Promises without using callbacks.
- All resources in the application are defined in the
serverless.yml
file. - Each function has its own set of permissions.
- Application has sufficient monitoring.
- HTTP requests are validated.
- Data is stored in a table with a composite key.
KeySchema:
- AttributeName: partitionKey
KeyType: HASH
- AttributeName: sortKey
KeyType: RANGE
- items are fetched using the
query()
method and notscan()
method (which is less efficient on large datasets)
To deploy an application run the following commands:
cd backend
npm install
npx serverless deploy -v
To run a client application first edit the client/src/config.ts
file to set correct parameters. And then run the following commands:
cd client
npm install
npm run start