Join the Agent Deck Discord Server!
Check out the Agent Deck community on Discord – hang out with 357 other members and enjoy free voice and text chat.
A private, self-hosted family updates app with photos, milestones, polls, trip journals, and family chat. Open source, self-hosted, no ads, no algorithm.
SocialTypeScript · HTMLGitHub @TimVanOnckelenOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Private, self-hosted family photo and update sharing. Your family, on your own server.
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
🤖 AI-Assisted Project. This codebase is developed with the assistance of AI. Code generation, architecture design, and development workflows leverage AI tooling. ⚠️ Very early stage. Famlin is under active development and not yet stable. Expect breaking changes, rough edges, and incomplete features. Use at your own risk — do not rely on it for anything you're not prepared to lose or rebuild. Private, self-hosted family updates — your family, on your own server.Read the full README ↗
🤖 AI-Assisted Project. This codebase is developed with the assistance of AI. Code generation, architecture design, and development workflows leverage AI tooling.
⚠️ Very early stage. Famlin is under active development and not yet stable. Expect breaking changes, rough edges, and incomplete features. Use at your own risk — do not rely on it for anything you're not prepared to lose or rebuild.
Private, self-hosted family updates — your family, on your own server.
Famlin is a small social network for one family (or a few related ones): share updates, photos and videos, milestones, polls and trips with the people who matter, without handing any of it to a social media company. You run it on your own hardware, and only the people you invite can get in.
/admin.📖 Full documentation: famlin.app/docs
The official apps are free. Both ask for your server's address on first launch, so the same download works for every Famlin server.
.apk from the latest release. It's signed differently from the Play Store version, so uninstall one before installing the other.Family members who'd rather not install anything can open your server's address in a browser.
You need a machine with Docker. Famlin ships as a pre-built multi-arch image (linux/amd64 + linux/arm64) at ghcr.io/timvanonckelen/famlin, so no source checkout is needed.
mkdir famlin && cd famlin
curl -LO https://github.com/TimVanOnckelen/famlin/releases/latest/download/docker-compose.yml
curl -L -o .env https://github.com/TimVanOnckelen/famlin/releases/latest/download/env.example
# edit .env: set JWT_SECRET (32+ random characters) and POSTGRES_PASSWORD
docker compose up -d
Then open http://your-server:3000/admin. A fresh install has no users, so you'll see a one-time setup screen to create your admin account. From there you create your family, invite people, and optionally set up SSO, email and media integrations.
For production, put Famlin behind a reverse proxy with HTTPS (and set TRUST_PROXY=true in .env when you do), and make sure the famlin-db-data and famlin-uploads volumes are part of your backups.
Read more in the docs:
You need Docker and Node.js (^20.19.0 or >=22.12.0). The full guide is the developer quick start.
cp .env.example .env # set JWT_SECRET and POSTGRES_PASSWORD
docker compose up --build # backend on http://localhost:3000, hot reload via docker-compose.override.yml
In a second terminal, load sample data (a "Familie de Vries" family; log in as [email protected] / test123456):
docker compose exec famlin-backend npx prisma db seed
Web app — web/ and the shared packages/api-client are npm workspaces at the repo root:
npm install # repo root: links and builds @famlin/api-client
npm run dev:web # Vite dev server on http://localhost:5174, /api proxied to the backend
Mobile app — uses a development build (expo-dev-client), not Expo Go:
npm install # repo root first: mobile's @famlin/api-client dependency is built by it
cd mobile
cp .env.example .env
npm install
npm run ios # or: npm run android (needs Xcode / Android Studio)
Leaving the server field empty at login uses EXPO_PUBLIC_API_URL from mobile/.env: http://localhost:3000 on the iOS simulator, http://10.0.2.2:3000 on the Android emulator.
Tests — cd backend && npm run test:docker runs the backend suite inside the dev container against a separate test database. npm test in web/, mobile/ and packages/api-client/ runs their unit tests.
Useful commands:
docker compose logs -f famlin-backend # follow backend logs
docker compose down -v && docker compose up --build # reset the database
docker compose exec famlin-backend npx prisma migrate dev --name description # create a migration
docker compose exec famlin-backend npx prisma studio # browse the database
famlin/
backend/ Fastify + Prisma API, Docker image
admin/ React + Vite admin UI (served at /admin)
web/ React + Vite member-facing web app (served at /)
mobile/ Expo React Native app (iOS + Android)
packages/api-client/ shared API/data layer for web + mobile
docs/ Docusaurus documentation (famlin.app/docs)
website/ landing page (famlin.app)
design/ styleguide, the source of the design tokens
docker-compose.yml production stack (pre-built image)
docker-compose.override.yml local development with hot reload
The architecture overview explains how the pieces fit together, and there's an API reference for building your own scripts and integrations.
Contributions are welcome, whether that's code, docs, translations or bug reports. Before opening a pull request, please read:
Thanks to everyone who has contributed to Famlin!
npm install in mobile/ fails with tsc: command not foundRun npm install in the repo root first — mobile's @famlin/api-client file: dependency is built by the root workspace install.
Famlin is released under the MIT License.