Prerequisites

You only need two things installed on your machine:

You do not need Go, Node.js, or PostgreSQL installed locally.

Local Development

  1. Clone the repository
    git clone https://github.com/notfixingit3/waffle.git
    cd waffle
  2. Start everything
    docker compose up --build

    Docker Compose will:

    • Build the Go application (multi-stage)
    • Start PostgreSQL 16
    • Run all database migrations automatically
    • Inject safe local-development defaults (DB connection, JWT secret, admin credentials)

    You do not need to create a .env file for local development.

  3. Open the app
    ServiceURL
    Public applicationhttp://localhost:8383
    Admin loginhttp://localhost:8383/admin/login
    Health checkhttp://localhost:8383/health
    PostgreSQLlocalhost:5432

Default Credentials

⚠️ Change before any real deployment
These credentials are hardcoded into the local dev environment. Never use them in production.
FieldValue
Usernameadmin
Passwordsyrup
Rolesuper_admin

To use a different password in local dev, pass it as an environment variable:

ADMIN_PASSWORD=mypassword docker compose up --build

What's Running

The docker compose up command starts two containers:

The Go app waits for PostgreSQL to be healthy before starting, then runs all pending migrations from backend/migrations/ automatically. A seed waffle and admin are inserted on a fresh database so the app is useful immediately.

First Steps After Login

After logging in to /admin/login with the default credentials:

  1. Change your password — click your username in the top-right → SettingsChange Password.
  2. Set your timezone — on the same Settings page, choose your IANA timezone from the dropdown so waffle timestamps appear correctly.
  3. Create your first real waffle — click New Waffle on the admin dashboard.
  4. Share the public link — the public URL is http://<your-domain>/waffle/<slug>. Post it in your Instagram story or DM it to your buyers.
💡 Test inside Instagram
Share your local-network IP address (e.g. http://192.168.1.x:8383/waffle/demo) in a DM to yourself and open it inside the Instagram app to test the mobile buyer flow.

Install as a PWA

Project Syrup ships a Web App Manifest and service worker, so it can be installed as a Progressive Web App on iOS and Android. Buyers can add the waffle page to their home screen for a native-app feel.

PWA installation and service worker offline caching require HTTPS in production. Local localhost is a secure context and works without HTTPS.

Stopping the App

# Stop containers (data is preserved)
docker compose down

# Stop and wipe all data (fresh start)
docker compose down -v
🗑️ Data loss warning
docker compose down -v removes the PostgreSQL volume. All waffles, spots, and admins will be gone. Use only when you want a clean slate.