Skip to content

Simple Todo Application with React.Js & Node.Js. Converted the Js to Ts while learning Ts

Notifications You must be signed in to change notification settings

Dipto1971/Todo_Applicaton

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

35 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Todo Application (MERN Stack)

This Todo application is a comprehensive project developed to explore and solidify concepts in the MERN stack, emphasizing security, efficient state management, type safety, and production-ready practices.

Goal of the Application

The primary goal of this project is to gain a thorough understanding of building a scalable and secure web application using the MERN stack. It is designed to explore best practices for building real-world applications, including setting up secure authentication, managing data flow efficiently, and enforcing strict type-checking with TypeScript. This application serves as a learning platform for integrating advanced tools and libraries that enhance both developer experience and application performance.

What I Implemented

  • JWT Authentication: Implemented JWT-based authentication to securely manage user sessions, ensuring that only authenticated users can access the application and manage their Todos.
  • CRUD Operations: Enabled full CRUD functionality for Todos, allowing users to create, read, update, and delete tasks seamlessly.
  • Recoil for State Management: Utilized Recoil to manage state in a granular way by defining atoms, which streamline component rendering and improve React loading efficiency.
  • TypeScript (Strict Mode): Converted JavaScript code to TypeScript with strict mode enabled, adding type safety and improving code readability and reliability across both frontend and backend.
  • Zod for Schema Validation: Integrated Zod to validate data structures on both frontend and backend, ensuring that the data flow is consistent, secure, and free from unexpected data shapes.
  • Process Management with pm2: Configured pm2 to manage backend processes in production, enhancing the stability and monitoring of server operations.

What I Learned

  • Authentication and Security: Gained a deep understanding of secure JWT implementation and best practices for managing authentication tokens, session storage, and user authorization.
  • State Management Precision: Learned how to effectively manage state with Recoil's atoms and selectors, providing precise control over component re-rendering and data flow in React.
  • Type Safety with TypeScript: Experienced the benefits of TypeScript in structuring scalable code, catching errors at compile time, and improving code quality with strict mode enabled.
  • Data Validation with Zod: Learned how to utilize Zod for schema validation, safeguarding the application from invalid data inputs and ensuring data integrity on both frontend and backend.
  • Production Readiness with pm2: Discovered the advantages of using pm2 to deploy and monitor the backend server, ensuring consistent uptime and simplifying process management.

Tech Stack

  • Frontend: React.js (with TypeScript), Recoil for state management, Zod for data validation
  • Backend: Node.js, Express.js
  • Database: MongoDB
  • Authentication: JSON Web Token (JWT)
  • Process Management: pm2 for handling server processes in production

Installation and Usage

  1. Clone the repository and install dependencies:

    git clone https://github.com/your-username/todo-app.git
    cd todo-app
    cd server && npm install
    cd ../client && npm install
  2. Set up environment variables (see Environment Variables) and start both server and client:

    pm2 start server/server.js --name todo-server
    npm start (in client directory)
  3. Visit http://localhost:3000 to access the app.


This project showcases an in-depth, hands-on approach to building a feature-rich application that highlights best practices in the MERN stack. Feel free to reach out if you have further questions or suggestions!

About

Simple Todo Application with React.Js & Node.Js. Converted the Js to Ts while learning Ts

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published