- Features
- Tech Stack
- Project Structure
- Getting Started
- Database Management
- Deployment
- Available Scripts
- Development Tools
- Support
- License
Audora offers a comprehensive set of features for professional podcast recording:
- High-Quality Recording - Studio-grade audio and video recording with multiple input device support
- Real-Time Communication - WebRTC-based peer-to-peer connections with low-latency streaming
- Reliable Uploads - S3 multipart uploads with automatic retry and resume capability
- Professional Processing - Video transcoding, audio normalization, and custom branding
- Security and Privacy - End-to-end encryption with secure room management
| Category | Technology |
|---|---|
| Monorepo | Turborepo |
| Runtime | Bun |
| Frontend | Next.js 14 |
| Backend | Express |
| Real-time | WebRTC, WebSocket |
| Database | PostgreSQL, Prisma |
| Storage | AWS S3 |
| Media | FFmpeg |
| DevOps | Docker, GitHub Actions |
This monorepo is managed using Turborepo and is structured as follows:
audora/
├── apps/
│ ├── audora-frontend/ # Next.js app for the UI
│ ├── audora-api/ # Express backend for API handling
│ └── audora-signal/ # WebSocket server for real-time communication
├── packages/
│ ├── database/ # Prisma and PostgreSQL setup
│ ├── types/ # Shared TypeScript types
│ ├── ui/ # Shared UI components
│ └── typescript-config/ # Shared TypeScript configuration
├── docker/
│ ├── backend.prod.Dockerfile
│ ├── frontend.prod.Dockerfile
│ ├── signal.prod.Dockerfile
│ └── db.docker-compose.yml
├── .github/workflows/ # GitHub Actions CI/CD pipelines
├── turbo.json # Turborepo configuration
├── docker-compose.yml # Full stack Docker Compose
└── package.json # Root package.json
- Bun v1.2.5 or later
- Node.js v18 or later
- PostgreSQL v14 or later
- Docker and Docker Compose
- FFmpeg (for media processing)
Clone the repository and install dependencies:
bun installCopy the environment example file and configure:
cp .env.example .envStart the database:
bun run db:upGenerate Prisma client and run migrations:
bun run db:deployStart the development server:
bun run devbun run db:upbun run db:downbun run db:deploybun run generateStart all services with a single command:
docker compose up -dThis starts:
- PostgreSQL database on port 5432
- Backend API on port 9000
- Signal server on port 8000
- Frontend on port 3000
# Build all services
docker compose build
# Build specific service
docker compose build frontend
docker compose build backend
docker compose build signalLocated in the /docker directory:
backend.prod.Dockerfile- Backend API containerfrontend.prod.Dockerfile- Next.js frontend containersignal.prod.Dockerfile- WebSocket server container
GitHub Actions workflows automate deployment:
cd_api.yml- Deploys the backend servicecd_frontend.yml- Deploys the frontend applicationcd_signal.yml- Deploys the WebSocket server
| Script | Description |
|---|---|
bun run dev |
Start all apps in development mode |
bun run build |
Build all apps for production |
bun run start |
Start all apps in production mode |
bun run start:frontend |
Start frontend only |
bun run start:api |
Start backend API only |
bun run start:signal |
Start WebSocket server only |
bun run db:up |
Start PostgreSQL with Docker |
bun run db:down |
Stop PostgreSQL |
bun run db:deploy |
Run database migrations |
bun run generate |
Generate Prisma client |
bun run lint |
Run linting across all packages |
bun run format |
Format code with Prettier |
bun run check-types |
Run TypeScript type checking |
# Run linting
bun run lint
# Format code
bun run format
# Type checking
bun run check-typesPlease read and follow our Code of Conduct to help keep Audora a welcoming and inclusive space for everyone.
This project is licensed under the MIT License.
