No description
Find a file
2026-01-09 01:09:48 +01:00
.vite/deps feature - 6 - Structural fixes 2025-12-28 11:01:13 +01:00
app Fix production issues 2026-01-08 21:56:05 +01:00
bin feature - 6 - fix production compose issues 2025-12-28 10:47:18 +01:00
bootstrap feature - 20 - demo auto login 2026-01-08 01:40:13 +01:00
config feature - 20 - demo auto login 2026-01-08 01:40:13 +01:00
database feature - 18 - Add payments to subscription flow 2026-01-07 00:29:53 +01:00
docker/mysql-init feature - 4 - Set up e2e with basic tests 2025-12-28 13:48:02 +01:00
frontend-old feature - 6 - port react frontend to laravel blade + livewire 2025-12-28 10:47:18 +01:00
public feature - 3 - Add logos 2026-01-04 04:01:11 +01:00
resources feature - 20 - demo auto login 2026-01-08 01:40:13 +01:00
routes feature - 23 - purge old demo accounts 2026-01-08 02:09:52 +01:00
src/DishPlanner Fix production issues 2026-01-08 21:56:05 +01:00
storage feature - 6 - Structural fixes 2025-12-28 11:01:13 +01:00
tests bug - 14 - Fix modal issues, fix alpine.js issue, clean up unused tests 2026-01-04 13:36:13 +01:00
.dockerignore feature - 6 - port update compose files 2025-12-28 10:47:18 +01:00
.editorconfig feature - 6 - port react frontend to laravel blade + livewire 2025-12-28 10:47:18 +01:00
.env.dusk.local feature - 8 - Fix session expired issue 2025-12-29 23:37:41 +01:00
.env.example feature - 6 - port update compose files 2025-12-28 10:47:18 +01:00
.gitattributes feature - 6 - port react frontend to laravel blade + livewire 2025-12-28 10:47:18 +01:00
.gitignore feature - 8 - Add code coverage 2026-01-03 21:17:00 +01:00
artisan feature - 6 - port react frontend to laravel blade + livewire 2025-12-28 10:47:18 +01:00
build-push.sh feature - 6 - Structural fixes 2025-12-28 11:01:13 +01:00
build_and_push.sh feature - 6 - Structural fixes 2025-12-28 11:01:13 +01:00
composer.json feature - 18 - Add payments to subscription flow 2026-01-07 00:29:53 +01:00
docker-compose.prod.yml feature - 6 - fix production compose issues 2025-12-28 10:47:18 +01:00
docker-compose.yml feature - 4 - Set up e2e with basic tests 2025-12-28 13:48:02 +01:00
Dockerfile feature - 18 - Add payments to subscription flow 2026-01-07 00:29:53 +01:00
Dockerfile.dev feature - 18 - Add payments to subscription flow 2026-01-07 00:29:53 +01:00
LICENSE.md feature - 6 - port react frontend to laravel blade + livewire 2025-12-28 10:47:18 +01:00
package-lock.json feature - 6 - fix dev compose issues 2025-12-28 10:47:18 +01:00
package.json feature - 6 - port react frontend to laravel blade + livewire 2025-12-28 10:47:18 +01:00
phpunit.dusk.xml feature - 8 - Trim down fields from user form 2025-12-29 02:57:25 +01:00
phpunit.xml feature - 8 - Add code coverage 2026-01-03 21:17:00 +01:00
postcss.config.js feature - 6 - port react frontend to laravel blade + livewire 2025-12-28 10:47:18 +01:00
README.md Update prod and dev instructions 2026-01-08 21:40:19 +01:00
shell.nix Fix health check warnings 2026-01-09 01:09:48 +01:00
tailwind.config.js feature - 3 - Improve login page layout 2026-01-04 03:26:50 +01:00
update.sh feature - 6 - Structural fixes 2025-12-28 11:01:13 +01:00
vite.config.js feature - 6 - fix dev compose issues 2025-12-28 10:47:18 +01:00

🍽️ 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.