_____ _ _____ _
/ ____| | | ___| |
| (___ | |_ _ _ __ __ | |_ | | ___ __ __ __
\___ \| __| | | | \ \ / / | _| | | / _ \ \ \ / \ / /
____) | |_| |_| | \ \ / | | | || (_) | \ /\ /
|_____/ \__|\__,_| /_/ \_\ |_| |_| \___/ \__/ \__/
__| | StyxFlow
|__ /
A modern turborepo-based interview platform with AI-powered features, real-time communication, and comprehensive job management.
- AI-Powered Interviews: Intelligent interview generation and evaluation using Google Gemini and Groq AI
- Real-Time Communication: Voice and video capabilities with VAPI integration
- Interview Recording: Built-in recording functionality using RecordRTC
- Job Management: Create, manage, and track job postings and candidate applications
- User Authentication: Secure authentication with Better Auth supporting multiple OAuth providers (Google, Twitter, Microsoft)
- Vector Search: Semantic search capabilities powered by Qdrant vector database
- File Uploads: Cloudinary integration for resume and profile picture uploads
- Task Queue System: Background job processing with Redis-backed queues
- Monorepo Structure: Turborepo-based architecture for efficient development and building
-
api: Express.js REST API backend with TypeScript- Database: PostgreSQL with Drizzle ORM
- Vector DB: Qdrant for semantic search
- Cache: Redis for caching and queues
- AI Agents: Google Gemini and Groq integration
- worker: Background job processing service with BullMQ
-
web: Next.js 15+ frontend application- Interview attempt interface
- Job posting and management
- User profile management
- Real-time AI powered voice communication with VAPI
typescript-config: Shared TypeScript configurations
- TypeScript - Static type checking
- ESLint - Code linting
- Prettier - Code formatting
- Turborepo - Monorepo build system
- Node.js >= 18
- Yarn 1.22.22 (or npm/pnpm)
- Docker & Docker Compose (for backend with containers)
- PostgreSQL (if running on local database)
- Redis (if running on local redis)
# Clone the repository
git clone https://github.com/yourusername/styxflow.git
cd styxflow
# Install dependencies
yarn install
# or
npm installCreate environment files for each app using the provided examples:
# API configuration
cp apps/api/.env.example apps/api/.env
# Web configuration
cp apps/web/.env.example apps/web/.envRefer to each .env.example file for detailed parameter descriptions.
Run all apps simultaneously using Turborepo:
# Start development servers for all apps
yarn dev
# or
npm run dev
# This starts:
# - API server on http://localhost:8000
# - Web app on http://localhost:3000Run specific apps:
# Start only the web app
yarn workspace web dev
# or
npm run dev -- --filter=web
# Start only the API
yarn workspace api dev
# or
npm run dev -- --filter=api
# Start only the worker
yarn workspace api worker
# or
npm run worker -- --filter=api
- [TypeScript](https://www.typescriptlang.org/) - Static type checking
- [ESLint](https://eslint.org/) - Code linting
- [Prettier](https://prettier.io/) - Code formatting
- [Turborepo](https://turborepo.com/) - Monorepo build system
## π Quick Start
### Prerequisites
- Node.js >= 18
- Yarn 1.22.22 (or npm/pnpm)
- Docker & Docker Compose (for backend with containers)
- PostgreSQL (if running on local database)
- Redis (if running on local redis)
### 1οΈβ£ Installation
```bash
# Clone the repository
git clone https://github.com/yourusername/styxflow.git
cd styxflow
# Install dependencies
yarn install
# or
npm installCreate environment files for each app using the provided examples:
# API configuration
cp apps/api/.env.example apps/api/.env
# Web configuration
cp apps/web/.env.example apps/web/.envRefer to each .env.example file for detailed parameter descriptions.
Run all apps simultaneously using Turborepo:
# Start development servers for all apps
yarn dev
# or
npm run dev
# This starts:
# - API server on http://localhost:8000
# - Web app on http://localhost:3000Run specific apps:
# Start only the web app
yarn workspace web dev
# or
npm run dev -- --filter=web
# Start only the API
yarn workspace api dev
# or
npm run dev -- --filter=api
# Start only the worker
yarn workspace api worker
# or
npm run worker -- --filter=apiRun the API backend services using Docker Compose:
Run the API backend services using Docker Compose:
# Development setup
docker-compose -f docker-compose.dev.yml up -d
# Production setup
docker-compose -f docker-compose.prod.yml up -d
# View logs
docker-compose logs -f api
# Stop services
docker-compose downAfter the backend is running, start the web app in a separate terminal:
cd apps/web
yarn dev
# or
npm run dev
```bash
# Development setup
docker-compose -f docker-compose.dev.yml up -d
# Production setup
docker-compose -f docker-compose.prod.yml up -d
# View logs
docker-compose logs -f api
# Stop services
docker-compose downAfter the backend is running, start the web app in a separate terminal:
cd apps/web
yarn dev
# or
npm run devRun the complete application stack using Docker:
Run the complete application stack using Docker:
# Build and start all services
docker-compose -f docker-compose.prod.yml up -d
# For development with hot reload
docker-compose -f docker-compose.dev.yml up -d
# View all running services
docker-compose ps
# Stop all services
docker-compose downBuild all packages and apps:
yarn build
# or
npm run buildBuild specific packages:
yarn build --filter=web
# or
npm run build -- --filter=web
```bash
# Build and start all services
docker-compose -f docker-compose.prod.yml up -d
# For development with hot reload
docker-compose -f docker-compose.dev.yml up -d
# View all running services
docker-compose ps
# Stop all services
docker-compose downBuild all packages and apps:
yarn build
# or
npm run buildBuild specific packages:
yarn build --filter=web
# or
npm run build -- --filter=webRun linting across the monorepo:
yarn lint
# or
npm run lintFormat code with Prettier:
yarn format
# or
npm run formatCheck types:
yarn check-types
# or
npm run check-typesGenerate migrations:
cd apps/api
yarn drizzle-kit generateApply migrations:
cd apps/api
yarn drizzle-kit migrateOpen Drizzle Studio to inspect database:
cd apps/api
yarn drizzle-kit studioThe API is available at http://localhost:8000 in development.
Key endpoints:
/api/v1/auth/*- Authentication endpoints/api/v1/interviews/*- Interview management/api/v1/jobs/*- Job postings/api/v1/users/*- User profiles
Run tests across the monorepo:
yarn testRun tests for specific apps:
Run linting across the monorepo:
yarn lint
# or
npm run lintFormat code with Prettier:
yarn format
# or
npm run formatCheck types:
yarn check-types
# or
npm run check-typesGenerate migrations:
cd apps/api
yarn drizzle-kit generateApply migrations:
cd apps/api
yarn drizzle-kit migrateOpen Drizzle Studio to inspect database:
cd apps/api
yarn drizzle-kit studioThe API is available at http://localhost:8000 in development.
Key endpoints:
/api/v1/auth/*- Authentication endpoints/api/v1/interviews/*- Interview management/api/v1/jobs/*- Job postings/api/v1/users/*- User profiles
Run tests across the monorepo:
yarn testRun tests for specific apps:
yarn workspace api teststyxflow/
βββ apps/
β βββ api/ # Express.js backend API+Background Worker
β βββ web/ # Next.js frontend application
βββ packages/
β βββ typescript-config/ # Shared TypeScript configs
βββ docker-compose.dev.yml
βββ docker-compose.prod.yml
βββ turbo.json # Turborepo configuration
Each application requires specific environment variables. See the respective .env.example files:
- API: apps/api/.env.example
- Web: apps/web/.env.example
# Push to GitHub and connect your repository to Vercel
# Vercel will automatically detect the Next.js app and deployDeploy the API backend using:
- Docker containers on any cloud platform (AWS, GCP, Azure, DigitalOcean)
- Railway, Render, or other Node.js-friendly platforms
- Turborepo Documentation
- Next.js Documentation
- Express.js Documentation
- Drizzle ORM
- Better Auth Documentation
This project is licensed under the MIT License - see the LICENSE file for details.
Contributions are welcome! Please feel free to submit a Pull Request.
For support, open an issue on GitHub or contact the maintainers.
yarn workspace api teststyxflow/
βββ apps/
β βββ api/ # Express.js backend API+Background Worker
β βββ web/ # Next.js frontend application
βββ packages/
β βββ typescript-config/ # Shared TypeScript configs
βββ docker-compose.dev.yml
βββ docker-compose.prod.yml
βββ turbo.json # Turborepo configuration
Each application requires specific environment variables. See the respective .env.example files:
- API: apps/api/.env.example
- Web: apps/web/.env.example
# Push to GitHub and connect your repository to Vercel
# Vercel will automatically detect the Next.js app and deployDeploy the API backend using:
- Docker containers on any cloud platform (AWS, GCP, Azure, DigitalOcean)
- Railway, Render, or other Node.js-friendly platforms
- Turborepo Documentation
- Next.js Documentation
- Express.js Documentation
- Drizzle ORM
- Better Auth Documentation
This project is licensed under the MIT License - see the LICENSE file for details.
Contributions are welcome! Please feel free to submit a Pull Request.
For support, open an issue on GitHub or contact the maintainers.
