Preskočiť na obsah
Ákos Kappel
Jazyk: sk
Téma
Svetlé
Tmavé

Oriel

Poznámky, zoznamy a úlohy, ktoré fungujú najprv offline a živo sa synchronizujú s ľuďmi, s ktorými bývate.

Živé demoZdrojový kód

Beží na mojom domácom serveri, takže môže byť občas nedostupné (napríklad pri výpadku elektriny alebo internetu).

Oriel na širokej obrazovke v tmavom režime: zápisník vľavo a poznámka v Markdowne vedľa neho

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

  1. 1PrehliadačReact rozhranie nad kolekciami TanStack DB
  2. 2SQLiteLokálna databáza v prehliadači, každý zápis ide najprv sem
  3. 3PowerSyncPosiela dolu priestory člena; zmeny nahor prechádzajú kontrolami aplikácie
  4. 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
Domovská obrazovka v mobile s pripnutým nákupným zoznamom, úlohami s termínmi a poľom na zápis
Domovská obrazovka v mobile: najprv pripnuté položky, potom otvorené úlohy podľa priority a termínu a dole pole na zápis.
Nákupný zoznam v mobile s otvorenými a odškrtnutými položkami
Zoznam: odškrtnuté položky sa presunú dole a v zdieľanom priestore ukazujú, kto ich odškrtol.
Zápisník a otvorený nákupný zoznam vedľa seba vo svetlom režime
Na širokej obrazovke zostáva zápisník vľavo a otvorená položka sa číta vedľa neho.

1 z 3

Domovská obrazovka v mobile s pripnutým nákupným zoznamom, úlohami s termínmi a poľom na zápis

Domovská obrazovka v mobile: najprv pripnuté položky, potom otvorené úlohy podľa priority a termínu a dole pole na zápis.