University Project / Authentication Fundamentals
MERN Authentication
A classroom MERN application built to follow registration and login data across a React client, Express API, and MongoDB-backed user records.

This class project was an exercise in understanding the full authentication path rather than treating login as a single form. I built registration and login states, connected the React interface to an Express API, and stored user records with MongoDB and Mongoose.
The work introduced the responsibilities on each side of the boundary: collecting credentials in the client, validating requests in the API, handling application keys and tokens, and deciding what belongs in persistent data. The repository remains a learning artifact from that stage, not a current production-authentication reference.
01 / Request Flow
Follow authentication across the whole stack.
The main value of the assignment was seeing how one user action moves through several layers before the interface can show an authenticated state.
React client
Registration, login, and role-selection interfaces collect user input and respond to success or failure from the API.
Express API
Server routes receive the request and coordinate the application logic instead of exposing database access to the browser.
MongoDB records
Mongoose provides the model layer used to write and retrieve the stored user information needed by the flow.
02 / Security Concepts
Understand where trust changes hands.
The exercise connected database work to the security decisions that sit between a submitted password and an authenticated application state.
Credential handling
Passwords cannot be treated like ordinary profile fields; the project made their storage and transformation part of the server-side design.
Keys and tokens
JWT and CryptoJS introduced how application secrets and token-based identity fit into requests after login.
Protected boundaries
The browser, API, and database each have different responsibilities, and sensitive logic belongs behind the client interface.
03 / Reflection
Authentication is a system, not a screen.
The class project gave me a concrete foundation for thinking about accounts even as production practices and libraries continue to evolve.
Trace the complete path
Debugging requires following the request from form state through API handling and into the stored record, then back again.
Separate responsibilities
A clearer boundary between interface, server logic, and persistence makes each part easier to reason about and change.
Keep security current
The concepts remain useful, while real production authentication should be evaluated against current standards and maintained libraries.