
An Open-source AI-native alternative to Google Meet and Zoom
Ready to escape complex, data-hungry meeting apps? Join the future of video calling.
- Web-based - works on any modern browser
- Mobile responsive design
- Progressive Web App (PWA) support
- Offline capabilities for basic features
- Next.js 15 - React framework with App Router
- TypeScript - Type-safe development
- Tailwind CSS - Utility-first styling
- shadcn/ui - Beautiful component library
- LiveKit - Real-time video/audio communication - Working on the migration to Mediasoup
- React Query - Server state management
- Hono - Fast web framework
- Bun - JavaScript runtime
- PostgreSQL - Reliable database
- Drizzle ORM - Type-safe database queries
- Better Auth - Authentication system
- Turborepo - Monorepo build system
- Docker - Containerization
- Vercel - Deployment platform
- Rate Limiting - API protection
- Node.js 20 or higher
- pnpm package manager
- Docker and Docker Compose
- Git
-
Clone the repository
git clone https://github.com/Call0dotco/call.git cd call
-
Start the development environment
./run-dev.sh
This script will automatically:
- β
Create a
.env
file if it doesn't exist - π¦ Install dependencies if needed
- π³ Start Docker services (PostgreSQL)
- β³ Wait for the database to be ready
- π Start the development environment
- β
Create a
-
Open your browser
- Web app: http://localhost:3000
- Server: http://localhost:1284
Create a .env
file in the root directory with the following variables:
# Database Configuration
DATABASE_URL=postgresql://postgres:postgres@localhost:5434/call
# Google OAuth (for authentication)
GOOGLE_CLIENT_ID=your_google_client_id
GOOGLE_CLIENT_SECRET=your_google_client_secret
# Email Configuration (for notifications)
EMAIL_FROM=your_email@domain.com
RESEND_API_KEY=your_resend_api_key
# App URLs
FRONTEND_URL=http://localhost:3000
BACKEND_URL=http://localhost:1284
# App Configuration
NODE_ENV=development
go to https://www.better-auth.com/docs/installation and click on 'Generate Secret'.
BETTER_AUTH_SECRET=your_generated_secret
The project uses Docker Compose to run PostgreSQL:
# Start services
pnpm docker:up
# Stop services
pnpm docker:down
# Clean up (removes volumes)
pnpm docker:clean
call/
βββ apps/ # Applications
β βββ web/ # Next.js web application
β β βββ app/ # App Router pages
β β β βββ (app)/ # Main app routes
β β β βββ (auth)/ # Authentication routes
β β β βββ (waitlist)/ # Landing page
β β βββ components/ # React components
β β βββ lib/ # Utilities and configs
β β βββ public/ # Static assets
β βββ server/ # Hono backend API
β βββ routes/ # API routes
β βββ config/ # Server configuration
β βββ utils/ # Server utilities
β βββ validators/ # Request validation
βββ packages/ # Shared packages
β βββ auth/ # Authentication utilities
β βββ db/ # Database schemas and migrations
β βββ ui/ # Shared UI components (shadcn/ui)
β βββ eslint-config/ # ESLint configuration
β βββ typescript-config/ # TypeScript configuration
βββ docker-compose.yml # Docker services
βββ run-dev.sh # Development setup script
βββ turbo.json # Turborepo configuration
# Development
pnpm dev # Start all applications
pnpm dev --filter web # Start only web app
pnpm dev --filter server # Start only server
# Building
pnpm build # Build all packages
pnpm build --filter web # Build only web app
# Linting & Formatting
pnpm lint # Lint all packages
pnpm lint:fix # Fix linting issues
pnpm format # Check formatting
pnpm format:fix # Fix formatting
# Database
pnpm db:generate # Generate database types
pnpm db:migrate # Run database migrations
pnpm db:push # Push schema changes
pnpm db:studio # Open database studio
# Docker
pnpm docker:up # Start Docker services
pnpm docker:down # Stop Docker services
pnpm docker:clean # Clean up Docker volumes
We use pnpm workspaces to manage this monorepo:
# Install a dependency in a specific workspace
pnpm add <package> --filter <workspace-name>
# Install a dependency in all workspaces
pnpm add -w <package>
# Link a local package in another workspace
pnpm add @call/<package-name> --filter <workspace-name> --workspace
-
Create a feature branch
git checkout -b feature/your-feature-name
-
Make your changes following our coding standards
-
Run checks before committing
pnpm lint # Lint all packages pnpm build # Build all packages
-
Commit your changes using conventional commits:
feat: add new feature fix: resolve bug docs: update documentation chore: update dependencies refactor: improve code structure test: add tests ui: for ui changes
-
Push and create a pull request
- Place shared code in
packages/
- Keep applications in
apps/
- Use consistent naming conventions:
- Applications:
@call/app-name
- Packages:
@call/package-name
- Applications:
This project adheres to a Code of Conduct. By participating, you are expected to uphold this code.
- All contributors who help make Call better every day
- Discord: Join our community
- Email: attiyassr@gmail.com
- Twitter: @joincalldotco