A modern task management system built with FastAPI, React, and SQLAlchemy.
-
User Management
- User registration and authentication
- JWT-based authentication
- Password hashing with bcrypt
-
Task Management
- Create, read, update tasks
- Task status tracking
- Priority levels
- Due date management
- Task assignment
-
Comments System
- Add comments to tasks
- Track comment history
- User attribution
-
Modern UI
- React-based frontend
- Responsive design with Tailwind CSS
- Real-time updates
- Interactive dashboard
- Beautiful task cards
-
Security
- JWT authentication
- Password hashing
- Role-based access control
- Input validation
- Framework: FastAPI
- Database: SQLite with SQLAlchemy ORM
- Authentication: JWT tokens
- Password Hashing: bcrypt
- API Documentation: Swagger/OpenAPI
- Data Validation: Pydantic
- Framework: React
- State Management: Zustand
- Styling: Tailwind CSS
- Forms: React Hook Form
- API Client: Axios
- Data Fetching: React Query
- Routing: React Router
-
Create a virtual environment:
python -m venv venv source venv/bin/activate # Linux/Mac venv\Scripts\activate # Windows
-
Install backend dependencies:
pip install -r requirements.txt
-
Navigate to the frontend directory:
cd frontend
-
Install frontend dependencies:
npm install
- Activate the virtual environment (if not already activated)
- Run the FastAPI server:
python main.py
- Access the API documentation at http://localhost:8001/docs
- In a new terminal, navigate to the frontend directory
- Start the development server:
npm start
- Access the application at http://localhost:3000
- Task statistics
- Recent activities
- Priority distribution
- Status overview
- Create new tasks
- Assign tasks to users
- Set priorities and due dates
- Track task status
- Add comments and updates
- User registration
- Profile management
- Task assignment
- Activity tracking
The application uses JWT tokens for authentication:
-
Register a new user:
curl -X POST "http://localhost:8001/users/" -H "Content-Type: application/json" -d '{"username": "testuser", "email": "test@example.com", "password": "password123"}'
-
Get access token:
curl -X POST "http://localhost:8001/token" -d "username=testuser&password=password123"
-
Use the token in subsequent requests:
curl -X GET "http://localhost:8001/tasks/" -H "Authorization: Bearer YOUR_TOKEN"
pytest
cd frontend
npm test
This project is licensed under the MIT License.