A full-stack task management application with user authentication, real-time task tracking, and a modern responsive UI.
- Features
- Tech Stack
- Project Structure
- Installation
- Configuration
- Running the Application
- API Documentation
- Usage Guide
- Security
- Contributing
- User registration with email validation
- Secure login with JWT authentication
- Password hashing using bcrypt
- Forgot password functionality with password reset
- Token-based authorization
- Create, read, update, and delete tasks
- Task filtering and sorting
- User-specific task management
- Real-time task status updates
- Clean and modern dark-themed UI
- Responsive design for all devices
- Form validation and error handling
- User-friendly dashboard
- Framework: React 18.x
- Build Tool: Vite
- HTTP Client: Axios
- Routing: React Router v6
- Styling: CSS (Dark theme)
- Package Manager: npm
- Framework: FastAPI (Python)
- Database: SQLAlchemy ORM
- Authentication: OAuth2 with JWT
- Password Security: Passlib with bcrypt
- CORS: Enabled for frontend integration
- Server: Uvicorn
Task manager/
βββ frontend/
β βββ src/
β β βββ pages/
β β β βββ home.jsx
β β β βββ login.jsx
β β β βββ register.jsx
β β β βββ forgotPassword.jsx
β β β βββ dashboard.jsx
β β βββ services/
β β β βββ api.js
β β βββ App.jsx
β β βββ main.jsx
β β βββ App.css
β β βββ index.css
β βββ package.json
β βββ vite.config.js
β βββ index.html
β
βββ backend/
β βββ src/
β β βββ models/
β β β βββ __init__.py
β β β βββ user.py
β β β βββ task.py
β β βββ routers/
β β β βββ auth.py
β β β βββ task.py
β β βββ schemas/
β β β βββ __init__.py
β β β βββ user.py
β β β βββ task.py
β β βββ security/
β β β βββ authentication.py
β β β βββ config.py
β β β βββ hashing.py
β β β βββ token.py
β β βββ database.py
β β βββ main.py
β βββ requirements.txt
β βββ .venv/
β
βββ README.md
- Python 3.8 or higher
- Node.js 14.x or higher
- npm or yarn
- Navigate to the backend directory:
cd backend- Create a virtual environment:
python -m venv .venv- Activate the virtual environment:
Windows:
.venv\Scripts\activatemacOS/Linux:
source .venv/bin/activate- Install dependencies:
pip install -r requirements.txt- Navigate to the frontend directory:
cd frontend- Install dependencies:
npm installThe backend configuration can be found in backend/src/security/config.py. Key settings include:
- API Title: Task Manager API
- CORS Origins:
http://localhost:5173,http://127.0.0.1:5173 - Database: SQLite (default)
The API client is configured in frontend/src/services/api.js:
const API = axios.create({
baseURL: "http://127.0.0.1:8000",
});From the backend directory with virtual environment activated:
uvicorn src.main:app --reload --port 8000The API will be available at: http://127.0.0.1:8000
From the frontend directory:
npm run devThe application will be available at: http://localhost:5173 or http://127.0.0.1:5173
POST /auth/register
Content-Type: application/json
{
"username": "string",
"email": "string",
"password": "string"
}
Response: 200 OK
{
"message": "User registered successfully"
}
POST /auth/login
Content-Type: application/x-www-form-urlencoded
username=email@example.com&password=password
Response: 200 OK
{
"access_token": "string",
"token_type": "bearer"
}
POST /auth/forgot-password
Content-Type: application/json
{
"email": "string"
}
Response: 200 OK
{
"message": "Password reset email would be sent"
}
POST /auth/reset-password
Content-Type: application/json
{
"email": "string",
"new_password": "string"
}
Response: 200 OK
{
"message": "Password reset successfully"
}
Detailed task endpoints documentation should be added as per your implementation.
- Navigate to the application home page
- Click "Create Account" or go to
/register - Fill in the registration form with username, email, and password
- Click "Register"
- You will be redirected to the login page after successful registration
- Go to the login page (
/login) - Enter your email and password
- Click "Login"
- Upon successful authentication, you will be redirected to the dashboard
- Your authentication token will be stored in
localStorage
- On the login page, click "Forgot Password?"
- Enter your registered email address
- Follow the password reset process
- Set your new password (minimum 6 characters)
- You will be redirected to login with your new password
- After logging in, access the dashboard
- Create new tasks with descriptions
- Mark tasks as complete/incomplete
- Edit or delete existing tasks
- View all your tasks in real-time
- Passwords are hashed using bcrypt before storage
- Never stored or transmitted in plain text
- Password validation on all authentication endpoints
- JWT (JSON Web Tokens) for stateless authentication
- Access tokens stored securely in browser localStorage
- CORS protection enabled
- Always use HTTPS in production
- Set environment variables for sensitive configuration
- Regularly update dependencies
- Implement rate limiting on authentication endpoints
Contributions are welcome! Please follow these steps:
- Fork the repository
- Create a feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is open source and available under the MIT License.
For support, questions, or issues, please create an issue in the repository or contact the development team.
5560c191d9af780fdc4714bf53b417ffd167a152