Work

Projects focused on architecture, boundaries, and maintainability. Each is a study in making deliberate trade-offs.

Subscription Management Service

A production-grade modular monolith. Engineered for strict boundaries, predictable states, and full-stack observability.

What It Is

A complete backend system for managing recurring subscriptions—handling sign-ups, automated billing, renewal scheduling, and notifications. Behind the scenes, it utilizes a robust asynchronous worker pipeline (Asynq/Redis) to process thousands of lifecycles without human intervention, all monitored by an enterprise-grade telemetry stack.

Why It Exists

Subscription state bugs cost real money. When billing systems are built as an afterthought, users get charged after cancelling or stuck in ghost states. I built this architecture to mathematically prove that invalid states can be made impossible at compile-time, and to demonstrate that defensive testing and distributed tracing should be first-class architectural citizens.

Key Decisions

  • Interface SegregationService interfaces are strictly split into External (API) and Internal (Workers), physically preventing HTTP controllers from triggering background logic.
  • Database-Agnostic TransactionsTransactions are executed via an injected TxnFn closure, allowing hermetic service unit tests without importing MongoDB drivers into the domain.
  • Spoofing-Resistant IP ExtractionThe system traverses X-Forwarded-For strictly right-to-left to extract the true client IP, actively ignoring attacker-controlled prepended headers.
  • Asynchronous Task ChainingDomain mutations and side effects are decoupled. If the SMTP server crashes, Asynq safely retries the email task without re-running the billing transaction.
  • Deterministic Clock InjectionTime is injected via a NowFn closure rather than relying on global wall-clock drift, enabling mathematically perfect boundary testing for subscription expirations.

Trade-offs & Scope Management

Senior engineering requires deliberate architectural constraints. To maintain boundary integrity, I explicitly enforced:

  • Modular Monolith over MicroservicesStrict domain separation ensures it can be split cleanly later, but a single deployment binary avoids premature network latency and orchestration overhead today.
  • Hermetic Reliability over SpeedImplemented strict trace-correlated logging and isolated Testcontainer database setups. It takes slightly longer to build, but completely eliminates flaky tests.
  • Banned Cross-Domain ReadsServices are physically restricted from querying other domains' repositories to prevent schema coupling and enforce strict data boundaries.

Go · MongoDB · Redis · Clean Architecture · Background Workers


Minly: Zero-Dependency Go & CI/CD Pipeline

A brutalist study in standard-library routing, interface-driven storage, and automated release cycles.

Minly: Zero-Dependency Go & CI/CD Pipeline architecture diagram

What It Is

An end-to-end URL shortening service. Instead of relying on heavy web frameworks, I built this to test the absolute limits of Go's standard library (net/http), explicit middleware orchestration, and containerized deployment pipelines.

Why It Exists

I wanted to build something real, not just follow tutorials. The goal was to own the full cycle: design → build → deploy → maintain. By keeping scope small, I could focus on doing each part properly rather than building half of something impressive.

Key Decisions

  • Zero-Magic RoutingNo heavy web frameworks. Handlers and middleware are explicit, predictable, and rely solely on Go's standard library and chi.
  • Interface-Driven StorageThe UrlStore interface completely abstracts MongoDB. The storage layer can be swapped without touching a single line of business logic.
  • Release-Triggered CI/CDEngineered a fully automated GitHub Actions pipeline. Code is never deployed on merge; it is deployed on tagged releases, providing a clear audit trail and immediate rollback targets.
  • Optimized ContainerizationUtilized multi-stage Docker builds to dramatically reduce the final image size and attack surface.
  • Graceful ShutdownServer listens for OS signals, finishes in-flight requests, then closes connections cleanly.

Trade-offs & Scope Management

Senior engineering requires knowing what NOT to build. For this architectural study, I explicitly scoped out:

  • Rate Limiting & CachingPremature optimization for a deployment-focused study.
  • AuthenticationUnnecessary for the bounded context of this specific API.
  • AnalyticsScope creep. The goal was lifecycle ownership, not feature bloat.

Go · MongoDB · GitHub Actions · Docker