- Create feature branch: feature/lesson-management
- Update lesson-management.md status from Planned to In Progress
- Update ROADMAP.md: Feature 2.1 (Lesson Management) now In Progress
- Update Phase 1 status to Complete, Phase 2 to In Progress
Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
- Remove GitHub Actions workflow (.github/workflows/dotnet-ci.yml)
- Create Woodpecker CI pipeline (.woodpecker.yml)
- Configure pipeline with 3 stages:
- build-and-test: runs on all branches, builds and runs unit/integration tests
- docker-build: builds and pushes Docker image to git.lrhdev.dk on main
- deploy: placeholder for deployment to deutsch.lrhdev.dk
- Update infrastructure-setup.md to document Woodpecker configuration
- Feature 1.1 (Infrastructure Setup) CI/CD tasks now complete for self-hosted setup
Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
- Create .github/workflows/dotnet-ci.yml with:
- Build and test job (runs on all pushes to main/feature branches)
- Docker build job (builds and pushes to Docker Hub on main)
- Deploy job (placeholder for production deployment)
- Configure workflow to run .NET 9.0 build, unit tests, and integration tests
- Update infrastructure-setup.md to mark CI/CD tasks as complete
- Feature 1.1 (Infrastructure Setup) now 100% complete
Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
- Fix MSTest compatibility with .NET 9.0 by upgrading to MSTest.TestFramework 4.2.3
- Move Tests directory to solution level (Tests/) to prevent test files from being compiled with GermanApp
- Update test project references to point to GermanApp/GermanApp.csproj
- Add InternalsVisibleTo attributes for test assemblies
- Make RefreshToken properties internal for testability
- Fix User.ChangeEmail null handling
- Add 46 comprehensive unit tests for User and RefreshToken domain entities
- All tests passing successfully
Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
- Add RequireAuthorization() to POST, PUT, DELETE endpoints
- Add Microsoft.AspNetCore.Authorization using
- Lessons now require JWT token for create, update, delete
Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
- Update status from Planned to In Progress
- Ready to implement JWT-based authentication
Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
- All Docker tasks completed
- All containers running successfully
- Update milestones and progress history
Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
- nginx:alpine doesn't have wget installed
- Health check was causing container to stay in 'starting' state
Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
- Remove HEALTHCHECK from backend Dockerfile
- Remove health checks from docker-compose.yml
- Change frontend depends_on to service_started
- Health checks can be added back once image tools are known
Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
- CMD-SHELL not supported in HEALTHCHECK
- Use CMD bash -c with /dev/tcp for port check
- No external dependencies needed
Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
- Alpine-based aspnet image doesn't include curl
- Health check requires curl to test /health endpoint
Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
- Create Dockerfile for backend (.NET 9.0 multi-stage build)
- Create Dockerfile for frontend (Node + Nginx multi-stage build)
- Create nginx.conf for frontend with API proxy
- Create docker-compose.yml with db, backend, frontend services
- Add .dockerignore files for backend, frontend, and root
- Configure health checks for all services
- Configure PostgreSQL volume for persistent data
Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
- Update Workflow section to emphasize marking tasks as [x] when completed
- Update Best Practices to explicitly state updating task checkmarks as you work
Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
- Mark acceptance criteria as complete
- Update Implementation Plan Phase 1 and 2 tasks
- Update Milestones for Backend Project and Database
- Update all Backend and Database tasks as complete
- Add progress history entries
Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
- Add Microsoft.Extensions.Diagnostics.HealthChecks.EntityFrameworkCore package
- Add Serilog.AspNetCore and Serilog.Sinks.Console packages
- Configure Serilog with bootstrap logger and configuration
- Add Health Checks endpoint at /health with DbContext check
- Configure CORS with AllowAll policy for development
- Create ApiResponse, ApiErrorResponse, and PaginatedResponse models
- Create ExceptionMiddleware for global error handling
- Restructure Program.cs with try-catch-finally for proper logging
Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
- Create User entity with gamification fields (Level, Streak, Points)
- Add User DbSet to AppDbContext with proper configuration
- Create initial database migration with Users and Lessons tables
- Add SeedData extension for initial admin user and sample lessons
- Update Program.cs to use seed data method
Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>