Skip to main content

Overview

Opiinix Trade requires environment variables to be configured for multiple workspaces. Each service has its own .env.example file that should be copied and configured.
Never commit .env files to version control. They contain sensitive information like API keys and database credentials.

Quick Setup

Copy all example environment files:
# Database
cp packages/db/.env.example packages/db/.env

# Client
cp apps/client/.env.example apps/client/.env

# Order Queue
cp packages/order-queue/.env.example packages/order-queue/.env

# WebSocket Service
cp services/wss/.env.example services/wss/.env

Database Configuration

Configure the PostgreSQL database connection:
DATABASE_URL="postgresql://dev:dev@localhost:5432/repo?schema=public"
DATABASE_URL
string
required
PostgreSQL connection string with format: postgresql://[user]:[password]@[host]:[port]/[database]?schema=[schema]

Connection String Components

ComponentDevelopment ValueDescription
UserdevDatabase username
PassworddevDatabase password
HostlocalhostDatabase host
Port5432PostgreSQL port
DatabaserepoDatabase name
SchemapublicSchema name
These values match the docker-compose.yml configuration for local development.

Client Configuration

Configure the Next.js frontend application:
# NextAuth Configuration
NEXTAUTH_URL="http://localhost:3000"
NEXTAUTH_SECRET="your-secret-key-here"

# Twilio SMS Configuration
TWILIO_ACCOUNT_SID="your-twilio-account-sid"
TWILIO_AUTH_TOKEN="your-twilio-auth-token"
TWILIO_NUMBER="+1234567890"

Environment Variables

NEXTAUTH_URL
string
required
The canonical URL of your site. Used for callbacks and redirects.
  • Development: http://localhost:3000
  • Production: Your production domain (e.g., https://opinix.trade)
NEXTAUTH_SECRET
string
required
Secret key for NextAuth.js session encryption. Generate with:
openssl rand -base64 32
TWILIO_ACCOUNT_SID
string
required
Your Twilio Account SID for SMS authentication. Get from Twilio Console.
TWILIO_AUTH_TOKEN
string
required
Your Twilio Auth Token for API authentication.
TWILIO_NUMBER
string
required
Your Twilio phone number with country code (e.g., +1234567890).

Redis Configuration

Configure the Redis connection for the order queue:
REDIS_URI="redis://localhost:6379"
REDIS_URI
string
required
Redis connection URI with format: redis://[host]:[port]
  • Development: redis://localhost:6379
  • Production: Your Redis server URL (with authentication if required)

Production Redis

For production with authentication:
REDIS_URI="redis://username:password@production-host:6379"
Or with TLS:
REDIS_URI="rediss://username:password@production-host:6380"
The rediss:// protocol enables TLS encryption for Redis connections.

WebSocket Service Configuration

The WebSocket service currently has an empty .env.example but may require:
# WebSocket Server Port
PORT="8080"

# Redis for pub/sub
REDIS_URI="redis://localhost:6379"

# CORS origins
ALLOWED_ORIGINS="http://localhost:3000"
Check the WebSocket service source code for any additional required environment variables.

Prisma Configuration

After configuring the database URL, generate the Prisma client:
1

Generate Prisma Client

cd packages/db
npx prisma generate
2

Run Migrations

Apply database migrations:
npx prisma migrate dev
3

Seed Database (Optional)

If a seed script exists:
npx prisma db seed

Docker Environment Variables

When building with Docker, pass environment variables:
docker build \
  --build-arg DATABASE_URL="postgresql://user:pass@host:5432/db" \
  -t opinix-trade .
Or use a .env file with Docker Compose:
docker-compose.yml
services:
  app:
    build:
      context: .
      args:
        - DATABASE_URL=${DATABASE_URL}
    env_file:
      - .env

Verification

Verify your environment configuration:
Test database connection:
cd packages/db
npx prisma db pull
If successful, your database connection is working!

Environment Variables Reference

VariableServiceRequiredDescription
DATABASE_URLdbYesPostgreSQL connection string
NEXTAUTH_URLclientYesNextAuth canonical URL
NEXTAUTH_SECRETclientYesNextAuth session secret
TWILIO_ACCOUNT_SIDclientYesTwilio account identifier
TWILIO_AUTH_TOKENclientYesTwilio authentication token
TWILIO_NUMBERclientYesTwilio phone number
REDIS_URIorder-queueYesRedis connection URI
Follow these security guidelines:
  1. Never commit .env files to Git
  2. Use strong secrets - Generate with openssl rand -base64 32
  3. Rotate secrets regularly in production
  4. Use different values for development and production
  5. Enable SSL/TLS for production databases and Redis
  6. Restrict database access to specific IP addresses
  7. Use environment-specific credentials

Troubleshooting

Error: Can't reach database serverSolutions:
  1. Ensure Docker containers are running: docker-compose ps
  2. Check DATABASE_URL format
  3. Verify PostgreSQL is listening on port 5432: lsof -i :5432
  4. Restart Docker: docker-compose restart timescaledb
Error: Error: connect ECONNREFUSED 127.0.0.1:6379Solutions:
  1. Ensure Redis is running: docker-compose ps redis
  2. Test connection: redis-cli ping
  3. Check REDIS_URI in your .env files
  4. Restart Redis: docker-compose restart redis
Error: Prisma schema file not foundSolutions:
  1. Navigate to correct directory: cd packages/db
  2. Generate Prisma client: npx prisma generate
  3. Run migrations: npx prisma migrate dev
Error: [next-auth][error][MISSING_NEXTAUTH_SECRET]Solutions:
  1. Ensure NEXTAUTH_SECRET is set in apps/client/.env
  2. Generate a new secret: openssl rand -base64 32
  3. Restart the Next.js development server

Next Steps