TaskForge is a full-stack, cross-platform project and task management solution with a modern MongoDB-first hybrid architecture. It provides robust features for team collaboration, project tracking, custom workflows, and reporting. The backend uses MongoDB Atlas for operational data and Supabase PostgreSQL for identity and analytics, while the frontend includes both a Flutter app and a React web client.
- User authentication and role-based access control
- Project and task creation with flexible custom fields
- Task assignment, tracking, and watchers
- Threaded comments with reactions
- Real-time notifications
- Activity logs and analytics
- File uploads (Cloudinary integration)
- RESTful API and GraphQL support
- Hybrid database architecture for optimal performance
- Comprehensive health monitoring
TaskForge/
├── Backend/
│ ├── src/
│ │ ├── models/ # Database models (User, Project, Task, etc.)
│ │ ├── services/ # Business logic for each entity
│ │ ├── middleware/ # Express middleware (auth, error handling, etc.)
│ │ ├── routes/ # API route definitions
│ │ ├── utils/ # Helper functions
│ │ ├── config/ # Configuration files
│ ├── prisma/ # Prisma schema and migrations
│ ├── generated/prisma/ # Auto-generated Prisma client
├── Frontend/
│ ├── App/taskforge/ # Flutter app (multi-platform)
│ ├── Web/ # React + Vite web client
- Node.js + Express: Handles API requests and business logic
- MongoDB Atlas: Primary database for operational data (projects, tasks, comments)
- Supabase PostgreSQL: Identity, permissions, and analytics
- Prisma ORM: Type-safe database access for PostgreSQL
- Mongoose: Flexible document modeling for MongoDB
- RESTful APIs & GraphQL: Multiple API interfaces
- Configurable Middleware: Security, validation, rate limiting, authentication
- Flutter App: Cross-platform mobile and desktop client.
- React Web Client: Fast, modern web interface using Vite.
- Node.js ≥ 18
- npm ≥ 8 or yarn
- MongoDB Atlas account (or local MongoDB)
- Supabase account (or local PostgreSQL)
- Navigate to the
Backendfolder:cd Backend - Install dependencies:
npm install
- Set up environment variables:
# Create .env file with: # MongoDB Atlas connection MONGODB_URI=mongodb+srv://... # Supabase PostgreSQL connection DATABASE_URL=postgresql://... # JWT and other secrets JWT_SECRET=your_secret_key CLOUDINARY_URL=your_cloudinary_url
- Run database migrations:
npx prisma migrate dev npx prisma generate
- Start the server:
npm start
- Verify health:
curl http://localhost:3000/api/health
TaskForge uses a MongoDB-first hybrid architecture:
- 90% of data in MongoDB Atlas (projects, tasks, comments)
- 10% of data in PostgreSQL (users, permissions, analytics)
- Zero redundancy - each piece of data lives in one database
- See Backend/ARCHITECTURE.md for details
- Navigate to
Frontend/App/taskforge:cd Frontend/App/taskforge - Install dependencies:
flutter pub get
- Run the app:
flutter run
- Navigate to
Frontend/Web:cd Frontend/Web - Install dependencies:
npm install
- Start the development server:
npm run dev
- Access the web client at
http://localhost:3000(default Vite port). - Use the Flutter app for mobile/desktop platforms.
- Interact with the backend via RESTful APIs for all project, task, user, and reporting features.
We welcome contributions from the community! Please read our CONTRIBUTING for instructions.
- For security issues, refer to our SECURITY.md.
- Code ownership and responsibilities are outlined in CODEOWNERS.
- Fork the repository and create a new branch.
- Make your changes and submit a pull request.
- Ensure code follows project conventions.
This project is licensed under the MIT License.
Please read our Code of Conduct to ensure a respectful and inclusive environment.
For queries or collaborations, reach out to Yadnesh Teli at [yadneshteli.dev@gmail.com].