Kevin Crandall

Software Developer • Enterprise Applications • AI Solutions

CS 499 Capstone Enhancement

Software Design and Engineering

Completed

This enhancement revisits the Travlr Getaways full-stack travel management application originally developed in CS 465: Full Stack Development I. The application includes a customer-facing Express and Handlebars website, an Angular administrative single-page application, a RESTful Express API, and a MongoDB database.

Rather than rebuilding the project or adding unrelated features, this enhancement focused on improving maintainability, security, usability, configuration management, and architectural consistency. The goal was to transform a functional course artifact into a more polished and professionally engineered software solution.

Enhancement Objectives

Improve Maintainability

Reduce duplicated backend logic and create reusable components that are easier to understand, extend, and test.

Strengthen Security

Improve authentication, token validation, route protection, account validation, and sensitive configuration management.

Improve User Experience

Add responsive layouts, clearer validation, loading states, and user-facing success and error messaging.

Consolidate Architecture

Remove duplicate implementations and ensure both interfaces consume a shared REST API and consistent data source.

Major Improvements

Backend Maintainability

  • Centralized API error handling
  • Reusable validation middleware
  • Asynchronous controller wrappers
  • Custom application error class
  • More consistent API responses

Authentication and Security

  • Separate registration and login workflows
  • Duplicate account detection
  • Guest route protection
  • Improved JWT validation
  • Refined Bearer token processing

Configuration Management

  • MongoDB connection string moved to environment variables
  • JWT secret removed from source code
  • Improved deployment flexibility
  • Reduced exposure of sensitive values

Angular User Experience

  • Responsive layouts and navigation
  • Client-side form validation
  • Loading indicators
  • Success and error messaging
  • Disabled submit buttons during processing

Application Architecture

  • Shared REST API for both user interfaces
  • Removal of obsolete static travel implementation
  • Single source of truth for trip information
  • Reduced duplicate functionality
  • Improved consistency across the application

Testing and Quality

  • Authentication workflow testing
  • Protected route verification
  • CRUD operation testing
  • Responsive layout testing
  • Regression testing across both interfaces

Technical Skills Demonstrated

Angular Node.js Express.js MongoDB REST APIs JWT Authentication Middleware Error Handling Environment Configuration Responsive Design Validation Regression Testing

Course Outcomes Demonstrated

Software Engineering

Applied layered architecture, reusable middleware, centralized error handling, modular components, environment- based configuration, and RESTful API practices to improve maintainability and long-term software quality.

Security Mindset

Strengthened authentication, protected routes, improved JWT handling, validated duplicate accounts, and removed sensitive configuration values from the source code.

Professional Communication

Documented the enhancement through a comprehensive README, clear repository organization, and a structured Git history that communicates the implementation process.

Reflection

This enhancement reinforced that professional software engineering extends well beyond writing functional code. Many of the most valuable improvements came from refactoring existing functionality, reducing duplication, improving security, and creating reusable structures that make the application easier to maintain.

The process also highlighted the importance of managing scope. Features such as role-based authorization and additional administrative capabilities were considered, but the work remained focused on the objectives defined for the enhancement. Continuous testing helped ensure that the architectural changes did not introduce regressions elsewhere in the application.

Overall, the enhancement transformed the original artifact into a more secure, maintainable, consistent, and professional application without changing its core purpose. It demonstrates how thoughtful engineering practices can substantially improve an existing software solution.

Project Repositories

The original repository contains the application as developed during CS 465. The enhancement branch contains the completed software design and engineering improvements created during the CS 499 capstone.