ASP.NET Core Blazor (.NET 10) + EF Core/SQLite + Identity. Features: - Wishlists & items with local image storage (upload, clipboard paste, or URL fetched and stored locally) - Owner-hidden claims (enforced at the query layer) to preserve surprises - Admin-invite-only onboarding with email-based password resets - All state under /data; ships as a single Docker image Includes Dockerfile, docker-compose, Gitea Actions CI (test + push image), Unraid template, and xUnit tests (claim privacy, invite lifecycle, image validation). Co-Authored-By: Claude Opus 4.8 <[email protected]>
30 lines
1.1 KiB
YAML
30 lines
1.1 KiB
YAML
services:
|
|
wishninja:
|
|
build: .
|
|
# For Unraid, replace `build: .` with your published image, e.g.:
|
|
# image: gitea.example.com/youruser/wishninja:latest
|
|
container_name: wishninja
|
|
restart: unless-stopped
|
|
ports:
|
|
- "8080:8080"
|
|
volumes:
|
|
# SQLite db, uploaded images and data-protection keys all live here.
|
|
- ./data:/data
|
|
environment:
|
|
# Public URL — used to build links in invite / password-reset emails.
|
|
WishNinja__BaseUrl: "http://localhost:8080"
|
|
|
|
# First-run bootstrap admin (only used if the account doesn't already exist).
|
|
SEED_ADMIN_EMAIL: "[email protected]"
|
|
SEED_ADMIN_PASSWORD: "ChangeMe!2345"
|
|
|
|
# SMTP for password-reset and invite emails. Leave Host empty to log emails
|
|
# instead of sending them (invite links are also shown in the admin UI).
|
|
WishNinja__Smtp__Host: ""
|
|
WishNinja__Smtp__Port: "587"
|
|
WishNinja__Smtp__UseStartTls: "true"
|
|
WishNinja__Smtp__User: ""
|
|
WishNinja__Smtp__Password: ""
|
|
WishNinja__Smtp__FromAddress: "[email protected]"
|
|
WishNinja__Smtp__FromName: "WishNinja"
|