Skip to content

Latest commit

Β 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Servexa – Maintenance Management System

A full-stack web application designed to help manage maintenance requests, vendors, and tenants within a fictional campus environment.

Servexa was developed as a final project for B470 and demonstrates the development of a complete web application using a modern React frontend, Spring Boot backend, REST APIs, database persistence, authentication, and supporting development documentation.


πŸ“– Overview

Servexa is a full-stack maintenance management application created for a fictional campus environment.

The application provides a centralized platform for managing:

  • Maintenance requests
  • Vendors
  • Tenants
  • User accounts
  • Maintenance-related information

The project follows a separated frontend/backend architecture. The frontend is built with React and Vite, while the backend is implemented using Java and Spring Boot. Communication between the two layers occurs through REST APIs.

The repository also contains supporting project documentation, API testing collections, planning documents, sprint retrospectives, and other materials used throughout the development process.


✨ Features

πŸ” User Authentication

  • User authentication and authorization
  • Secure password handling
  • JWT-based authentication
  • Spring Security integration
  • Protected application functionality

πŸ› οΈ Maintenance Management

  • Track maintenance requests
  • Manage maintenance-related information
  • Connect maintenance requests with other application entities
  • REST API integration for application data

πŸ‘₯ Tenant Management

  • Track tenant information
  • Manage tenant records
  • Integrate tenant information with the maintenance system

🏒 Vendor Management

  • Track vendors
  • Manage vendor information
  • Associate vendors with maintenance activities

πŸ”„ REST API Integration

  • Frontend communicates with backend through REST APIs
  • Axios is used for HTTP requests
  • Backend provides application data and business logic
  • Database persistence is handled through Spring Data JPA

πŸ“± Responsive Interface

  • React-based user interface
  • Responsive design
  • Bootstrap styling
  • Reusable React components
  • Client-side routing

πŸ› οΈ Technology Stack

Frontend

Technology Purpose
React User interface
React DOM React rendering
Vite Frontend development and build tooling
JavaScript Application logic
Axios HTTP/API requests
Bootstrap UI styling and responsive layout
React Router Client-side routing
React Modal Modal interfaces
React Select Enhanced selection inputs
ESLint Code quality and linting

Backend

Technology Purpose
Java 17 Backend programming language
Spring Boot Backend application framework
Spring Web REST API development
Spring Data JPA Database access and persistence
Spring Security Authentication and authorization
JWT Token-based authentication
BCrypt Password encryption
Spring Validation Request/data validation
Maven Dependency management and build automation

Database

Technology Purpose
PostgreSQL Relational database
JPA/Hibernate Object-relational mapping

Development Tools

  • Git
  • GitHub
  • Postman
  • Visual Studio Code
  • IntelliJ IDEA
  • Maven
  • Node.js
  • npm

πŸ—οΈ Project Structure

The repository is divided into three primary sections:

fullstack-servexa-maintenance-website/
β”‚
β”œβ”€β”€ servexa_backend/
β”‚   β”œβ”€β”€ .mvn/
β”‚   β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ Dockerfile
β”‚   β”œβ”€β”€ pom.xml
β”‚   β”œβ”€β”€ mvnw
β”‚   β”œβ”€β”€ mvnw.cmd
β”‚   └── README.md
β”‚
β”œβ”€β”€ servexa_frontend/
β”‚   β”œβ”€β”€ frontend/
β”‚   β”œβ”€β”€ memory/
β”‚   β”œβ”€β”€ public/
β”‚   β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ package.json
β”‚   β”œβ”€β”€ package-lock.json
β”‚   β”œβ”€β”€ vite.config.js
β”‚   β”œβ”€β”€ eslint.config.js
β”‚   └── README.md
β”‚
└── servexa_supporting_docs/
    β”œβ”€β”€ ProposalDocument.docx
    β”œβ”€β”€ 470sp26_Team3_FinalProjectDesignPlanning.docx
    β”œβ”€β”€ 470_570sp26 Sprint 1 Retrospective - 6 April 2026.docx
    β”œβ”€β”€ Servexa Initial API Tests Service Requests.postman_collection.json
    β”œβ”€β”€ Servexa Initial API Tests Tenants.postman_collection.json
    β”œβ”€β”€ Servexa Initial API Tests Vendors.postman_collection.json
    β”œβ”€β”€ Servexa_Frames.bmpr
    β”œβ”€β”€ testSetup.txt
    └── readme.md

