Skip to content
VIMS-CoderPublic
forked from pinn-shost/pinn

About

Self-hosted family organizer for your NAS โ€“ shared calendar, meal planning, shopping lists, tasks, finances and more. PocketBase + Docker, no cloud, no ads. ๐Ÿ‡ฌ๐Ÿ‡ง๐Ÿ‡ฉ๐Ÿ‡ช๐Ÿ‡ซ๐Ÿ‡ท๐Ÿ‡ช๐Ÿ‡ธ

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

ย 
ย 

Latest commit

ย 

History

151 Commits

Folders and files

Repository files navigation

pinn. โ€“ the family organizer that lives on your own NAS

Latest release MIT license Runs on Docker PocketBase iPhone, iPad and Android Support on Ko-fi

๐Ÿ‡ฌ๐Ÿ‡ง English ยท ๐Ÿ‡ฉ๐Ÿ‡ช Deutsch ยท ๐Ÿ‡ช๐Ÿ‡ธ Espaรฑol ยท ๐Ÿ‡ซ๐Ÿ‡ท Franรงais

Screenshots ยท Features ยท Installation ยท Privacy ยท FAQ


pinn. is one app for everything that keeps a household running: the shared calendar, this week's meals, the shopping list, who takes out the bins, the pocket money and the insurance that needs cancelling in March. It runs on your own NAS with Docker and installs like a native app on every iPhone, iPad and Android phone in the family.

No cloud account. No subscription. No ads, no tracking. Your family's data never leaves your home.

Screenshots

On the iPad

Hung on the wall or lying on the kitchen table: the shared iPad shows the whole family at once.

pinn. dashboard: the family's profiles to choose from
Dashboard โ€“ everyone taps their own picture, with an optional PIN
pinn. overview on the iPad with tiles for weather, calendar, tasks and family
Overview โ€“ weather, appointments, tasks, meals and the family at a glance

On the phone

Always with you: pinn. installs on every iPhone and Android phone like a native app.

Home page with weather, today's tasks and appointments
Overview โ€“ your day at a glance
Family calendar in week view
Calendar โ€“ iCloud and Google in one view
Weekly meal plan with recipes
Meals โ€“ plan the week, shop with one tap
Shopping list sorted by shop
Lists โ€“ shopping, pantry, packing
Budget overview with spending by category
Finance โ€“ budget, savings, pocket money
Kids' page with the daily routine
Kids โ€“ a playful daily routine

What pinn. does

