/rihal-devops

my cool coding for Rihal DevOps challenge

Primary LanguageTypeScript

Hi Rihal

this is mono repo app developed with 2 micro services nest apps and 3 angular front end modules
building with AWS Serveless Application model (SAM)


This project was generated using Nx.


graph of my monorepo libs + apps


🔎 my main artitecture approach is seprating each app to 2 dedicated domains

  • one domain concern about student and his/her crud operations.
  • other domain concern about reporting (statistics)

    • application structure
      • ☁project consist of 2 apps
      • 🔵FrontEnd app (admin-portal)
        • Angular 13 + Matrial UI
        • create material ui core module as nx lib
        • using jest for unit , integration tests
        • using cypress for e2e tests
        • create auth feature module as nx lib + NgRx store
        • 2 lazy loading Ng module (student, reporting)
        • global interceptor services for 1-error handeling 2-alert response 3- loadin spinner

      • 🔵Backend app (api)
        • nestJs + typeOrm
        • consist of 2 dedicated modules(crud service/reporting service)
        • 🔎[swagger documentation](https://neduk.herokuapp.com/api).
        • repository: Postgres DB [PostgreSQL as a Service](http://www.elephantsql.com)
        • TypeOrm ; use features like relations, cascade,eager, viewEntity, transactionManager,..

      • 🔵Heroku connectted to github for CI/CD
        • each app has its own Dockerfile
        • root docker-compose file to orchestarate all
        • 🔎[build version](https://neduk.herokuapp.com/) to auto deploy app.
        • snapshot of heroku dashboard (building last commits to main branch)

    Bonus Requirements 💎100% Done


    • ✅Use a 3rd party UI library

    • ✅Add dark/light mode toggle

    • ✅Use GitHub as a source control for the project

    • ✅Generate random seed data

    • ✅Add tests

    • ✅Automatically generate CreatedDate and ModifiedDate properties for all entities

    • ✅Host the app as a website and share link.

    Statistics to display on website

    • Count of students per class 🔎Visit

    • Count of students per country 🔎Visit

    • Average age of students 🔎Visit


    • list of registered students (with 🔸search,🔸sorting,🔸pagination,🔸counts,🔹edit,🔹delete)

    🔎Visit

    •register new student Class (with 🔸auto complete, 🔸validations)

    🔎Visit

    Next Steps

    • create GraphQl for reporting(statistics).

    • create dedicated application for report and using CQRS design patterm approach.