Informatii generale
- Categorie: Educational
- Judetul: Neamț
- Surse: GitHub - ghostxz-cmd/DEVATLAS · GitHub
Descriere
DevAtlas este o platformă educațională full-stack dezvoltată ca monorepo modern, cu Next.js și React pentru partea de interfață, NestJS pentru serviciile backend (API și worker), TypeScript pentru consistență în tot codul și Supabase/PostgreSQL pentru persistența datelor și autentificare, gândită să acopere end-to-end un ecosistem de învățare online în care profesorii pot crea, organiza și publica cursuri, administra conținutul și interacțiunea din dashboard-ul lor operațional, iar elevii pot descoperi cursuri în catalog, se pot înscrie din dashboard cu sesiunea activă, pot urmări progresul pe lecții, activitatea recentă și statusul cursurilor, totul într-o arhitectură separată pe roluri, scalabilă, cu fluxuri clare de autentificare, management de cont, suport și monitorizare, astfel încât produsul să funcționeze atât ca website public de prezentare, cât și ca aplicație internă completă pentru management educațional și learning tracking.
Tehnologii
- Arhitectura Monorepo și Organizarea Workspace-ului
DevAtlas utilizează o arhitectură de tip monorepo modular, concepută pentru a susține independența de dezvoltare a serviciilor componente, menținând în același timp reguli și tipuri de domeniu partajate. Structura este segmentată în directoare cu roluri bine definite:
Directorul web de sub apps găzduiește nucleul aplicației orientate către utilizator, fiind responsabil de randare, rutare și orchestrarea interogărilor prin funcționalitatea de Backend For Frontend (BFF).
Directorul api de sub apps găzduiește API-ul principal dezvoltat în NestJS, dedicat logicii de business decuplate și testării unitare și de integrare.
Directorul worker de sub apps este planificat pentru prelucrarea asincronă a joburilor consumatoare de timp.
Directorul shared de sub packages conține interfețe, contracte comune și biblioteci utilitare folosite la nivelul întregului ecosistem.
Directorul supabase stochează codul de definire a bazei de date, politicile de acces și migrările de structură.
2. Arhitectura Frontend și Managementul Stării
Stratul de prezentare este implementat prin Next.js (folosind App Router) în combinație cu React și TypeScript. Această configurație permite o structurare ierarhică a paginilor și layout-urilor, oferind suport nativ pentru Server-Side Rendering (SSR) și Server Actions. Aspectul vizual este construit cu Tailwind CSS pentru un design consistent și optimizat. Preluarea datelor și sincronizarea cu serverul se realizează prin intermediul React Query, asigurând caching-ul stării la nivel global, în timp ce Zustand este utilizat pentru managementul stărilor UI punctuale și specializate. Sesiunile de utilizator de pe partea de client interacționează direct cu clientul nativ Supabase Auth. Pentru scenarii avansate, platforma integrează editorul Monaco (pentru execuția și editarea de cod) și conexiuni bidirecționale prin Socket.io.
-
Arhitectura Backend, BFF și Servicii API
Logica de business a bazei de date este mediată în principal prin Route Handlers (BFF) în Next.js, unde se efectuează validările de intrare, verificarea privilegiilor de rol și agregările relaționale multi-tabel înainte de a returna rezultatele către dashboard-uri. Această abordare crește viteza de răspuns a aplicației client prin minimizarea numărului de request-uri pe rețea. Pentru extinderi enterprise sau procese cu cerințe mari de procesare (procesări batch, managementul persistent al conexiunilor WebSocket, monitorizare și analitice), structura NestJS oferă o izolare completă, separând astfel zona critică a tranzacțiilor web de sarcinile cu impact mare asupra memoriei sau CPU-ului. -
Securitate, Autentificare și Autorizare
Modelul de securitate este hibrid și structurat strict în funcție de rolul utilizatorului:
Elevii se autentifică printr-un flux personalizat de tip challenge/response urmat de validare prin doi factori (2FA via e-mail sau TOTP). Odată confirmați, acestora li se emite un cookie securizat (folosind proprietăți httpOnly, sameSite lax și un parametru dinamic secure adaptat la protocolul HTTP sau HTTPS detectat în request), asigurând prevenirea atacurilor de tip XSS.
Profesorii folosesc Bearer Tokens furnizate nativ de Supabase Auth transmise direct în headerele interogărilor API. Autorizarea pe server este realizată la nivel de endpoint prin validări de rol și ownership (se verifică, de exemplu, dacă ID-ul profesorului curent este cel care deține cursul sau modulul interogat), fiind dublată la nivelul bazei de date de politici RLS (Row-Level Security) pe tabelele sensibile.
5. Modelul de Date Relațional (PostgreSQL/Supabase)
Schema relațională este concepută pentru a asigura o mapare exactă a domeniului academic:
Structura Educațională: Entitățile de bază sunt courses, lessons (care stochează slidecard-urile de conținut în format JSON în coloana content și structurile native în content_html) și course_quizzes împreună cu tabelele lor relaționale quiz_questions și quiz_submissions.
Sistemul de Module (Extensibilitate): Tabelele course_groups și course_group_members grupează resursele în module de învățare asociate cursurilor prin JSONB metadata. Acest sistem permite adaptarea structurii curriculare fără modificarea fizică a tabelelor.
Social și Suport: Tabela users centralizează identitățile la nivel global, mapând relații către friend_requests, support_tickets și support_messages pentru chat-ul interactiv. Baza de date folosește indecși specifici pe coloanele de tip căutare, ID-uri unice și constrângeri referențiale în cascadă pentru menținerea integrității datelor.
6. Observabilitate și Strategia de Scalare
Pentru asigurarea disponibilității platformei, sistemul este proiectat să ruleze monitorizare extinsă:
Observabilitate: Colectarea de logs structurate pe fiecare endpoint din route handlers, telemetrie de performanță pentru monitorizarea latențelor query-urilor agregate și urmărirea metricilor academice (rata de promovabilitate a testelor, interacțiunile active zilnice).
Scalabilitate: Arhitectura monorepo permite separarea fizică a serviciilor web de procesele consumatoare de resurse prin mutarea acestora în worker sau servicii micro-NestJS de sine stătătoare, controlate prin cozi de execuție, reducând astfel amprenta de resurse a dashboard-urilor destinate utilizatorilor.
Cerinte sistem
Cerințe de Sistem — DevAtlas
- Cerințe pentru Dezvoltare și Rulare Locală
Pentru a rula și compila codul sursă pe o stație de lucru locală, sunt necesare următoarele componente hardware și software:
Sistem de operare: Windows 10/11 (cu PowerShell 7+ sau WSL2 recomandat), macOS (12+) sau o distribuție modernă de Linux (Ubuntu 20.04+).
Procesor: Minimum procesor Quad-Core (Intel Core i5 / AMD Ryzen 5 sau echivalent Apple Silicon).
Memorie RAM: Minimum 8 GB RAM (recomandat 16 GB RAM pentru rularea simultană a containerelor Docker și a serverelor Next.js/NestJS).
Spațiu pe disc: Minimum 5 GB spațiu liber pe mediu de stocare SSD (pentru codul sursă, dependențe npm și imagini Docker locale).
Runtime-uri și Manageri de Pachete:
Node.js: Versiunea 18 sau mai nouă (recomandat Node.js v20 LTS).
npm: Versiunea 9 sau mai nouă (managerul implicit inclus în Node.js).
Utilitare de Virtualizare: Docker Desktop sau Docker Engine activ (necesar pentru rularea sandbox-ului de execuție a codului în containere izolate).
Bază de date locală (opțional): Supabase CLI pentru emularea locală a serviciilor Supabase/PostgreSQL.
2. Cerințe pentru Găzduire și Deployment (Server)
Pentru punerea în producție a platformei pe un server VPS sau infrastructură Cloud, configurația minimă recomandată este:
Infrastructură Cloud / VPS:
Procesor (CPU): Minimum 2 vCPUs.
Memorie RAM: Minimum 2 GB RAM (recomandat 4 GB RAM dacă serverul de API NestJS și Worker-ul de cod rulează pe aceeași mașină).
Sistem de operare: Linux (Debian 11+, Ubuntu 22.04 LTS sau RedHat).
Servicii Managed (Recomandat):
Frontend: Găzduire pe platforme serverless precum Vercel, Netlify sau AWS Amplify.
Bază de date: Instanță PostgreSQL gestionată prin Supabase Cloud (nivel Gratuit sau Pro) cu extensiile de securitate active.
Docker Daemon: Docker instalat pe serverul care rulează API-ul, cu permisiuni de rulare a containerelor de tip sandbox (python:3.10-alpine și node:18-alpine).
3. Cerințe pentru Utilizatorul Final (Elev / Profesor)
Platforma este optimizată pentru a fi accesată de pe o gamă largă de dispozitive prin intermediul browserului web:
Browsere suportate:
Google Chrome (versiunea 100+).
Mozilla Firefox (versiunea 100+).
Microsoft Edge (versiunea 100+).
Apple Safari (versiunea 15+).
Dispozitive: Laptop, PC, tabletă sau smartphone (interfața este complet adaptabilă și responsive).
Conexiune la internet: Conexiune stabilă în bandă largă (minimum 5 Mbps) pentru parcurgerea slide-urilor, trimiterea testelor și utilizarea chat-ului în timp real.
Realizatori
Antoci Rares
- Scoala: Colegiul Tehnic " Gheorghe Cartianu " Piatra Neamt
- Clasa: 10
- Judet: Neamț
- Oras: Piatra Neamt
Screenshots
