Guruji - live demo
Guruji is an AI-powered interview platform that automates the creation, scheduling, and execution of technical interviews. Leveraging modern web technologies and AI/voice services, Guruji offers a seamless experience for recruiters and candidates alike.
Guruji is still under active development. You might encounter some issues or ongoing UI changes. π‘ For bug reports or suggestions, please contact anoop@anoopvl.pro.
- Next.js 15 (App Router) β Server-side rendering, dynamic routes, API routes
- React β Client-side UI
- Tailwind CSS & ShadCN UI β Utility-first styling and component library
- Supabase β Authentication, PostgreSQL database, CRUD operations
- Vapi.ai β AI voice assistant (interview conductor)
- Lucide Icons & React-Icons β SVG iconography
- Framer Motion β Animations for smooth UI transitions
- Sonner β Toast notifications
- PNPM β Fast package management
- Docker β Containerization for consistent deployment
Official Docker Image: anoopvl/guruji-guruji on Docker Hub
- Open
https://guruji.anoopvl.pro
- Click Sign in on the landing page
- Log in using Google or GitHub (via Supabase)
- Upon success, you're redirected to your Dashboard
From here, you can:
- Create new interviews (
/dashboard/create-interview
) - View all interviews (
/all-interviews
) - View scheduled interviews and feedback (
/scheduled-interviews
)
Route: /dashboard/create-interview
- Step 1: Enter job details (title, description, duration)
- Step 2: AI generates questions.
- Step 3: Review and save questions β a unique Interview ID and URL are created
Route: /all-interviews
- View all created interviews
- Copy and share interview links
Route: /scheduled-interviews
- View completed interviews along with feedback
- Delete interviews via smooth UI interactions
Route: /interview/[id]/start
- Vapi.ai conducts the voice interview session
- The AI asks questions, transcribes answers, and ends the session
- Feedback is generated and saved
- Redirects user to the completed screen
Route: /interview/[id]/completed
- Displays summary and analysis
- Guides you on potential next steps
guruji/
ββ app/
β ββ (main)/dashboard/ # Protected dashboard routes
β β ββ create-interview/ # Interview creation flow
β β ββ _components/ # Shared UI components
β β ββ page.jsx # Dashboard landing
β ββ (main)/all-interviews/ # List all interviews
β ββ (main)/scheduled-interviews/ # Interviews with feedback
β ββ (main)/layout.js # Nested layouts + provider
β ββ auth/page.jsx # OAuth login page
β ββ interview/[id]/start/ # Live interview session
β ββ interview/[id]/completed/ # Interview completed screen
β ββ provider.jsx # Supabase auth wrapper & context
ββ components/ # Shared Shadcn UI components
ββ services/ # API clients (Supabase, Constants)
ββ public/ # Static assets
ββ styles/ # Global CSS and Tailwind config
ββ Dockerfile.dev/ # Docker configuration files
ββ Dockerfile # Docker image configuration
ββ docker-compose.yml # Multi-container setup
ββ docker-compose.dev.yml # Multi-container setup for hotreadload
ββ .dockerignore # Docker ignore patterns
ββ next.config.mjs # Next.js config
ββ package.json # Scripts & dependencies
- Clone the repo
git clone https://github.com/AnoopVL/gurujii.git
cd gurujii
- Install dependencies
pnpm install
- Configure environment variables
Create a
.env.local
file:
NEXT_PUBLIC_SITE_URL=http://localhost:3000
NEXT_PUBLIC_VAPI_PUBLIC_KEY=<your_vapi_key>
NEXT_PUBLIC_SUPABASE_URL=<your_supabase_url>
NEXT_PUBLIC_SUPABASE_KEY=<your_supabase_anon_key>
- Run development server
pnpm run dev
- Open in browser
Go to
http://localhost:3000
- Docker installed on your machine
- Docker Compose (usually comes with Docker Desktop)
- Clone the repo
git clone https://github.com/AnoopVL/gurujii.git
cd gurujii
- Configure environment variables
Create a
.env.local
file:
NEXT_PUBLIC_SUPABASE_URL=your_superbase_url
NEXT_PUBLIC_SUPABASE_ANON_KEY=your_anon_key
OPENROUTER_API_KEY=your_router_key
NEXT_PUBLIC_VAPI_PUBLIC_KEY=your_vapi_key
NEXT_PUBLIC_HOST_URL=http://localhost:3000/interview
NEXT_PUBLIC_SITE_URL=http://localhost:3000
- Build and run with Docker Compose (recommended)
- For local development:
docker-compose -f docker-compose.dev.yml up --build
- For local working:
export $(grep -v '^#' .env.local | xargs)
docker-compose -f docker-compose.yml up --build -d
- Access the application
Open
http://localhost:3000
in your browser
Stop all containers:
docker-compose down
View logs:
docker-compose logs -f
- Multi-stage build for optimized image size
- Node.js 18 Alpine base image
- Automatic dependency caching
- Production-ready configuration
- Health checks included
- app: Main Next.js application
- nginx (optional): Reverse proxy for production
- Volume mounting for development
- Environment variable management
- Hot reload support in development mode
For more screenshots checkout (
/screenshots
) folder
- Build the app
pnpm run build
- Start in production
pnpm run start
docker-compose -f docker-compose.prod.yml up -d
1. Docker Hub + Cloud Provider:
# Build and push to Docker Hub
docker build -t yourusername/gurujii:latest .
docker push yourusername/gurujii:latest
# Deploy on any cloud provider supporting Docker
2. Container Registry:
- AWS ECR + ECS/Fargate
- Google Cloud Run
- Azure Container Instances
- DigitalOcean App Platform
3. Platform-as-a-Service:
- Vercel (recommended for Next.js)
- Netlify
- Railway
- Render
NEXT_PUBLIC_SITE_URL=https://your-domain.com
NEXT_PUBLIC_VAPI_PUBLIC_KEY=<your_production_vapi_key>
NEXT_PUBLIC_SUPABASE_URL=<your_production_supabase_url>
NEXT_PUBLIC_SUPABASE_KEY=<your_production_supabase_key>
NODE_ENV=production
- Start development environment:
docker-compose up
- Install new dependencies:
docker-compose exec app pnpm add <package-name>
- Run commands inside container:
docker-compose exec app pnpm run <script>
- Access container shell:
docker-compose exec app sh
View application logs:
docker-compose logs app
Monitor container resources:
docker stats
Pull requests and issues are welcome. Open for enhancements and feature requests.
- Fork the repository
- Clone your fork:
git clone https://github.com/yourusername/gurujii.git
- Create a feature branch:
git checkout -b feature/amazing-feature
- Set up development environment:
- Traditional: Follow Option 1 in Installation & Setup
- Docker: Use
docker-compose up
for consistent environment
- Make your changes and test thoroughly
- Commit your changes:
git commit -m 'Add amazing feature'
- Push to the branch:
git push origin feature/amazing-feature
- Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Next.js for the amazing React framework
- Supabase for backend services
- Vapi.ai for AI voice capabilities
- Tailwind CSS for styling
- ShadCN UI for beautiful components
Made with β€οΈ by AnoopVL