A professional, full-stack client management and project tracking application built with FastAPI and React. Features a stunning dark-themed UI with smooth animations, real-time analytics, and comprehensive business management tools.
- Authentication System - JWT-based secure authentication with login/register
- Dashboard Analytics - Revenue charts, project status distribution, activity timeline
- Project Management - Create, track, and manage projects with progress tracking
- Client Management - Comprehensive client database with contact details
- Invoice Tracking - Create invoices, track payments, manage billing
- Dark/Light Mode - Beautiful theme switcher with system preference support
- Responsive Design - Works seamlessly on desktop and mobile devices
- Docker Ready - Full Docker and Docker Compose support
- FastAPI - Modern Python web framework
- SQLAlchemy - SQL toolkit and ORM
- SQLite - Lightweight database (easy to switch to PostgreSQL)
- JWT - Secure token-based authentication
- Pydantic - Data validation using Python type hints
- React 18 - UI library with hooks
- React Router v6 - Client-side routing
- Framer Motion - Smooth animations
- Recharts - Data visualization
- Lucide React - Beautiful icons
- Axios - HTTP client
- Docker - Containerization
- Docker Compose - Multi-container orchestration
- Nginx - Production web server
client-portal/
βββ backend/
β βββ main.py # FastAPI app & routes
β βββ models.py # SQLAlchemy models
β βββ schemas.py # Pydantic schemas
β βββ auth.py # Authentication logic
β βββ database.py # Database configuration
β βββ config.py # App settings (env-based)
β βββ requirements.txt # Python dependencies
β βββ Dockerfile # Backend container
β
βββ frontend/
β βββ src/
β β βββ components/ # Reusable components
β β βββ pages/ # Page components
β β βββ context/ # React context providers
β β βββ styles/ # CSS styles
β β βββ App.jsx # Main app component
β β βββ main.jsx # Entry point
β βββ nginx.conf # Nginx configuration
β βββ Dockerfile # Production container
β βββ Dockerfile.dev # Development container
β
βββ docker-compose.yml # Production compose
βββ docker-compose.dev.yml # Development compose
βββ .env.example # Environment template
- Docker 20.10+
- Docker Compose 2.0+
# Clone and navigate to the project
cd client-portal
# Copy environment file and customize
cp .env.example .env
# Build and start containers
docker-compose up -d --build
# View logs
docker-compose logs -fThe app will be available at:
- Frontend: http://localhost
- Backend API: http://localhost:8000
- API Docs: http://localhost:8000/docs
# Start development containers
docker-compose -f docker-compose.dev.yml up -d --build
# View logs
docker-compose -f docker-compose.dev.yml logs -fThe app will be available at:
- Frontend: http://localhost:5173
- Backend API: http://localhost:8000
# Stop containers
docker-compose down
# Stop and remove volumes (clears database)
docker-compose down -v
# Rebuild specific service
docker-compose up -d --build backend
# View container status
docker-compose ps
# Execute command in container
docker-compose exec backend python -c "print('Hello')"- Python 3.9+
- Node.js 18+
- npm or yarn
# Navigate to backend directory
cd client-portal/backend
# Create virtual environment
python -m venv venv
# Activate virtual environment
# On Linux/Mac:
source venv/bin/activate
# On Windows:
.\venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
# Run the server
uvicorn main:app --reload --host 0.0.0.0 --port 8000# Navigate to frontend directory
cd client-portal/frontend
# Install dependencies
npm install
# Run development server
npm run dev| Variable | Description | Default |
|---|---|---|
SECRET_KEY |
JWT signing key (change in production!) | your-super-secret... |
DEBUG |
Enable debug mode | false |
DATABASE_URL |
Database connection string | sqlite:///./data/portal.db |
CORS_ORIGINS |
Allowed CORS origins (comma-separated) | http://localhost,... |
# Using OpenSSL
openssl rand -hex 32
# Using Python
python -c "import secrets; print(secrets.token_hex(32))"| Method | Endpoint | Description |
|---|---|---|
| POST | /api/auth/register |
Register new user |
| POST | /api/auth/login |
Login user |
| GET | /api/auth/me |
Get current user |
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/clients |
List all clients |
| POST | /api/clients |
Create client |
| GET | /api/clients/{id} |
Get client |
| PUT | /api/clients/{id} |
Update client |
| DELETE | /api/clients/{id} |
Delete client |
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/projects |
List all projects |
| POST | /api/projects |
Create project |
| GET | /api/projects/{id} |
Get project |
| PUT | /api/projects/{id} |
Update project |
| DELETE | /api/projects/{id} |
Delete project |
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/invoices |
List all invoices |
| POST | /api/invoices |
Create invoice |
| PUT | /api/invoices/{id} |
Update invoice |
| DELETE | /api/invoices/{id} |
Delete invoice |
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/dashboard |
Get dashboard statistics |
| POST | /api/seed |
Seed demo data |
| GET | /api/health |
Health check |
- "Neo-Corporate Luxury" aesthetic with dark theme
- Outfit font for headings, DM Sans for body text
- Emerald green accent color (#10B981)
- Glassmorphism card effects
- Smooth page transitions with Framer Motion
- Custom scrollbars
- Responsive grid layouts
Edit CSS variables in frontend/src/styles/index.css:
:root {
--accent-primary: #10B981; /* Main accent */
--accent-secondary: #6366F1; /* Secondary accent */
--bg-primary: #0A0A0F; /* Background */
}Update your .env file:
DATABASE_URL=postgresql://user:password@localhost:5432/nexus_portalAdd psycopg2-binary to backend/requirements.txt:
psycopg2-binary==2.9.9
- Change SECRET_KEY - Use a strong, random key
- Set DEBUG=false - Disable debug mode
- Use HTTPS - Add SSL/TLS certificates
- Configure CORS - Set specific allowed origins
- Use PostgreSQL - For production workloads
- Add rate limiting - Protect against abuse
- Set up backups - Regular database backups
The Docker setup works with:
- AWS ECS / Fargate
- Google Cloud Run
- Azure Container Instances
- DigitalOcean App Platform
- Railway / Render / Fly.io
MIT License - feel free to use this for your portfolio or client projects!
Built with FastAPI + React + Docker | Perfect for Upwork Portfolio






