Quickstart
Get Aya up and running on your local machine in just a few minutes using Docker Compose.Quick Setup
Create environment configuration
The backend requires at minimum the
AUTH__JWT_SECRET environment variable:Start all services
- Build Docker images for frontend and backend
- Start PostgreSQL database
- Run database migrations
- Start the backend API server
- Start the frontend development server
Access the application
Once the containers are running, access:
Frontend
Backend API
What’s Running?
Aftermake up, you have three services:
PostgreSQL Database
- Port: 5432
- Database:
postgres - User:
postgres - Password:
s3cr3t - Persistent storage: Docker volume
postgres-data
Backend (Go Services)
- Port: 8080
- Runtime: Go 1.25 with Air for hot reload
- Config:
apps/services/config.json+ environment variables - Features:
- REST API endpoints
- JWT-based authentication
- Database migrations (auto-applied on startup)
- Optional Telegram bot integration
Frontend (Deno + TanStack Start)
- Port: 3000
- Runtime: Deno with Vite
- Features:
- Server-side rendering (SSR)
- Hot module replacement (HMR)
- File-based routing
- TanStack Query for data fetching
Useful Commands
Once you have Aya running, use these Make commands:Verify Installation
Test that everything is working:Visit the frontend
Open http://localhost:3000/en in your browser.You should see the Aya homepage with:
- Navigation header
- Locale selector (13 languages)
- Featured content
Optional: Telegram Bot Integration
To enable the Telegram bot for notifications and interactions:Create a bot with BotFather
- Open Telegram and message @BotFather
- Send
/newbotand follow the prompts - Copy the bot token provided
Add environment variables
Edit
apps/services/.env.local and add:In development, use polling mode (
USE_POLLING=true) which doesn’t require a public URL.Development Workflow
Hot Reload
Both frontend and backend support hot reload:- Frontend: Vite HMR updates instantly on file changes
- Backend: Air watches Go files and rebuilds/restarts automatically
Watch Mode
For the fastest feedback loop, use watch mode:watch feature:
- Frontend: syncs
src/changes without rebuild - Backend: syncs
pkg/and triggers restart - Faster than rebuilding containers
Accessing the Backend CLI
The services container includes a Node.js-based CLI for database operations:Troubleshooting
Port already in use
Port already in use
If you see errors like “bind: address already in use”:
Database connection errors
Database connection errors
If the backend can’t connect to PostgreSQL:
Frontend build errors
Frontend build errors
If you see Deno/Vite errors:
Authentication not working
Authentication not working
Ensure
AUTH__JWT_SECRET is set in apps/services/.env.local:Next Steps
Full Installation Guide
Learn about Nix development, environment variables, and advanced setup
Architecture Overview
Understand how Aya’s frontend and backend work together
Frontend Development
Start building features with TanStack Start and React
Backend Development
Explore Go business logic and hexagonal architecture