Please 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.
This monorepo is managed using Turborepo and is structured as follows:
audora/
├── apps/ # Contains independent applications
│ ├── audora-frontend/ # Next.js app for the UI
│ ├── audora-backend/ # Fastify backend for API handling
│ ├── audora-signal/ # WebSocket server for real-time communication
├── packages/ # Shared code across apps
│ ├── database/ # Prisma & PostgreSQL setup
│ ├── types/ # Shared TypeScript types
# │ ├── backend-common/ # Common utilities for backend services
├── docker/ # Docker configuration
│ ├── backend.prod.Dockerfile # Production Dockerfile for backend
│ ├── frontend.prod.Dockerfile # Production Dockerfile for frontend
│ ├── signal.prod.Dockerfile # Production Dockerfile for WebSocket
│ ├── db.docker-compose.yml # Docker Compose configuration
├── .github/workflows/ # GitHub Actions CI/CD pipelines
│ ├── cd_api.yml # CI/CD pipeline for backend
│ ├── cd_frontend.yml # CI/CD pipeline for frontend
│ ├── cd_signal.yml # CI/CD pipeline for WebSocket
├── turbo.json # Turborepo config file
├── package.json # Root package.json for Bun & Turborepo setup
└── README.md # Project documentation
Audora offers a comprehensive set of features for professional podcast recording:
-
🎥 High-Quality Recording
- Studio-grade audio and video recording
- Multiple input device support
- Customizable recording settings
-
🌐 Real-Time Communication
- WebRTC-based peer-to-peer connections
- Low-latency audio/video streaming
- Multi-participant support
-
📤 Reliable Uploads
- S3 multipart uploads with automatic retry
- Progress tracking and resume capability
- Secure file transfer
-
🎬 Professional Processing
- Video transcoding pipeline
- Audio normalization and enhancement
- Custom overlays and branding
-
🔒 Security & Privacy
- End-to-end encryption
- Secure room management
- Privacy-focused design
- Bun (v1.2.5 or later)
- Node.js (v18 or later)
- PostgreSQL (v14 or later)
- FFmpeg
- AWS Account (for S3)
- Docker and Docker Compose
bun install
Create environment files for each app:
- Copy the example environment files
- Rename them to
.env
in each app directory - Fill in the required values like
DATABASE_URL
,AWS_CREDENTIALS
, etc.
Start the PostgreSQL database using Docker:
bun run db:up
bun run generate
bun run db:deploy
bun run dev
bun run build
bun run start
Or use the combined command:
bun run server:start
# Start frontend only
bun run start:frontend
# Start backend API only
bun run start:backend
# Start WebSocket server only
bun run start:websocket
- Turborepo → Monorepo management
- Bun → Fast JavaScript package manager & runtime
- Next.js 14 → Frontend framework
- Fastify → Backend API
- WebRTC → Real-time communication
- PostgreSQL → Database
- Prisma → ORM for database management
- AWS S3 → File storage
- FFmpeg → Media processing
- Docker → Containerization
- GitHub Actions → CI/CD pipelines
bun db:up
bun db:down
bun run db:deploy
The project includes production Docker configurations and GitHub Actions workflows for continuous deployment:
The /docker
directory contains production Dockerfiles for each service:
backend.prod.Dockerfile
- Production container for the backend APIfrontend.prod.Dockerfile
- Production container for the Next.js frontendwebsocket.prod.Dockerfile
- Production container for the WebSocket server
GitHub Actions workflows in the .github/workflows
directory automate the deployment process:
cd_backend.yml
- Deploys the backend servicecd_frontend.yml
- Deploys the frontend applicationcd_websocket.yml
- Deploys the WebSocket server
{
"scripts": {
"dev": "turbo run dev",
"build": "turbo run build",
"start": "turbo run start",
"start:frontend": "turbo run start:frontend --filter=audora-frontend",
"start:backend": "turbo run start:backend --filter=audora-backend",
"start:websocket": "turbo run start:websocket --filter=audora-websocket",
"lint": "turbo run lint",
"format": "prettier --write \"**/*.{ts,tsx,md}\"",
"check-types": "turbo run check-types",
"db:up": "docker-compose -f docker/docker-compose.yml up -d",
"db:down": "docker-compose -f docker/docker-compose.yml down",
"infra:build": "docker-compose -f docker-compose.yml build",
"infra:up": "docker-compose -f docker-compose.yml up -d",
"infra:down": "docker-compose -f docker-compose.yml down",
"db:deploy": "turbo run db:deploy",
"server:start": "bun run db:deploy && bun run start",
"generate": "turbo run generate"
}
}
# Run linting across all packages
bun run lint
# Format code with Prettier
bun run format
# Type checking
bun run check-types
- Documentation: docs.audora.xyz
- Email: support@audora.xyz
- Discord: Join our community
- WebRTC for real-time communication
- FFmpeg for media processing
- Prisma for database management
- All our contributors and supporters