A full-stack task and project management platform built during my 3-month internship at NTT DATA.
TaskFlow is a web-based project and task management application designed to help teams organize projects, assign tasks, monitor progress, and collaborate efficiently.
The application provides user authentication, project and task management, team invitations, notifications, search functionality, and a containerized MongoDB database.
TaskFlow allows users to manage their work through a centralized dashboard.
Users can:
- π Create an account and securely log in
- π Access a personal dashboard
- π₯ Build teams and invite other registered users
- π Create and manage projects
- π Create and manage tasks
- π Receive notifications for team invitations
- π Search and filter tasks
- π Set optional deadlines for projects and tasks
- π Track project and task status
TaskFlow includes a complete authentication system.
- User registration
- User login
- Password hashing using bcryptjs
- JWT-based authentication
- Protected application routes
- Persistent authentication using browser storage
After authentication, each user is redirected to their personal dashboard.
The dashboard provides an overview of:
- Teams
- Projects
- Tasks
- Activity and progress
- Notifications
Tip
Users only have access to the projects and tasks associated with them.
Team creators can invite other registered users to participate in their team as members. Users are added to teams using the User ID they can copy from their profile.
The invitation system allows users to:
- See the team owner name and other members
- See the project of the team they are in it
And just the team owner who can edit on that team.
Users can create and manage projects.
Each project can contain:
- Project name
- Description
- Optional deadline
- Status
- Associated team (if it's not a personal project)
- Tasks
Supported project statuses include:
ActivePausedFinished
Any team member can create project Assigned to that team. And just the project creature and team owner (if the project is a team project and not personale) can edit on that project.
Tasks can be created and assigned to team members.
Each task contains information such as:
- Task name
- Description
- Assigned member
- Optional deadline
- Status
- Associated project
Any memeber of the team can assign task to an other team member Just the creatre of the task and the creature of the project this task is part of it and the creature of the team that project is in it can edit on the task. The task dashboard also provides search and filtering functionality to quickly find tasks within projects. And every one can see just the tasks assigned to him and task he create.
TaskFlow includes a notification system for user interactions such as team invitations.
Notifications allow users to stay informed about important events related to their projects and teams.
TaskFlow uses MongoDB to store application data, including:
- Users
- Projects
- Tasks
- Teams
- Notifications
MongoDB runs inside a Docker container as part of the application's containerized environment.
TaskFlow follows a client-server architecture:
βββββββββββββββββββββββ
β Browser β
β React Frontend β
ββββββββββββ¬βββββββββββ
β
β HTTP / REST API
βΌ
βββββββββββββββββββββββ
β Express.js β
β Backend β
ββββββββββββ¬βββββββββββ
β
β Mongoose
βΌ
βββββββββββββββββββββββ
β MongoDB β
β Database β
βββββββββββββββββββββββ
The application can be fully containerized using Docker.
- HTML5
- CSS3
- JavaScript
- Nginx
- Node.js
- Express.js
- REST API
- JWT
- bcryptjs
- MongoDB
- Mongoose
- Git
- GitHub
- Docker
TaskFlow/
β
βββ frontend/
β βββ pages/
| | βββ scripts/
| | βββ styles/
| | βββ src/
| | βββ dashboard.html
| | βββ login.htm
β βββ nginx.conf
β βββ Dockerfile
β
βββ backend/
β βββ models/
β βββ routes/
β βββ middleware/
β βββ config/
| βββ package.json
| βββ Dockerfile
β
βββ docker-compose.yml
βββ .env
βββ .gitignore
βββ README.md
The exact structure may vary depending on the current version of the project.
Make sure you have installed:
Clone the repository:
git clone https://github.com/Oanekrif/TaskFlow.gitMove into the project directory:
cd TaskFlowStart the application:
docker compose up --buildThe containers will start the required services, including:
- Frontend
- Backend
- MongoDB
To stop the application:
docker compose downCreate the required environment configuration for the backend.
Example:
PORT=5000
MONGO_URI=mongodb://mongodb:27017/taskflow
JWT_SECRET=your_secret_keyThe backend exposes REST API endpoints for managing:
Authentication
Users
Projects
Tasks
Teams
Notifications
Example API structure:
/api/auth
/api/users
/api/projects
/api/tasks
/api/teams
/api/notifications
TaskFlow implements several security mechanisms:
- Password hashing with
bcryptjs - JWT authentication
- Protected API routes
- Authentication middleware
- Environment variables for sensitive configuration
- User-based access control
Passwords are never stored in plain text.
The main objectives of TaskFlow were to:
- Develop a complete full-stack web application
- Implement a frontend architecture
- Design and consume REST APIs
- Implement authentication and authorization
- Work with a NoSQL database
- Implement relationships between users, teams, projects, and tasks
- Containerize the application using Docker
- Apply software development concepts in a professional environment
TaskFlow was developed as part of my 3-month internship at NTT DATA.
During the project, I worked on different aspects of full-stack development, including:
- Frontend development
- Backend development
- REST API design
- Authentication
- Database design
- Docker containerization
- API integration
- Debugging and troubleshooting
The project allowed me to apply software engineering concepts in a professional environment and gain practical experience developing and deploying a complete web application.
Working on TaskFlow helped me strengthen my understanding of:
- Full-stack web development
- React.js
- Node.js and Express.js
- REST APIs
- MongoDB and Mongoose
- JWT authentication
- Password security
- Docker and Docker Compose
- Nginx
- Git and GitHub
- Debugging and problem solving
- Software architecture



