app/README.md

128 lines
3.8 KiB
Markdown
Raw Permalink Normal View History

# 🍽️ Dish Planner
2025-10-13 14:57:11 +02:00
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.
2025-10-13 14:57:11 +02:00
## ✨ Features
2025-10-13 14:57:11 +02:00
- **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
2025-10-13 14:57:11 +02:00
2026-01-08 21:40:19 +01:00
## 🚀 Self-hosting
2026-01-09 02:38:04 +01:00
The production image is available at `codeberg.org/dish-planner/app:latest`.
2026-01-08 21:40:19 +01:00
### docker-compose.yml
```yaml
services:
app:
2026-01-09 02:38:04 +01:00
image: codeberg.org/dish-planner/app:latest
2026-01-08 21:40:19 +01:00
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:
```
2026-01-08 21:40:19 +01:00
### 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
2026-01-08 21:40:19 +01:00
### NixOS / Nix
```bash
2026-01-09 02:38:04 +01:00
git clone https://codeberg.org/dish-planner/app.git
2026-01-08 21:40:19 +01:00
cd dish-planner
nix-shell
```
2026-01-08 21:40:19 +01:00
The shell will display available commands and optionally start the containers for you.
2026-01-08 21:40:19 +01:00
#### Available Commands
2026-01-08 21:40:19 +01:00
| 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 |
2026-01-08 21:40:19 +01:00
#### Services
2026-01-08 21:40:19 +01:00
| Service | URL |
|---------|-----|
| App | http://localhost:8000 |
| Vite | http://localhost:5173 |
| Mailhog | http://localhost:8025 |
| MariaDB | localhost:3306 |
2026-01-08 21:40:19 +01:00
### Other Platforms
2026-01-08 21:40:19 +01:00
Contributions welcome for development setup instructions on other platforms.
## 📄 License
This project is open-source software licensed under the [MIT license](LICENSE.md).
## 📞 Support
2026-01-09 02:38:04 +01:00
For issues and questions, please use [Codeberg Issues](https://codeberg.org/dish-planner/app/issues).