# Video Conference Booking System A Go-based backend service for booking video conference meetings with Stripe payment integration and Jitsi Meet video conferencing. ## Features - User registration and authentication - Meeting booking with payment processing - Jitsi Meet integration for video conferences - Email notifications via SMTP - Admin dashboard for system management - CLI tools for admin operations ## Project Structure ``` ├── cmd/ │ ├── server/ # HTTP server entry point │ └── cli/ # CLI tools entry point ├── internal/ │ ├── config/ # Configuration management │ ├── server/ # HTTP server setup │ ├── cli/ # CLI commands │ ├── models/ # Database models │ ├── services/ # Business logic layer │ ├── repositories/ # Data access layer │ ├── handlers/ # HTTP handlers │ └── middleware/ # HTTP middleware ├── bin/ # Compiled binaries ├── .env.example # Environment variables template ├── Makefile # Development commands └── README.md # This file ``` ## Prerequisites - Go 1.21 or higher - PostgreSQL database - Stripe account (for payments) - SMTP server (for email notifications) ## Setup 1. Clone the repository 2. Copy environment variables: ```bash cp .env.example .env ``` 3. Update `.env` with your configuration 4. Install dependencies: ```bash make deps ``` 5. Build the application: ```bash make build ``` ## Running the Application ### HTTP Server ```bash make run # or ./bin/server ``` ### CLI Tools ```bash make cli # or ./bin/cli ``` ## Development - `make build` - Build server binary - `make build-cli` - Build CLI binary - `make run` - Run the server - `make test` - Run tests - `make fmt` - Format code - `make vet` - Vet code - `make clean` - Clean build artifacts ## API Endpoints The server will start on `http://localhost:8080` by default. - `GET /health` - Health check - `POST /api/v1/auth/register` - User registration - `POST /api/v1/auth/login` - User login - `GET /api/v1/bookings` - Get user bookings - `POST /api/v1/bookings` - Create booking - `GET /api/v1/schedules` - Get available slots - `POST /api/v1/payments/intent` - Create payment intent - `GET /api/v1/admin/dashboard` - Admin dashboard ## Environment Variables See `.env.example` for all required environment variables. ## License This project is proprietary software.