A production-ready task management application built with Flask, PostgreSQL, and deployed on DigitalOcean App Platform.
- User Authentication: Secure JWT-based authentication system
- Project Management: Create and manage projects with team collaboration
- Task Management: Full CRUD operations for tasks with status tracking
- Real-time Updates: WebSocket integration for live collaboration
- Role-based Access: Project owners, admins, members, and viewers
- Responsive Design: Mobile-first responsive web interface
- Backend: Flask, SQLAlchemy, Flask-Migrate
- Database: PostgreSQL
- Authentication: JWT (Flask-JWT-Extended)
- Real-time: Flask-SocketIO
- Frontend: Flask Templates with Bootstrap/Tailwind
- Deployment: DigitalOcean App Platform
- CI/CD: GitHub Actions
- Python 3.9+
- PostgreSQL
- Redis (for WebSocket support)
- Clone the repository:
git clone https://github.com/RithishRamesh-dev/task-manager-app-autodev.git
cd task-manager-app-autodev- Create virtual environment:
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate- Install dependencies:
pip install -r requirements.txt- Set up environment variables:
cp .env.example .env
# Edit .env with your database and other configuration- Initialize database:
flask db init
flask db migrate -m "Initial migration"
flask db upgrade- Create admin user:
flask create-admin- Run the application:
flask run- User authentication and profile information
- Password hashing with bcrypt
- Active status tracking
- Project organization and management
- Owner relationship to users
- Soft delete with is_active flag
- Core task management functionality
- Status tracking (pending, in_progress, completed, cancelled)
- Priority levels (low, medium, high, critical)
- Assignment and creation tracking
- Comments and updates on tasks
- User attribution and timestamps
- Many-to-many relationship for project access
- Role-based permissions (owner, admin, member, viewer)
POST /api/auth/register- User registrationPOST /api/auth/login- User loginPOST /api/auth/logout- User logoutGET /api/auth/profile- Get user profile
GET /api/projects- List user projectsPOST /api/projects- Create new projectGET /api/projects/{id}- Get project detailsPUT /api/projects/{id}- Update projectDELETE /api/projects/{id}- Delete project
GET /api/tasks- List tasks with filteringPOST /api/tasks- Create new taskGET /api/tasks/{id}- Get task detailsPUT /api/tasks/{id}- Update taskDELETE /api/tasks/{id}- Delete task
pytest
pytest --cov=app # With coverageblack . # Format code
flake8 # Lint codeflask db migrate -m "Description of changes"
flask db upgradeThe application is configured for deployment on DigitalOcean App Platform with automatic CI/CD via GitHub Actions.
DATABASE_URL: PostgreSQL connection stringSECRET_KEY: Flask secret keyJWT_SECRET_KEY: JWT signing keyREDIS_URL: Redis connection string
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.