This is a TypeScript project that utilizes Express.js and SQL for building a todo list web server. The application covers following functionalities.
- A user is able to add new task(s)
- A user is able to retrieve all the tasks created by him/her
- A user is able to mark the task(s) as completed
- A user is able to delete a particular task
- Before creating a task, a user needs to register via the signUp endpoint.
- Users can only view the tasks they have created.
1. Typescript
2. Express
3. ORM: Prisma
4. SQL: Postgres
5. Jest
1. React
2. Axios
3. Jest
- Some of the improvements are mentioned in
Improvement
section in backend/readMe.md - In order to ensure security of the system, add stricter checks on header values and request body pattern check
- Other than that, for the overall project common linting needs to be added.
- Managing to different packages is tedious with 2 package.json. I would create a shared package.json and bundle it in an efficient way.
- Handle more edge case scenarios for both backend and frontend
- Frontend has very basic functionality, a lot more could be added on the validation and performance side. Like optimizing rendering and preventing re-rendering of components.
- Improvement on UI/UX of frontend
- In order to support offline support, add localStorage API, sync the data with the server when user is online handling conflict that could arise
To get started with the project, follow these steps:
- Clone the repository:
git clone https://github.com/madeehagh/todo-app
- Run
nvm use
to install node version mentioned in .nvmrc,nvm install
if the version is not installed on your system - Install the dependencies:
npm install
- Steps to set up backend is mentioned in backend/readMe.md
- Steps to set up frontend is mentioned in frontend/README.md
Make sure to set up the backend before setting up the frontend to ensure proper functionality.
Feel free to explore the individual readMe.md
files in the backend
and frontend
directories for more detailed instructions.