Skip to content

code-env/Call

Β 
Β 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Call Logo

Call

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.


πŸš€ Features

πŸŽ₯ Video Calling

πŸ‘₯ Team Collaboration

πŸ“ž Contact Management

πŸ“… Meeting Scheduling

πŸ€– AI-Powered Features

πŸ”’ Security & Privacy

🌐 Cross-Platform

  • Web-based - works on any modern browser
  • Mobile responsive design
  • Progressive Web App (PWA) support
  • Offline capabilities for basic features

πŸ›  Tech Stack

Frontend

  • 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

Backend

  • Hono - Fast web framework
  • Bun - JavaScript runtime
  • PostgreSQL - Reliable database
  • Drizzle ORM - Type-safe database queries
  • Better Auth - Authentication system

Infrastructure

  • Turborepo - Monorepo build system
  • Docker - Containerization
  • Vercel - Deployment platform
  • Rate Limiting - API protection

πŸš€ Quick Start

Prerequisites

  • Node.js 20 or higher
  • pnpm package manager
  • Docker and Docker Compose
  • Git

Installation

  1. Clone the repository

    git clone https://github.com/Call0dotco/call.git
    cd call
  2. 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
  3. Open your browser

Environment Variables

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

Docker Services

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

πŸ“ Project Structure

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

Available Scripts

# 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

Package Management

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

Development Workflow

  1. Create a feature branch

    git checkout -b feature/your-feature-name
  2. Make your changes following our coding standards

  3. Run checks before committing

    pnpm lint      # Lint all packages
    pnpm build     # Build all packages
  4. 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
    
  5. Push and create a pull request

Package Organization

  • Place shared code in packages/
  • Keep applications in apps/
  • Use consistent naming conventions:
    • Applications: @call/app-name
    • Packages: @call/package-name

Code of Conduct

This project adheres to a Code of Conduct. By participating, you are expected to uphold this code.


πŸ™ Acknowledgments

  • All contributors who help make Call better every day

πŸ“ž Support


Made with ❀️ by the Call team

Website β€’ GitHub β€’ Discord β€’ Twitter

About

open-source AI-native alternative to Google Meet and Zoom.

Resources

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 96.8%
  • CSS 1.3%
  • JavaScript 1.1%
  • Shell 0.8%