78a5f98f11139baf881c378fe7d6267a3638dd4b
Docker mounts named volumes as root by default. Without pre-creating /data in the image with correct ownership, the app user cannot write tasks.db, causing a 502 on any route that touches TaskStore. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
demoapp — Clouderized Demo App
A task manager built with Scala 3 + Thorium, used to demo the full Clouderized deployment cycle: edit config, push, rebuild, see changes live.
Prerequisites
- Access to
git.clouderized.com(Gitea) - The app deployed at
demoapp.clouderized.com
Running the Demo
1. Show the live app
Open https://demoapp.clouderized.com in a browser. Point out:
- The teal header with app name and version (v1.0.0)
- CRUD functionality — add, complete, and delete tasks
- The
/healthendpoint returning{"status":"ok"}
2. Make a visible change
Edit src/main/resources/site.conf:
app {
- name = "DemoCust Tasks"
- version = "1.0.0"
+ name = "Clouderized Tasks"
+ version = "1.1.0"
theme {
- background = "#0F766E"
+ background = "#1E40AF"
font = "DM Sans"
- fontSize = "16px"
+ fontSize = "18px"
}
}
This changes the header from teal to blue, bumps the version, and increases font size.
3. Push the change
git add src/main/resources/site.conf
git commit -m "Update theme to blue, bump to v1.1.0"
git push
4. Watch the rebuild
Go to Gitea Actions at git.clouderized.com/cldrzd/demoapp/actions and watch the pipeline:
sbt assemblybuilds the fat JAR- Docker builds the container image
- The old container is replaced with the new one
5. See the result
Refresh the browser. The page now shows:
- Blue header instead of teal
- Version v1.1.0 in the top-right
- Larger font size
6. Reset for the next demo
git revert HEAD --no-edit
git push
The app rebuilds and returns to its original teal theme at v1.0.0.
Config Reference
All visual changes are driven by src/main/resources/site.conf:
| Key | Default | What it controls |
|---|---|---|
app.name |
"DemoCust Tasks" |
Header title |
app.version |
"1.0.0" |
Version badge in header |
app.theme.background |
"#0F766E" (teal) |
Header and button color |
app.theme.font |
"DM Sans" |
Body font family |
app.theme.fontSize |
"16px" |
Base font size |
Suggested color swaps for demos
| Color | Hex | Effect |
|---|---|---|
| Teal (default) | #0F766E |
Clouderized brand color |
| Blue | #1E40AF |
Obvious visual change |
| Purple | #7C3AED |
Another clear contrast |
| Red | #DC2626 |
High-contrast demo |
Endpoints
| Method | Path | Description |
|---|---|---|
| GET | / |
Task list (HTML) |
| GET | /health |
Health check (JSON) |
| POST | /tasks |
Create task (form) |
| POST | /tasks/:id/toggle |
Toggle completion |
| POST | /tasks/:id/delete |
Delete task |
Notes
- Task storage is in-memory — it resets on every redeploy, which keeps the demo clean.
- The app runs on the Pro tier (2GB RAM, 2 vCPU) since JVM needs the headroom.
- Three sample tasks are pre-seeded on startup.
Description
Languages
Scala
91.6%
Dockerfile
8.4%