- TypeScript 78.4%
- Vue 15.8%
- JavaScript 3.9%
- Shell 0.7%
- HTML 0.5%
- Other 0.7%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
Testing by hand started from an empty instance every time, since the e2e suite brings it back to zero on each run. `make seed` gives admin a « Famille Démo » with lists, tasks, recipes, a week of meals and a few events, dated from today so the instance never looks dead. It goes through the application rather than SQL: a family is a Team and three calendars as much as rows (D31). The script ensures the service account (with the e2e suite's password — the suite logs in as it and only creates it when missing), creates the family, drops its two empty starter lists (D41), and imports a document in the export format (D36, D37). Re-running it replaces that family only. Nothing calls it but `make seed`: not `make up`, not CI, and the production image never copies `dev/`. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> |
||
| .claude/skills/nextcloud-exapp-dev | ||
| .github/workflows | ||
| appinfo | ||
| dev | ||
| e2e | ||
| eslint-rules | ||
| ex_app | ||
| test-results | ||
| translationfiles | ||
| .editorconfig | ||
| .git-blame-ignore-revs | ||
| .gitignore | ||
| .prettierignore | ||
| AGENTS.md | ||
| compose.yaml | ||
| Dockerfile | ||
| eslint.config.js | ||
| healthcheck.sh | ||
| LICENSE | ||
| Makefile | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| start.sh | ||
Organisateur Familial
A Nextcloud app for organising family life: shared shopping and task lists, a family calendar, meal planning — built on what Nextcloud already does well rather than reimplementing it.
Each family gets a Nextcloud Team, a shared folder, a calendar and an address book, created and shared automatically. Lists live in the app; everything else is native Nextcloud, so it works in the desktop client, the mobile apps and any CalDAV or CardDAV client you already use.
No external service, no cloud dependency. Everything stays on your instance.
Status: work in progress. The MVP is usable — family home, shared shopping and task lists, calendar, meal planning and recipes. What is left before publication is tracked as issues on the Forgejo tracker; the wiki's Workflow page says how they are organised.
What it does today
One active family, never a list of families. Most people will only ever have one, and the interface never makes them pay for the exception. A discreet switcher in the top-left changes context for the few who need several.
Lists, in two kinds. Shopping lists and task lists are the same object — a line you tick off, in an order you choose. The kind decides what the form asks for: a quantity for shopping, a due date, an assignee and a priority for tasks. Adding stays a single field either way.
Collaborative, and it shows. Lists refresh while you are looking at them, so you can see someone else tick something off while you are in the shop. Each item records who ticked it, and members are notified when something is added or completed.
Reorder by dragging, on a phone as much as on a desktop — with a keyboard fallback in each item's menu.
A family home that answers what comes next: upcoming calendar events, recently changed lists, and tasks due today. Feature screens keep the full content width when you move on.
Requirements
- Nextcloud 30 to 35
- The AppAPI app enabled (shipped by default since 30.0.1)
- The Circles app (Teams), enabled by default on recent versions
- A deploy daemon: HaRP (Nextcloud 32+) or the Docker Socket Proxy
This is an ExApp — a Nextcloud app that runs as its own container rather than as PHP inside the server. Nextcloud talks to it through AppAPI.
Installation
Not yet published to the Nextcloud app store. To run it against your own instance, see the wiki's Dev environment page, which brings up a throwaway Nextcloud plus the app in one command:
make up
Then open http://localhost:8080 and log in as admin / admin. The "Organisateur
Familial" entry appears in the navigation bar.
Development
make install # backend and frontend dependencies
make up # Docker stack, registered and wired
make reload # after a frontend or info.xml change
make seed # replace admin's « Famille Démo » with fresh demo data
make test # backend unit tests
cd e2e && npm test # end-to-end suite, through a real browser
The end-to-end suite drives a real browser through the AppAPI proxy — the only path the application actually takes. Testing directly against the container port bypasses the proxy and happily validates routes the browser can never reach.
| Where | What |
|---|---|
ex_app/lib |
Backend: Node.js 22 + TypeScript + Fastify, SQLite |
ex_app/src |
Frontend: Vue 3 + Vite + @nextcloud/vue |
e2e |
Playwright suite |
appinfo/info.xml |
ExApp manifest, including the routes the proxy relays |
dev/ |
Local stack setup |
Documentation
The design documentation lives in the project wiki, not in this repository — readable without a checkout, and edited alongside the issues.
| Page | Covers |
|---|---|
| Scope | What is in scope, what is deliberately not |
| Architecture | Stack, the numbered decisions D1–D36, project layout, database schema |
| UX | The interface model and what it takes from FamilyWall |
| Code guidelines | The principles the code follows and the lint rules that enforce them |
| Dev environment | The local Docker stack |
| Workflow | How work is tracked: issues, labels, steps, review gates |
Contributors should start with AGENTS.md: project state, conventions, and
the AppAPI traps already paid for.
Language
Everything written for a contributor is in English: code comments, commit messages,
identifiers, test names, this file. The interface is still French — translating it
through @nextcloud/l10n, with English as the source language, is planned for a later
phase. Until then you will find English test names clicking French buttons; that is
expected.
The design pages in the wiki are still largely French and are being translated.