app/README.md

3.8 KiB

🍽️ Dish Planner

A Laravel-based meal planning application that helps households organize and schedule their dishes among multiple users. Built with Laravel, Livewire, and FrankenPHP for a modern, single-container deployment.

Features

  • Multi-user dish management - Assign dishes to specific household members
  • Smart scheduling - Automatic schedule generation with recurrence patterns
  • Calendar view - Visual 31-day schedule overview
  • Real-time updates - Livewire-powered reactive interface
  • Dark theme UI - Modern interface with purple/pink accents
  • Single container deployment - Simplified hosting with FrankenPHP

🚀 Self-hosting

The production image is available at codeberg.org/lvl0/dish-planner:latest.

docker-compose.yml

services:
  app:
    image: codeberg.org/lvl0/dish-planner:latest
    container_name: dishplanner_app
    restart: always
    ports:
      - "8000:8000"
    environment:
      APP_KEY: "${APP_KEY}"
      APP_URL: "${APP_URL}"
      DB_DATABASE: "${DB_DATABASE}"
      DB_USERNAME: "${DB_USERNAME}"
      DB_PASSWORD: "${DB_PASSWORD}"
      MAIL_HOST: "${MAIL_HOST:-}"
      MAIL_PORT: "${MAIL_PORT:-587}"
      MAIL_USERNAME: "${MAIL_USERNAME:-}"
      MAIL_PASSWORD: "${MAIL_PASSWORD:-}"
      MAIL_FROM_ADDRESS: "${MAIL_FROM_ADDRESS:-noreply@example.com}"
    volumes:
      - app_storage:/app/storage
    depends_on:
      - db
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8000/up"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 40s

  db:
    image: mariadb:11
    container_name: dishplanner_db
    restart: always
    environment:
      MYSQL_DATABASE: "${DB_DATABASE}"
      MYSQL_USER: "${DB_USERNAME}"
      MYSQL_PASSWORD: "${DB_PASSWORD}"
      MYSQL_ROOT_PASSWORD: "${DB_ROOT_PASSWORD}"
    volumes:
      - db_data:/var/lib/mysql

volumes:
  db_data:
  app_storage:

Environment Variables

Variable Required Description
APP_KEY Yes Encryption key. Generate with: echo "base64:$(openssl rand -base64 32)"
APP_URL Yes Your domain (e.g., https://meals.example.com)
DB_DATABASE Yes Database name
DB_USERNAME Yes Database user
DB_PASSWORD Yes Database password
DB_ROOT_PASSWORD Yes MariaDB root password
MAIL_HOST No SMTP host for email notifications
MAIL_PORT No SMTP port (default: 587)
MAIL_USERNAME No SMTP username
MAIL_PASSWORD No SMTP password
MAIL_FROM_ADDRESS No From address for emails

🔧 Development

NixOS / Nix

git clone https://codeberg.org/lvl0/dish-planner.git
cd dish-planner
nix-shell

The shell will display available commands and optionally start the containers for you.

Available Commands

Command Description
dev-up Start development environment
dev-down Stop development environment
dev-restart Restart containers
dev-rebuild Full rebuild (removes volumes)
dev-rebuild-quick Quick rebuild (keeps volumes)
dev-logs [service] Follow logs
dev-shell Enter app container
dev-artisan <cmd> Run artisan commands
dev-fix-permissions Fix Docker-created file permissions

Services

Service URL
App http://localhost:8000
Vite http://localhost:5173
Mailhog http://localhost:8025
MariaDB localhost:3306

Other Platforms

Contributions welcome for development setup instructions on other platforms.

📄 License

This project is open-source software licensed under the MIT license.

📞 Support

For issues and questions, please use Codeberg Issues.