🧩 Application Architecture

Servexa follows a traditional full-stack architecture:

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚       React Frontend        β”‚
β”‚                             β”‚
β”‚  React + Vite + Bootstrap   β”‚
β”‚  React Router + Axios       β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
               β”‚
               β”‚ REST API / HTTP
               β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚       Spring Boot API       β”‚
β”‚                             β”‚
β”‚ Java 17                     β”‚
β”‚ Spring Web                  β”‚
β”‚ Spring Security             β”‚
β”‚ JWT Authentication          β”‚
β”‚ Spring Data JPA             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
               β”‚
               β”‚ JPA / Hibernate
               β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚        PostgreSQL           β”‚
β”‚                             β”‚
β”‚ Relational Database         β”‚
β”‚ Persistent Application Data β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

This separation allows the frontend and backend to be developed independently while communicating through clearly defined REST endpoints.


πŸ’» Frontend

The Servexa frontend is located in:

servexa_frontend/

The frontend is built using React and Vite.

Frontend Technologies

  • React
  • React DOM
  • Vite
  • Axios
  • Bootstrap
  • React Router
  • React Modal
  • React Select
  • ESLint

Frontend Responsibilities

The frontend is responsible for:

  • Rendering the user interface
  • Handling user interaction
  • Client-side navigation
  • Sending requests to the backend API
  • Displaying data retrieved from the backend
  • Managing authentication-related frontend behavior
  • Providing responsive layouts

Frontend Scripts

Start the development server:

npm run dev

Build the application:

npm run build

Run ESLint:

npm run lint

Preview the production build:

npm run preview

β˜• Backend

The Servexa backend is located in:

servexa_backend/

The backend is implemented using Java 17 and Spring Boot.

Backend Technologies

  • Java 17
  • Spring Boot
  • Spring Web
  • Spring Data JPA
  • Spring Security
  • JWT
  • BCrypt
  • Spring Validation
  • PostgreSQL
  • Maven

Backend Responsibilities

The backend handles:

  • REST API endpoints
  • Business logic
  • Authentication
  • Authorization
  • Database communication
  • Data validation
  • Password encryption
  • JWT token handling
  • Persistence of application data

πŸ” Authentication & Security

Servexa incorporates several security technologies through Spring Security.

Spring Security

Spring Security is used to provide authentication and authorization functionality for the application.

JWT Authentication

JSON Web Tokens are used to support token-based authentication between the frontend and backend.

The general authentication flow is:

User
 β”‚
 β–Ό
React Frontend
 β”‚
 β”‚ Login Request
 β–Ό
Spring Boot API
 β”‚
 β”‚ Validate Credentials
 β–Ό
Database
 β”‚
 β”‚ User Verified
 β–Ό
JWT Generated
 β”‚
 β–Ό
React Frontend
 β”‚
 β”‚ Authenticated Requests
 β–Ό
Protected API Endpoints

Password Security

Passwords are handled using BCrypt hashing rather than storing plaintext passwords.

Validation

Spring Boot validation functionality is used to validate incoming application data before processing it.


πŸ—„οΈ Database

Servexa uses PostgreSQL as its relational database.

Database access is handled through:

  • Spring Data JPA
  • Hibernate/JPA
  • PostgreSQL JDBC driver

The application uses an object-relational mapping approach, allowing Java entities to interact with relational database tables through JPA.


🌐 API

The frontend communicates with the backend through RESTful API endpoints.

Axios is used by the React frontend to make HTTP requests.

The API supports functionality related to areas such as:

  • Authentication
  • Service requests
  • Tenants
  • Vendors
  • Maintenance data

Postman collections are included in the supporting documentation directory for testing API functionality.

API Testing Collections

