fhs52267 3e296b5131
Build and Push Lunchtime Images (Kaniko) / build-and-push (push) Has been cancelled
Improve dev setup
2026-04-02 22:03:48 +02:00
2026-04-02 22:03:48 +02:00
2026-04-02 22:03:48 +02:00
2026-03-29 14:59:03 +02:00
2026-03-29 16:47:23 +02:00
2026-03-29 14:59:03 +02:00
2026-04-02 22:03:48 +02:00
2026-03-29 14:59:03 +02:00

Lunchtime

Lunchtime is a self-hosted lunch order app with a React frontend, a Python backend, and nginx for reverse proxying.

Getting Started

  1. Copy and adjust config.yaml for your environment.
  2. Create a writable data folder (for SQLite and uploads), for example .data.
  3. Start the stack with Docker Compose.

Example compose.yml (inspired by src/compose.yml) using images from the Gitea registry:

services:
  nginx:
    image: nginx:alpine
    ports:
      - "8080:8080"
    volumes:
      - ./nginx.conf:/etc/nginx/conf.d/default.conf:ro
    depends_on:
      - backend
      - frontend
    restart: unless-stopped

  backend:
    image: git.sgruber.at/lunchtime/lunchtime-web:backend-latest
    volumes:
      - ./.data:/app/data
      - ./config.yaml:/app/config.yaml:ro
    environment:
      - APP_ENV=production
      - LOG_LEVEL=info
      - DB_PATH=/app/data
    restart: unless-stopped

  frontend:
    image: git.sgruber.at/lunchtime/lunchtime-web:frontend-latest
    restart: unless-stopped

Then run:

docker compose up -d

Open http://localhost:8080.

Development

Quick Start with Docker Compose

Use the development compose file to run the full stack with hot reload:

cd src
docker compose up -d

This will start the backend and frontend, proxied through Nginx at http://localhost:8080. Also, a Mailpit instance at http://localhost:8081 can be used for monitoring outgoing mail.

Backend Development

The backend is a FastAPI application using SQLite and runs on Python 3.12.

Dockerfile: src/backend/Containerfile - Production build

Development:

cd src/backend
pip install -r requirements.txt
uvicorn app.main:app --reload

Changes to app/ are automatically detected when running with --reload.

Frontend Development

The frontend is a React + TypeScript application using Vite.

Dockerfile:

  • src/frontend/Containerfile: Multi-target build with dev and prod stages

Use the dev target for hot reload and the prod target for the static production image.

Development:

cd src/frontend
npm install
npm run dev

Open http://localhost:5173 (or the address shown in the terminal).

Contributing

Contributions are welcome! Please follow these guidelines:

  1. Choose an existing issue or create one first to discuss your changes
  2. Fork the repository and create a feature branch
  3. Test your changes in the development environment using compose.yml
  4. Submit a pull request linking to the related issue
S
Description
Simple and lightweight group ordering system
https://lunchtime.sgruber.at
Readme 1,000 KiB
Languages
TypeScript 69.1%
Python 29.7%
Dockerfile 0.5%
CSS 0.4%
HTML 0.3%