An inquiry management system with a Spring Boot backend, Vue 3 admin panel, and public submission form.
inqhub/ Spring Boot 3.x + PostgreSQL + JWT auth
frontend/ Vue 3 admin UI (Vite + Tailwind CSS + Pinia)
demo/ Vue 3 visitor submission form
- Inquiry management — CRUD, status workflow (New → In Progress → Contacted → Quoted → Won/Lost → Closed), search & filter
- User management — admin and staff roles, JWT authentication, role-based access control
- Quick replies — email templates with placeholders, one-click send
- Notifications — pluggable email and Feishu notification channels
- Dashboard — inquiry statistics and status breakdown
- System logs — audit trail of key operations
cd inqhub
docker compose up -dRequires Java 21 and Maven.
cd inqhub
./mvnw spring-boot:runRuns on http://localhost:40010. Context path: /api/v1.
Default accounts (seeded on first run):
| Username | Password | Role |
|---|---|---|
| admin | admin123 | Admin |
| user | user123 | Staff |
cd frontend
pnpm install
pnpm devRuns on http://localhost:5173. Proxies /api requests to the backend.
cd demo
pnpm install
pnpm devA public inquiry submission form for testing. Submissions appear in the admin inquiry list.
| Layer | Technology |
|---|---|
| Backend | Java 21, Spring Boot 3.x, Spring Security, JPA, PostgreSQL |
| Auth | JWT (jjwt 0.12), BCrypt |
| Frontend | Vue 3, TypeScript, Vite, Tailwind CSS v4, Pinia, Vue Router |
| Build | Maven (backend), pnpm (frontend) |
| Deploy | Docker Compose |
All endpoints prefixed with /api/v1. Public endpoints:
| Method | Path | Description |
|---|---|---|
| POST | /auth/login | Login, returns JWT |
| POST | /inquiries | Submit an inquiry |
| GET | /info/version | Health check |
Authenticated endpoints require Authorization: Bearer <token>. Admin-only routes: /users/**, /notification-configs/**, /system-logs/**.