Releases: mcqueide/people-api
Releases · mcqueide/people-api
v1.0.0
Release v1.0.0 - Initial Release
🎉 Overview
First stable release of the People API - a production-ready REST API for managing people records, built with modern Java technologies and comprehensive containerization support.
✨ Features
Core Application
- People CRUD API: Full REST endpoint implementation at
/api/v1/people- Create, Read, Update, Delete operations
- Pagination support for list endpoints
- Input validation with Jakarta Validation
- Global exception handling
- Technology Stack:
- Java 21 with Spring Boot 3.5.7
- PostgreSQL 17 with Flyway migrations
- MapStruct for entity-DTO mapping
- OpenAPI/Swagger documentation
Architecture
- Clean hexagonal architecture with ports and adapters pattern
- Domain-driven design with clear separation of concerns
- Repository pattern with JPA implementation
- Service layer with business logic
Docker Support
- Multi-stage Dockerfile for optimized production builds
- Development Environment (
compose-dev.yaml):- Hot reload support
- Remote debugging on port 5005
- Persistent PostgreSQL database
- Production Environment (
compose.yaml):- Nginx reverse proxy with load balancing
- Multiple application replicas (2 instances)
- Health checks and resource limits
- Structured JSON logging
- Security hardening (non-root user, dropped capabilities)
- Docker Swarm Support (
compose.swarm.yaml):- Native secrets and configs management
- Overlay networks for multi-node deployments
- Rolling updates with zero downtime
- Automatic rollback on failures
Kubernetes Support
- Application Deployment:
- 3 replicas for high availability
- Resource limits and requests configured
- Startup, readiness, and liveness probes
- Security contexts with non-root user
- Helm Chart for PostgreSQL:
- Persistent volume claims
- StatefulSet deployment
- Configurable resources
- Secret management
- Complete K8s Manifests:
- Deployments, Services, ConfigMaps, Secrets
- Production-ready configuration
DevOps & CI/CD
- GitHub Actions workflows for automated builds
- Docker Scout integration for vulnerability scanning
- Cosign for image signing
- Multi-platform builds (amd64/arm64)
- Docker Bake support for advanced build scenarios
Security
- Database credentials managed via Kubernetes Secrets
- Security contexts with dropped capabilities
- Non-root container execution
- Network isolation with internal backend network
- CVE scanning in CI pipeline
Monitoring & Observability
- Spring Boot Actuator endpoints
- Health check endpoints (
/actuator/health) - Structured JSON logging with rotation
- Nginx access logs in JSON format
📦 Deployment Options
- Local Development:
docker compose -f compose-dev.yaml up - Production Docker:
docker compose up --scale app=2 - Docker Swarm:
docker stack deploy -c compose.swarm.yaml people-api - Kubernetes:
kubectl apply -f .k8s/backend/+helm install people-db helm/postgres
🔗 API Endpoints
POST /api/v1/people- Create personGET /api/v1/people/{id}- Get person by IDPUT /api/v1/people/{id}- Update personDELETE /api/v1/people/{id}- Delete personGET /api/v1/people?page=0&size=20- List people (paginated)
📚 Documentation
- README.md - Main project documentation
🚀 Quick Start
# Clone the repository
git clone https://github.com/mcqueide/people-api.git
cd people-api
# Start with Docker Compose
docker compose -f compose-dev.yaml up
# Access the API
curl http://localhost:8080/api/v1/people