Sign inSign up

pantelis98765/gigflow

By pantelis98765

•Updated 4 months ago

Image
0

368

pantelis98765/gigflow repository overview

⁠GigFlow

Tour & Show Management Platform for the Live Music Industry

GigFlow is a full-featured web application for managing concert tours, shows, crew, contacts, and documents — built for tour managers, production teams, and music industry professionals.

⁠Features
  • Tour Management — Create and manage tours with poster uploads, budgets, and crew assignments
  • Show Scheduling — Schedule shows with venue details, set times, load-in/soundcheck times, and per-show posters
  • Crew & Contacts — Contact book with crew role assignments and department tracking
  • Document Storage — Upload and share tour documents (riders, contracts, set lists) up to 50MB each
  • Role-based Access — ADMIN / MANAGER / MEMBER / VIEWER permission levels
  • Dark & Light Theme — Persistent theme toggle with GigFlow brand aesthetics
  • Docker-ready — Single docker compose up, admin user created automatically on first start

⁠Quick Start

Create a docker-compose.yml file:

services:
  db:
    image: postgres:16-alpine
    restart: unless-stopped
    environment:
      POSTGRES_USER: gigflow
      POSTGRES_PASSWORD: gigflow_secret
      POSTGRES_DB: gigflow
    volumes:
      - postgres_data:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U gigflow"]
      interval: 5s
      retries: 10

  app:
    image: pantelis98765/gigflow:latest
    restart: unless-stopped
    depends_on:
      db:
        condition: service_healthy
    environment:
      DATABASE_URL: postgresql://gigflow:gigflow_secret@db:5432/gigflow
      JWT_SECRET: change_this_to_a_long_random_secret
      PORT: 4000
      NODE_ENV: production
      UPLOAD_DIR: /uploads
      ADMIN_EMAIL: [email protected]
      ADMIN_NAME: Admin User
      ADMIN_PASSWORD: gigflow123
    volumes:
      - uploads_data:/uploads
    ports:
      - "3000:80"
    healthcheck:
      test: ["CMD-SHELL", "wget -qO- http://127.0.0.1:4000/health || exit 1"]
      interval: 10s
      retries: 5

volumes:
  postgres_data:
  uploads_data:

Then run:

docker compose up -d

Open http://localhost:3000⁠ and log in:

Change the admin password immediately after first login via Settings → Users.

The admin account is created automatically on first startup — no separate seed step needed.


⁠Environment Variables

VariableDefaultDescription
DATABASE_URL—PostgreSQL connection string (required)
JWT_SECRET(insecure default)JWT signing secret — change in production
PORT4000Internal Node.js port (do not change)
NODE_ENVproductionRuntime environment
UPLOAD_DIR/uploadsPath for uploaded files (mount a volume here)
APP_PORT3000Host port exposed to the outside
ADMIN_EMAIL[email protected]Initial admin email (used on first start only)
ADMIN_NAMEAdmin UserInitial admin display name
ADMIN_PASSWORDgigflow123Initial admin password — change in production

⁠Architecture

This is a single combined image containing:

ComponentTechnology
FrontendReact 18 + Vite SPA
Backend APINode.js + Express + Prisma ORM
Web servernginx (serves SPA, proxies API)
Process managersupervisord

nginx serves the React app on port 80 and proxies /api/, /uploads/, and /posters/ to the Node process on port 4000 internally.

Platforms: linux/amd64, linux/arm64 (Apple Silicon, Raspberry Pi, AWS Graviton, TrueNAS Scale)


⁠Tech Stack

  • Frontend: React 18, TypeScript, Vite, Tailwind CSS, Zustand, React Query
  • Backend: Node.js, Express, TypeScript, Prisma ORM
  • Database: PostgreSQL 16 (separate container)
  • Auth: JWT 7-day tokens, bcrypt password hashing

Tag summary

Content type

Image

Digest

sha256:2118a115c…

Size

184.3 MB

Last updated

4 months ago

docker pull pantelis98765/gigflow