- Overview
- Key Features
- Technology Stack
- Project Structure
- Getting Started
- Deployment
- API Development Status
- Documentation
- Contributing
DevFlow is a comprehensive SaaS platform that provides a unified dashboard for managing GitHub issues across multiple repositories. It enhances GitHub's native interface with advanced project management features, custom workflows, analytics, and cross-platform accessibility.
- Multi-Repository Management: Developers working on multiple projects struggle to track issues across different repositories
- Custom Workflows: GitHub's native interface lacks flexibility for custom categorization and workflows
- Unified Dashboard: No single view to see all your issues and tasks in one place
- Team Collaboration: Limited project management features for teams
- Analytics: Minimal insights into project progress and team productivity
- ๐จโ๐ป Individual Developers - Managing personal projects
- ๐ฅ Development Teams - Collaborative project management
- ๐ Project Managers - Oversight and analytics
- ๐ฏ Team Leads - Task assignment and tracking
DevFlow is currently in active development with core functionality ready!
โ Authentication System (100%)
- GitHub OAuth 2.0 integration
- JWT token-based authentication
- Secure user session management
- Access token refresh mechanism
โ Repository Management (100%)
- Add/remove repositories from GitHub
- Multi-repository dashboard
- Sync repositories with GitHub
- Webhook configuration
- Custom grouping and metadata
โ Issue Management (100%)
- Create, read, update, and close issues
- Advanced filtering (by status, priority, labels, assignees, repository)
- Bulk operations on multiple issues
- Assign/unassign team members
- Label management
- Comment system (CRUD operations)
- Direct GitHub synchronization
- Pagination support
โ Labels Management (100%)
- Create, update and delete labels per repository
- Sync labels directly from GitHub
- Full label metadata (name, color, description)
โ Custom Categories (100%)
- Create and manage custom issue categories per user
- Assign/remove categories on any issue
- Conflict detection (duplicate names)
- Issue count per category
โ Saved Views & Filters (100%)
- Save custom filter combinations as named views
- Mark a view as default
- Apply a view to instantly retrieve matching issues
- Full CRUD (create, update, delete views)
โ Analytics Dashboard (100%)
- Dashboard overview: totals, priority breakdown, close rate
- Issues grouped by state and custom workflow status
- Issues grouped by repository
- Daily timeline of created vs closed issues (7d / 30d / 90d / 1y)
- Assignee workload distribution
- Completion rate overall and per repository
โ Notifications System (100%)
- List notifications with filters (type, read status, pagination)
- Get single notification details
- Get unread notification count
- Mark individual notification as read
- Mark all notifications as read
- Delete individual notification
- Delete all read notifications (bulk cleanup)
โ Additional Features (100%)
- Milestones: create and list milestones per repository
- Settings: view and update user profile settings
- Activity Log: paginated timeline of user actions
- Global Search: full-text search across issues and repositories
- Data Export: download issues, repositories, or milestones as CSV or JSON
- Bulk Actions: close, reopen, label, milestone or prioritize multiple issues at once
- Teams: create teams and list members
- Webhooks: register GitHub webhooks per repository
- Health Check: live database connectivity and uptime report
โ Developer Experience
- ๐ฅ Interactive Swagger UI at
/api-docs - ๐ Complete OpenAPI 3.0 specification
- ๐ฆ Postman collection with 72 endpoints
- ๐ Comprehensive documentation
- ๐ก๏ธ Input validation and error handling
- ๐ Security best practices (Helmet, CORS, Rate Limiting)
- 72 API endpoints implemented and fully functional
- 18 database tables with complete relationships
- 9 major API categories completed (Auth, Repos, Issues, Labels, Categories, Views, Analytics, Notifications, Additional Features)
- Swagger documentation for all endpoints
- Production-ready backend infrastructure
- React Web Frontend
- Flutter Mobile App
- Real-time updates (WebSockets)
- Unit & integration test suite
- โ GitHub OAuth Authentication - Secure login via GitHub
- ๐ฆ Multi-Repository Integration - Connect and manage multiple repos
- ๐ฏ Unified Issue Dashboard - All issues in one place
- ๐ท๏ธ Custom Labels & Categories - Organize issues your way
- ๐ฌ Comment Management - Threaded discussions
- ๐ Advanced Filtering & Saved Views - Find and save issue filters
- ๐ Analytics & Insights - Track progress and productivity
- ๐ Smart Notifications - Stay updated on important changes
- ๐ Milestones - Group issues into release milestones
- ๐ Global Search - Search issues and repositories instantly
- ๐ค Data Export - Download data as CSV or JSON
- โก Bulk Actions - Close, label, or prioritize many issues at once
- ๐ฅ Teams - Create teams and manage members
- ๐ Dark/Light Mode - Comfortable viewing experience
- ๐ Web Application - React-based responsive UI
- ๐ฑ Mobile Apps - Flutter for iOS & Android
- ๐ RESTful API - Node.js backend with Express
- Runtime: Node.js 20+
- Framework: Express.js 5.x
- Language: TypeScript 5.x
- Database: PostgreSQL 18
- ORM: Prisma 5.22+
- Authentication: Passport.js + JWT + GitHub OAuth 2.0
- Security: Helmet, CORS, Rate Limiting, Express Validator
- API Documentation: Swagger/OpenAPI 3.0 (swagger-jsdoc, swagger-ui-express)
- HTTP Client: Axios 1.13+ for GitHub API integration
- Web: React 18+ with TypeScript
- Mobile: Flutter 3.x with Dart
- State Management: Redux Toolkit / Riverpod
- UI Framework: Material-UI / Tailwind CSS
- CI/CD: GitHub Actions (3-job pipeline: test โ build โ deploy)
- Containerization: Docker + Docker Compose
- Container Registry: GitHub Container Registry (GHCR)
- Backend Hosting: AWS EC2 (t3.micro, eu-north-1)
- Database Hosting: AWS RDS PostgreSQL 17 (eu-north-1)
- Frontend Hosting: Cloudflare Pages (coming soon)
- Package Manager: npm
- Development: Nodemon, ts-node
- API Testing: Swagger UI, Postman
DevFlow/
โโโ backend/ # Backend API server
โ โโโ src/
โ โ โโโ index.ts # Entry point
โ โ โโโ controllers/ # Request handlers (9 files)
โ โ โ โโโ additional.controller.ts
โ โ โโโ services/ # Business logic (9 files)
โ โ โ โโโ additional.service.ts
โ โ โโโ models/ # TypeScript type definitions (9 files)
โ โ โ โโโ additional.model.ts
โ โ โโโ routes/ # API route definitions (9 files)
โ โ โ โโโ additional.routes.ts
โ โ โโโ middleware/ # Auth, validation, error handling
โ โโโ prisma/
โ โ โโโ schema.prisma # Database schema (18 tables)
โ โโโ package.json
โ โโโ tsconfig.json
โโโ docs/ # Documentation files
โ โโโ SRS_GitHub_Dashboard.md
โ โโโ QUICK_START.md
โ โโโ ROADMAP.md
โ โโโ SETUP_GUIDE.md
โโโ README.md # This file
- Node.js 18+ and npm
- PostgreSQL 14+
- GitHub Account (for OAuth setup)
- Git for version control
-
Clone the repository
git clone <repository-url> cd DevFlow
-
Install dependencies
cd backend npm install -
Configure environment
cp .env.example .env # Edit .env with your credentials -
Setup database
# Create PostgreSQL database createdb -U postgres devflow_db # Run migrations npm run prisma:migrate
-
Start development server
npm run dev
-
Access the application
- ๐ Server: http://localhost:3001
- ๐ฅ Swagger UI: http://localhost:3001/api-docs
- ๐ฅ Health Check: http://localhost:3001/api/health
๐ For detailed setup instructions, see QUICK_START.md
Production URL: http://16.16.218.19:3001
| Resource | Details |
|---|---|
| Server | AWS EC2 t3.micro (eu-north-1) |
| Database | AWS RDS PostgreSQL 17 (eu-north-1) |
| Container | Docker via GHCR (ghcr.io/shalin-shah-2002/devflow-backend:latest) |
| Swagger UI | http://16.16.218.19:3001/api-docs |
| API Spec | http://16.16.218.19:3001/api-docs.json |
Every push to main that touches backend/ triggers a 3-job pipeline:
Job 1: api-tests (~2 min)
โโโ Spins up a real PostgreSQL container
โโโ Runs Prisma migrations
โโโ Builds and starts the backend
โโโ Seeds test data
โโโ Hits all 66 Swagger endpoints โ must pass before proceeding
Job 2: build-and-push-image (~3 min)
โโโ Builds multi-stage Docker image (node:20-slim)
โ โโโ Stage 1: compile TypeScript, generate Prisma client, pre-build swagger.json
โ โโโ Stage 2: production-only deps, ~200MB lean image
โโโ Pushes to GHCR with :latest and :sha tags
Job 3: deploy-ec2 (~1 min)
โโโ SCP docker-compose.yml to EC2
โโโ SSH: write .env from GitHub secret
โโโ docker compose pull โ docker compose up -d
โโโ Container runs: prisma migrate deploy && node dist/index.js
| Secret | Value |
|---|---|
EC2_HOST |
16.16.218.19 |
EC2_USER |
ec2-user |
EC2_SSH_KEY |
EC2 private key (PEM format) |
BACKEND_ENV_FILE |
Full .env contents (DB URL, JWT secret, GitHub OAuth, etc.) |
Go to GitHub โ Actions โ Backend CI/CD โ Run workflow to trigger without a push.
Frontend (React + Vite) will be deployed to Cloudflare Pages.
Once live, update the FRONTEND_URL in the BACKEND_ENV_FILE GitHub secret and update the GitHub OAuth app callback URL.
- Start the server:
npm run dev - Open http://localhost:3001/api-docs in your browser
- Click "Authorize" and enter your JWT token
- Try out any endpoint with the "Try it out" button
- Import the collection:
backend/Docs/Postman_Collection.json - Set up environment variables (base_url, access_token)
- Test all 72 endpoints with pre-configured requests
# Health check
curl http://localhost:3001/api/health
# Get current user (requires auth)
curl -H "Authorization: Bearer YOUR_JWT_TOKEN" \
http://localhost:3001/api/auth/me
# List issues
curl -H "Authorization: Bearer YOUR_JWT_TOKEN" \
http://localhost:3001/api/issues?state=open&page=1&limit=20Track the implementation progress of all API endpoints across 10 categories.
- POST
/api/auth/github- Initiate GitHub OAuth - GET
/api/auth/github/callback- OAuth callback handler - GET
/api/auth/me- Get current user profile - POST
/api/auth/refresh- Refresh access token - POST
/api/auth/logout- Logout user
- GET
/api/repositories- List all repositories - POST
/api/repositories- Add repository - GET
/api/repositories/:id- Get repository details - PATCH
/api/repositories/:id- Update repository - DELETE
/api/repositories/:id- Remove repository - POST
/api/repositories/:id/sync- Sync with GitHub - POST
/api/repositories/:id/webhook- Setup GitHub webhook
- GET
/api/issues- List all issues (with filters) - GET
/api/issues/:id- Get issue details - POST
/api/issues- Create new issue - PATCH
/api/issues/:id- Update issue - DELETE
/api/issues/:id- Close issue - POST
/api/issues/bulk- Bulk operations - POST
/api/issues/:id/assign- Assign/unassign users - POST
/api/issues/:id/labels- Add/remove labels - GET
/api/issues/:id/comments- Get issue comments - POST
/api/issues/:id/comments- Add comment - PATCH
/api/issues/:id/comments/:commentId- Edit comment - DELETE
/api/issues/:id/comments/:commentId- Delete comment
- GET
/api/labels- List all labels - POST
/api/labels- Create label - GET
/api/labels/:id- Get label details - PUT
/api/labels/:id- Update label - DELETE
/api/labels/:id- Delete label - POST
/api/labels/sync/:repoId- Sync labels from GitHub
- GET
/api/issues/:id/comments- List all comments for an issue - POST
/api/issues/:id/comments- Add comment (syncs to GitHub) - PATCH
/api/issues/:id/comments/:commentId- Edit comment (syncs to GitHub) - DELETE
/api/issues/:id/comments/:commentId- Delete comment (syncs to GitHub) - POST
/api/issues/:id/assign- Assign/unassign users (syncs to GitHub) - POST
/api/issues/:id/labels- Add/remove labels (syncs to GitHub)
- GET
/api/categories- List all categories (per user) - POST
/api/categories- Create category - PATCH
/api/categories/:id- Update category name/color - DELETE
/api/categories/:id- Delete category - POST
/api/issues/:id/categories- Assign categories to issue - DELETE
/api/issues/:id/categories/:categoryId- Remove category from issue
- GET
/api/views- List all saved views/filters - POST
/api/views- Create custom view/filter - PATCH
/api/views/:id- Update view/filter - DELETE
/api/views/:id- Delete view/filter - POST
/api/views/:id/apply- Apply view (get filtered issues)
- GET
/api/analytics/dashboard- Dashboard overview (totals, priority breakdown, close rate) - GET
/api/analytics/issues-by-status- Issues grouped by state & custom status - GET
/api/analytics/issues-by-repo- Issues grouped by repository - GET
/api/analytics/issues-over-time- Daily timeline of created vs closed (?period=7d|30d|90d|1y) - GET
/api/analytics/assignee-workload- Open/closed counts per assignee - GET
/api/analytics/completion-rate- Completion rate overall and per repository
- GET
/api/notifications- List notifications (with filters: type, isRead, pagination) - GET
/api/notifications/unread-count- Get unread notification count - GET
/api/notifications/:id- Get notification details - PATCH
/api/notifications/:id/read- Mark as read - PATCH
/api/notifications/read-all- Mark all notifications as read - DELETE
/api/notifications/:id- Delete notification - DELETE
/api/notifications/read- Delete all read notifications (bulk cleanup)
- GET
/api/milestones- List milestones - POST
/api/milestones- Create milestone - GET
/api/activity-log- User activity log - POST
/api/webhooks- Setup GitHub webhooks - GET
/api/settings- Get user settings - PUT
/api/settings- Update user settings - POST
/api/export- Export data (CSV/JSON) - GET
/api/search- Global search - POST
/api/bulk-actions- Bulk operations - GET
/api/teams- List teams - POST
/api/teams- Create team - GET
/api/health- API health check
| Category | Total | Completed | Percentage |
|---|---|---|---|
| Authentication | 5 | 5 | 100% โ |
| Repositories | 7 | 7 | 100% โ |
| Issues | 12 | 12 | 100% โ |
| Labels | 6 | 6 | 100% โ |
| Comments | 6 | 6 | 100% โ |
| Categories | 6 | 6 | 100% โ |
| Filters & Views | 5 | 5 | 100% โ |
| Analytics | 6 | 6 | 100% โ |
| Notifications | 7 | 7 | 100% โ |
| Additional | 12 | 12 | 100% โ |
| TOTAL | 72 | 72 | 100% |
- ๐ Software Requirements Specification (SRS) - Complete feature specifications
- โก Quick Start Guide - Get up and running in minutes
- ๐บ๏ธ Project Roadmap - Implementation phases and timeline
- ๐ง Setup Guide - Detailed setup instructions
- ๐ API Documentation - Complete API reference (72 endpoints)
- ๐ฅ Swagger UI - Interactive API testing (when server is running)
- ๐ OpenAPI Spec - Machine-readable API specification
- ๐ฎ Postman Collection - Ready-to-use API collection
- ๐๏ธ Database Schema - Database design and relationships
- ๐พ Database Setup - PostgreSQL configuration
- ๐ค Contributing Guide - How to contribute to the project
- ๐ Code of Conduct - Community guidelines
- Project structure
- Dependencies installed
- Database schema designed
- TypeScript configuration
- Basic Express server
- Authentication system (GitHub OAuth + JWT)
- Repository management (7 endpoints)
- Issue CRUD operations (12 endpoints)
- Comment management (integrated with issues)
- GitHub API integration
- Validation & error handling middleware
- Swagger/OpenAPI documentation
- Comments & discussions (GitHub-synced)
- Labels management (GitHub-synced)
- Custom categories & issue tagging
- Filters & saved views (5 endpoints)
- Analytics dashboard (6 endpoints)
- Notifications system (7 endpoints)
- Milestones management (2 endpoints)
- User settings & profile (2 endpoints)
- Activity log (1 endpoint)
- Global search (1 endpoint)
- Data export โ CSV & JSON (1 endpoint)
- Bulk actions (1 endpoint)
- Teams management (2 endpoints)
- Webhook registration (1 endpoint)
- Health check with DB ping (1 endpoint)
- React web application (in progress)
- Flutter mobile app
- UI/UX implementation
- State management
- Dockerized backend with multi-stage build
- AWS EC2 instance (t3.micro, eu-north-1)
- AWS RDS PostgreSQL 17
- GitHub Container Registry (GHCR) for Docker images
- GitHub Actions CI/CD pipeline (test โ build โ deploy)
- Automated API smoke tests (66 endpoints) on every push
- Pre-generated Swagger spec (served from container)
- Production Swagger UI live at http://16.16.218.19:3001/api-docs
- React + Vite frontend build
- Deploy to Cloudflare Pages
- Configure production API URL
- Update GitHub OAuth callback URL
- CI/CD for frontend (auto-deploy on push)
- Custom domain + SSL (HTTPS)
- Performance optimization
- Unit & integration tests
- Security hardening
- Documentation finalization
We welcome contributions from the community! Whether you're fixing bugs, adding features, or improving documentation, your help is appreciated.
- Read the Contributing Guide - CONTRIBUTING.md
- Check the Code of Conduct - CODE_OF_CONDUCT.md
- Look for Good First Issues - Tagged with
good first issuelabel
- Fork the repository
- Clone your fork:
git clone https://github.com/YOUR_USERNAME/devflow.git - Create a feature branch:
git checkout -b feature/AmazingFeature - Make your changes
- Test thoroughly
- Commit with clear messages:
git commit -m 'feat: add amazing feature' - Push to your fork:
git push origin feature/AmazingFeature - Open a Pull Request
Want to contribute or discuss ideas?
- ๐ง Email: 2002shalin@gmail.com
- ๐ Report Issues: GitHub Issues
- ๐ก Feature Requests: GitHub Issues
- ๐ Bug Reports: GitHub Issues
- ๐ฌ Discussions: GitHub Discussions
- Report Bugs - Found something broken? Let us know!
- Suggest Features - Have ideas? We'd love to hear them!
- Write Code - Pick up issues labeled
help wantedorgood first issue - Improve Docs - Help make our documentation better
- Review PRs - Help review and test pull requests
- Spread the Word - Star โญ the repo and share with others
- Follow TypeScript best practices
- Write clean, documented code
- Add tests for new features
- Update documentation as needed
- Follow our commit message conventions
- Ensure all tests pass before submitting PR
For detailed guidelines, see CONTRIBUTING.md
This project is licensed under the ISC License.
DevFlow Team
- GitHub API for providing robust integration capabilities
- Prisma for excellent ORM support
- The open-source community for amazing tools and libraries
For questions, issues, or suggestions:
- ๐ง Email: 2002shalin@gmail.com
- ๐ Issues: GitHub Issues
- ๐ฌ Discussions: GitHub Discussions
- ๐ Documentation: Check our docs and guides
Made with โค๏ธ for developers, by developers