A full-stack Task Manager Web application built with Flask and React. User can register themselves, login using their credentials, and manage their tasks. The application focuses on JWT authentication, REST APIs, and CRUD operations.
👉Click here to watch the demo video
- User registration and login.
- Password hashing using Bcrypt.
- JWT based authentication.
- Protected routes using access token.
- Create Task.
- View all tasks belonging to the logged in user.
- Update tasks details and completion status.
- Delete tasks.
- Each task is strictly associated with a single user.
- JWT token validation for protected endpoints.
- User Specific task access using token identity.
- Passwords stored only in hashed form.
- Python
- Flask
- REST APIs
- JWT
- Gunicorn
- Nginx
- React
- Postman
- Git and Github
- vercel (frontend)
- EC2 (backend)
The backend is implemented as a single Flask application file, to keep the system simple and easy. within the file, the application logic is organized into clear logical sections :
-
Configuration & Initialization : Application setup, CORS configuration, environment variable loading, database initialization using SQLAlchemy, JWT Configuration and Password hashing using BCrypt.
-
Data Models : Two database models is defined:
User- stores user credentials with securly hashed passwords.Task- stores task details and maintains a foreign key relationship with the user.
-
Authentication Logic : Registration and login endpoints handle user creation and authentication. JWT access tokens are generated upon successful login and is required for accessing protected routes.
-
Protected Task APIs : Task related CRUD endpoints are protected using JWT authentication. The User identity extracted from the token is used to ensure that users can only access and modify their own tasks.
-
Request Flow : requests are validated, authenticated, processed, persisted using SQLAlchemy and returned as JSON response.
- User registers or logs in.
- Backend validates credentials and generate a JWT token.
- Token is sent with each protected API request.
- Backend extracts user identity from the token.
- User Specific tasks are created, viewed, updated or deleted.
- User logs out and the token is deleted from the LocalStorage.
- will paste the structure from github
- APIs tested using Postman.
- Authentication and Authorization verified.
- Landing Page
- Register / Login
- Dashboard
- Create Task
- View Tasks
- Update Tasks
- Delete Tasks
- Task Priorities with due-dates.
- Pagination and Filtering.
- Redis Caching.
- Docker Deployment.
- Performance Testing.
Raju Das | Backend Engineer.