Template repository for CSCI 602 semester projects at The Citadel.
| Layer | Technology |
|---|---|
| Backend | Java 25, Spring Boot 4.1 |
| Frontend | React (Vite) |
| Database | PostgreSQL (Flyway migrations) |
| Testing | JUnit 5, Cucumber (BDD), JaCoCo (coverage) |
| CI/CD | GitHub Actions |
| Deployment | Render (Static Site + Web Service + PostgreSQL) |
| API Docs | SpringDoc OpenAPI 3 (Swagger UI) |
- Java 25 — Install Amazon Corretto 25
- macOS:
brew install --cask corretto@25 - Windows: Download the
.msiinstaller from Amazon Corretto 25
- macOS:
- PostgreSQL — You will be given credentials to a cloud-hosted database
- Node.js 20+ — Required for the React frontend (
brew install nodeor nodejs.org) - IntelliJ IDEA — Recommended IDE (free student license)
- Go to the template repository: CitadelCS/csci-602
- Click the green "Use this template" button → "Create a new repository"
- Set the Owner to your personal GitHub account
- Name the repository
csci-602(or any name you prefer) - Set visibility to Private
- Click "Create repository"
- Go to Settings → Collaborators and add
jtravan3as a collaborator
git clone https://github.com/YOUR-USERNAME/csci-602.git
cd csci-602On Windows, replace
./mvnwwith.\mvnwin all commands below.
./mvnw clean compileUpdate src/main/resources/application.yaml with the database credentials provided by your instructor:
spring:
datasource:
url: jdbc:postgresql://{host}:{port}/{database}
username: {username}
password: {password}
⚠️ Do not commit your database credentials to your repository. Editapplication.yamllocally but make sure you do not push these changes. Your credentials are unique to you.
./mvnw spring-boot:runThe API starts on port 5001. Access Swagger UI at http://localhost:5001/swagger-ui/index.html.
./mvnw testThis runs JUnit unit tests and Cucumber integration tests. JaCoCo coverage reports are generated at target/site/jacoco/index.html.
See frontend/README.md for instructions on scaffolding the React (Vite) frontend.
cd frontend
npm create vite@latest . -- --template react-ts
npm install
npm run devThe React dev server starts on http://localhost:5173.
├── .github/workflows/ # GitHub Actions CI pipeline
├── frontend/ # React (Vite) frontend (scaffold in Iteration 0)
├── render.yaml # Render deployment blueprint
├── src/
│ ├── main/
│ │ ├── java/edu/citadel/
│ │ │ ├── api/ # REST controllers
│ │ │ ├── config/ # Spring configuration (SecurityConfig stub)
│ │ │ ├── dal/ # Data access layer (repositories, models)
│ │ │ └── main/ # Application entry point
│ │ └── resources/
│ │ ├── db/migration/ # Flyway SQL migrations
│ │ └── application.yaml
│ └── test/
│ ├── java/edu/citadel/
│ │ ├── bdd/ # Cucumber runner and step definitions
│ │ └── hw1/ # HW1 unit tests
│ └── resources/
│ └── features/ # Cucumber .feature files (Gherkin)
├── pom.xml # Maven dependencies and build config
└── README.md
The following files are included as starting points for specific assignments:
| File | Assignment |
|---|---|
src/main/java/edu/citadel/config/SecurityConfig.java |
Iteration 1 — JWT Authentication |
src/test/java/edu/citadel/bdd/StepDefinitions.java |
Iteration 1 — Cucumber Integration Tests |
frontend/README.md |
Iteration 0 — React Frontend Scaffold |
render.yaml |
Iteration 2 — Render Deployment |
| Command | Description |
|---|---|
./mvnw compile |
Compile the project |
./mvnw test |
Run all tests (JUnit + Cucumber) + generate coverage |
./mvnw spring-boot:run |
Start the API locally |
./mvnw clean install |
Full build + test |