A web-based community heritage resource sharing and curation platform.
- Vue 3
- Vue Router 4
- Vite 5
- Element Plus
- Axios
- Java 17+
- Spring Boot 4.0.3
- Spring Web MVC
- Spring Security
- Spring Data JPA / Hibernate
- JWT (
jjwt) - Spring Mail
- Springdoc OpenAPI / Swagger UI
- MySQL 8+
- Maven Wrapper
- Node.js 18+
- npm
HeritagePlatform/
├─ frontend/ # Vue application
├─ platform/ # Spring Boot application
│ └─ src/main/resources/
│ ├─ application.properties
│ ├─ schema.sql
│ └─ data.sql
├─ package.json # Root scripts
└─ README.md
From the project root:
npm install
npm --prefix frontend installMake sure your local MySQL server is running.
Create the database if needed:
CREATE DATABASE IF NOT EXISTS heritage_platform
DEFAULT CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;Backend configuration lives under platform/src/main/resources/.
Use one of these approaches:
- Edit
application.propertiesdirectly for local development. - Or copy
application-local.properties.exampletoapplication-local.propertiesand put local overrides there.
At minimum, confirm your MySQL settings are correct:
spring.datasource.url=jdbc:mysql://localhost:3306/heritage_platform?useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true&createDatabaseIfNotExist=true
spring.datasource.username=root
spring.datasource.password=YOUR_PASSWORDOn each backend startup, Spring Boot attempts to run schema.sql and data.sql.
These scripts are written to be mostly idempotent, so they can be re-applied during local development without recreating the database from scratch.
From the project root:
npm run dev:backendThis runs:
cd platform && ./mvnw spring-boot:runBackend URL:
http://localhost:8080
In a second terminal, from the project root:
npm run dev:frontendFrontend URL:
http://localhost:5173
The local seed data provides these three test users:
admin / abc123
viewer / abc123
contributor / abc123
Emails:
admin@example.com
viewer@example.com
contributor@example.com
Run these from the project root:
npm run dev:backend
npm run dev:frontend
npm run test:backend
npm run build:backend
npm run build:frontend- The backend uses the Maven Wrapper, so a separate Maven install is not required.
- The frontend is served by Vite in development.
- Swagger UI is available through the Spring Boot app when the backend is running.