Application Nextcloud pour gérer et organiser la famille.
  • TypeScript 78.4%
  • Vue 15.8%
  • JavaScript 3.9%
  • Shell 0.7%
  • HTML 0.5%
  • Other 0.7%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Maxime Lozach ebd127d32d
Some checks failed
CI / checks (push) Successful in 2m7s
CI / l10n (push) Successful in 9s
CI / image (push) Successful in 4s
End-to-end / e2e (push) Failing after 22m0s
feat(dev): make seed fills the local instance with a demo family
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>
2026-09-24 00:25:49 +02:00
.claude/skills/nextcloud-exapp-dev docs(i18n): translations go through the plain-text wrapper 2026-09-15 23:51:30 +02:00
.github/workflows fix(build): the production image no longer built, and nor did a fresh install 2026-09-16 10:34:52 +02:00
appinfo feat(frontend): the app serves a read-only offline page through a service worker 2026-08-27 21:20:41 +02:00
dev feat(dev): make seed fills the local instance with a demo family 2026-09-24 00:25:49 +02:00
e2e feat(families): a new family starts with a shopping list and a task list 2026-09-24 00:07:25 +02:00
eslint-rules docs: the design documentation moves to the project wiki 2026-08-30 15:24:16 +02:00
ex_app feat(families): a new family starts with a shopping list and a task list 2026-09-24 00:07:25 +02:00
test-results test(e2e): make the suite runnable, and fix submission by Enter 2026-08-17 16:43:14 +02:00
translationfiles feat(families): a new family starts with a shopping list and a task list 2026-09-24 00:07:25 +02:00
.editorconfig chore(tooling): make the four refactoring principles mechanical 2026-08-23 20:39:14 +02:00
.git-blame-ignore-revs chore(tooling): record the formatting revision for git blame 2026-08-23 20:39:56 +02:00
.gitignore fix(ci): stage the l10n sources where the Docker daemon can see them 2026-09-22 21:59:28 +02:00
.prettierignore build(i18n): establish the translation pipeline 2026-09-06 21:26:45 +02:00
AGENTS.md docs: member colours in the project state and in the invariants 2026-09-21 23:04:14 +02:00
compose.yaml build(i18n): establish the translation pipeline 2026-09-06 21:26:45 +02:00
Dockerfile fix(build): the production image no longer built, and nor did a fresh install 2026-09-16 10:34:52 +02:00
eslint.config.js refactor(e2e): delete the comments phase 6 relocated 2026-08-25 09:41:09 +02:00
healthcheck.sh chore: English by default in the app store listing and the tooling 2026-08-18 09:45:05 +02:00
LICENSE Initial commit 2026-08-06 13:51:32 +01:00
Makefile feat(dev): make seed fills the local instance with a demo family 2026-09-24 00:25:49 +02:00
package-lock.json chore(tooling): put the frontend under strict TypeScript 2026-08-24 09:46:38 +02:00
package.json chore(tooling): put the frontend under strict TypeScript 2026-08-24 09:46:38 +02:00
README.md feat(dev): make seed fills the local instance with a demo family 2026-09-24 00:25:49 +02:00
start.sh chore: English by default in the app store listing and the tooling 2026-08-18 09:45:05 +02:00

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.

Licence

AGPL-3.0-or-later.