No description
Find a file
2026-08-17 14:00:02 +02:00
.forgejo/workflows 46 - Add CI image and app image build workflows 2026-08-17 14:00:02 +02:00
.vite/deps feature - 6 - Structural fixes 2025-12-28 11:01:13 +01:00
app 45 - Add Forgejo CI workflow 2026-08-17 13:30:49 +02:00
bin FOSS pivot: retire SaaS, demo, and APP_MODE plumbing (#37 #38 #39 #40 #41) 2026-08-16 17:29:19 +02:00
bootstrap 45 - Add Forgejo CI workflow 2026-08-17 13:30:49 +02:00
config 45 - Add Forgejo CI workflow 2026-08-17 13:30:49 +02:00
database 45 - Add Forgejo CI workflow 2026-08-17 13:30:49 +02:00
docker 46 - Add CI image and app image build workflows 2026-08-17 14:00:02 +02:00
public feature - 3 - Add logos 2026-01-04 04:01:11 +01:00
resources FOSS pivot: retire SaaS, demo, and APP_MODE plumbing (#37 #38 #39 #40 #41) 2026-08-16 17:29:19 +02:00
routes 45 - Add Forgejo CI workflow 2026-08-17 13:30:49 +02:00
src/DishPlanner 45 - Add Forgejo CI workflow 2026-08-17 13:30:49 +02:00
storage feature - 6 - Structural fixes 2025-12-28 11:01:13 +01:00
tests 45 - Add Forgejo CI workflow 2026-08-17 13:30:49 +02:00
.dockerignore FOSS pivot: retire SaaS, demo, and APP_MODE plumbing (#37 #38 #39 #40 #41) 2026-08-16 17:29:19 +02: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
.env.testing 45 - Add Forgejo CI workflow 2026-08-17 13:30:49 +02:00
.gitattributes 46 - Add CI image and app image build workflows 2026-08-17 14:00:02 +02:00
.gitignore Ignore codewhale 2026-08-17 00:51:10 +02:00
artisan feature - 6 - port react frontend to laravel blade + livewire 2025-12-28 10:47:18 +01:00
CHANGELOG.md Add changelog 2026-08-17 00:55:07 +02:00
composer.json 45 - Add Forgejo CI workflow 2026-08-17 13:30:49 +02:00
docker-compose.prod.yml FOSS pivot: retire SaaS, demo, and APP_MODE plumbing (#37 #38 #39 #40 #41) 2026-08-16 17:29:19 +02: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 FOSS pivot: retire SaaS, demo, and APP_MODE plumbing (#37 #38 #39 #40 #41) 2026-08-16 17:29:19 +02: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
phpstan-baseline.neon 45 - Add Forgejo CI workflow 2026-08-17 13:30:49 +02:00
phpstan.neon 45 - Add Forgejo CI workflow 2026-08-17 13:30:49 +02:00
phpunit.dusk.xml feature - 8 - Trim down fields from user form 2025-12-29 02:57:25 +01:00
phpunit.xml 45 - Add Forgejo CI workflow 2026-08-17 13:30:49 +02:00
pint.json 45 - Add Forgejo CI workflow 2026-08-17 13:30:49 +02:00
postcss.config.js feature - 6 - port react frontend to laravel blade + livewire 2025-12-28 10:47:18 +01:00
README.md FOSS pivot: retire SaaS, demo, and APP_MODE plumbing (#37 #38 #39 #40 #41) 2026-08-16 17:29:19 +02:00
shell.nix 45 - Add Forgejo CI workflow 2026-08-17 13:30:49 +02:00
tailwind.config.js feature - 3 - Improve login page layout 2026-01-04 03:26:50 +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 forge.lvl0.xyz/lvl0/dishplanner:latest.

docker-compose.yml

services:
  app:
    image: forge.lvl0.xyz/lvl0/dishplanner: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://forge.lvl0.xyz/lvl0/dishplanner.git
cd dishplanner
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 AGPL-3.0 license.

📞 Support

For issues and questions, please use Forgejo Issues.