APIs and contracts
REST APIs, OpenAPI, DTOs, Problem Details, pagination, 401/403/422/429, versioning, and clear responsibility boundaries.
Project portfolio / PHP Backend / B2B systems
Solid Apps shows how I think about systems: API contracts, application layers, idempotency, tests, observability, DDD where it helps, and a pragmatic modular monolith before anyone starts multiplying microservices.
Solid Apps is a backend portfolio built around real engineering decisions: status transitions, idempotency, webhook signatures, test strategy, C4/NFR/ADR, and runbooks.
Start with ShopFlow, Payment Adapter, Rentals Booking, CLI Data Importer, and URL Shortener. These projects show code, responsibility boundaries, and explicit trade-offs.
Positioning
REST APIs, OpenAPI, DTOs, Problem Details, pagination, 401/403/422/429, versioning, and clear responsibility boundaries.
HMAC webhooks, idempotency keys, retries with backoff and jitter, audit logs, refunds, and failure-mode design.
SQL audits, EXPLAIN, indexes, refactoring plans, service layers, characterization tests, and gradual PHPStan adoption.
C4, NFR, ADR, capacity estimates, cache invalidation, health checks, runbooks, and modular-monolith vs microservice decisions.
Selected projects
Each entry connects the problem, technical decisions, demo scope, and deliberate next steps. This is not a screenshot gallery. It is a map of competence signals.
Checkout API / order statuses / idempotent payments
An e-commerce project grown in slices: catalog and cart UI, PHP checkout endpoint, order admin panel,
payment audit trail, and explicit status transitions new -> paid -> shipped and new -> cancelled.
Idempotency-Key.pay-latest-order.php, status-change API, CI for the order module.Ports & Adapters / Money VO / webhook HMAC
A payment module built around a shared PaymentGatewayInterface, Stripe/PayPal adapters,
a Money value object, request/result DTOs, idempotency, and webhook auditing.
PaymentResult, HMAC signature verification.Base62 / idempotent shortening / click stats
A small but complete backend: URL validation, Base62, idempotent shortening, custom aliases, file repositories, click tracking, and shared logic for web and CLI.
ETL / batch processing / dry-run discipline
A CSV/JSON/XML importer that shows practical backend work outside HTTP: record validation,
--dry-run, --limit, --continue-on-error, batch IDs,
duplicate detection, and a JSON report for automation.
DDD tactical / aggregate lifecycle / domain events
A booking module showing DDD in PHP: aggregate, Value Objects, command/handler, repositories, PDO transactions, domain events, outbox, worker, and idempotent side effects.
created -> confirmed -> checked_in -> completed, cancellation flow, and outbox worker.HTTP + RabbitMQ / Docker Compose / health endpoints
A demonstration of three independent PHP services: user-service, order-service,
and notification-service. It shows service boundaries, synchronous HTTP, and asynchronous events through RabbitMQ.
POST /orders, user lookup, order_created publishing, notification consumer.Custom MVC / attribute routing / admin security
A minimalist PHP blog engine: front controller, attribute-based routing, request/response objects, JSON persistence, search, pagination, admin auth, CSRF, and flash messages.
Admin UI / SPA auth states / API-oriented frontend
Two frontend projects showing practical backend-facing UI: a Vue 3 CRUD panel and a React SPA focused on sessions, auth states, routing, and a backend contract.
No project matches the selected filters. Change the query or category.
Stack and standards
PHP 8.3 / 8.4 / 8.5, Symfony, Laravel, Composer, PSR-4, service container, Scheduler, Messenger.
Doctrine, Eloquent, PDO, MySQL, PostgreSQL, Redis, RabbitMQ, outbox awareness, CSV/JSON imports.
REST, OpenAPI, JWT, OAuth 2.0, OIDC, RBAC/ACL, HttpOnly cookies, webhook signature verification.
PHPUnit, Pest, PHPStan, Psalm, php-cs-fixer, contract tests, smoke tests, test strategy matrix.
Docker, Docker Compose, Nginx, PHP-FPM, GitHub Actions, Sentry, OpenTelemetry, structured logs.
Modular monolith, tactical DDD, Clean/Hexagonal, C4, NFR, ADR, runbooks, and failure-mode analysis.
Technical decisions
API contract
Start with OpenAPI, request/response DTOs, an explicit error format, and 401/403/422/429 statuses. Only then make the controller a thin layer delegating to an application service.
Working process
I work so that every iteration leaves more than code behind: decisions, contracts, tests, and the context the team needs to maintain the system.
I identify what actually hurts: an endpoint, integration, SQL, checkout, queue, legacy flow, or missing ownership.
Output: risk map, first-iteration scope, out of scope.I define module boundaries, DTOs, HTTP statuses, idempotency, retry policy, and architecture decisions.
Output: OpenAPI / ADR / mini C4 / test strategy.Small changes, readable commits, tests, PHPStan/Psalm, php-cs-fixer, and review of the highest-risk areas.
Output: working flow, tests, trade-off notes.I close the README, smoke tests, health endpoints, runbook, deployment notes, and the next-risk list.
Output: review-ready code and documentation for the team.Artifacts
The portfolio is designed to show not only PHP syntax, but mature decision-making: how the system is described, where boundaries live, what is out of scope, and which risks were named.
The best starting format: pick one project or one problem in your system, and I will walk through the decisions, trade-offs, and first risks worth closing.
NDA on request · VAT invoice · remote work · B2B · retainer or project