A production-quality personal developer portfolio built as a monorepo.
Frontend: Next.js · TypeScript · Tailwind CSS · Framer Motion
Backend: FastAPI · PostgreSQL · WebSocket · GitHub App
cd backend
python -m venv .venv
# Windows
.venv\Scripts\activate
# macOS/Linux
source .venv/bin/activate
pip install -r requirements.txt
# Copy and configure environment variables
cp .env.example .env
# Edit .env with your values
# Run
uvicorn app.main:app --reload --port 8000cd frontend
npm install
# Copy and configure environment variables
cp .env.example .env.local
# Edit .env.local if needed
npm run devThe frontend runs at http://localhost:3000
The backend runs at http://localhost:8000
| Variable | Description |
|---|---|
GITHUB_APP_ID |
GitHub App ID |
GITHUB_PRIVATE_KEY |
GitHub App private key (PEM) |
GITHUB_WEBHOOK_SECRET |
Webhook secret for signature validation |
GITHUB_INSTALLATION_ID |
GitHub App installation ID |
DATABASE_URL |
PostgreSQL connection string |
CORS_ORIGINS |
Comma-separated allowed origins |
| Variable | Description |
|---|---|
NEXT_PUBLIC_API_URL |
Backend API URL (default: http://localhost:8000) |
- Go to GitHub Settings → Developer Settings → GitHub Apps → New GitHub App
- Set the webhook URL to
https://api.hrick.in/webhooks/github(or use smee.io for local development) - Generate a webhook secret and set it in
GITHUB_WEBHOOK_SECRET - Subscribe to events:
push,create,delete,pull_request,issues - Generate a private key and save the PEM content to
GITHUB_PRIVATE_KEY - Install the app on your account/repos
- Note the installation ID and set it in
GITHUB_INSTALLATION_ID
GitHub
│
│ repository events
▼
GitHub App Webhook
│
▼
FastAPI backend (api.hrick.in)
│
├── validate webhook signature
├── parse & normalize events
├── persist to PostgreSQL
└── broadcast via WebSocket
│
▼
Next.js frontend (hrick.in)
NEXT_PUBLIC_API_URL=https://api.hrick.inDATABASE_URL=postgresql+asyncpg://user:pass@host:5432/portfolio
CORS_ORIGINS=https://hrick.inBoth applications have Dockerfiles and can be deployed independently.
MIT