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.
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.
- User authentication and authorization
- Secure password handling
- JWT-based authentication
- Spring Security integration
- Protected application functionality
- Track maintenance requests
- Manage maintenance-related information
- Connect maintenance requests with other application entities
- REST API integration for application data
- Track tenant information
- Manage tenant records
- Integrate tenant information with the maintenance system
- Track vendors
- Manage vendor information
- Associate vendors with maintenance activities
- 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
- React-based user interface
- Responsive design
- Bootstrap styling
- Reusable React components
- Client-side routing
| 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 |
| 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 |
| Technology | Purpose |
|---|---|
| PostgreSQL | Relational database |
| JPA/Hibernate | Object-relational mapping |
- Git
- GitHub
- Postman
- Visual Studio Code
- IntelliJ IDEA
- Maven
- Node.js
- npm
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
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.
The Servexa frontend is located in:
servexa_frontend/
The frontend is built using React and Vite.
- React
- React DOM
- Vite
- Axios
- Bootstrap
- React Router
- React Modal
- React Select
- ESLint
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
Start the development server:
npm run devBuild the application:
npm run buildRun ESLint:
npm run lintPreview the production build:
npm run previewThe Servexa backend is located in:
servexa_backend/
The backend is implemented using Java 17 and Spring Boot.
- Java 17
- Spring Boot
- Spring Web
- Spring Data JPA
- Spring Security
- JWT
- BCrypt
- Spring Validation
- PostgreSQL
- Maven
The backend handles:
- REST API endpoints
- Business logic
- Authentication
- Authorization
- Database communication
- Data validation
- Password encryption
- JWT token handling
- Persistence of application data
Servexa incorporates several security technologies through Spring Security.
Spring Security is used to provide authentication and authorization functionality for the application.
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
Passwords are handled using BCrypt hashing rather than storing plaintext passwords.
Spring Boot validation functionality is used to validate incoming application data before processing it.
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.
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.
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.
The repository includes a collection of documents created throughout the development lifecycle.
The servexa_supporting_docs directory contains:
- Project proposal
- Final project design and planning documentation
- Development planning materials
- Sprint retrospective documentation
- Service request API tests
- Tenant API tests
- Vendor API tests
- Servexa wireframes and frames
- Test setup information
- Supporting README documentation
These files provide additional context regarding the planning, design, development, and testing of the application.
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 --versionNavigate to the frontend directory:
cd servexa_frontendInstall the required dependencies:
npm installStart the development server:
npm run devVite will start the React development environment.
The terminal will provide the local development URL.
Navigate to the backend directory:
cd servexa_backendThe project includes Maven wrapper files, allowing Maven commands to be executed without requiring a separate Maven installation.
mvnw.cmd spring-boot:run./mvnw spring-boot:runAlternatively, if Maven is installed globally:
mvn spring-boot:runBefore 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.
To run Servexa locally, start both the frontend and backend.
cd servexa_backend
mvn spring-boot:runcd servexa_frontend
npm install
npm run devThe React frontend will communicate with the Spring Boot backend through the configured REST API.
Servexa includes testing resources for both application development and API testing.
Backend tests can be executed using Maven:
mvn testThe project also includes the H2 database dependency for testing purposes.
Postman collections are included for testing:
- Service Requests
- Tenants
- Vendors
These collections can be imported into Postman and used to verify API functionality.
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.
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.
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.