Servexa Initial API Tests Service Requests.postman_collection.json

Servexa Initial API Tests Tenants.postman_collection.json

Servexa Initial API Tests Vendors.postman_collection.json

These collections can be imported into Postman to assist with testing the backend API.


πŸ“š Supporting Documentation

The repository includes a collection of documents created throughout the development lifecycle.

The servexa_supporting_docs directory contains:

Project Planning

  • Project proposal
  • Final project design and planning documentation
  • Development planning materials

Agile Development

  • Sprint retrospective documentation

API Testing

  • Service request API tests
  • Tenant API tests
  • Vendor API tests

Design

  • Servexa wireframes and frames

Development

  • Test setup information
  • Supporting README documentation

These files provide additional context regarding the planning, design, development, and testing of the application.


πŸš€ Getting Started

Prerequisites

Before running Servexa locally, install the following:

  • Java 17
  • Maven
  • Node.js
  • npm
  • PostgreSQL
  • Git

Verify your installations:

java --version
mvn --version
node --version
npm --version

πŸ“¦ Frontend Setup

Navigate to the frontend directory:

cd servexa_frontend

Install the required dependencies:

npm install

Start the development server:

npm run dev

Vite will start the React development environment.

The terminal will provide the local development URL.


βš™οΈ Backend Setup

Navigate to the backend directory:

cd servexa_backend

The project includes Maven wrapper files, allowing Maven commands to be executed without requiring a separate Maven installation.

Windows

mvnw.cmd spring-boot:run

macOS / Linux

./mvnw spring-boot:run

Alternatively, if Maven is installed globally:

mvn spring-boot:run

πŸ—ƒοΈ Database Configuration

Before starting the backend, configure the PostgreSQL database connection according to the application's Spring configuration.

The database should be running locally and accessible by the Spring Boot application.

A typical PostgreSQL configuration will include:

Database URL
Database Username
Database Password
Database Port

Do not commit database passwords, JWT secrets, API keys, or other credentials to GitHub.

Environment variables or an appropriate local configuration file should be used for sensitive values.


πŸ”„ Running the Full Application

To run Servexa locally, start both the frontend and backend.

Terminal 1 – Backend

cd servexa_backend
mvn spring-boot:run

Terminal 2 – Frontend

cd servexa_frontend
npm install
npm run dev

The React frontend will communicate with the Spring Boot backend through the configured REST API.


πŸ§ͺ Testing

Servexa includes testing resources for both application development and API testing.

Backend Tests

Backend tests can be executed using Maven:

mvn test

The project also includes the H2 database dependency for testing purposes.

API Testing

Postman collections are included for testing:

  • Service Requests
  • Tenants
  • Vendors

These collections can be imported into Postman and used to verify API functionality.


πŸ“ Repository Organization

The repository intentionally separates application code from project documentation.

Directory Purpose
servexa_backend Spring Boot backend and REST API
servexa_frontend React/Vite frontend
servexa_supporting_docs Planning, design, testing, and development documentation

This structure makes it easier to navigate the project and understand the separation between the frontend, backend, and supporting materials.


🎯 Project Purpose

Servexa was created as a final project for B470.

The project was designed to demonstrate the practical application of full-stack software development concepts, including:

  • Frontend development
  • Backend development
  • REST API design
  • Database integration
  • Authentication and authorization
  • Secure password handling
  • Client-server communication
  • Software project planning
  • API testing
  • Agile development practices
  • Version control with Git and GitHub

Rather than functioning as a simple static website, Servexa demonstrates how multiple application layers work together to create a complete web-based system.


πŸ“Œ Project Summary

Servexa is a full-stack maintenance management application built with:

Frontend
React + Vite + Bootstrap
        β”‚
        β”‚ REST API
        β–Ό
Backend
Java + Spring Boot
        β”‚
        β”‚ JPA / Hibernate
        β–Ό
Database
PostgreSQL

The project demonstrates the development of a complete full-stack application with a modern frontend, RESTful backend, relational database, authentication, security, API testing, and supporting software-development documentation.

About

This is a full stack website created as a final project for B470.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages