Skip to content

itsDNNS/tribu

Repository files navigation

Tribu

Tribu

A calm home base for busy households.
Calendar, tasks, shopping, contacts, birthdays, routines, meals, rewards, and the everyday details that keep family life moving.

Product page  •   Quick Start  •   Documentation Wiki  •   Phone Sync  •   Wall Display  •   Roadmap

Latest release  GHCR frontend image  GHCR backend image  Docker Compose  Installable PWA  MIT License

Self-hosted  •  Demo mode  •  Shared Home Display  •  CalDAV/CardDAV  •  Home Assistant  •  24 languages  •  MIT licensed


Tribu mobile dashboard

A quick daily view for the things your household needs today.

Tribu desktop dashboard

A desktop command center for planning the week, sharing responsibility, and keeping everyone on the same page.

Why Tribu?

Family life usually ends up split across calendars, chats, notes, shopping apps, and memory. Tribu brings the daily moving parts into one self-hosted home base your family can actually use.

  • Plan the week without bouncing between apps.
  • Make tasks, routines, meals, school, gifts, and responsibilities visible.
  • Keep shopping lists, contacts, birthdays, rewards, and reminders close to the calendar.
  • Put a read-only family dashboard on a kitchen tablet or hallway display.
  • Sync calendars and contacts to phones with CalDAV and CardDAV.
  • Connect automations through Home Assistant, webhooks, and scoped API tokens.

Best fit for

Households that want less scattered planning

Use Tribu when your family needs one shared place for appointments, chores, groceries, birthdays, school details, dinner plans, gifts, and the small reminders that otherwise live in someone's head.

Self-hosters who want a useful product, not just a stack

Tribu runs with Docker Compose, published GHCR images, PostgreSQL, Valkey, and clear operations docs. You keep the setup on hardware you control, but the product still focuses on the people using it every day.

Product tour

Open the screenshot tour

1. Shared Home Display

Shared Home Display on a kitchen tablet

A read-only household display for a kitchen tablet or hallway screen. Pair a display device, give it a revocable display token, and show the day without leaving a personal account signed in.

2. Desktop planning view

Dashboard in the Morning Mist theme

3. Meals, recipes, and shopping

Meal planning with recipes and ingredients

Plan meals next to the rest of the week, keep recurring recipes nearby, and move ingredients toward the shopping list without opening another planning app.

4. School timetables

School timetable planning in Tribu

Keep each child's school week next to the rest of the family calendar, with lesson times, breaks, and assigned children in one place.

5. Phone sync

CalDAV and CardDAV phone sync settings

Sync calendars and contacts through CalDAV and CardDAV. iOS works with the built-in Calendar and Contacts apps. Android works through a DAV-compatible client such as DAVx5.

6. Home Assistant and webhooks

Automation webhook settings for Home Assistant

Send selected Tribu events to automation tools such as Home Assistant through scoped webhooks with redacted endpoint details and secret headers.

7. Birthdays and gift ideas

Gift ideas and birthdays in Tribu

Keep birthdays and gift ideas close to the rest of household planning instead of maintaining another spreadsheet.

8. Recipes for the week

Recipes in Tribu

Keep family recipes organized, searchable, and ready for meal planning.

See the Wiki for setup guides and the broader product documentation.

What Tribu covers today

Household job Shipped in Tribu
See the day Dashboard, activity, birthdays, reminders, quick actions
Plan the week Calendar, recurring events, school timetables, meal plans
Share responsibility Tasks, assignees, priorities, due dates, recurrence, templates
Shop and cook Shopping lists, recipes, meal plans, ingredient handoff
Remember people and dates Contacts, birthdays, gifts, profile details
Motivate routines Rewards, earning rules, reward catalog, child progress
Find things fast Global search across household data
Put it on a shared screen Pairable Shared Home Display with read-only display tokens
Keep phones connected CalDAV and CardDAV sync for calendars and contacts
Automate the household Home Assistant package, webhooks, scoped API tokens
Run it yourself Docker Compose, GHCR images, backup docs, reverse proxy docs, MIT license
Use it in your language 24 UI languages

Phone Sync