๐Ÿ“… Calendar iCloud and Google calendars per person, private or shared with the family. Public and school holidays, waste collection dates and birthdays from your contacts appear automatically.
๐Ÿ Meals & recipes Plan the week, then send the ingredients straight to the shopping list. Import recipes from text, PDF, photos or a link โ€“ optionally with AI. Share favourite recipes with other families on your server.
๐Ÿ›’ Lists Shopping lists per shop, a pantry that refills the list when stock runs low, packing lists from templates (holiday, hospital bag, party), gift and wish lists.
โœ… Tasks & household Tasks with push reminders, cleaning plans and bins โ€“ plus a kids' page with animated routines that only shows what fits the time of day.
๐Ÿ’ถ Finance Shared or private funds, a household budget, savings and depots with ETFs and shares, pocket money, recurring payments and contracts with cancellation reminders. Flatshares can split costs and see who owes whom.
๐Ÿ“„ Documents & vehicles Receipts and warranties, IDs with expiry reminders. Cars and bikes with inspection dates, tyre changes, fuel use and total cost.
๐Ÿก Home For tenants, owners and landlords: tenancy or purchase contract, loan, defects with photos, receipts, renovation plan, meter readings with forecast, keys, and rental income for flats, houses and garages you let out. Garden & plants with a watering plan that knows when it rained.
๐Ÿ“ Family & location Share your location right from pinn. โ€“ once or for a chosen time โ€“ and in the background via the free Traccar Client app (sends straight to pinn., no extra server). Plus a "way home" mode, an SOS alert with position and emergency numbers, emergency cards and arrival notifications for places.
๐ŸŽ’ School & daycare Per child: timetable (type it in or snap a photo โ€“ the AI fills it in), drop-off and pick-up, homework on the kids' page, parent letters with deadlines that turn into reminders, and closure days straight in the calendar.
๐Ÿพ Pets Profiles for dogs, cats, rabbits & co. with feeding times to tick off, walks, a "whose turn is it" rota, vaccinations and deworming with push reminders, weight chart, vet and emergency vet, a pet-sitter sheet to share, a printable "missing" poster and a pet feeder refill reminder.
๐ŸŒฆ๏ธ Weather & holidays Tap the weather (a tile on the phone, at the top next to date and time on iPad and computer) for 14 days with details for every day. Packing lists with destination and dates show the holiday weather โ€“ forecast or typical values โ€“ and suggest what to pack.
๐Ÿ  Smart home Start Apple Shortcuts or Home Assistant actions from a task โ€“ the robot vacuum cleans the kitchen when the chore is due, the robot mower and the watering follow the garden plan, the pet feeder reports when it runs empty.
๐ŸŽ™๏ธ Voice control "Hey Siri, pinn": add to the shopping list, read it out, create tasks and hear what's on today โ€“ also on Android.
๐Ÿ”” Notifications Personal push messages on iPhone, iPad and Android, plus a notification bell that collects every change in the family.
๐Ÿงฉ Everything else Family board with movable notes, global search, offline mode with automatic sync, dark mode, iPad dashboard with profile PINs, guest account, child lock.

pinn. speaks English, Deutsch, Franรงais, Espaรฑol, Italiano, Portuguรชs and ไธญๆ–‡, adapts currency and emergency numbers to your region, and switches between family and flatshare wording. One server can host several families, each with its own admins.

What's new in 1.107.1

New languages: Portuguese (Brazil) and Chinese (Simplified)

  • pinn. is now available in Portuguese (Brazil) and Chinese (Simplified) (Settings โ†’ Language). The whole app is translated, including the weekly and monthly preview, the shopping hint and the export button.
  • Not yet in these languages: the setup assistant, the data export files and the push messages from the server โ€“ they show English for now.
  • Changed: app files (index.html, js/sprachen.js, js/ausblick.js, js/einrichten.js, js/exportieren.js, js/hinweise.js, js/versionslog.js, new lang/pt.js and lang/zh.js, language files en, fr, es, it). Nothing changes on the server.

What's new in 1.107

New language: Italian

  • pinn. is now available in Italian (Settings โ†’ Language). The whole app is translated, including the weekly and monthly preview, the shopping hint and the export button.
  • Not yet in Italian: the setup assistant, the data export files and the push messages from the server โ€“ they show English for now.
  • For contributors: a new check for language files (.github/scripts/check-lang.js, part of check-all.js and of the GitHub checks) and a tool that translates new languages with the Claude API (.github/scripts/translate.js, workflow โ€œTranslateโ€). More languages will follow.
  • Changed: app files (index.html, js/sprachen.js, js/ausblick.js, js/einrichten.js, js/exportieren.js, js/hinweise.js, js/versionslog.js, new lang/it.js, language files en, fr, es) and on the server pb_hooks/pinn-pushtext.js, pinn-ausblick.js, pinn-familie-geburtstag.js, pinn-haustiere.js, pinn-ortung.js, pinn-sprache.js, pinn-wobistdu.js. Install as usual (sudo sh pinn-*/pinn-setup.sh or the update button).

What's new in 1.106

