|
|
pl:dydaktyka:sbd:2012:projekty:catch:start:konceptualny [2012/11/15 21:28] sbd12 |
pl:dydaktyka:sbd:2012:projekty:catch:start:konceptualny [2019/06/27 15:50] |
**1. Sformułowanie zadania projektowego** | |
| |
Celem projektu jest stworzenie aplikacji stacjonarnej uzupełniającej funkcjonalność serwisu Catch.com. Aplikacja ta będzie umożliwiać przeglądanie, tworzenie, edycję, usuwanie oraz wspóldzielenie notatek, list zadań i przypomnień. Utworzone w ten sposób dane będa mogły być synchronizowane z treściami umieszczonymi na serwerach serwisu Catch.com. Aplikacja pozwoli na logowanie się przy pomocy konta utworzonego wcześniej w serwisie Catch.com. Synchronizacja treści z serwerem będzie dokonywana na żądanie użytkownika. Kluczowymi cechami aplikacji powinna być prosta obsługa i przyjazny interfejs. Nawigacja powinna być zbliżona do tej znanej z aplikacji mobilnej udostępnianej przez twórców serwisu Catch.com. Istotna jest także wieloplatformowość dostarczonego rozwiązania. | |
| |
**2. Analiza stanu wyjściowego** | |
| |
W chwili obecnej na rynku obecna jest aplikacja stacjonarna wspierająca konkurencyjny system zarządzania notatkami, uzupełniająca funkcjonalności serwisu Evernote. Warto przeanalizować funkcjonalność tego produktu i postarać się wykorzystać trafne rozwiązania, nie powielając przy tym błędów autorów. | |
Jako istotny element stanu wyjściowego należy uznać samą obecność serwisu Catch.com, która determinuje funkcjonalności, jakie mogą być zaimplementowane w aplikacji stacjonarnej. Serwis Catch.com udostępnia oparte na REST API, które słuzyć będzie do komunikacji z jego serwerem. | |
Dane użytkowników nie będę gromadzone przez twórców projektu, natomiast po synchronizacji treści z serwerem będą one przechowywane przez Catch.com zgodnie z polityką prywatności, która jest akceptowana przez każdego użytkownika w momencie zakładania konta. | |
| |
**3. Analiza wymagań użytkownika** | |
| |
Gromadzenie notatek powinno być czynności intuicyjną i mało absorbującą ze strony użytkownika. Użytkownikami projektu będą użytkownicy serwisu i aplikacji Catch.com, dlatego pełna zgodność funkcjonalności z tymi źródłami jest kluczowa. | |
* Tworzenie nowych “obiektów” : notatek, list zadań, alarmów, notatek dźwiekowych i graficznych | |
* Edycja, usuwanie, zarządzanie obiektami | |
* Tworzenie i zarządzanie strumieniami - przestrzeniami, w której znajdują się obiekty | |
* Definiowanie znaczników dla obiektów | |
* Dodawanie komentarzy pod notatkami | |
* Udostępnianie notatek innym użytkownikom | |
* Oznaczenia obiektów gwiazdką, dodawanie lokalizacji | |
| |
Z aplikacji korzystać będzie można tylko po zalogowaniu, występuję więc w systemie tylko jeden rodzaj roli. | |
Pobieranie notatek z serwera i wysyłanie nowych danych na serwer powinno odbywać się na żądanie. Sensownym wydaje się jednak umożliwienie także synchronizacji automatycznej, aby użytkownik nie zapomniał wysłać na serwer notatek, z których chciałby potem skorzystać w aplikacji mobilnej. | |
| |
**4. Określenie scenariuszy użycia** | |
| |
a) Pierwsze logowanie do aplikacji | |
* Pusta przestrzeń robocza - informacja o tym, że treści pojawią się po synchronizacji | |
* Kliknięcie przycisku synchronizuj: następuje szereg różnych zapytań na serwer Catch.com : | |
* GET /v3/streams : w odpowiedzi lista streamow danego uzytkownika. Ich ID i nazwy, ilosc kontrybutorów, daty modyfikacji, kolor w jakim wyswietlany jest w aplikacji webowej. Wszystkie te dane beda wykorzystane do dalszych zapytan oraz do graficznego przedstawienia przestrzeni roboczej | |
* GET /v3/streams///stream_id//: takie zapytanie będzie wysłane dla każdego stream_id z poprzedniego requestu. W odpowiedzi otrzymuje się ID i typy wszystkich obiektow w tym streamie: notatek, chechlist, komentarzy, plików. Nadrzednym typem jest notatka, i to wlasnie ich ID bedzie zapamietane po tej operacji. Komentarze, checklisty etc pojawia sie jako “dzieci” danej notatki po zapytaniu o jej szczegóły. | |
*GET /v3/streams///stream_id///contributors : takie zapytanie dla każdego stream_id. Otrzymujemy nazwy i id wszystkich kontrybutorów danego streama | |
*GET /v3/streams///stream_id///tags - lista tagów użytych w danym streamie | |
*GET /v3/streams///stream_id///$object - zapytanie o szczegóły notatki. Zwraca daty utworzenia, edycji i usuniecia na serwerze, tresc, tagi, wlasciciel, oraz sekcje “children”, gdzie znajduja sie ID wszystkich powiazanych obiektów. Wazne - po usunieciu notatki na serwerze ten request dalej dziala, lecz ma niezerowa date usuniecia z serwera - jest to istotne do obsługi usuwania notatek przez użytkownika lokalnie. | |
*GET /v3/streams///stream_id/////object_id///raw - pozwala na pobranie notatki dzwiekowej, obazu, badz zalacznika | |
| |
| |
| |
b) Tworzenie nowego obiektu: | |
*Menu podobne do znanego z aplikacji mobilnej - przyciski odpowiadajace poszczególnym typom obiektów | |
*Po wybraniu typu - okno edycji obiektu: treść, tagi, stream, lokalizacja, załączniki. | |
*Po zakonczeniu edycji - obiekt widoczny w przestrzeni roboczej jako lokalny, oznaczenie to zniknie po synchronizacji | |
*Elementy API konieczne do przeniesienia stworzonej notatki na serwer: | |
*POST /v3/streams///stream_id// - tutaj tworzymy notatke, w strumieniu o zadanym ID a po otrzymaniu jej ID wysylamy tym samym rodzajem zapytanie wszystkie dodatkowe elementy (checklisty, zalaczniki), które maja w zapytaniu ustawiony parametr child_of z wartoscia ID tworzonej notatki | |
| |
c) Tworzenie nowego strumienia | |
*kliknięcie przycisku “New space”, | |
*wpisanie nazwy | |
*Elementy API konieczne do wykonania zapytania: | |
*POST /v3/streams - wystarczy podac nazwe strumienia i zostanie on utworzony | |
| |
d) Edycja notatki: | |
*Podczas przeglądania treści notatki kliknięcie przycisku Edit i modyfikacja treści | |
*Notatka edytowana lokalnie oznaczona jako wymagająca synchronizacji | |
*API: | |
*PUT /v3/streams/sync///object_id// | |
| |
e) Zapraszanie użytkowników do współdzielenia strumienia | |
*Przycisk “Invite People” na poziomie strumienia | |
*Koniecnej podanie adresów email użytkowników | |
*API: | |
*POST /v3/invites konieczne podanie emaila i ID strumienia | |
| |
f) Dodawanie tagów, komentarzy, zalacznikow, checklist | |
*notatki będą tagowane tak samo jak w gotowych produktach rodziny Catch - poprzez dopisanie znaku #przed nazwa tagu. | |
*Po klinięciu w nazwę tagu powinny pojawić się wszystkie notatki z otagowane. | |
*API: takie samo jak przy tworzeniu notatek lub ich modyfikacji. | |
| |
g) Usuwania strumienia / notatki | |
* przy kazdym strumieniu oraz kazdej notatce będzie ikonka do jego usuwania | |
* Po kliknięciu takiej ikonki powinno pojawić się ostrzeżenie o usuwaniu treści lokalnie i zaleceniu natychmiastowej synchronizacji | |
* w API zrealizowane jest to poprzez odpowiednie zapytania typu DELETE | |
| |
| |
**5. Identyfikacja funkcji** | |
Patrz punkty 3 i 4 | |
| |
[[http://ai.ia.agh.edu.pl/wiki/pl:dydaktyka:sbd:2012:projekty:catch:start:konceptualny:fhd|Analiza hierarchii funkcji projektowanej aplikacji]] | |