# Index [ToC] # Idei generale Platforma trebuie sa fie multi-tenant si sa suporte cursuri in format [SCORM](https://scorm.com/scorm-explained/). Pentru inceput platforma ar trebui sa aiba o forma basic de compozitor de cursuri. Deasemenea, trebuie sa fie multi-language si sa avem in vedere problema timezone-ului in cazul extinderii si in afara Romaniei. # Continut Platforma are la baza 3 tipuri de useri (roluri): Administrator, Instructor si Learner. Continutul afisat variaza in functie de tipul de user. Se pot defini roluri care extind aceste roluri de baza. # Home Administrator ![](https://i.imgur.com/zNXcFbY.png) ## Utilizatori Administratorul are acces la toti utilizatorii si poate adauga, edita sau sterge utilizatori. ![](https://i.imgur.com/CJS89Vo.png) ### Adaugare Un simplu formular pentru adaugat utilizatori. ![](https://i.imgur.com/wF9qhzW.png) ### Profil/Informatii Informatii personale precum nume, prenume, username, etc. ![](https://i.imgur.com/A5l1PAG.png) ### Profil/Cursuri Cursuri la care utilizatorul este inrolat si care este rolul lui acolo. ![](https://i.imgur.com/w0IU04I.png) ### Profil/Fisiere Documente atasate utilizatorului. ![](https://i.imgur.com/ecoe3JB.png) ### Progres/Sumar Un dashboard unde sunt agregate informatii despre cursurile pe care le face utilizatorul. ![](https://i.imgur.com/9VsW0vm.png) ### Progres/Cursuri Informatii despre progresul utilizatorului in functie de cursurile la care este inrolat. ![](https://i.imgur.com/mwdKFuH.png) ### Progres/Medalii Medaliile obtinute de utilizator in urma cursurilor facute. Face parte din Gamification. ![](https://i.imgur.com/VGitldg.png) ### Progres/Timeline Evenimente legate de utilizator. ![](https://i.imgur.com/LM8ZKKX.png) ### Infografic Un raport fancy cu informatii despre utilizator. ![](https://i.imgur.com/wKNYz00.png) ## Cursuri Administratorii pot vedea toate cursurile. Actiunile din grid sunt: Reports, Edit, Clone, Detele si View. Cursuri pot fi adaugate din marketplace. ![](https://i.imgur.com/0UXSwYI.png) ### Adaugare Administratorul poate adauga cursuri. ![](https://i.imgur.com/GaPeXTU.png) ### Info/Curs/Utilizatori Administrarea utilizatorilor atasati cursului. ![](https://i.imgur.com/OjNZdsc.png) ### Rapoarte/Sumar Sumar despre curs. ![](https://i.imgur.com/CPPdc9l.png) ### Rapoarte/Utilizatori Rapoarte despre utilizatorii cursului. ![](https://i.imgur.com/G4wQkXN.png) ### Rapoarte/Timeline Evenimentele de pe curs. ![](https://i.imgur.com/lftcE6Q.png) ## Categorii CRUD pentru categorii de cursuri. ![](https://i.imgur.com/N0RD5OO.png) ### Adaugare/Modificare ![](https://i.imgur.com/wwYV8H2.png) ## Grupuri Grupuri de cursuri care pot fi vandute ca si pachete. ![](https://i.imgur.com/SpG2rlK.png) ### Adaugare/Modificare ![](https://i.imgur.com/aHqDaWV.png) ![](https://i.imgur.com/dOZPdId.png) ### Utilizatori Administrarea utilizatorilor care au acces la pachetul de cursuri. ![](https://i.imgur.com/d7Hb6hJ.png) ### Cursuri Administrarea cursurilor care fac parte din grup. ![](https://i.imgur.com/R4D4qiX.png) ### Fisiere Fisiere disponibile utilizatorilor care au acces in grup. ![](https://i.imgur.com/NQj9acJ.png) ## Subsidiare (skip sub-tenants) ![](https://i.imgur.com/BVbtowN.png) ## Evenimente/Notificari Sistemul de evenimente si notificari. ![](https://i.imgur.com/TJkpQ0o.png) ### Adaugare/Modificare Adaugare de notificare noua care se bazeaza pe un tip de eveniment predefinit si o lista de tipuri de destinatari (predefiniti). Textul notificarii este templetizat. ![](https://i.imgur.com/btK6WaN.png) ![](https://i.imgur.com/sHo1c5J.png) ### Istoric Istoricul notificarilor/evenimentelor care au fost create. ![](https://i.imgur.com/UDxGxOT.png) ### Evenimente in asteptare Evenimente care urmeaza sa fie trimise. ![](https://i.imgur.com/XQ3luNl.png) ## Tipuri de utilizatori/Roluri Crud pentru modelul utilizator/rol/permisiuni ![](https://i.imgur.com/Ux7ibwF.png) ### Adaugare/Modificare ![](https://i.imgur.com/v1rwGCM.png) ## Import / Export Import si export masiv in format CSV. Import si export de utilizatori, grupuri, cursuri, subsidiare, categorii si relatiile dintre ele. ![](https://i.imgur.com/BFkhAvS.png) ![](https://i.imgur.com/jlP5DtL.png) ## Rapoarte / Infografic / Timeline Raporate despre orice din platforma: utilizatori, cursuri, subsidiare, grupuri, scorm, teste, survey-uri, teme, etc. ![](https://i.imgur.com/knW7wWp.png) ![](https://i.imgur.com/saRpWQj.png) ![](https://i.imgur.com/4pX0bXW.png) ## Setari platforma Setari generale la nivel de platforma. ### Setari generale > [name=Robert Ursu] Trebuie sa spicuim ce avem neovoie de aici si sa investigam la ce sunt folosite (si daca ne trebuie si noua) field-urile custom. ![](https://i.imgur.com/juVoJij.png) ![](https://i.imgur.com/0UFVqRm.png) ### Utilizatori Setari generale pentru crearea de utilizatori. ![](https://i.imgur.com/x5dZV8n.png) ### Teme/Skinuri Customizari si setari de tema pentru platforma. ![](https://i.imgur.com/zjgJeg4.png) ### Certificari Setari pentru diplome. ![](https://i.imgur.com/Ap9hJay.png) ### Gamification Setari pentru implementarea gamification-ului. ![](https://i.imgur.com/tK0PMzW.png) ![](https://i.imgur.com/duzRnxj.png) ### E-Comert Setari legate de procesatori de plati, abonamente, discount-uri, facturi, cupoane si credite. ![](https://i.imgur.com/ShH5ERN.png) ### Domeniu Setari de domeniu. Customizare de domeniu. ![](https://i.imgur.com/TnRgVtd.png) ### Abonament Tipul de abonamet al clientului. ![](https://i.imgur.com/gHjKsHw.png) #### Istoric de plati ![](https://i.imgur.com/5lZl17K.png) # Home Instructor ![](https://i.imgur.com/a2dfdXM.png) ## Cursuri ![](https://i.imgur.com/ihtcMuw.png) ### Adaugare / Modificare > La fel ca la Administrator ### Continutul cursului ![](https://i.imgur.com/BCxkW8J.png) Exista mai multe tipuri de continut pentru un curs. ![](https://i.imgur.com/17BUi5d.png) #### RichText ![](https://i.imgur.com/02MTP2q.png) #### Web ![](https://i.imgur.com/1D7EiFY.png) #### Video ![](https://i.imgur.com/42nAAWN.png) #### Audio ![](https://i.imgur.com/hYM7HXl.png) #### Presentation / Document ![](https://i.imgur.com/offf8O9.png) #### SCORM / xAPI / cmi5 ![](https://i.imgur.com/w1acE6g.png) #### Flash (skip) > [name=Robert] Nu merita sa ne complicam cu flash ![](https://i.imgur.com/yz1De6T.png) #### iFrame (skip) > [name=Robert] Nu merita sa ne complicam cu iFrame-uri ![](https://i.imgur.com/cMguR2n.png) #### Test ![](https://i.imgur.com/p0hAnOi.png) ![](https://i.imgur.com/qqTTBpW.png) ![](https://i.imgur.com/Wm6EeMV.png) ![](https://i.imgur.com/T1KRNXE.png) #### Survey ![](https://i.imgur.com/cuj8MAo.png) ![](https://i.imgur.com/0KEv5Kk.png) ![](https://i.imgur.com/Htirc2r.png) ![](https://i.imgur.com/H1DEdYV.png) #### Assignment ![](https://i.imgur.com/9KT7xBp.png) #### Instructor-led training ![](https://i.imgur.com/CirKTuF.png) ![](https://i.imgur.com/q36kuVo.png) ### Utilizatori si progres ![](https://i.imgur.com/dkmhjXG.png) ### Fisiere ![](https://i.imgur.com/yFjivZO.png) ### Reguli ![](https://i.imgur.com/AnsLQQc.png) ### Raporate ![](https://i.imgur.com/BH5JfBV.png) ## Grupuri > La fel ca la Administrator ## Conferinte (skip) > [name=Robert] Nu cred ca e relevant ## Discutii / Forum ![](https://i.imgur.com/baXcNQb.png) ![](https://i.imgur.com/KSjrVXs.png) ## Calendar Calendarul instructorului. Poate fi dezvoltat ca si serviciu de booking. ![](https://i.imgur.com/YWAOrmL.png) # Home Learner ![](https://i.imgur.com/A9wmEDt.png) ## Cursuri disponibile ![](https://i.imgur.com/otdeF2S.png) ![](https://i.imgur.com/bDOlT6t.png) ![](https://i.imgur.com/GudvsVE.png) ## Progres > Descris la sectiunea Utilizatori in seciunea Administrator. ## Inscriere in grup ![](https://i.imgur.com/hMIbVHS.png) ## Discutii > La fel ca la instructor ## Calendar > La fel ca la instructor # Tech ## General Cea mai buna abordare pentru un proiect asa de mare cred ca ar fi sa modularizam totul in microservicii. Astfel putem lucra in paralel la diferite module fara sa ne afectam prea mult. Avantajul ar mai fi si ca teoretic am putea vinde modulele si separat. Pe langa ca putem vinde modulele, le putem si folosi in alte proiecte. Trebuie sa tinem cont ca trebuie sa tinem costurile la un minim, deci solutiile open-source sunt favorite. ## Propuneri de tehnologii - [GraphQL](https://graphql.org/) - putem folosi graphql pentru API-uri. Avantajul ar fi ca definim scheme pe baza modelelor si clientii folosesc doar ce au nevoie. - [.NET Core](https://dotnet.microsoft.com/download) - putem dezvolta unele microservicii cu .NET Core - [node.js](https://nodejs.org/en/) - sau le putem dezvolta cu node.js - [Angular](https://angular.io/)/[React](https://reactjs.org/) - pentru front ar fi bun un SPA bine facut cu Angular sau React - [Docker](https://www.docker.com/) - impachetam cod-ul in imagini docker si o sa ne fie foarte usor sa deploy-em, scalam, testam, etc. - [Kubernetes](https://kubernetes.io/) - daca o sa fie nevoie sa scalam la un moment dat, sigur vom avea nevoie de kubernetes ## Aplicatii si (micro)servicii > [name=Robert] learner e doar un placeholder de nume ### learner-web Aplicatia web SPA dezvoltata cu Angular sau React. ### controls-lib Sigur vom ajunge a scriem componente custom. Ar fi nice to have sa ne construim o librarie de componente pe care poate o mai refolosim. ### learner-api API-ul cu care comunica web-ul pentru chestiile strict legate de LMS. ### reports-api Cel mai important microserviciu, rapoartele vietii. Trebuie sa fie suficient de destept sa poata genera orice tip de rapoarte. ### identity-api Ne trebuie un sistem de autentificare si autorizare (OAuth2 si OpenID) care sa fie multi-tenant si sa suporte roluri si permisiuni. Sugestia mea este sa construim peste ceva deja existent cum ar fi [IdentityServcer4](https://github.com/IdentityServer/IdentityServer4) - [docs](https://identityserver4.readthedocs.io/en/latest/index.html). Toate celelalte servicii urmand sa comunice cu acest identity server. O alta varianta ar mai fi [Gluu](https://www.gluu.org/) - [docs](https://www.gluu.org/docs/ce/installation-guide/) ### notification-api Un microserviciu care stie sa programeze si sa transmita notificari prin multe metode (email, push, tcp, sockets, etc). Trebuie sa stie sa primeasca un template care contine variabile si valori pentru variabilele alea dupa care sa "randeze" mesajul si sa programeze notificarea sa fie trimisa pe orice tip de canal. ### gamification-api Un microserviciu cu care sa poti gamifica orice tip de aplicatie. Cred ca poate fi scris suficient de generic. ### filestore-api Un serviciu de gestionat fisiere. ### forum-api/messaging-api Un microserviciu pe care sa-l folosim sa construim forum-uri/discutii. Poate chiar chat-uri. ### billing-api Serviciu care se ocupa de tot ce tine de plati, abonamente, cupoane, discount-uri, generare de facturi, erc. ### logging-api Un serviciu care sa centralizeze log-urile serviciilor. Toate log-urile urmand sa fie turnate intr-o baza mare + elastic (kibana). ### gateway-api/broker-api (maybe) E posibil sa avem nevoie de un gateway/broker, daca se aduc prea multe microservicii, care sa stie sa directioneze request-urile din web catre microserviciul corespunzator. Asta ca web-ul sa nu trebuiasca sa aibe grija de 5-ish tokene. Web-ul obtine un token din gateway iar gateway-ul obtine cate 1 token de la fiecare serviciu si are el grija de ele. O alta varianta ar fi ca identity server-ul sa emita un token care sa fie valabil pentru toate serviciile si sa nu fie nevoie deloc de gateway.