Board, lists, school, pets and maintenance plan in records of their own

  • Third step of moving the family data out of the one big data block: the family board, the lists (packing, gifts, wishes, checklists, ideas and templates), school & daycare, pets and the maintenance plan (Home) now live in records of their own on the server. Each part is saved and synced on its own. Nothing changes in how you use the app.
  • Same safety net as before: a backup per family before the move (pb_data/pinn_umzug/, 30 days), devices with an older app keep seeing everything.
  • All server functions (reminders, board messages and photos, pets, packing lists, household tasks) now read the family data including every moved part.
  • Changed: app files (index.html, js/versionslog.js) and on the server pb_hooks/pinn-bereiche.js, pb_hooks/pinn-benutzer.js, pb_hooks/save_family_data.pb.js, pb_hooks/pinn-sprache.js, pb_hooks/pinn-vorrat.js. Install as usual (sudo sh pinn-*/pinn-setup.sh or the update button).

What's new in 1.105

Shopping and pantry in records of their own

  • Second step of moving the family data out of the one big data block: the shopping lists (incl. shops, planned shopping trips and sorting) and the pantry now live in records of their own on the server, like recipes and the meal plan since 1.104. When several people tick off items in the shop at the same time, only the shopping list is synced โ€“ not all family data. Nothing changes in how you use the app.
  • Same safety net as in 1.104: a backup per family before the move (pb_data/pinn_umzug/, 30 days), devices with an older app keep seeing everything. Voice control, the notification bell and the best-before reminder work with the new records.
  • Changed: app files (index.html, js/bereiche.js, js/familiensync.js, js/versionslog.js) and on the server pb_hooks/pinn-bereiche.js, pb_hooks/save_family_data.pb.js, pb_hooks/pinn-sprache.js, pb_hooks/pinn-vorrat.js. Install as usual (sudo sh pinn-*/pinn-setup.sh or the update button).

How it works

flowchart LR
  subgraph Home["Your home network"]
    direction LR
    P["๐Ÿ“ฑ Phones & tablets<br/>pinn. on the home screen"] -->|HTTPS| C["Caddy<br/>certificate via DuckDNS"]
    C --> PB["PocketBase<br/>pinn. app + database"]
    PB --- T["Traccar<br/>optional, GPS trackers"]
    PB --- HA["Home Assistant<br/>optional"]
    PB --- B["Nightly backup"]
  end
  R["๐Ÿ“ฑ On the go"] -.->|"WireGuard or Tailscale VPN"| C
Loading

Everything runs as Docker containers on one machine. HTTPS works without port forwarding โ€“ the certificate is issued via a DNS check. From outside, pinn. is only reachable through your own VPN.

Requirements

  • A NAS or server with Docker and Docker Compose 2.17+ โ€“ developed on a UGREEN NAS with UGOS, runs on any Linux Docker host (amd64, arm64, armv7)
  • SSH access to it
  • Optional but recommended: a free DuckDNS subdomain for HTTPS โ€“ required for push notifications and installing pinn. as an app

Installation

  1. Download the ZIP of the latest release and unzip it.

  2. Create a folder on the NAS, e.g. /volume1/docker/Pocketbase, and put the unzipped folder (e.g. pinn-1.106.0 or pinn-main) into it as it is.

  3. Log in via SSH and run:

    cd /volume1/docker/Pocketbase && sudo sh pinn-*/pinn-setup.sh

    The script copies every file into place, downloads the libraries for PDF import and photo text recognition, and starts pinn.

  4. Open http://<NAS-IP>:8090 โ†’ Log in as main admin โ†’ password Admin โ†’ choose your own password.

  5. The setup assistant walks you through the rest โ€“ HTTPS, remote access via WireGuard or Tailscale, Google, AI, location and Home Assistant โ€“ step by step, in four languages.

  6. Open pinn. via its HTTPS address on each phone and add it to the home screen:

    • iPhone/iPad (Safari): Share โ†’ Add to Home Screen (iOS 16.4 or later for notifications)
    • Android (Chrome): Settings โ†’ Notifications โ†’ Install pinn. as an app, or Chrome menu โ‹ฎ โ†’ Install app

    Then turn on notifications on each device under Settings โ†’ Notifications โ†’ Activate on this device.

Updating: download the new ZIP, put the unzipped folder into the same folder and run sudo sh pinn-*/pinn-setup.sh again. Replaced files are kept in _alt/, your data stays untouched.

