Back to projects
NSPIRE Project

NSPIRE

A full-stack web application developed collaboratively by me, Jacob, Noah, Cameron, Lyndi, and Maya. The project explores how a clean frontend experience can be paired with a structured backend and service layer, with an emphasis on teamwork, clear ownership boundaries, and scalable architecture.

HTML CSS TypeScript Node.js

Video

Project write-up

NSPIRE is a full-stack web application developed collaboratively by me, Jacob, Noah, Cameron, Lyndi, and Maya. The project explores how a clean frontend experience can be paired with a structured backend and service layer, with an emphasis on teamwork, clear ownership boundaries, and scalable architecture.

Our goal was to create a strong technical foundation that supports real user interaction while remaining easy to extend with richer data, improved search functionality, and new features.

What it is

  • Type: collaborative full-stack web application
  • Frontend: HTML, CSS, TypeScript, client-side rendering and navigation
  • Backend: Node.js with TypeScript, modular services, server-side routing
  • Core systems: search, detail views, service-driven data access, request handling
  • Multi-page experience: landing, search, details, and informational pages

Highlights

  • Team-based architecture: responsibilities were divided across frontend, backend, and services to enable parallel development.
  • Clear page flow: dedicated landing, search, and detail pages designed for intuitive navigation.
  • Service-layer design: reusable services isolate data logic from routing and presentation.
  • Search-driven interaction: users can query data and move seamlessly from results to detailed views.

How it works

The application is organized into client-facing pages and a backend server, allowing the team to work independently across layers without tight coupling.

  • The server initializes routes and exposes endpoints for search and detail requests.
  • Service modules encapsulate data retrieval and business logic.
  • The search page sends queries to backend endpoints and dynamically renders results.
  • Selecting a result routes the user to a details page populated with server-provided data.
  • Static informational pages provide context without depending on application state.

This separation kept the codebase readable and allowed each team member to contribute without blocking others.

What we would improve next

  • Richer data sources: connect to external APIs or a database instead of static or mock data.
  • Client-side state management: improve transitions and shared state between pages.
  • UI polish: refine layout, spacing, and interaction feedback.
  • Performance: introduce caching and pagination for larger datasets.