Skip to content

Releases: mcqueide/people-api

v1.0.0

06 Dec 17:59

Choose a tag to compare

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

  1. Local Development: docker compose -f compose-dev.yaml up
  2. Production Docker: docker compose up --scale app=2
  3. Docker Swarm: docker stack deploy -c compose.swarm.yaml people-api
  4. Kubernetes: kubectl apply -f .k8s/backend/ + helm install people-db helm/postgres

🔗 API Endpoints

  • POST /api/v1/people - Create person
  • GET /api/v1/people/{id} - Get person by ID
  • PUT /api/v1/people/{id} - Update person
  • DELETE /api/v1/people/{id} - Delete person
  • GET /api/v1/people?page=0&size=20 - List people (paginated)

📚 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

v0.0.1

18 Nov 23:26

Choose a tag to compare

Fix Dockerfile path in CI configuration for correct build context