Getting started
Repository structure
.
├── backend/
├── frontend/
├── website/
├── docker/
├── nginx/
├── scripts/
└── udpate-plan.txt
Standard development startup
Copy-Item .\docker\dev\.env.example .\docker\dev\.env
.\scripts\start-dev.ps1
This is the default path for local development. It starts the Docker-based stack from the repository scripts.
What the script does
.\scripts\start-dev.ps1:
- checks that backend and frontend directories exist
- checks that
docker\dev\.envexists - starts the development Docker Compose stack
- brings up frontend, backend, MariaDB, phpMyAdmin, Redis, and Redis Commander
Default local URLs:
http://localhost:5173http://localhost:8080/api/v1http://localhost:8081http://localhost:8082
Recommended stop command
Use the repository stop script when you want to shut the stack down.
.\scripts\stop.ps1
Alternative: run frontend and backend directly on the host
Frontend
Set-Location .\frontend
npm install
npm run dev
Default local URL:
http://localhost:5173
Backend
Set-Location .\backend
java -classpath .mvn\wrapper\maven-wrapper.jar "-Dmaven.multiModuleProjectDirectory=F:\projects\Wahl\backend" org.apache.maven.wrapper.MavenWrapperMain spring-boot:run
Default local API base:
http://localhost:8080/api/v1
If mvnw.cmd does not work, set JAVA_HOME or invoke the Maven wrapper JAR directly.
Documentation site
Set-Location .\website
npm install
npm start
This runs the Docusaurus site locally so you can preview documentation changes before pushing them.
Environment notes
- the default workflow is Docker-first
- direct host startup is mainly useful for debugging or development without containers
- backend Maven wrapper calls are more reliable through the wrapper JAR when
JAVA_HOMEis missing on Windows - GitHub Pages deployment is handled by repository workflow automation
Dev-only login helper
When the backend runs with the dev profile, a dev-only helper endpoint is available:
POST /api/v1/auth/dev-login
Example body:
{
"username": "admin"
}
This issues a normal auth token for an existing user without requiring a password.
Browser-friendly variant:
/api/v1/auth/dev-login?username=admin
The admin login page also shows dev-only helper buttons for:
- signing in directly as
admin - resetting the default admin back to
admin / admin123
The reset endpoint is:
POST /api/v1/auth/dev-reset-admin
Important notes:
- this endpoint exists only in the
devprofile - it is intended only for local development and testing
- it does not replace the normal production login flow
Validation
Frontend
Set-Location .\frontend
npm run build
Backend
Set-Location .\backend
java -classpath .mvn\wrapper\maven-wrapper.jar "-Dmaven.multiModuleProjectDirectory=F:\projects\Wahl\backend" org.apache.maven.wrapper.MavenWrapperMain test
Docs
Set-Location .\website
npm run build