---
# System prepended metadata

title: Index

---

# 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.