Enterprise-grade collaborative task management platform with real-time synchronization and team coordination
- π Overview
- π― Learning Objectives
- π οΈ Tech Stack
- π Project Structure
- π Getting Started
- π‘ Usage
- π Key Features
- π§ Architecture
- π§ͺ Testing
- π Resources
- π₯ Contributors
CollabHub is a sophisticated, full-stack collaborative task management platform designed to streamline team productivity and project coordination. Built with modern web technologies, it provides real-time task synchronization, advanced user authentication, and comprehensive project management capabilities.
The platform demonstrates enterprise-level software architecture with a robust RESTful API backend powered by Flask and SQLAlchemy, coupled with a dynamic, responsive frontend built using Angular 17. CollabHub implements advanced features including JWT-based authentication, real-time notifications, file attachment management, Google reCAPTCHA integration, and comprehensive task lifecycle management.
This project showcases full-stack development expertise, modern DevOps practices, and production-ready software engineering principles, making it an ideal demonstration of contemporary web application development and team collaboration software design.
Through this comprehensive full-stack project, you will master:
- Advanced Full-Stack Development: Complete understanding of modern web application architecture
- RESTful API Design: Professional API development with Flask and comprehensive endpoint management
- Frontend Frameworks: Advanced Angular development with TypeScript and reactive programming
- Database Design: Sophisticated relational database modeling with SQLAlchemy ORM
- Authentication Systems: JWT-based security implementation with role-based access control
- Real-Time Communication: WebSocket integration for live collaboration features
- DevOps Integration: Containerization, deployment automation, and production configuration
- Software Engineering: Professional code organization, testing strategies, and documentation practices
Backend Technologies:
- Flask 3.0.2: Modern Python web framework with comprehensive ecosystem
- SQLAlchemy: Advanced ORM for database operations and relationship management
- Flask-Migrate: Database schema version control and migration management
- Flask-Mail: Email service integration for notifications and communication
- PyJWT: JSON Web Token implementation for secure authentication
- MySQL: Robust relational database for production data management
Frontend Technologies:
- Angular 17.3.0: Latest Angular framework with enhanced performance and features
- TypeScript 5.4.0: Type-safe JavaScript with advanced language features
- RxJS: Reactive programming for asynchronous data handling and state management
- Angular Calendar: Advanced calendar components for task scheduling and visualization
- SweetAlert2: Professional notification and modal dialog system
- Tailwind CSS: Utility-first CSS framework for responsive design
Development Tools:
- Angular CLI: Comprehensive development toolkit for Angular applications
- Flask-CORS: Cross-Origin Resource Sharing configuration for API access
- Google reCAPTCHA: Advanced bot protection and security validation
- Nginx: High-performance web server for production deployment
- Factory Boy: Sophisticated test data generation and database seeding
collabHub/
βββ backend/ # Flask API Backend
β βββ api/ # RESTful API endpoints
β β βββ auth/ # Authentication services
β β βββ v1/ # API version 1 endpoints
β β β βββ task_views.py # Task management endpoints
β β β βββ user_views.py # User management endpoints
β β β βββ recaptcha_views.py # Security validation endpoints
β β βββ response_utils.py # API response utilities
β βββ config/ # Application configuration
β β βββ database.py # Database connection setup
β β βββ config.py # Environment configuration
β β βββ mail_service.py # Email service configuration
β β βββ error_handlers.py # Global error handling
β βββ models/ # Database models
β β βββ users.py # User data model
β β βββ tasks.py # Task data model
β β βββ attachments.py # File attachment model
β β βββ blacklist.py # JWT blacklist model
β β βββ base_model.py # Base model with common fields
β βββ factories/ # Test data generators
β β βββ users.py # User factory for testing
β β βββ tasks.py # Task factory for testing
β βββ migrations/ # Database migration files
β βββ app.py # Main Flask application
β βββ requirements.txt # Python dependencies
β βββ nginx.conf # Production web server config
βββ frontend/ # Angular Frontend Application
β βββ src/
β β βββ app/ # Angular application modules
β β β βββ components/ # Reusable UI components
β β β βββ services/ # Business logic services
β β β βββ guards/ # Route protection guards
β β β βββ models/ # TypeScript interfaces
β β β βββ interceptors/ # HTTP request interceptors
β β βββ assets/ # Static assets and images
β β βββ environments/ # Environment configurations
β β βββ styles/ # Global styling files
β βββ package.json # Node.js dependencies
β βββ angular.json # Angular CLI configuration
β βββ tailwind.config.js # Tailwind CSS configuration
β βββ tsconfig.json # TypeScript configuration
βββ README.md # Project documentation
βββ LICENSE.txt # GNU General Public License
βββ .gitignore # Git ignore patterns
System Requirements:
- Node.js 18+: JavaScript runtime for Angular development
- Python 3.8+: Backend runtime environment
- MySQL 8.0+: Database server for data persistence
- Git: Version control system
Development Tools:
- Angular CLI:
npm install -g @angular/cli - Flask CLI: Included with Flask installation
- MySQL Client: For database administration
-
Clone the Repository
git clone https://github.com/yourusername/collabhub.git cd collabhub/backend -
Create Virtual Environment
python3 -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate
-
Install Dependencies
pip install -r requirements.txt
-
Environment Configuration
# Create environment file cp .env.example .env # Configure database and secrets echo "DB_USERNAME=your_db_username" >> .env echo "DB_PASSWORD=your_db_password" >> .env echo "DB_HOST=localhost" >> .env echo "DB_NAME=collabhub_db" >> .env echo "SECRET_KEY=$(python -c 'import secrets; print(secrets.token_hex(32))')" >> .env echo "MAIL_SERVER=smtp.gmail.com" >> .env echo "MAIL_USERNAME=your_email@gmail.com" >> .env echo "MAIL_PASSWORD=your_app_password" >> .env
-
Database Initialization
# Initialize migration repository flask db init # Create initial migration flask db migrate -m "Initial migration" # Apply migrations to database flask db upgrade # Optional: Seed with test data python -c "from factories.users import generateusers; generateusers(10)" python -c "from factories.tasks import generatetasks; generatetasks(20)"
-
Start Development Server
flask run --debug # API will be available at http://localhost:5000
-
Navigate to Frontend Directory
cd ../frontend -
Install Dependencies
npm install
-
Environment Configuration
# Update src/environments/environment.ts export const environment = { production: false, apiUrl: 'http://localhost:5000/api/v1', recaptchaSiteKey: 'your_recaptcha_site_key' };
-
Start Development Server
ng serve # Application will be available at http://localhost:4200
-
Build Frontend for Production
cd frontend ng build --configuration production -
Configure Production Environment
# Set production environment variables export FLASK_ENV=production export DATABASE_URL=mysql://user:password@host:port/database
-
Deploy with Nginx
# Copy nginx configuration sudo cp backend/nginx.conf /etc/nginx/sites-available/collabhub sudo ln -s /etc/nginx/sites-available/collabhub /etc/nginx/sites-enabled/ sudo nginx -t && sudo systemctl reload nginx
-
Account Creation
- Navigate to the registration page
- Complete the secure registration form with email verification
- Verify your account through the email confirmation link
-
Secure Login
- Use your registered credentials to access the platform
- The system implements JWT-based authentication for secure sessions
- Optional two-factor authentication for enhanced security
-
Create Tasks
- Access the task creation interface from the main dashboard
- Define task details including title, description, priority, and deadlines
- Assign multiple collaborators using user search functionality
- Attach relevant files and documents to tasks
-
Collaboration Features
- View real-time updates from team members
- Comment and communicate within task threads
- Track task progress and completion status
- Receive notifications for task assignments and updates
-
Project Organization
- Organize tasks using project categories and labels
- Filter and search tasks using advanced criteria
- Generate progress reports and analytics
- Export task data for external reporting
- JWT-Based Security: Stateless authentication with refresh token rotation
- Email Verification: Secure account activation with email confirmation
- Password Security: BCrypt hashing with configurable complexity
- Session Management: Automatic token refresh and secure logout
- Task Lifecycle: Complete CRUD operations with status tracking
- Multi-User Assignment: Flexible collaborator assignment and role management
- Priority System: Configurable priority levels with visual indicators
- Deadline Management: Due date tracking with automated reminders
- File Attachments: Secure file upload and management system
- Responsive Design: Mobile-first design with Tailwind CSS
- Real-Time Updates: Live synchronization using WebSocket connections
- Calendar Integration: Advanced calendar views for task scheduling
- Notification System: In-app and email notifications for important events
- Dark/Light Themes: User-customizable interface themes
- Google reCAPTCHA: Advanced bot protection and spam prevention
- Input Validation: Comprehensive server-side and client-side validation
- CORS Configuration: Secure cross-origin resource sharing
- Error Handling: Graceful error management with user-friendly messages
- Audit Logging: Comprehensive activity tracking and security monitoring
- Task Analytics: Progress tracking and completion statistics
- Team Performance: Collaboration metrics and productivity insights
- Export Capabilities: Data export in multiple formats (JSON, CSV, PDF)
- Custom Reports: Configurable reporting with date range filtering
graph TB
subgraph "Frontend Layer"
A[Angular 17 SPA]
B[TypeScript Services]
C[RxJS State Management]
D[Angular Router]
end
subgraph "API Gateway"
E[Flask Application]
F[CORS Middleware]
G[JWT Authentication]
H[Request Validation]
end
subgraph "Business Logic"
I[Task Management API]
J[User Management API]
K[Authentication API]
L[File Upload API]
end
subgraph "Data Layer"
M[SQLAlchemy ORM]
N[MySQL Database]
O[File Storage System]
P[Email Service]
end
subgraph "Security Layer"
Q[JWT Token Management]
R[Google reCAPTCHA]
S[Input Validation]
T[HTTPS Encryption]
end
A --> E
B --> F
C --> G
D --> H
E --> I
F --> J
G --> K
H --> L
I --> M
J --> N
K --> O
L --> P
Q --> G
R --> H
S --> I
T --> E
# Run unit tests
python -m pytest tests/ -v
# Run with coverage
python -m pytest tests/ --cov=app --cov-report=html
# Generate test data
python -c "from factories.users import generateusers; generateusers(50)"
python -c "from factories.tasks import generatetasks; generatetasks(100)"# Run unit tests
ng test
# Run end-to-end tests
ng e2e
# Run tests with coverage
ng test --code-coverage- Flask Documentation - Backend framework documentation
- Angular Documentation - Frontend framework guide
- SQLAlchemy Documentation - Database ORM reference
- TypeScript Handbook - TypeScript language guide
- Task Manager Pro - Advanced task management system
- Team Collaboration Hub - Enterprise collaboration platform
- Project Management Suite - Comprehensive project management
- Full-Stack Development Course - Complete web development curriculum
- Angular Advanced Patterns - Advanced Angular development
- Flask RESTful API Guide - Professional API development
| Role | Contributor | Contact |
|---|---|---|
| Lead Developer | Chigbu Joshua | GitHub Profile |
| Full-Stack Engineer | Chigbu Joshua | |
| Project Architect | Chigbu Joshua |
We welcome contributions from the community! Here's how you can contribute:
-
Fork the Repository
git fork https://github.com/yourusername/collabhub.git
-
Create Feature Branch
git checkout -b feature/amazing-feature
-
Commit Your Changes
git commit -m 'Add some amazing feature' -
Push to Branch
git push origin feature/amazing-feature
-
Open Pull Request
- Describe your changes in detail
- Include screenshots if applicable
- Reference any related issues
- Write clean, maintainable code
- Follow existing code style and conventions
- Include tests for new features
- Update documentation as needed
- Be respectful in all interactions
π Ready to collaborate?
CollabHub - Where teams unite and productivity soars
π Architecture Guide β’ π Skills Index β’ π₯ Authors