Tribu supports CalDAV and CardDAV for bidirectional phone sync, so calendars and contacts can work with mobile devices and DAV-compatible clients.

Works with:

  • iPhone and iPad through the built-in Calendar and Contacts apps
  • Android through DAV-compatible clients such as DAVx5
  • DAV servers and clients documented in the Self-Hosting guide

After setup, open Settings -> Phone sync in Tribu to copy the CalDAV and CardDAV URLs for each family.

Shared Home Display

Tribu can turn a kitchen tablet, hallway screen, or wall display into a shared family dashboard without signing in as a real person.

A display is a device, not a fake family member. Admins pair a dedicated display device, the tablet receives a revocable read-only token, and /display shows selected household information without loading the normal app shell, profile flows, notifications center, settings, user IDs, emails, or calendar source URLs.

See the Shared Home Display setup guide.

Start in the way that fits you

  • Feel the product first: open Tribu and click Try demo on the login page for realistic sample data.
  • Deploy in your stack: use the Docker Compose quick start below or paste the stack into Portainer, Dockge, or Dockhand.
  • Set up phone sync: add the CalDAV and CardDAV URLs to iOS, iPadOS, Android, or a DAV-compatible client.
  • Pair a shared display: create a display under Admin -> Displays and open the pairing link on the tablet.
  • Connect Home Assistant: use the Home Assistant guide for sensors, quick capture, webhooks, and dashboard examples.

Quick Start

Run Tribu with Docker Compose on a server, NAS, mini PC, or homelab box.

Option A: stack UI

Use this when you prefer Portainer, Dockge, Dockhand, or another stack editor.

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}
      JWT_EXPIRE_HOURS: ${JWT_EXPIRE_HOURS:-24}
      REFRESH_TOKEN_EXPIRE_DAYS: ${REFRESH_TOKEN_EXPIRE_DAYS:-30}
      TZ: ${TZ:-}
    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 the required secrets before deploying. Set TZ as well when you want family calendar times and reminders to use a local household timezone instead of UTC:

Variable Description
JWT_SECRET Random 64-character hex string for JWT signing. Keep it stable in the persisted .env so routine updates do not end active sessions.
POSTGRES_PASSWORD Random 32-character hex string for the database.
TZ Optional IANA timezone for family calendar/task times and reminder windows, for example Europe/Berlin. If unset or invalid, Tribu falls back to UTC. Audit timestamps remain UTC.

Generate the values and write them into .env:

python3 - <<'PY'
from pathlib import Path
import secrets

env = Path(".env")
text = env.read_text()
text = text.replace("JWT_SECRET=", f"JWT_SECRET={secrets.token_hex(32)}", 1)
text = text.replace("POSTGRES_PASSWORD=", f"POSTGRES_PASSWORD={secrets.token_hex(16)}", 1)
env.write_text(text)
PY

Deploy the stack, open localhost:3000, and register. The first user becomes the family admin.

Option B: CLI

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 -d

For HTTPS, secure cookies, backups, updates, rollback, phone sync, and troubleshooting, use the Self-Hosting guide.

Tech stack

  • 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 GHCR images for amd64 and arm64

Project signals

  • Versioned releases and release notes
  • Published frontend and backend container images
  • MIT license
  • Security policy and responsible disclosure path
  • Public roadmap, changelog, and Discussions
  • Wiki guides for self-hosting, backup and restore, Home Assistant, phone sync, shared display, SSO, and architecture

Documentation

Use the GitHub Wiki as the primary documentation entry point for setup, self-hosting, operations, integrations, troubleshooting, roadmap, and release-oriented guides.

Need Start here
Product overview Product page and this README
Full docs Documentation Wiki
Install and operate Self-Hosting
Shared display Shared Home Display
Home Assistant Home Assistant
Contribute Contributing
Security reports Security Policy
Releases Releases

Support

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.

License

Tribu is released under the MIT License. See LICENSE for the full text.


Built with care by the itsDNNS family.

About

Self-hosted family organizer for calm household planning. Shared calendar, tasks, shopping, contacts, birthdays, and reminders in one home base.

Topics

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Sponsor this project

  •  

Packages

 
 
 

Contributors