Configuration
LegalEase reads configuration from environment variables. This page covers all available settings for local development and production deployment.
Environment Files
| File | Purpose |
|---|---|
frontend/.env | Nuxt runtime configuration, Firebase config |
| Firebase Secrets | API keys for Cloud Functions (production) |
Frontend Configuration
Copy frontend/.env.example to frontend/.env:
# ============================================
# MINIMAL LOCAL SETUP (just need these!)
# ============================================
# For local development with Firebase emulators, you only need:
# 1. NUXT_PUBLIC_USE_EMULATORS=true
# 2. GOOGLE_GENAI_API_KEY (get from https://aistudio.google.com/apikey)
NUXT_PUBLIC_USE_EMULATORS=true
# ============================================
# AI Configuration
# ============================================
# Required for Gemini transcription and summarization
GOOGLE_GENAI_API_KEY=your-gemini-api-key
# Transcription provider: 'gemini' (default) or 'chirp'
TRANSCRIPTION_PROVIDER=gemini
# ============================================
# Firebase Configuration (for production)
# ============================================
# Get these from Firebase Console > Project Settings > Your apps
# Not needed when using emulators.
FIREBASE_API_KEY=
FIREBASE_AUTH_DOMAIN=your-project.firebaseapp.com
FIREBASE_PROJECT_ID=your-project-id
FIREBASE_STORAGE_BUCKET=your-project.firebasestorage.app
FIREBASE_MESSAGING_SENDER_ID=
FIREBASE_APP_ID=
# ============================================
# Optional Settings
# ============================================
# Public site URL (for OG images, etc.)
NUXT_PUBLIC_SITE_URL=http://localhost:3000
Firebase Secrets (Production)
For production deployment, sensitive keys are stored as Firebase secrets:
# Set secrets for Cloud Functions
firebase functions:secrets:set GOOGLE_GENAI_API_KEY
firebase functions:secrets:set QDRANT_URL
firebase functions:secrets:set QDRANT_API_KEY
Secrets are automatically injected into functions at runtime.
Transcription Providers
Gemini (Default)
Best for local development:
- Works with Firebase Storage emulator
- No GCP project required
- Only needs
GOOGLE_GENAI_API_KEY
TRANSCRIPTION_PROVIDER=gemini
Chirp (Google Speech-to-Text)
Best for production:
- Requires production GCS bucket
- Native diarization with higher accuracy
- Needs full GCP project setup
TRANSCRIPTION_PROVIDER=chirp
When using Chirp, the frontend automatically connects to production Firebase Storage even in development mode.
Qdrant Configuration
Local Development
Default configuration uses local Qdrant:
QDRANT_URL=http://localhost:6333
# No API key needed for local
Qdrant Cloud (Production)
QDRANT_URL=https://your-cluster.qdrant.io:6333
QDRANT_API_KEY=your-qdrant-api-key
Docker Services
The docker-compose.yml configures local services:
Qdrant (Vector Search)
- Port: 6333
- Dashboard: http://localhost:6333/dashboard
- Data persists in
qdrant_datavolume
Docling (Document Extraction)
- Port: 5050
- UI: http://localhost:5050/ui
- GPU acceleration available with nvidia-container-toolkit
Service Management
# Start services
mise run services:up
# Stop services
mise run services:down
# View logs
docker compose logs -f qdrant docling
Firebase Emulator Settings
The emulators use default ports:
| Service | Port |
|---|---|
| Emulator UI | 4000 |
| Functions | 5001 |
| Firestore | 8080 |
| Auth | 9099 |
| Storage | 9199 |
Emulator data persists in emulator-data/ directory.
Import/Export Data
# Export current emulator state
firebase emulators:export ./emulator-data
# Start with existing data
firebase emulators:start --import=./emulator-data
Model Configuration
Transcription
| Setting | Default | Description |
|---|---|---|
geminiModel | gemini-2.5-flash | Model for transcription |
maxSpeakers | 6 | Maximum speakers to identify |
language | auto | Language detection |
Summarization
Uses Gemini 2.5 Flash via Genkit with structured output schemas.
Embeddings
| Setting | Default | Description |
|---|---|---|
model | text-embedding-004 | Gemini embedding model |
dimensions | 768 | Vector dimensions |
Security Considerations
Development
- Emulators have no authentication by default
- All data is local
- Safe for development and testing
Production
- Enable Firebase Security Rules
- Use Firebase App Check for API protection
- Set up proper IAM roles for GCP services
- Never commit secrets to version control
Security Rules
Firestore and Storage security rules are in:
firestore.rulesstorage.rules
Deploy rules:
firebase deploy --only firestore:rules,storage:rules
Logging
Development
- Function logs visible in Firebase Emulator UI
- Nuxt dev server shows request logs
- Docker logs via
docker compose logs
Production
- Cloud Functions logs in Google Cloud Console
- Structured logging with severity levels
- Error tracking via Cloud Error Reporting