---
title: "Deploy Openfront Grocery"
description: "Opensource Instacart alternative based on Next.js and Keystone.js"
category: "Starters"
url: https://railway.com/deploy/openfront-grocery
---

# Deploy Openfront Grocery

Opensource Instacart alternative based on Next.js and Keystone.js

**[Deploy Openfront Grocery on Railway](https://railway.com/template/openfront-grocery)**

Machine-readable deploy manifest (JSON, validated by TemplateCI): https://railway.com/deploy/openfront-grocery/manifest.json

- **Creator:** Openship
- **Category:** Starters

## Template content

### Postgres https://devicons.railway.app/i/postgresql.svg

- **Image:** ghcr.io/railwayapp-templates/postgres-ssl:18

### openfront-grocery

- **Source:** https://github.com/openshiporg/openfront-grocery
- **Start command:** `npm run migrate && next start`
- **Public domain:** Yes

## Buckets

- **Storage**

## Documentation

# Deploy and Host Openfront Grocery with Railway

Openfront Grocery is a self-hostable grocery storefront and store-operations platform. Shoppers can browse departments and products, build carts and lists, choose pickup or delivery, and manage orders and subscriptions. Store teams use the dashboard for merchandising, fresh inventory, purchasing, picking, substitutions, handoff, payments, and customer service.

## About Hosting Openfront Grocery

This template provisions the application from [its GitHub repository](https://github.com/openshiporg/openfront-grocery), PostgreSQL, and a private native Railway Bucket named `Storage`. The database starts empty; no demo records or reusable credentials are included. Initialize the application using the repository's onboarding instructions after deployment.

`DATABASE_URL` references Postgres and the five `S3_*` variables reference the Storage bucket. Generated per deployment: `SESSION_SECRET`. Other references: `NEXT_PUBLIC_SITE_URL`. Defaults: `NODE_ENV=production`, `PUBLIC_SIGNUPS_ALLOWED=false`, `PUBLIC_STORE_ID=store_juniper`, `STRIPE_ENABLED=false`, `TRUSTED_PROXY=true`.

Optional and blank until you configure the provider: `NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY`, `SMTP_FROM`, `SMTP_HOST`, `SMTP_PASSWORD`, `SMTP_PORT`, `SMTP_USER`, `STRIPE_SECRET_KEY`, `STRIPE_WEBHOOK_SECRET`.

The app gets a Railway-generated public domain. No custom domains are included.

### Admin Dashboard
Manage products, departments, orders, customers, suppliers, and purchasing. Dedicated workspaces cover inventory, fulfillment, pickup, delivery, payments, merchandising, subscriptions, communications, staff, and reports.

### Storefront
Shoppers can browse products, departments, and deals, manage a cart, and check out for pickup or delivery. Account pages include orders, addresses, profile, and privacy requests. Shopping lists, favorites, and recurring subscriptions support repeat shopping.

### Fresh Inventory & Purchasing
- Lot inventory, stock movements, adjustments, counts, expiry, and recalls.
- Case conversion and product-information version records.
- Supplier records, purchase-order drafts, receiving, invoices, and credits.
- Inventory allocations linked to order lines.

### Pickup, Delivery & Substitutions
Pickup and delivery slots track fulfillment capacity. Staff manage picking, substitutions, packing, curbside check-in, parking, handoff, delivery routes, and returned-delivery rescheduling. Order-line fulfillment and settlement records preserve actual quantities and substitution outcomes.

### Payments & Customer Retention
Stripe is the built-in public checkout adapter when enabled and configured. Payment sessions, signed webhook events, refunds, settlement matching, and financial closes support payment operations. Coupons, loyalty records, notification preferences, and subscriptions support customer retention.

## Common Use Cases

- Fresh Inventory & Purchasing
- Pickup, Delivery & Substitutions
- Payments & Customer Retention

## Dependencies for Openfront Grocery Hosting

The app needs a PostgreSQL database and S3-compatible object storage. Both are provisioned by this template.

### Deployment Dependencies

- [openfront-grocery on GitHub](https://github.com/openshiporg/openfront-grocery)
- [Full README and onboarding instructions](https://github.com/openshiporg/openfront-grocery#readme)
- [Railway Buckets](https://docs.railway.com/guides/storage-buckets)

### Implementation Details

Next.js and Keystone 6 with a GraphQL API, Prisma, and PostgreSQL. Payments, email, and other external providers need their own operator configuration; this template does not activate them.

## Why Deploy Openfront Grocery on Railway?

Railway is a singular platform to deploy your infrastructure stack. Railway will host your infrastructure so you don't have to deal with configuration, while allowing you to vertically and horizontally scale it.

By deploying Openfront Grocery on Railway, you are one step closer to supporting a complete full-stack application with minimal burden. Host your servers, databases, AI agents, and more on Railway.


## Similar templates

- [Openfront Gym](https://railway.com/deploy/openfront-gym) — Opensource Mindbody alternative based on Next.js and Keystone.js
- [open-excalidraw](https://railway.com/deploy/open-excalidraw) — Self-hostable collaborative drawing built on Excalidraw
- [Next.js + Prisma + PostgreSQL Starter](https://railway.com/deploy/nextjs-prisma-postgres) — Deploy a Next.js app with Prisma ORM and PostgreSQL in one click.

Open this page in a browser: https://railway.com/deploy/openfront-grocery
