Initial Blazor birth registry app, theming, and services
Build and Push Docker Image / build-and-push (push) Successful in 1m14s

Implemented a Blazor Web App (.NET 8) for a public-by-link birth registry platform, following project guidelines. Added domain entities, EF Core context, and Blazor components for authentication, registry management, and public views. Introduced core services for registries, theming, user context, platform owner bootstrapping, and SMTP email. Included static assets (Bootstrap, favicon), launch settings, Dockerfile, CI workflow, and deployment configs. Added bootstrap.min.css.map for improved CSS debugging.
This commit is contained in:
Arne Moerman
2026-05-14 11:48:15 +02:00
commit c1b11603e8
107 changed files with 6503 additions and 0 deletions
+16
View File
@@ -0,0 +1,16 @@
# Deployment templates
## Gitea build pipeline
- Workflow file: `.gitea/workflows/build-and-push.yml`
- Pushes Docker image tags to: `git.arnemoerman.be/arne/birthlist`
- `latest`
- datetime tag (`yyyyMMddHHmm`)
## Portainer stack
- Stack file: `deploy/portainer-stack.yml`
- Env template: `deploy/portainer-stack.env.example`
## Notes
- Set `PAT_TOKEN` secret in Gitea for registry login.
- Ensure external Docker network `caddy-net` exists.
- OAuth/SMTP env values can stay empty for MVP; related features will be disabled.
+17
View File
@@ -0,0 +1,17 @@
# Required for SQL Server container and app DB connection
SA_PASSWORD=ChangeThisToAStrongPassword123!
# Optional OAuth (leave empty to disable provider at runtime)
GOOGLE_CLIENT_ID=
GOOGLE_CLIENT_SECRET=
MICROSOFT_CLIENT_ID=
MICROSOFT_CLIENT_SECRET=
# SMTP (leave username/password/from address empty to disable mail features)
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
SMTP_ENABLE_SSL=true
SMTP_USERNAME=
SMTP_PASSWORD=
SMTP_FROM_ADDRESS=
SMTP_FROM_NAME=Birth Registry
+68
View File
@@ -0,0 +1,68 @@
version: '3.8'
services:
birthlist:
image: git.arnemoerman.be/arne/birthlist:latest
container_name: birthlist
ports:
- "5022:8080"
environment:
- ASPNETCORE_ENVIRONMENT=Production
- ASPNETCORE_URLS=http://+:8080
- Data__Provider=SqlServer
- ConnectionStrings__DefaultConnection=Server=mssql;User Id=sa;Password=${SA_PASSWORD};Initial Catalog=BirthList;Encrypt=false;TrustServerCertificate=true
- Authentication__Google__ClientId=${GOOGLE_CLIENT_ID}
- Authentication__Google__ClientSecret=${GOOGLE_CLIENT_SECRET}
- Authentication__Microsoft__ClientId=${MICROSOFT_CLIENT_ID}
- Authentication__Microsoft__ClientSecret=${MICROSOFT_CLIENT_SECRET}
- Smtp__Host=${SMTP_HOST}
- Smtp__Port=${SMTP_PORT}
- Smtp__EnableSsl=${SMTP_ENABLE_SSL}
- Smtp__UserName=${SMTP_USERNAME}
- Smtp__Password=${SMTP_PASSWORD}
- Smtp__FromAddress=${SMTP_FROM_ADDRESS}
- Smtp__FromName=${SMTP_FROM_NAME}
depends_on:
- mssql
networks:
- birthlist-network
- caddy-net
restart: unless-stopped
healthcheck:
test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://localhost:8080/"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
labels:
- "com.centurylinklabs.watchtower.enable=true"
mssql:
image: mcr.microsoft.com/mssql/server:2022-latest
container_name: birthlist-db
environment:
- ACCEPT_EULA=Y
- SA_PASSWORD=${SA_PASSWORD}
- MSSQL_PID=Developer
ports:
- "1433:1433"
volumes:
- birthlist-mssql-data:/var/opt/mssql
networks:
- birthlist-network
restart: unless-stopped
healthcheck:
test: ["CMD", "/opt/mssql-tools/bin/sqlcmd", "-S", "localhost", "-U", "sa", "-P", "${SA_PASSWORD}", "-Q", "SELECT 1"]
interval: 10s
timeout: 3s
retries: 10
start_period: 20s
networks:
birthlist-network:
driver: bridge
caddy-net:
external: true
volumes:
birthlist-mssql-data: