Core Backend Service for VenViFy — an online event organization and attendance platform.
This service owns the entire core business logic layer, enforcing ACID-compliant transactions for financial operations, booking management, and system orchestration.
| Layer | Technology |
|---|---|
| Framework | Spring Boot 4.1.0 |
| Language | Java 21 |
| Security & Auth | Spring Security · JWT (Access & Refresh Token) · Email verification |
| Data Access | Spring Data JPA (Hibernate) |
| Database | MySQL 8.0 |
| Build Tool | Maven |
| Containerization | Docker · Docker Compose |
- Internal PK:
Long (Auto-Increment)— optimizes index performance andJOINefficiency in MySQL. - Public ID:
UUIDv7 (String-36)— exposed on API endpoints to prevent IDOR (Insecure Direct Object Reference) vulnerabilities while keeping indexes more time-local than UUIDv4.
Fully isolated data ownership. venvify-core connects exclusively to its own MySQL instance and communicates with the real-time service (Node.js) only via REST API secured with an internal token.
JPA-level locking applied to handle race conditions when multiple attendees compete for the same ticket slot simultaneously.
Strictly follows SOLID principles and enterprise-grade Clean Code standards throughout the codebase.
| # | Module | Description |
|---|---|---|
| 1 | Auth & Profile | Email registration/login · Refresh-token rotation · Email OTP verification · Role-based access control |
| 2 | Event Management | Event CRUD · SEO-friendly slugs · Draft/Published/Cancelled lifecycle · host/admin cancellation refund flow |
| 3 | Slot & Booking | Wallet-funded booking · event-row locking against oversell · ticket transfer/resale via wallet |
| 4 | Wallet & Escrow | Double-entry ledger · internal wallet · escrow hold/refund/release · dev-only top-up outside prod; Sepay/OAuth/payout are planned P2 slices |
- Java 21+
- Maven 3.9+
- Docker & Docker Compose
git clone https://github.com/your-org/venvify-core.git
cd venvify-corecp .env.example .env
# Edit .env and fill in your credentialsdocker-compose up -d./mvnw spring-boot:runThe API will be available at http://localhost:8080/api/v1.
venvify-core/
├── src/
│ ├── main/
│ │ ├── java/com/venvify/
│ │ └── resources/
│ └── test/
├── docker-compose.yml
├── .env.example
└── pom.xml
| Variable | Description |
|---|---|
MYSQL_DATABASE |
Database name (default: venvify_db) |
MYSQL_ROOT_PASSWORD |
MySQL root password |
MYSQL_USER |
Application database user |
MYSQL_PASSWORD |
Application database password |
SECRET_KEY |
JWT HS256 secret, at least 32 bytes |
RESEND_API_KEY |
Resend API key for outbound email |
RESEND_FROM_EMAIL |
Sender address, defaults to onboarding@resend.dev |
APP_CORS_ALLOWED_ORIGINS |
CSV list of allowed frontend origins |
APP_LOG_LEVEL |
Application logger level, defaults to INFO |
SQL_LOG_LEVEL |
Hibernate SQL logger level, defaults to WARN |
Copy
.env.exampleto.env— the.envfile is gitignored and must never be committed.
This project is part of a graduation thesis. All rights reserved.