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