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
Morning Mist theme -- content-first dashboard with events, tasks, and birthdays at a glance
More screenshots
Morning Mist (light theme)
Calendar with day-detail panel and create FAB
Tasks with collapsible form, priorities, and assignees
Shopping with real-time sync and progress bars
Rewards system with child progress tracking
Login page
Mobile (390px)
See the Wiki for screenshots of every view and theme.
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
- Clean design -- content-first UI with solid cards, consistent spacing, and proper accessibility
- 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
| Dashboard | Today's events, open tasks, birthday countdowns, family stats, and quick actions |
| Calendar | Month/week view, event dots, day-detail panel, recurring events, ICS import/export, create FAB |
| Tasks | Priorities, due dates, assignees, recurring tasks, collapsible create form, overdue tracking |
| Shopping | Multiple lists, tap-to-toggle with check animation, progress bars, real-time WebSocket sync |
| Contacts | Alphabetical card grid, colored avatars, CSV import/export, birthday extraction |
| Birthdays | 4-week lookahead with proximity-based countdown colors, auto-synced from contacts |
| Rewards | Family token economy with earning rules, reward catalog, child progress bars, Lucide icons |
| Notifications | Slide-in panel with time grouping (today/yesterday/older), event reminders, overdue alerts |
| 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, non-root containers |
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 -dDevelopment setup? See Contributing for building from source.
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
| 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 |
If Tribu helps your family stay organized, consider supporting development:
Private project. All rights reserved.
Built with care by the itsDNNS family.
