Back to selected work

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.

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.

ReactChart.jsNode.jsExpressMongoDBJWTFlaskscikit-learnyfinance