Logo Lanfrica

PhumudzoManenzhe/OportuNet

Domain:

education

Record type:

software
Creator:
Phu
Host:
A web platform connecting South African youth with learnerships and skills development opportunities # SA Learnerships and Skills Development Portal - Oportunet ## Architecture Used Our application uses a **hybrid client-server architecture** with a **page-based frontend** and a partial **layered service-repository structure**. The browser acts as the client, while Firebase Authentication, Firestore, Firebase Functions, and EmailJS act as backend/server services. The frontend is organised into separate page folders for applicants, recruiters, admins, authentication, settings, profiles, notifications, and opportunities. Internally, the application also follows a **layered structure**: - **UI Layer:** HTML, CSS, and page-specific JavaScript files. - **Shared Layer:** reusable helpers such as routes, constants, popup/modal logic, app shell logic, and notification rendering. - **Service Layer:** handles application/business logic. - **Repository Layer:** handles Firebase/Firestore data access. - **Backend Layer:** Firebase Cloud Functions for backend tasks such as account cleanup. The application is also **MVC-like**, although it does not use a formal MVC framework. The HTML/CSS files act as the **View**, the page scripts act like **Controllers**, and the services/repositories/Firebase data act as the **Model**. ## Main Structure | Folder/Layer | Purpose | |---|---| | `Applicant_*`, `APPLICANT_*` | Applicant pages such as homepage, settings, profile, applications, and notifications | | `Recruiter_*`, `RECRUITER_*` | Recruiter pages such as homepage, posts, applications, settings, and notifications | | `ADMIN_*` | Admin dashboard, settings, and notification pages | | `SignUp_LogIn_pages` | Authentication and role selection pages | | `services` | Business/application logic | | `repositories` | Firestore database access | | `shared` | Reusable helpers, constants, routes, popups, session actions, and notification renderers | | `functions` | Firebase Cloud Functions | | `tests` | Jest tests for pages, services, repositories, and shared modules | ## Design Patterns …