The self-hosted family organizer that makes a busy household feel under control.
Shared calendar, tasks, shopping lists, contacts, birthdays, and reminders in one calm home base, on your server, with your data.
Quick Start • Phone Sync • Wall Display • Wiki • Contributing • Roadmap • Changelog
Self-hosted • Docker Compose • Demo mode • Wall display mode • CalDAV/CardDAV sync • English + German • MIT licensed
A calm, shared home screen for what the household needs today: upcoming events, open tasks, shopping lists, and the details nobody wants to miss
On desktop, Tribu becomes the household command center for planning the week, sharing responsibility, and keeping everyone on the same page
Product tour screenshots
1. The shared mobile view built for quick daily check-ins
2. A desktop home base for planning the whole week
3. A shared calendar for school events, appointments, and family routines
4. Shopping lists that stay in sync across the household
5. Tasks with ownership, priorities, and due dates
6. Rewards that help turn routines into momentum
7. A clean sign-in and onboarding flow that gets families started quickly
See the Wiki for screenshots of every view and theme.
Most family organizer apps split everyday life across too many places: one calendar here, a shopping app there, tasks in chat, birthdays somewhere else, and household knowledge spread across everyone’s heads. Tribu brings those moving parts together in one self-hosted home base your family can actually use.
It is built for the real rhythm of household life: planning the week, sharing responsibility, keeping shopping in sync, and making sure important dates do not quietly disappear.
- Self-hosted and privacy-respecting: keep your family data on hardware you control
- Covers the everyday essentials: calendar, tasks, shopping, contacts, birthdays, reminders, and rewards in one place
- Designed for shared visibility: the things your household needs are visible on phones, desktops, and shared home displays
- Safe for kitchen tablets and wall screens: pair a dedicated display device instead of leaving a parent account signed in
- Syncs with the devices people already use: CalDAV and CardDAV support for phones and compatible clients
- Easy to explore before committing: interactive demo mode with realistic sample data, no backend required
- Bilingual and extensible: German and English out of the box, with plugin support for features, themes, and languages
Tribu is a strong fit if you want a family organizer that:
- replaces a patchwork of calendar apps, shopping apps, chats, and notes
- gives the whole household shared visibility without giving up data ownership
- feels useful on both quick phone check-ins and bigger desktop planning sessions
- helps everyday planning feel calmer instead of more scattered
Tribu is also a strong fit if you want something that:
- runs in your own homelab, on your server, or on a NAS you already trust
- ships as a Docker Compose stack with published frontend and backend images
- integrates with phones through CalDAV and CardDAV instead of trapping data in one web UI
- is readable, inspectable, and documented enough that you can actually own it
- putting a shared dashboard on a kitchen tablet or hallway display without exposing a personal account
- seeing the week at a glance without bouncing between multiple apps
- making responsibility clear for tasks, routines, and family to-dos
- keeping shared shopping lists in sync while everyone is out and about
- keeping contacts, birthdays, and reminders close to the rest of family planning
- replacing a messy stack of chats, notes, and disconnected cloud tools with one calmer system
Tribu supports CalDAV and CardDAV for bidirectional phone sync, so calendars and contacts can integrate with mobile devices and DAV-compatible clients.
Works with:
- iPhone / iPad via the built-in Calendar and Contacts apps
- Android via DAV-compatible clients such as DAVx5
What you get:
- create and edit events on your phone and see them in Tribu
- create and edit contacts on your phone and keep them in sync
- one shared family system instead of separate calendar/contact silos
After setup, open Settings → Phone sync in Tribu to copy the CalDAV and CardDAV URLs for each family.
See the full phone sync setup guide →
Tribu can turn a kitchen tablet, hallway screen, or wall display into a shared family dashboard without signing in as a real person.
Instead of creating a fake family member like “Kitchen Tablet” or leaving a parent account open on a public screen, admins can pair a dedicated display device. That device gets a revocable, read-only display token and a standalone /display view built for glanceable household information.
What makes it different:
- A display is a device, not a person: it has no email, password, role, rewards, assignments, or member profile.
- No personal account exposure: the display route does not load the normal app shell, profile flows, notifications center, settings, or authenticated user bootstrap.
- Curated family dashboard: the display sees safe household information like today’s events, upcoming birthdays, members by display name, and open tasks without emails, user IDs, admin metadata, or calendar source URLs.
- Easy to revoke: remove the display in Admin → Displays and the paired tablet stops authenticating immediately.
This is ideal for the “always visible” family screen in the kitchen, hallway, office, or command center area.
See the shared display setup guide →
| Dashboard | Today’s events, open tasks, birthday countdowns, family stats, and quick actions |
| Shared Home Display | A standalone, read-only wall display mode for kitchen tablets and shared household screens |
| Calendar | Month/week view, recurring events, ICS import/export, and a focused day-detail panel |
| Tasks | Priorities, due dates, assignees, recurring tasks, and overdue tracking |
| Shopping | Multiple lists, tap-to-toggle interactions, progress bars, and real-time sync |
| Contacts | Alphabetical card grid, colored avatars, CSV import/export, and birthday extraction |
| Birthdays | 4-week lookahead, proximity-based countdown colors, and auto-sync from contacts |
| Notifications | In-app reminders and alerts for upcoming events, overdue tasks, and household activity |
| Rewards | Family token economy with earning rules, reward catalog, child progress bars, and Lucide icons |
| Search | Global search across events, tasks, shopping, contacts, and birthdays (Cmd+K) |
| Themes | Morning Mist (light) and Dark |
| i18n | English and German out of the box, lazy-loaded per module |
| Demo mode | Try the full UI with realistic sample data, no server setup required |
| Security | httpOnly cookies, rate limiting, scoped PATs, and non-root containers |
- Want to feel the product first? Open Tribu and click Try demo on the login page to explore the UI with realistic sample data.
- Want it in your stack fast? Jump to Quick Start and run it with Docker Compose on your server, NAS, or mini PC.
- Want phone integration from day one? Use Phone Sync for CalDAV and CardDAV setup with supported clients.
- Want a shared kitchen or wall dashboard? Use Shared Home Display and pair a dedicated display device instead of a personal account.
- Want to inspect how it is built before you commit? Start with the Architecture and Self-Hosting Guide.
- Want to contribute or extend it? Start with Contributing, then use the Plugin Manifest for extension-specific details.
Run Tribu with Docker Compose on a server, NAS, mini PC, or homelab box. If you already run self-hosted services, getting Tribu live should feel familiar.
Create a new stack and paste:
name: tribu
services:
postgres:
image: postgres:16-alpine
container_name: tribu-postgres
restart: unless-stopped
environment:
POSTGRES_DB: tribu
POSTGRES_USER: tribu
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
volumes:
- tribu_pg_data:/var/lib/postgresql/data
valkey:
image: valkey/valkey:8-alpine
container_name: tribu-valkey
restart: unless-stopped
backend:
image: ghcr.io/itsdnns/tribu-backend:latest
container_name: tribu-backend
restart: unless-stopped
environment:
DATABASE_URL: postgresql://tribu:${POSTGRES_PASSWORD}@postgres:5432/tribu
REDIS_URL: redis://valkey:6379/0
JWT_SECRET: ${JWT_SECRET}
SECURE_COOKIES: ${SECURE_COOKIES:-false}
depends_on: [postgres, valkey]
ports: ["8000:8000"]
volumes:
- tribu_backups:/backups
frontend:
image: ghcr.io/itsdnns/tribu-frontend:latest
container_name: tribu-frontend
restart: unless-stopped
depends_on: [backend]
ports: ["3000:3000"]
volumes:
tribu_pg_data:
tribu_backups:Set two environment variables (generate with openssl rand -hex 32):
| Variable | Description |
|---|---|
JWT_SECRET |
Random 64-char hex string for JWT signing |
POSTGRES_PASSWORD |
Random 32-char hex string for the database |
Deploy the stack, open localhost:3000, and register.
The first user to register becomes the family admin.
Want to explore first? Click Try demo on the login page.
Option B: CLI alternative
mkdir tribu && cd tribu
curl -LO https://raw.githubusercontent.com/itsDNNS/tribu/main/docker/docker-compose.yml
curl -LO https://raw.githubusercontent.com/itsDNNS/tribu/main/docker/.env.example
cp .env.example .env
# Fill in JWT_SECRET and POSTGRES_PASSWORD
docker compose up -dDevelopment setup? See Contributing for local workflow, testing, and PR expectations.
Frontend: Next.js 16, React 19, Lucide Icons, CSS custom properties
Backend: FastAPI, SQLAlchemy, Python 3.13+
Database: PostgreSQL 16
Cache: Valkey 8
Deployment: Docker Compose, multi-arch images (amd64/arm64) on GHCR
Tribu is not only trying to be pleasant for families using it. It is also set up to be approachable for people who like reading the stack, self-hosting it properly, and improving it over time.
- Modern, familiar stack: Next.js, React, FastAPI, PostgreSQL, and Valkey
- Real self-hosting path: Docker Compose deployment, GHCR images, reverse proxy and backup guidance in the docs
- Architecture and plugin docs: enough structure to inspect how it works before touching anything
- Open contribution path: public roadmap, contributing guide, security policy, and MIT license
- Versioned releases: published tags such as
v1.6.1,v1.6.0, and earlier releases show an actual shipping cadence - Operational docs: self-hosting, backups, reverse proxy, architecture, and security guidance are already documented
- Clear extension path: plugin manifest and contribution docs make it easier to understand where custom work belongs
- Public roadmap, changelog, and releases: visitors can see where Tribu is going, what has already shipped, and what version they can deploy today
Use the document that matches your intent:
| README | Product overview, screenshots, positioning, and quick start |
| Contributing | Local dev setup, testing, project boundaries, and PR expectations |
| Self-Hosting Guide | Configuration, reverse proxy, backups, updating, and troubleshooting |
| Wiki | Architecture, roadmap, changelog, plugin details, and reference pages |
| Releases | Versioned builds and release notes |
| Security | Security policy and responsible disclosure |
If Tribu helps your family stay organized, consider supporting development.
If you are a self-hoster or contributor, starring the repo, opening issues, improving docs, joining Discussions, or contributing code all help make the project stronger too.
Need the right place?
-
Questions and setup help: use Discussions Q&A
-
Ideas and early product feedback: use Discussions Ideas
-
Want to share your setup or screenshots: use Discussions Show and tell
-
Reproducible bugs or scoped feature requests: open an Issue
-
Want the latest packaged version: check Releases
-
Sensitive security reports: follow the Security Policy
Tribu is released under the MIT License.
See LICENSE for the full text.
Built with care by the itsDNNS family.