Backups run every night into ./backups and are kept for 14 days.

Privacy

pinn. was built for data you would never hand to a cloud service: bank statements, health documents, where your children are. That's why:

  • All data lives on your NAS in a single PocketBase database. There is no pinn. server and no telemetry.
  • No scripts from third-party servers. All code and libraries are served from your NAS.
  • Push notifications carry no content. Apple, Google and Mozilla only deliver an empty wake-up signal; the device then fetches the message from your NAS.
  • Passwords for iCloud and Google are stored encrypted in a locked collection.
  • Not reachable from the internet. Remote access goes through your own VPN.

pinn. only contacts outside services for features that need them:

Service Used for When
Open-Meteo Weather forecast when a home address is set
OpenStreetMap Nominatim Turning addresses into map positions when entering addresses
OpenStreetMap tiles Map background on the location page, loaded through your NAS
Google Fonts Typefaces when the app loads
OpenHolidays API Public and school holidays when a home address is set
DuckDNS HTTPS certificate and address if configured
iCloud / Google Calendars and contacts only for accounts you connect
Google Gemini Reading recipes and documents only if you add an API key
jsDelivr One-time download of pdf.js and Tesseract during installation only

FAQ

Do I need to open ports on my router?
No. The HTTPS certificate is issued via a DNS check, and remote access runs through a VPN โ€“ WireGuard on a FRITZ!Box, or Tailscale for any other router.
Does it work without a NAS?
Any always-on machine with Docker works: a mini PC, a Raspberry Pi 4/5 or a Linux server.
Is pinn. a "real" app from the App Store?
pinn. is a web app that you add to the home screen. It then opens full-screen like a native app, works offline, shows a badge with open tasks and receives push notifications โ€“ without any app store.
Can several families use one installation?
Yes. The main admin creates families, each family gets its own admins, calendars and data. Recipes can optionally be shared between families.
What about children?
Profiles with child lock only see their own tasks and can't delete or change anything. Finance, documents and vehicles stay hidden. Younger children get their own playful page with daily routines.
What does it cost?
Nothing โ€“ pinn. is free and open source under the MIT license. Optional services like the Gemini AI have free tiers.

Repository layout

The repository has the same layout as an installation on the NAS โ€“ every file lies where it ends up:

