PassTogether
Locul perfect unde poti discuta cu oameni care se pregatesc pentru acelasi examen ca tine.
Majoritatea examenelor / admiterilor / concursurilor au o structura specifica, cu probleme specifice. De cand cu carantina nu mai esti intr-un mediu academic unde poti intreba pe oricine din jurul tau, iar pe net e greu si obositor sa cauti fix rezolvarea la problema care nu iti iese.. Nu mai bine iti facem noi legatura cu un grup de oameni interesati de acelasi examen, care se pregatesc pentru aceasi structura?
Ba da :)
// flow
Autentificare
La intrarea în aplicație utilizatorul este intampinat de pagina de Login daca nu e autentificat deja, iar de pagina de alegere topic daca este. Prin topic ne referim la un examen / concurs / ...
Pe pagina de Login avem opțiunea de a ne loga, de a ne crea cont sau de a ne reseta parola. Campurile pentru cele 3 acțiuni menționate au verificatoare pentru a determina ca ce a fost introdus este corect (email in format bun, parola puternica, …)
Daca nu ai cont iti poti crea unul cu usurinta. Un cont e format din email, nume, parola si data nasterii (minim 14 ani) si optional o poza de profil, pe care ti-o alegi apasand pe logo-ul aplicatiei. In caz in care nu iti pui nicio poza de profil, contul tau va avea o poza default
Feed-uri & utilizatori
După autentificare, utilizatorul este dus la pagina principala, unde are posibilitatea de a alege topic-ul pentru care vrea sa se pregateasca. După alegerea acestuia este trimis la un feed cu toate postarile din categoria respectivă, în ordine cronologică. Aici putem crea o postare noua accesand butonul din dreapta jos. Putem pune si o poza daca e nevoie :)
In mod asemanator, odata apasata o postare este deschisa pagina cu comentariile sale, unde orice utilizator poate comenta pentru a-si ajuta colegul. Si aici se pot adauga poze pentru usurinta explicarii. Pentru a vedea detalii despre o persoana, ii poti apasa poza de profil ca sa ajungi pe pagina cu profilul sau
Karma
Fiecare utilizator are “karma”, un sistem prin care sunt rasplatiti cei care ajuta cel mai mult. Cand raspunzi la intrebarea cuiva, primesti 2 puncte de karma, vizibile langa numele tau la toate comentariile / postarile tale. Culoarea se schimba cu cat ai mai multa karma ca sa fie usor de diferentiat userii activi :)
Setari
Pagina de setari este locul unde ai o lista cu toate postarile tale, cat si optiunea de a-ti schimba datele contului (nume, parola, poza de profil, …)
// detalii tehnice
Proiectul este o aplicatie Android, dezvoltata in Kotlin si Java.. interoperabilitate :D In spate folosim firebase iar in fata urmarim in mare principiile de dezvoltare a unei aplicatii recomandate de android jetpack. Se pot observa 3 stiluri de cod diferite in aplicatie, de la fiecare membru din echipa, dar pe care le-am facut sa se inteleaga bine intre ele :) Navigatia e destul de intuitiva, fiind nevoie de butonul de back doar in unele scenarii unde nu avea sens sa implementam altceva. In rest este disponibil in action bar tot controlul de care ai nevoie
Folosim 3 functionalitati oferite de firebase: autentificare, cloud firestore (stocare postari & date despre useri) si storage (incarcare poze). Call-urile pentru fiecare sunt impartite in fisiere diferite (AuthRepository, FirestoreRepository, StorageRepository). Fiecare request primeste un raspuns care e invelit intr-un LiveData, lucru care ne lasa sa manipulam UI-ul stiind in ce stadiu suntem cu descarcarea datelor.
Structura bazei de date e gandita pt scalabilitate si usurinta de folosire. Am proiectat-o in asa fel incat query-urile in aplicatie sa fie cat mai simple si sa minimalizeze costurile in firebase. Se regasesc principii precum denormalizarea datelor. Structura e impartita in 3 ramuri principale: posts, users & topics Un user cuprinde informatiile alese la inregistrare, link catre poza de profil, karma, ... O postare cuprinde cateva date despre cel care a postat-o (ca sa evitam extra query-uri mereu cand incarcam postarile), topic-ul, daca e comentariu sau nu, si eventual id-ul postarii la care e comentariu. Un topic contine doar numele sau
In unele locuri ne puteam sincroniza mai bine dar timpul de 50 de ore te face sa alegi functionalitati peste cod elegant :)
Log in or sign up for Devpost to join the conversation.