Oriel
Poznámky, zoznamy a úlohy, ktoré fungujú najprv offline a živo sa synchronizujú s ľuďmi, s ktorými bývate.
Beží na mojom domácom serveri, takže môže byť občas nedostupné (napríklad pri výpadku elektriny alebo internetu).

O projekte
Pokojný zápisník na každodenné veci, na ktoré nechcete zabudnúť: nákupný zoznam, poznámka, úloha na víkend. Beží ako živé demo na mojom domácom serveri a do mobilu sa nainštaluje ako aplikácia.
Chcel som vyriešiť spoločný nákupný zoznam v obchode bez signálu. Každé čítanie a zápis ide najprv do databázy SQLite v prehliadači, takže aplikácia sa otvorí hneď a funguje aj offline. Účet je voliteľný: pridá synchronizáciu medzi zariadeniami a priestory zdieľané s ostatnými, kde sa zmeny do sekundy objavia aj na ostatných mobiloch.
Najťažšie bolo nechať rozhodovanie na serveri bez spomalenia zariadenia. Zmeny sa hneď uložia lokálne a potom server každú z nich overí podľa roly člena, kým sa dostane k ostatným; odmietnutá zmena sa zahodí a zariadenie dostane späť verziu zo servera.
Čo si môžete vyskúšať
- Rýchly zápis v spodnej časti obrazovky: jeden riadok ako „Nákup: mlieko, vajcia, chlieb“ sa zmení na zoznam
- Po prvej návšteve funguje bez pripojenia a nepotrebuje účet
- Zdieľané priestory s vlastníkmi, editormi a čitateľmi; kto čo pridal alebo odškrtol a kto má zoznam práve otvorený
- Úlohy s prioritou, stavom, termínom, opakovaním a odložením; poznámky v Markdowne s predchádzajúcimi verziami na obnovenie
- Vyhľadávanie v názvoch, poznámkach a položkách zoznamov priamo v zariadení, bez ohľadu na veľké písmená a diakritiku
- Potiahnutím dokončíte alebo zmažete s možnosťou vrátiť, presúvanie položiek ťahaním, príkazová paleta cez Ctrl+K
- Zdieľanie textu do Orielu z iných aplikácií, diktovanie mikrofónom a naskenovanie čiarového kódu produktu do zoznamu
- Ranná pripomienka úloh na daný deň a upozornenia na zmeny od ostatných cez push notifikácie
- Prihlásenie prístupovým kľúčom, export všetkého do JSON alebo Markdownu, prípadne zmazanie účtu
- Angličtina, maďarčina a slovenčina, svetlý a tmavý režim
Ako to funguje
- Dáta najprv lokálne: kolekcie TanStack DB nad databázou SQLite v prehliadači, ktorú PowerSync synchronizuje s PostgreSQL cez logickú replikáciu
- Každá nahraná zmena sa overí cez Zod a podľa roly člena na serveri; sťahovanie je obmedzené na priestory člena cez sync streams
- Identifikátory generované na klientovi robia opakované nahrávanie bezpečným; súbežné úpravy sa spájajú po poliach, zdôvodnené v zázname rozhodnutí
- Vlastný service worker na prácu offline, Web Push, Web Share Target, Badging a Barcode Detection API
- Testy dátovej vrstvy nad skutočným SQLite, testy komponentov a Playwright testy s dvoma synchronizujúcimi sa prehliadačmi, emuláciou offline a kontrolou cez axe
- Prísna Content Security Policy s nonce; Docker image zostavený a preverený v GitHub Actions, nasadený s nočnými zálohami databázy
Architektúra
- 1PrehliadačReact rozhranie nad kolekciami TanStack DB
- 2SQLiteLokálna databáza v prehliadači, každý zápis ide najprv sem
- 3PowerSyncPosiela dolu priestory člena; zmeny nahor prechádzajú kontrolami aplikácie
- 4PostgreSQLKópia na serveri, replikovaná do PowerSyncu
- Kedy
- 2026
- Typ
- Osobný
- Verzie
- TanStack Start 1.169
- React 19.3
- PowerSync 1.27
- PostgreSQL 18
- TypeScript 7
- Technológie
- TanStack Start
- React
- TypeScript
- TanStack DB
- PowerSync
- SQLite
- PostgreSQL
- Drizzle ORM
- Better Auth
- Zod
- React Aria
- Tailwind CSS
- Paraglide
Playwright
- Docker


