Skip to content

Latest commit

 

History

History
74 lines (69 loc) · 17.1 KB

File metadata and controls

74 lines (69 loc) · 17.1 KB

Maison vs casa-img — Feature Comparison

Spec-level (feature) comparison. Deliberately not implementation-level — no language, runtime, supervision, or transport is chosen yet. Rows that were purely about how (message bus, process supervision, bundled engine) have been removed and folded into the behaviour they deliver.

Legend: ✅ in scope · ❌ out of scope · 🔶 in scope but diverges from casa-img

# Feature casa-img Maison Notes
Dashboard / home
1 App grid home screen The core of Maison
2 App tiles with burger menu (open, restart, stop, start, uninstall…) Same options as CasaOS
3 Drag-to-reorder tiles
4 Add external link (bookmark tile)
5 Promo / onboarding cards Dropped
6 Global search bar Dropped
Apps — model
7 An "app" = a multi-service Docker Compose stack Full compose stacks, same as CasaOS
8 Same on-disk app file structure as CasaOS App data / compose layout matches CasaOS
9 Store apps: compose copied as-is and brought up Maison does not rewrite the store's yml
10 Unmanaged-app discovery: detect an external Compose stack carrying x-casaos and show it as an app tile 🔶 Not store-linked = "unmanaged app". Replaces the manual "install customized app" form
11 Manual "Install a customized app" form Replaced by #10 (auto-discovery)
App configuration (per-app settings)
12 App settings/config window (ports, env, volumes…) 🔶 Diverges: Maison keeps a CasaOS-style config window, but writes a separate override compose file instead of editing the original yml
13 Restart / stop / start / uninstall controls Via the burger menu (#2)
14 Live per-app logs
15 Live per-container stats
16 Real-time app status updates on the dashboard Live updates in scope; transport intentionally unspecified
App Store
17 CasaOS App Store UI (browse, category, featured, detail) 100% CasaOS-compliant
18 CasaOS-compliant store format (x-casaos metadata) Unchanged format
19 Multi-store support In scope
20 Install from store
21 Automated app updates In scope
Backups
21a Archive an app's data + config on uninstall (never delete) casa-img deletes the compose dir on uninstall; Maison archives the whole folder into .backups/<app>/
21b On-demand backup of an installed app No casa-img equivalent. Two-pass copy (live → stop → delta → start → zip) so downtime is seconds, not minutes. See docs/lifecycle.md
21c List / restore / delete backups, per app and box-wide App Settings → Backups, plus Settings → Backups for archives of apps that no longer exist
21d Scheduled or automated backups, retention policy Manual only for now
21e Offsite / second-disk backup targets Backups sit on the data disk: rollback, not disaster recovery
Widgets
22 Clock / date widget
23 System status widget (CPU %, temp, RAM)
24 Storage widget (health, used/total) Read-only stats, not a disk manager
25 Widget settings (toggle widgets)
Global settings & platform
26 Configurable background / wallpaper In scope
27 Light / dark theme Part of UX parity
28 i18n / multi-language In scope
29 Single dashboard container + host Docker socket Same deployment model
Out of scope (dropped from casa-img)
30 Authentication / login / users Trusted-network boundary instead
31 File manager / Files app Dashboard-only
32 Multi-user / RBAC
33 Terminal / SSH
34 Disk / RAID management
35 Network shares (Samba/SMB), rclone remotes, ntfs tools

Key divergences from casa-img (not just subtractions)

  • App config → override file (#12). Maison never mutates the compose file it got from the store. User edits in the settings window are written to a separate override compose file that is layered on top, so the original stays pristine and updates stay clean.
  • Unmanaged apps (#10, #11). No manual custom-install form. Instead Maison watches Docker: any Compose stack that carries x-casaos metadata — even one it didn't install — surfaces as an app tile, marked as unmanaged (not tied to a store entry).
  • Backups (#21a–c) are an addition, not parity. casa-img has no backup feature at all — its only "backups" are a .bak of the compose file during an update and log rotation. Maison's flat app model is what makes this cheap: the folder is the app, so one archive holds the compose, the override, the .env and the data, and restores into a working app on its own.