ENGINEERING CASE STUDY · FULL-STACK APPLICATIONS
Secure stock forecasting platform
Engineering case study.
REACT · CHART.JS · NODE.JS · EXPRESS · MONGODB · JWT · FLASK · SCIKIT-LEARN · YFINANCE
An MSc capstone: a multi-service forecasting application with authentication and separate admin and investor roles.
- Role
- Full stack developer
- Type
- MSc capstone, later adapted into a client project
- Status
- Adapted for a client
- Source
- Base project public; client-modified components private
01 / OVERVIEW
The project
A stock forecasting application developed as the capstone for the MSc in Cloud and Network Security, and later transformed into a client project. Investors enter a ticker and timeframe and see results charted in a React dashboard, while administrators manage users and review prediction activity. The system is split into a React frontend, a Node/Express API with MongoDB, and a Flask service for market data and modelling. The public repository contains the MSc base project only; the components completed or modified for the client are privately owned and cannot be shared.
02 / ARCHITECTURE
How it fits together
How a stock request moves through the three services, and where authentication and roles apply.
USERS
Investors & admins
Investors request forecasts and view their history. Administrators manage users and review prediction activity.
Sends to: React dashboard
Based on the project's code. The model is a baseline and the cloud deployment is not documented here.
03 / CONTRIBUTION
My contribution
- Built the React dashboard with sign-up, login, a prediction form, Chart.js visualisation of results, and admin pages for user details and prediction history.
- Built the Node/Express API with bcrypt-hashed passwords, JWT authentication, password change, and prediction history stored per user in MongoDB.
- Implemented role-based access control: admin-only routes verify the token and an admin flag before listing users and predictions or creating other admins.
- Built the Flask service that collects market data with yfinance and includes pandas preprocessing and a scikit-learn linear regression baseline.
- Moved the JWT secret and MongoDB address into environment configuration, added example settings, and published the project with a documented API reference and run instructions.
04 / ENGINEERING
Engineering notes
- Service separation: authentication and persistence live in Node/Express, while data science work lives in Flask, so each can be changed independently.
- Security context: the project was shaped by coursework on cloud security, cryptography, data protection and GDPR, including hashed credentials, token-based access and role separation.
- The model is a baseline. The prediction route currently returns recent closing prices from yfinance, and the regression model is included but not yet wired into that route.
05 / OUTCOMES
Outcomes and context
- Completed as an MSc capstone for Cloud and Network Security (GPA 4.0 / 4.0).
TECHNOLOGY
Tools selected for the work.
- React and Chart.js. A component-based dashboard makes the sign-in, prediction form and admin screens easy to compose, and Chart.js turns price series into readable charts with little code.
- Node.js and Express. A lightweight API layer for authentication, roles and prediction history, in the same language as the frontend.
- MongoDB. Prediction results vary in shape and are stored per user, which fits a flexible document model.
- JWT and bcrypt. Hashed passwords and stateless signed tokens keep credentials protected and let admin routes verify the caller's role on every request, in line with the security focus of the MSc.
- Flask, pandas, yfinance and scikit-learn. Python is the natural home for market data and modelling, and running it as its own service keeps data science work separate from the web API.