MAPIS is a backend service that orchestrates permit approvals across multiple agencies (Environment, Fire, Health).
It exposes REST APIs to create permits, initiates approvals in external agencies, stores the workflow, and receives asynchronous callbacks.
This project demonstrates advanced skills in:
✔ Spring Boot 3.5
✔ Apache Camel Integration Patterns
✔ PostgreSQL + Docker
✔ REST API Design (Request/Response DTOs)
✔ Async Callbacks & External System Orchestration
✔ Clean Architecture, Service Layer, Entities, Logging
✔ Java 21 + Hibernate ORM
✔ Containerization & DevOps Basics
- Project Overview
- System Architecture
- Technologies Used
- Key Features
- Project Structure
- API Endpoints
- Apache Camel Flows
- Docker Setup
- Database Schema
- How to Run the Project
- Why This Project Matters (Recruiter Summary)
MAPIS acts as a centralized permit gateway, allowing a county government to:
- Accept new permit applications
- Automatically contact external government agencies
- Track each agency approval task
- Receive callback updates
- Determine when the permit is fully ready for issuance
The system follows a real-world workflow similar to municipal / county licensing systems.
┌──────────────────────┐
│ MAPIS API │
│ (Spring Boot 3.5) │
└──────────┬───────────┘
│ creates
▼
┌────────────────┐
│ Permit │
└───────┬────────┘
│ triggers
▼
┌────────────────────────┐
│ Apache Camel Orchestration │
└──────┬────────┬────────┘
calls ENV API → │ │ ← receives callbacks
│ │
calls FIRE API → │ │ ← receives callbacks
│ │
calls HLTH API → │ │ ← receives callbacks
▼ ▼
Updates agency tasks
| Technology | Purpose |
|---|---|
| Java 17 | Modern language features |
| Spring Boot 3.5 | Bootstrapping, DI, REST |
| Apache Camel | Integration with external agencies |
| PostgreSQL 16 | Persistence |
| Docker Compose | Database + pgAdmin |
| Hibernate/JPA | ORM + schema management |
| Lombok | Cleaner POJOs |
| SLF4J Logging | End-to-end traceability |
Each new permit triggers three agency tasks.
Stored in the agency_tasks table.
MAPIS updates task status + result.
Each step logs outbound requests + responses.
src/main/java/com/personal/mapis
│
├── controllers
├── services
├── camel
├── models
└── repositories
POST /api/permits
GET /api/permits/{permitNumber}
GET /api/permits/{permitNumber}/details
POST /api/callbacks/env
POST /api/callbacks/fire
POST /api/callbacks/health
docker-compose up -d
PostgreSQL:
- host: localhost
- port: 5433
- user: permit_user
- pass: permit_pass
./mvnw spring-boot:run
Demonstrates strong backend/integration engineering skills.