Skip to content

itsDNNS/tribu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

110 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Tribu

Tribu

Self-hosted family organizer to tame the everyday chaos.
Calendars, tasks, shopping lists, contacts, birthdays — one place, your server, your data.

Quick Start  •   Wiki  •   Contributing  •   Roadmap  •   Changelog

Ko-fi  PayPal  GitHub Sponsors


Dashboard - Midnight Glass theme

Midnight Glass theme — glassmorphism, bento grid dashboard, mesh background

More screenshots

Morning Mist (light theme)

Dashboard - Morning Mist theme

Calendar with day-detail panel

Calendar view

Tasks with priorities, assignees, and overdue tracking

Tasks view

Login page

Login page

Mobile (390px)

Mobile dashboard

See the Wiki for screenshots of every view and theme.


Why Tribu?

Most family organizer apps lock your data in their cloud and charge monthly fees. Tribu runs on your own hardware, gives you full control, and costs nothing.

  • Privacy first — all data stays on your server, no third-party services
  • Modular — each feature is an isolated plugin, extend what you need
  • Beautiful — three polished themes with glassmorphism, animations, and responsive design
  • Bilingual — German and English out of the box, lazy-loaded per module
  • Try before you install — interactive demo mode with realistic sample data, no backend needed

Features

Dashboard Bento grid with today's events, open tasks, birthday countdowns, and family stats
Calendar Month/week view, event dots, day-detail panel, recurring events, ICS import/export
Tasks Priorities, due dates, assignees, recurring tasks, overdue tracking
Shopping Multiple lists, tap-to-toggle items, real-time sync via WebSocket
Contacts Card grid with colored avatars, CSV import/export, birthday extraction
Birthdays 4-week lookahead with countdown, auto-synced from contacts
Notifications In-app feed with event reminders, overdue tasks, and birthday alerts
Themes Morning Mist (light), Dark, Midnight Glass (glassmorphism)
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, non-root containers

Quick Start

Create a new stack in Portainer, Dockge, or Dockhand 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.

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

Development setup? See Contributing for building from source.

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 images (amd64/arm64) on GHCR

Documentation

Self-Hosting Guide Configuration, reverse proxy, backups, updating, troubleshooting
Wiki Screenshots, features, themes, getting started
Architecture Backend modules, frontend patterns, security, API reference
Plugin Manifest How to build feature, theme, and language plugins
Roadmap Development phases and planned features
Contributing Dev setup, project structure, PR guidelines
Security Security policy and responsible disclosure
Changelog Release history

Support

If Tribu helps your family stay organized, consider supporting development:

License

Private project. All rights reserved.


Built with care by the itsDNNS family.

About

Self-hosted family organizer. Calendars, tasks, contacts, birthdays — one place, your server, your data.

Topics

Resources

Security policy

Stars

Watchers

Forks

Sponsor this project

  •  

Packages

 
 
 

Contributors