pinn/
โ”œโ”€โ”€ pb_hooks/            server: *.pb.js hooks and their helper modules (pinn-*.js, calendar-sync.js)
โ”œโ”€โ”€ pb_public/           web app served by PocketBase
โ”‚   โ”œโ”€โ”€ index.html       the app page, built from src/ (HTML, start check) โ€“ do not edit by hand
โ”‚   โ”œโ”€โ”€ js/              app code split out of index.html, plain <script> files without a build step
โ”‚   โ”‚                    (ruhemodus.js, sprachen.js, region.js, grundlagen.js, popups.js, verbindung.js, benutzer.js, mitteilungen.js, serverzugriff.js, tastatur.js, anmeldemaske.js, dashboard.js, dashboardhintergrund.js, profilauswahl.js, pineingabe.js, dashboardsitzung.js, dashboardkonto.js, familienverwalten.js, einrichten.js, exportieren.js, hauptadminseite.js, anmeldung.js, konto.js, profilverwaltung.js, zustand.js, bedienzustand.js, rezeptbilder.js, zusammenfuehren.js, speichern.js, design.js, sprache.js, uebersicht.js, familienkachel.js, wobistdu.js, geburtstagsfeier.js, wetterkachel.js, geburtstage.js, uebersichteinstellungen.js, familiensync.js, bereiche.js, kalenderquellen.js, icsparser.js, zeitleiste.js, termindetails.js, kalenderdatei.js, wetter.js, wohnort.js, feiertage.js, muellkalender.js, mitglieder.js, profilbild.js, mitglied.js, kinderseite.js, kinderroutine.js, sterne.js, kalenderansicht.js, essenplanen.js, rezeptparser.js, rezeptdialog.js, rezeptbild.js, rezeptmengen.js, einkauf.js, einkaufslisten.js, einkaufseingabe.js, rezepte.js, offline.js, aufgabenextras.js, appbadge.js, reisen.js, aufgabendaten.js, haushalt.js, reihum.js, aufgaben.js, smarthome.js, sprachsteuerung.js, termine.js, ansichten.js, versionspruefung.js, sicherungen.js, geraete.js, fehlerprotokoll.js, versionslog.js, einstellungen.js, kalenderkonto.js, finanzen.js, kassen.js, vorrat.js, vorrat2.js, sparen.js, vertraege.js, fahrzeuge.js, zuhause.js, dokumente.js, pdflesen.js, appstart.js, pinnwand.js, listen.js, familie.js, hinweise.js, ausblick.js โ€“ ausblick.js always comes last)
โ”‚   โ”œโ”€โ”€ css/             app styles split out of index.html, plain CSS without a build step (ergaenzung.css, energiesparen.css, basis.css โ€ฆ haustierewetter.css, terminal.css, glocke.css)
โ”‚   โ”œโ”€โ”€ einrichtung.js   setup assistant ยท datenexport.js  data export
โ”‚   โ”œโ”€โ”€ lang/            translations (en, fr, es)
โ”‚   โ””โ”€โ”€ vendor/          pinn.css, pocketbase/ (pdf.js and Tesseract are downloaded by the setup)
โ”œโ”€โ”€ .github/             GitHub Actions (workflows/check.yml), checks (scripts/), CONTRIBUTING.md, SECURITY.md, images โ€“ not installed
โ”œโ”€โ”€ src/                 sources of index.html (build.js, rahmen.html, teile/) โ€“ not installed
โ”œโ”€โ”€ caddy/Caddyfile      HTTPS reverse proxy
โ”œโ”€โ”€ docker-compose.yaml  all containers
โ”œโ”€โ”€ env.txt              template for .env
โ”œโ”€โ”€ pinn-setup.sh        install & update
โ”œโ”€โ”€ pinn-wartung.sh      backups & updates (container "wartung")
โ”œโ”€โ”€ pinn-pocketbase-update.sh
โ”œโ”€โ”€ index.html           placeholder only, never installed (keeps the update button of 1.38 working)
โ””โ”€โ”€ README.md            this page ยท README.de.md ยท README.es.md ยท README.fr.md

pinn-setup.sh copies pb_hooks/, pb_public/ and caddy/Caddyfile 1:1 into the project folder; data folders (pb_data/, konfig/, backups/, caddy/data/ โ€ฆ) are never touched.

Contributing

Bug reports, ideas and translations are very welcome โ€“ see CONTRIBUTING.md. Please report security issues privately as described in SECURITY.md. Before a pull request, please run node .github/scripts/check-all.js โ€“ the same checks run automatically on GitHub.

Support pinn.

pinn. is free and stays free โ€“ completely, for everyone. It's built in my spare time. If it makes your everyday life a little easier, a small contribution is very welcome, but entirely voluntary:

Ko-fi Buy Me a Coffee

A โญ helps too โ€“ it makes pinn. easier to find for other families.

Built with

PocketBase (MIT) ยท Tailwind CSS (MIT) ยท pdf.js (Apache-2.0) ยท Tesseract.js (Apache-2.0) ยท Traccar (Apache-2.0) ยท Caddy (Apache-2.0)

License

MIT โ€“ use it, change it, share it.

About

Self-hosted family organizer for your NAS โ€“ shared calendar, meal planning, shopping lists, tasks, finances and more. PocketBase + Docker, no cloud, no ads. ๐Ÿ‡ฌ๐Ÿ‡ง๐Ÿ‡ฉ๐Ÿ‡ช๐Ÿ‡ซ๐Ÿ‡ท๐Ÿ‡ช๐Ÿ‡ธ

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages