Final Individual assignment

Dezvoltarea unei Aplicații Single Page cu operații CRUD pentru Obiecte Relaționate

Obiective și Contextul Proiectului

Dezvoltarea unei aplicații web care să demonstreze înțelegerea arhitecturii full-stack, managementului stării, modelarea datelor și securitatea aplicațiilor web.

Cerințe de dezvoltare

Proiectul necesită o dezvoltare graduală, documentată prin commit-uri regulate pe GitHub. Fiecare etapă trebuie să reprezinte un increment logic în dezvoltarea aplicației.

Etape obligatorii de dezvoltare (Commit-uri)

  1. Inițializare proiect Express

    • Configurarea structurii de bază a aplicaÈ›iei Express.

    • Implementarea middleware-urilor esenÈ›iale.

    • Configurarea variabilelor de mediu È™i a sistemului de logging.

  2. Inițializare proiect Vue

    • Configurarea proiectului Vue 3 cu Composition API sau abordarea implicită.

    • Configurarea router-ului È™i a gestionării stării cu Pinia sau Vuex (deprecated).

    • Crearea structurii de bază a componentelor.

  3. Configurare și conectare Firestore

    • IniÈ›ializarea Firebase în proiect.

    • Configurarea regulilor de securitate în Firestore.

    • Implementarea serviciului de conexiune la baza de date.

  4. Implementare rute și componente principale

    • Definirea rutelor API în Express.

    • Crearea componentelor Vue reutilizabile.

    • Implementarea unui layout responsive.

  5. Script generare date

    // Exemplu script generare date
    const faker = require('@faker-js/faker');
    
    async function generateProducts(count = 50) {
      const products = [];
      for (let i = 0; i < count; i++) {
        products.push({
          name: faker.commerce.productName(),
          price: faker.commerce.price(),
          description: faker.commerce.productDescription(),
          category: {
            id: faker.string.uuid(),
            name: faker.commerce.department(),
            features: Array(3).fill().map(() => faker.commerce.productAdjective())
          },
          stock: {
            quantity: faker.number.int({ min: 0, max: 100 }),
            warehouse: faker.location.city()
          }
        });
      }
      return products;
    }
  6. Implementare autentificare

    • Integrarea Firebase Authentication, JWT, session sau similar.

    • Implementarea middleware-ului de autentificare în API.

    • Crearea componentelor UI pentru autentificare.

  7. Operații CRUD backend + DB

    • Implementarea controllerelor pentru fiecare entitate.

    • Validarea datelor înainte de salvare.

    • Gestionarea erorilor È™i codurilor de răspuns HTTP.

  8. Operații CRUD frontend

    • Crearea formularelor pentru operaÈ›iile Create È™i Update.

    • Implementarea componentelor pentru listare È™i È™tergere.

    • Gestionarea stării aplicaÈ›iei cu Pinia sau Vuex (deprecated).

  9. Implementare validări date

    • Validări pe partea de client (frontend).

    • Validări pe partea de server (backend).

    • Feedback vizual către utilizator în cazul erorilor (opÈ›ional)

  10. Finalizare și optimizări (opțional)

    • Optimizări de performanță.

    • Testare end-to-end.

    • Scrierea documentaÈ›iei È™i a instrucÈ›iunilor de utilizare.

Specificații tehnice detaliate

Firebase Firestore - Modelare Date

Abordare NoSQL (recomandată)

Abordare SQL (nerecomandată pentru Firestore)

Exemple de interogări NoSQL vs SQL

NoSQL (Recomandat)

SQL (Nerecomandat)

Evaluare (50 de puncte)

Criterii de bază:

  • Arhitectură È™i implementare corectă: 25 puncte

  • Modelarea datelor în Firestore (NoSQL): 10 puncte

  • UI/UX È™i responsivitate: 5 puncte

  • Securitate È™i autentificare: 10 puncte

Penalizări:

  • Dezvoltare în mai puÈ›in de 5 zile: Descalificare

  • Arhitectură incorectă între front-end È™i API: -25 puncte

  • Neutilizarea Firebase sau Vue 3: -25 puncte

  • Layout neîngrijit: -10 puncte

  • Modelarea datelor în mod SQL în Firestore: -10 puncte

  • Lipsa autentificării pentru operaÈ›iile care modifică datele: -10 puncte

  • Validări insuficiente ale datelor: -5 puncte

  • Lipsa responsivității interfeÈ›ei: -5 puncte

Puncte bonus (maxim +25 de puncte):

  • Deployment complet (frontend + backend + DB): +10 puncte

  • Implementarea unei sortări avansate (multiple criterii): +5 puncte

  • Paginare cu infinite scroll: +5 puncte

  • Upload de fiÈ™iere în Firebase Storage: +5 puncte

  • Actualizări în timp real cu Firestore listeners: +5 puncte

  • Alte funcÈ›ionalități È™i caracteristici deosebite

Cerințe pentru promovare

  • ObÈ›inerea a minimum 25 de puncte din 50 posibile.

  • Prezentare live obligatorie în cadrul unui interviu.

  • Istoric GitHub valid care să acopere cel puÈ›in 5 zile (minim 5 commit-uri).

  • FuncÈ›ionalitate completă È™i demonstrabilă a aplicaÈ›iei.

Observații finale

  • Se va verifica istoricul de dezvoltare în GitHub.

  • Pentru a evita cu uÈ™urință penalizările pentru layout neîngrijit sau ne-responsiv, puteÈ›i utiliza (chiar cu titlu de recomandare) biblioteci de componente si layout-uri precum https://vuetifyjs.com/en/ . BineînÈ›eles, gestionarea personalizată (fără template-uri È™i componente de-a gata stilizate) a acestor criterii nu va penaliza È™i va fi apreciată (deÈ™i ar necesita un efort mai mare din partea voastră).

  • Codul duplicat sau plagiat va duce la descalificare.

  • Proiectele incomplete nu vor fi evaluate.

Last updated

Was this helpful?