Skip to main content

Technology Stack

Every technology in the stack was selected during an eight-month research and development window, weighed against the project's cost, timeline, and skill constraints as much as against pure technical merit.

Frontend — React

React's component model and virtual DOM made it a good fit for a UI that renders differently depending on the signed-in user's role: the same dashboard shell can mount an innovator's view, a mentor's view, or an administrator's view as distinct component trees, reusing shared building blocks like navigation and notification widgets.

Backend — Node.js and Express.js

Node's non-blocking I/O model handles concurrent API requests without a thread-per-request cost, and Express supplies a lightweight routing and middleware layer on top of it. All backend business logic — authentication, application processing, mentor allocation, notification dispatch — is implemented as Express routes and middleware.

Database — PostgreSQL

PostgreSQL was chosen for its strong support for relational constraints. Referential integrity between users, applications, mentor assignments, and progress logs is enforced at the database level, not left entirely to application code — so a bug in a controller can't silently orphan a record. Typeorm is used also for automatic creation of entries (tables) and connection.

Authentication — JSON Web Tokens

JWTs provide a compact, stateless way to represent a signed-in user's identity and role between requests. The API validates a token on every protected route and enforces role-based access control before running any handler logic, which keeps authorization checks centralized rather than scattered across the frontend.

Hosting

LayerProviderNotes
FrontendVercelFree tier, continuous deployment from GitHub
Backend & databaseRenderFree tier, environment variables configured per-service

Both hosting choices were driven by the project's economic feasibility constraints — see Results & Analysis for how that played out against the original budget.

Summary table

ConcernChoice
UI frameworkReact.js
Server runtimeNode.js
API frameworkExpress.js
DatabasePostgreSQL
AuthJWT + RBAC
Frontend hostingVercel
Backend hostingRender
TestingJest
Version controlGit / GitHub