Personal webste with mistral:7b model that talks like Smeagol, helps send emails, check calendar availability, and schedule calls.
# Production mode (ports 8000/8080)
./start_all.sh
# Development mode (ports 3000/3001, hot reload)
./start_all.sh dev
# Stop all services
./stop_all.sh- Python 3.11+ with uv package manager
- Node.js 18+ and npm
- Ollama (install) with
qwen2.5:3bmodel - Cloudflare Tunnel (optional, for public access)
- Google Calendar API credentials (see Setup)
# Backend
uv sync
# Frontend
cd about-nithin
npm install# Copy template
cp .env.example .env
# Edit .env with your settings (ports, paths, etc.)Create secrets/ directory with:
token.json- Google OAuth tokenclient_secret.json- Google Calendar API credentialsgoogle_smtp_app_password.json- Gmail app password for notifications
Format for google_smtp_app_password.json:
{
"password": "your-app-password-here"
}ollama pull qwen2.5:3bPOST /assistant/message
- Chat about resume/experience
- Intent detection (contact, schedule, availability)
- RAG-based responses
- User: "When is Nithin available?"
- System: Shows availability form
- User: Submits dates + time preferences
POST /availability/check→ Returns available slots
- User: "Schedule a call"
- System: Shows scheduling form
- User: Submits contact info + availability
POST /schedule/create→ Returns time slots- User: Selects slot number
POST /assistant/messagewith slot# → Books meeting + sends Google Meet link
- User: "Contact Nithin"
- System: Shows contact form
- User: Submits message
POST /contact/submit→ Sends email notification
Production and development servers run independently:
Production (background, always on):
- Backend:
localhost:8000 - Frontend:
localhost:8080 - Runs built/optimized code
Development (foreground, hot reload):
- Backend:
localhost:3000 - Frontend:
localhost:3001 - Auto-restarts on code changes
Use ./start_all.sh dev for development while production runs separately.
/app # Backend (FastAPI)
/api.py # Main API + routes
/form_handlers.py # Form processing + calendar
/scheduler.py # Calendar operations
/llm.py # Ollama integration
/about-nithin # Frontend (React + Vite)
/src
/components # Form components
/utils # Timezone utilities
/secrets # Credentials (gitignored)
/logs # Runtime logs (gitignored)
# Build frontend
cd about-nithin
npm run build
# Start production (builds + serves)
./start_all.shProduction mode:
- Builds frontend with
npm run build - Serves optimized static files
- Runs backend with 2 workers
- Starts Cloudflare Tunnel
Private project