Specifikace: Inteligentný kalendár

Programovací jazyk: C++

Inteligentný kalendár je PC aplikácia určená na prehliadanie a ukladladanie
udalostí a ich zdielanie medzi uživateľmi. Ovládaná je príkazovým riadkom
s jednoduchým obrazením nadchádzajcich udalostí vo formáte agenda (zoznam
udalostí) a jeden deň. Medzi zabudované funkcia parí pridávanie udalostí, ich
dodatočné upravovanie a mazanie, pozývanie vybraných uživateľou (ďalej
kontakty) na udalosti a zdieľanie voľných časových okien s kontaktami. Medzi
parametre udalosti patrí miesto, čas, názov a typ udalosti, množina pozvnaných
uživateľov a množina účastniacich sa uživateľov a periodicita udalosti (denne,
týždenne mesačne). Každej aplikácii je priradené jednoznačné ID. Okrem udalosti
je možné vytvoriť takzvaný rezervovaný čas, ktorý kontakty nevidia ako voľný,
ale daný uživateľ v ňom môže tvoriť ďalšie udalosti.

Pre tieto potreby zdieľania voľných časových okien s kontaktami sú všetky
udalosti daného uživateľa, ich časový rámec, uložené na server. Kontakt,
s ktorým tieto informácie zdieľame je možné kedykoľvek pridať aj odobrať.

Kontakt, s ktorým zdieľame voľné časové okná, má možnosť nám poslať návrh na
udalosť, ktorá sa zobrazí pri najbližšom prihlásení. Pri našom odhlásaní
respektíve explicitnom vyvolaní príkazom, prípadne po voliteľnom časovom
intervale, sú na server odoslané zmeny v našom kalendári od posledného refresha
vrátanie pozvánok na udalosti a odpovedí na pozvánky. 

Udalosti sú ukladané formou jednoduchej databázy, ktorej implementácia je
zhodná v aplikácii aj na servery a líšiť sa môže množinou ukladaných parmetrou,
napríklad len čas, alebo na server môžu by uložené parametre všetky.
V momentálnej implementácii to nie je odporúčané, nakoľko informácie nie sú
šifrované. Môže slúžiť ako ďalšia záloha aplikácie.

Zdieľanie udalosti medzi viacerými uživateľmi je implementované ako zhodné ID
udalosti. V prípade zmeny vlastností udalosti jedným uživateľom, dôjde obdobne
ako u pozvánky k upozoreniu na zmenu ostatných kontaktov a v databáze cieľového
uživateľa sa zmenia vlastnosti udalosti. Medzi serverom a uživateľom sú vždy
posielané len nutne potrebné informácie a po odoslaní sa údaje zo servera
vymažú.

Ďalšou dôležitou funkciou je spätná väzba, štatistika, koľko času je trávených
akým typom aktivivity. Typy aktivity je možné pridávať, prípadne zlučovať, aj
spätne.

Možné rozšírenia do budúcna:

Šifrovanie informácii uložených na server

Grafické rozhranie

Mobilná aplikácia

Prístup z viacerých zariadení (pravdepodobne nutnosť ukladania všetkých informácii na server)

Verejné a poloverejné udalosti, t.j. u každej aplikácie možnosť nadstaviť, ktoré parametre sa
zobrazujú rôznym skupinám kontaktov

Poznámky o udalostiach, možnosť poznačenia udalosti, na ktorú nás aplikácia upozorní, ale je braná
ako voľný čas  (možné využitie napríklad na zapísanie viacerých termínov skúšky)

Neprekrývajce sa udalosti, možnosť zákazu prekrývajúcich sa udalostí (pravdepodobne nutná
predošlá implementácia poznámok o udalostiach)

Prechod medzi udalosťami, možnosť stráženia minimálneho nutného prechodu medzi udalosťami
(pravdepodobne spolupráca s aplikáciou určenou na vyhľadávanie spojení)

Alernatívne udalosti, udalosť s viacerými možnými termínmi splnenia (skúška, paralelka cvika)
Polopravidelné udalosti, stráži, či napríklad 3x týženne užvateľ cvičí