You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A production-grade billing platform built with Java 17 + Spring Boot 3.2, React + TypeScript, fully containerized with Docker Compose.
It enables organizations to manage teams, projects, and tasks while providing secure authentication, event-driven processing, subscription billing, notifications, and scalable infrastructure.
API Gateway: Nginx (routing, load balancing, rate limiting)
Container: Docker Compose (11 services)
Monitoring: Prometheus + Grafana dashboards
API Endpoints
Authentication
POST /api/auth/register Register new user
POST /api/auth/login Login
POST /api/auth/refresh Refresh access token
POST /api/auth/logout Logout
GET /api/auth/verify-email Verify email address
POST /api/auth/forgot-password Request password reset
POST /api/auth/reset-password Reset password
Organizations
POST /api/organizations Create organization
GET /api/organizations List user's organizations
GET /api/organizations/{id} Get organization
PATCH /api/organizations/{id} Update organization
GET /api/organizations/{id}/members List members (paginated)
POST /api/organizations/{id}/members/invite Invite member
DELETE /api/organizations/{id}/members/{uid} Remove member
Billing
GET /api/billing/plans List public plans
POST /api/billing/organizations/{id}/checkout Create Stripe checkout
GET /api/billing/organizations/{id}/subscription Get subscription
POST /api/billing/organizations/{id}/subscription/cancel Cancel subscription
POST /api/billing/organizations/{id}/subscription/upgrade Change plan
GET /api/billing/organizations/{id}/invoices List invoices
GET /api/billing/organizations/{id}/payments List payments
POST /api/billing/webhooks/stripe Stripe webhook
Projects & Tasks
POST /api/organizations/{id}/projects Create project
GET /api/organizations/{id}/projects List projects
GET /api/projects/{id} Get project
PATCH /api/projects/{id} Update project
DELETE /api/projects/{id} Delete project
POST /api/projects/{id}/tasks Create task
GET /api/projects/{id}/tasks List tasks
GET /api/tasks/{id} Get task
PATCH /api/tasks/{id} Update task
DELETE /api/tasks/{id} Delete task
Stateless JWT (15 min access / 7 day refresh with rotation)
Refresh tokens stored in Redis with automatic expiry
Access token blacklist on logout
BCrypt password hashing (cost 12)
Account lockout after 5 failed login attempts
Rate limiting via Nginx (auth: 10 req/min, API: 100 req/min)
RBAC: SUPER_ADMIN, ORG_ADMIN, MEMBER
Stripe webhook signature verification
Transactional outbox pattern for reliable event delivery
Development
# Backend only (with local infra)cd backend
mvn spring-boot:run -Dspring-boot.run.profiles=local
# Frontend onlycd frontend
npm install && npm run dev
# Run all infra services (no app)
docker-compose up -d postgres mongodb redis kafka minio
About
Billing is a production-grade multi-tenant SaaS platform for collaborative project and workflow management. It enables organizations to manage teams, projects, and tasks while providing secure authentication, event-driven processing, subscription billing, notifications, and scalable infrastructure.