PlanGen is a fullstack microservices project designed for project, task, and schedule management. It provides clean APIs, scalable architecture, and an intuitive frontend to help users plan and organize effectively.
The application uses a microservices architecture:
- API Gateway (TypeScript + Express) - Routes requests to services
- Auth Service (TypeScript + Express + PostgreSQL) - User authentication and authorization
- Plan Service (Python + FastAPI + MongoDB) - Plan management
- Template Service (Python + FastAPI + MongoDB) - Template management
- Frontend (React + TypeScript + Vite) - User interface
- π Project & Task Management
- π₯ Multi-user Support
- π Notifications & Scheduling
- π Dashboard & Analytics (planned)
- π‘οΈ Secure Authentication & Authorization
- β‘ Fast frontend powered by Vite
- π REST API backend powered by Express.js
- Framework: React 19 + TypeScript
- Build Tool: Vite
- Styling: TailwindCSS
- State Management: Redux Toolkit
- Validation: Zod
- API Gateway: Express.js + TypeScript
- Auth Service: Express.js + TypeScript + PostgreSQL (Prisma)
- Plan Service: FastAPI + Python + MongoDB
- Template Service: FastAPI + Python + MongoDB
- Caching: Redis (optional for MVP)
- Security: Helmet, CORS, JWT
- PostgreSQL: User data and authentication
- MongoDB: Plans and templates data
PlanGen/
βββ backend/
β βββ api-gateway/ # API Gateway (TypeScript + Express)
β β βββ src/
β β β βββ core/ # Environment, logger, shutdown
β β β βββ middlewares/ # CORS, error handling, rate limiting
β β β βββ proxy/ # Service proxy configuration
β β β βββ types/ # Type definitions
β β βββ package.json
β β
β βββ services/
β β βββ auth-service/ # Auth Service (TypeScript + Express + PostgreSQL)
β β β βββ src/
β β β β βββ controllers/
β β β β βββ services/
β β β β βββ repos/
β β β β βββ routes/
β β β β βββ infrastructure/database/ # Prisma schema
β β β βββ package.json
β β β
β β βββ plan-service/ # Plan Service (Python + FastAPI + MongoDB)
β β β βββ src/
β β β β βββ api/
β β β β βββ domain/
β β β β βββ infra/
β β β β βββ types/
β β β βββ requirements.txt
β β β
β β βββ template-service/ # Template Service (Python + FastAPI + MongoDB)
β β βββ src/
β β
β βββ infra/
β βββ docker/
β βββ docker-compose.yml
β
βββ frontend/ # Frontend (React + TypeScript + Vite)
β βββ src/
β β βββ components/
β β βββ pages/
β β βββ services/
β β βββ store/
β β βββ config/
β βββ package.json
β
βββ refs/ # Planning and documentation
βββ .gitignore
βββ README.md
Make sure you have installed:
- Node.js 18+
- Python 3.8+
- PostgreSQL
- MongoDB
- Redis (optional for MVP)
-
Copy environment example files:
# API Gateway cp backend/api-gateway/.env.example backend/api-gateway/.env # Auth Service cp backend/services/auth-service/.env.example backend/services/auth-service/.env # Plan Service cp backend/services/plan-service/.env.example backend/services/plan-service/.env # Template Service cp backend/services/template-service/.env.example backend/services/template-service/.env # Frontend cp frontend/.env.example frontend/.env
-
Update
.envfiles with your configuration:- Set database connection strings
- Generate strong JWT secrets (use
openssl rand -hex 32) - Configure service URLs and ports
Terminal 1 - API Gateway:
cd backend/api-gateway
npm install
npm run dev
# Runs on http://localhost:3000Terminal 2 - Auth Service:
cd backend/services/auth-service
npm install
npm run prisma:generate
npm run prisma:push
npm run dev
# Runs on http://localhost:3001Terminal 3 - Plan Service:
cd backend/services/plan-service
pip install -r requirements.txt
uvicorn src.main:app --reload --port 3003
# Runs on http://localhost:3003Terminal 4 - Template Service:
cd backend/services/template-service
pip install -r requirements.txt
uvicorn src.main:app --reload --port 3002
# Runs on http://localhost:3002Terminal 5 - Frontend:
cd frontend
npm install
npm run dev
# Runs on http://localhost:5173cd backend/infra/docker
docker-compose up -dVisit the app at: http://localhost:5173
- Frontend can be deployed on Vercel, Netlify, or Render (Static Site).
- Backend can be deployed on Render, Railway, or Heroku.
Example: For Render
- Backend β Web Service (Node.js)
- Frontend β Static Site (build with
npm run build, output =dist)
Backend
npm run dev # Run with nodemon (dev mode)
npm start # Run productionFrontend
npm run dev # Local development
npm run build # Production build
npm run preview # Preview production buildAll API requests go through the API Gateway: http://localhost:3000/api/v1
POST /auth/register- User registrationPOST /auth/login- User loginPOST /auth/logout- User logoutPOST /auth/refresh- Refresh access token
GET /plans- Get all plansGET /plans/:id- Get plan by IDPOST /plans- Create planPUT /plans/:id- Update planDELETE /plans/:id- Delete plan
GET /templates- Get all templatesGET /templates/:id- Get template by IDPOST /templates- Create templatePUT /templates/:id- Update templateDELETE /templates/:id- Delete template
GET /health- API Gateway healthGET /api/health- Auth Service healthGET /api/health- Plan Service healthGET /health- Template Service health
(Full OpenAPI documentation coming soon)
Contributions are welcome!
- Fork the repo
- Create your feature branch (
git checkout -b feature/YourFeature) - Commit changes (
git commit -m 'Add new feature') - Push to branch (
git push origin feature/YourFeature) - Open a Pull Request
This project is licensed under the MIT License.
Developed with β€οΈ by Harsh