Skip to main content
Openfront is a production-ready e-commerce platform built on Next.js 15 and KeystoneJS 6. This guide covers deployment architecture, requirements, and available deployment options.

Deployment Architecture

Openfront follows a modern full-stack architecture:
  • Frontend: Next.js 15 with App Router and React Server Components
  • Backend: KeystoneJS 6 with GraphQL API
  • Database: PostgreSQL with Prisma ORM
  • File Storage: Local filesystem or S3-compatible storage
  • Sessions: Database-backed session storage

Application Structure

openfront/
├── app/                    # Next.js App Router
│   ├── dashboard/         # Admin platform
│   ├── (storefront)/      # Customer-facing pages
│   └── api/              # API endpoints and webhooks
├── features/
│   ├── keystone/         # Backend models and GraphQL
│   ├── platform/         # Admin components
│   ├── storefront/       # Frontend components
│   └── integrations/     # Payment and shipping adapters
└── components/           # Shared UI components

System Requirements

Minimum Requirements

  • Node.js: 20.0.0 or higher
  • PostgreSQL: 12 or higher
  • Memory: 512MB RAM minimum (2GB+ recommended)
  • Storage: 1GB minimum (more for product images)
Openfront requires Node.js 20+ due to React 19 and Next.js 16 requirements.

Database Requirements

Openfront requires a PostgreSQL database for:
  • Data models (78+ tables)
  • Session storage
  • File metadata (if using database storage)
SQLite and MySQL are not supported. Openfront uses PostgreSQL-specific features for advanced queries and data types.

Required Environment Variables

Every Openfront deployment requires these environment variables:

Database Connection

DATABASE_URL="postgresql://username:password@host:5432/database"
The database URL must be a valid PostgreSQL connection string.

Session Secret

SESSION_SECRET="your-very-long-session-secret-key-minimum-32-characters"
The SESSION_SECRET must be at least 32 characters long and should be cryptographically random. Never commit this to version control.
Generate a secure session secret:
node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"

Optional Environment Variables

Payment Providers

Stripe Integration:
STRIPE_SECRET_KEY="sk_test_51..."
STRIPE_WEBHOOK_SECRET="whsec_..."
PayPal Integration:
PAYPAL_CLIENT_ID="your-paypal-client-id"
PAYPAL_CLIENT_SECRET="your-paypal-client-secret"

Shipping Providers

Shippo Integration:
SHIPPO_API_KEY="shippo_test_..."

File Storage (S3-Compatible)

S3_BUCKET_NAME="your-bucket-name"
S3_REGION="us-east-1"
S3_ACCESS_KEY_ID="your-access-key"
S3_SECRET_ACCESS_KEY="your-secret-key"

Email Configuration

SMTP_HOST="smtp.gmail.com"
SMTP_PORT="587"
SMTP_USER="your-email@gmail.com"
SMTP_PASS="your-app-password"
FROM_EMAIL="noreply@yourstore.com"

Build Process

Openfront’s build process includes:
  1. KeystoneJS Schema Build: Generates Prisma schema and GraphQL types
  2. Database Migration: Applies database migrations
  3. Next.js Build: Compiles frontend and API routes
# Development
npm run dev

# Production build
npm run build

# Production start
npm run start
The build process requires database connectivity to run migrations. Some platforms require special configuration to handle this during deployment.

Deployment Options

Openfront can be deployed to various platforms:

Vercel

One-click deployment with automatic PostgreSQL provisioning

Railway

Template-based deployment with managed database

Self-Hosted

Docker or manual deployment on your infrastructure

Post-Deployment Setup

After deploying Openfront:
1

Access Admin Panel

Navigate to /dashboard/init to create your first admin user
2

Run Store Onboarding

Complete the onboarding process to set up your store with sample data
3

Configure Payment Providers

Add your payment provider credentials in Settings > Payment Providers
4

Configure Shipping

Set up shipping options and provider integrations
5

Add Products

Start adding your products or import from existing catalog

Security Considerations

Environment Variables

  • Never commit environment variables to version control
  • Use platform-specific secret management
  • Rotate SESSION_SECRET regularly in production
  • Use different secrets for development and production

Database Security

  • Use strong database passwords
  • Enable SSL connections for remote databases
  • Restrict database access to application servers only
  • Regular backup and disaster recovery planning

Application Security

  • Keep dependencies updated
  • Enable webhook signature verification for payment providers
  • Configure CORS appropriately for your domain
  • Use HTTPS in production (required for payment processing)

Performance Optimization

Database Optimization

  • Enable connection pooling
  • Configure appropriate connection limits
  • Use read replicas for high-traffic deployments
  • Regular database maintenance and vacuuming

Application Optimization

  • Enable Next.js production optimizations
  • Use CDN for static assets and images
  • Configure caching headers appropriately
  • Enable database query caching in KeystoneJS

Scaling Considerations

  • Horizontal scaling: Multiple application instances behind load balancer
  • Vertical scaling: Increase memory and CPU for single instance
  • Database scaling: Use managed PostgreSQL with auto-scaling
  • File storage: Use S3-compatible storage for multi-instance deployments

Monitoring and Maintenance

Health Checks

Openfront provides health check endpoints:
  • /api/health - Application health status
  • /api/graphql - GraphQL API status

Logging

  • Application logs are written to stdout/stderr
  • Configure log aggregation for production
  • Monitor error rates and response times
  • Set up alerting for critical errors

Database Migrations

# Apply migrations
npm run migrate

# Generate new migration
npm run migrate:gen
Always backup your database before running migrations in production.

Next Steps

Choose your deployment platform:

Build docs developers (and LLMs) love