LifePulse is a full-stack personal productivity and mental wellness system designed to help users track habits, mood patterns, journaling insights, and long-term goals.
It is built using a fully containerized distributed architecture consisting of:
- React + Vite frontend (Docker container)
- FastAPI backend (Docker container)
- PostgreSQL database (Docker volume persistence)
- Nginx reverse proxy
- CI/CD pipeline via GitHub Actions
- AWS EC2 deployment
The project demonstrates production-grade engineering practices including asynchronous APIs, modular architecture, secure authentication, and automated cloud deployment.
Daily journaling system for self-reflection and emotional tracking.
- Streak-based logic
- Calendar-based visualization
- Persistent progress history
- Daily mood logging
- Trend visualization
- Emotional pattern analysis
Unified overview of:
- Habits
- Journals
- Mood trends
- Daily progress
External API integration for motivational quotes
- JWT-based authentication
- Secure password hashing (bcrypt)
- Protected API routes
ββββββββββββββββββββββββββββββ
β React Frontend Container β
β (Vite + React) β
ββββββββββββββ¬ββββββββββββββββ
β /api
βΌ
ββββββββββββββββββββββββββββββ
β Nginx Proxy β
β (Reverse Proxy Layer) β
ββββββββββββββ¬ββββββββββββββββ
β
ββββββββββββββΌββββββββββββββββ
β FastAPI Backend β
β (Docker Container) β
ββββββββββββββ¬ββββββββββββββββ
β
ββββββββββββββΌββββββββββββββββ
β PostgreSQL Database β
β (Docker + Persistent Volume)β
ββββββββββββββββββββββββββββββ
In production, the system runs behind an Nginx reverse proxy on AWS EC2.
Browser
β
https://your-domain.com (or EC2 Public IP)
β
Nginx (port 80 / 443)
βββ / β React Frontend Container
βββ /api β FastAPI Backend Container (port 8000)
Frontend calls:
fetch("/api/users")Nginx internally forwards it to:
http://backend:8000/users
The backend is NOT exposed directly to the internet.
- Prevents CORS issues completely
- Single domain for frontend + backend
- Backend remains private
- Fully containerized microservice-style architecture
- Clean reverse proxy routing with Nginx
- Production-grade deployment pattern
- Scalable via Docker Compose
- React 19
- Vite
- TypeScript
- Tailwind CSS v4
- Context API + Hooks
- Lucide Icons
- FastAPI (Python 3.11+)
- SQLModel ORM
- PostgreSQL 15
- JWT Authentication
- Alembic migrations
- Passlib (bcrypt hashing)
- Docker & Docker Compose
- Nginx reverse proxy
- GitHub Actions CI/CD
- AWS EC2 deployment
- React frontend runs in a Docker container
- FastAPI backend runs in a separate container
- PostgreSQL runs with persistent Docker volume storage
- Nginx acts as a single entry point (reverse proxy)
- All services communicate over a Docker internal network
The GitHub repository name and Docker image names are intentionally different.
-
GitHub Repository: LifePulse
-
Docker Images:
neonbluewhale/rumi-frontendneonbluewhale/rumi-backend
- Docker images are published under a Docker Hub namespace
- Image naming originated from an earlier project structure
- CI/CD pipeline is independent of repository naming
- This does NOT affect functionality or deployment
Automated workflow:
- Trigger on push or PR to
frontend/orbackend/ - Build Docker images for services
- Push images to Docker Hub
- SSH into AWS EC2 instance
- Pull latest images
- Restart services using
docker compose up -d
LifePulse is deployed on AWS EC2 using Docker and Nginx.
Browser
β
EC2 Public URL (Domain / Elastic IP)
β
Nginx (Port 80 / 443)
βββ / β React Frontend Container
βββ /api β FastAPI Backend Container
Install:
- Docker
- Docker Compose
git clone <repo-url>
cd projectSECRET_KEY=your_secret_key
DATABASE_URL=postgresql://user:password@db:5432/LifePulsedocker compose up -d --buildThis starts:
- Frontend container
- Backend container
- PostgreSQL (persistent volume)
- Nginx reverse proxy
http://<EC2-PUBLIC-IP>
or (recommended):
https://your-domain.com
- Fully containerized production-grade architecture
- Real-world reverse proxy setup using Nginx
- Microservice-style service separation
- Persistent database layer using Docker volumes
- Fully automated CI/CD pipeline with GitHub Actions
- Secure JWT authentication system
- AWS EC2 cloud deployment experience
- Clean separation of frontend, backend, and infrastructure