auth/Documentaion/getting-started/SETUP.md

2.5 KiB

Environment Variables Setup

Required Variables (MUST provide)

These are mandatory - the service will not start without them:

DATABASE_URL=postgres://username:password@localhost:5432/database_name
JWT_ACCESS_SECRET=your-secret-here-minimum-32-characters
JWT_REFRESH_SECRET=your-secret-here-minimum-32-characters

How to generate JWT secrets:

node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"

Run this twice to get two different secrets.


Optional Variables (Can skip)

Twilio SMS Configuration

You DO NOT need to provide Twilio credentials - the service will work without them!

If Twilio is NOT configured:

  • Service starts normally
  • OTP codes are logged to console for testing
  • ⚠️ SMS will not be sent (OTP shown in server logs)

If Twilio IS configured:

  • OTP codes sent via SMS automatically
# Twilio (Optional - only if you want SMS delivery)
TWILIO_ACCOUNT_SID=your-twilio-account-sid
TWILIO_AUTH_TOKEN=your-twilio-auth-token
TWILIO_MESSAGING_SERVICE_SID=your-messaging-service-sid
# OR
TWILIO_FROM_NUMBER=+1234567890

Other Optional Variables

PORT=3000                                    # Server port (default: 3000)
NODE_ENV=development                         # Environment (development/production)
CORS_ALLOWED_ORIGINS=                        # Comma-separated origins (required in production)
JWT_ACCESS_TTL=15m                          # Access token expiry (default: 15m)
JWT_REFRESH_TTL=7d                          # Refresh token expiry (default: 7d)
REFRESH_MAX_IDLE_MINUTES=4320               # Refresh token inactivity timeout (default: 3 days)
OTP_MAX_ATTEMPTS=5                          # Max OTP verification attempts (default: 5)

Quick Setup

  1. Copy the example file:

    cp .env.example .env
    
  2. Fill in REQUIRED variables only:

    DATABASE_URL=postgres://postgres:password123@localhost:5433/farmmarket
    JWT_ACCESS_SECRET=<generate-with-node-command>
    JWT_REFRESH_SECRET=<generate-with-node-command>
    
  3. Skip Twilio (optional - for development, OTP will show in console)

  4. Start the service:

    npm run dev
    

Testing Without Twilio

When Twilio is not configured:

  • Request OTP: POST /auth/request-otp
  • Check server console - OTP code will be logged: 📱 DEBUG OTP: +919876543210 Code: 123456
  • Use that code to verify: POST /auth/verify-otp

This is perfect for local development!