Szereted használni a Google Calendar-t? Hát én se nagyon. Úgyhogy csináltam egy sajátot. Nos nagyjából ennyi is volna az eredettörténete a Calendaide-nek.
Ez egy naptár alkalmazás amibe kapcsolatokat és eseményeket tudsz elmenteni a naptáradba. Támogatja a rendszeresen ismétlődő eseményeket mint például születésnapok vagy munkahelyi beosztás, napi, heti vagy havi granulitásban (például egy születésnap minden 12 havonta tud ismétlődni, egy uszodai edzés minden második héten hétfőn ás pénteken). Az eseményeidet kapcsolatokba szervezve tárolja a rendszer amiknek mind adhatsz saját színt és megjegyzéseket is amik meg fognak jelenni a naptár nézetben. A naptár hasonló módon képes havi, heti és napi felbontásban bemutatni az eseményeidet, drag-n-drop egér- vagy ujjmozdulatokkal át tudod húzni új időpontokba, átméretezheted őket vagy jobb egér kattintással szerkesztheted az összes tulajdonságát. A bal oldali eszköztárban tudsz új eseményeket és kapcsolatokat létrehozni, minden esemény először ütemezetlenül (kezdő időpont nélkül) jön létre, hogy majd később be tudd osztani őket, ha már többet tudsz a részleteikről. Ezeket egyszerűen rá tudod húzni a naptáradra vagy beállíthatod az idejüket a Szerkesztés menüben.
Bejelentkezni Google fiókkal tudsz vagy regisztrálni egy email/jelszó párral. Az adatbázis automatikusan törli a mai naphoz képest 30 napnál régebbi eseményeket hogy helyet spóroljon a szerver oldalon. (Ez egy nonprofit hobbi projekt és van összesen 0.5 GB adatbázis tárhelyem amit igyekszek rendesen beosztani. Szerencsére a szöveges adatok viszonylag kis helyet foglalnak.) Rendszeresen ismétlődő eseményeket alapvetően nem töröl a rendszer, csak ha meg van adva nekik egy utolsó bezárulási dátum és ez már legalább 30 napja a múltban van. Bejelentkezett felhasználóknak lehetőségük van két mentési mód közül választani, vagy minden legapróbb változást automatikusan elküld az applikáció a szerver oldalnak és azonnal elmenti, vagy ha takarékoskodni szeretnének a sávszélességgel akkor manuális üzemmódban csak akkor kerül bármi elmentésre ha a felhasználó megnyom egy Mentés gombot.
A frontend oldal Angular 21-ben íródott SCSS osztályokkal és a PrimeNG komponens könyvtár erős használatával, valamint a FullCalendar nevű könyvtárral, ami magát a naptár komponenst testesíti meg és az összes hozzá tartozó megjelenítési logikát. A backend egy Pythonban írt FastAPI szerver ami egy MongoDB adatbázissal kommunikál amit a MongoDB Atlas platformon hosztolok. A MongoDB-nek van egy olyan hasznos tulajdonsága, hogy speciális index kulcsokat tudok létrehozni a dokumentumaim dátum típusú mezőin, és egy adott idő eltelte után maga az adatbázis fogja automatikusan kitörölni a dokumentumot a kollekcióból. (A pontos időzítés nem garantált, lényegében egy cron job pásztázza az összes adatbázist és kitörli amit kell ha talál neki szóló jelzéseket.) Ezzel igyekszek egy kis helyet spórolni hogy ne teljen be egyhamar a tárhelyem, illetve azzal, hogy az ismétlődő események is egyetlen bejegyzésként szerepelnek az adatbázisban.
Github forráskód mindkét projekthez: https://github.com/FarpadGit/Calendaide













