Skip to main content

Case Study

Updated: 2025-08-10

Abe Garage — Management System

A comprehensive garage operations platform managing customers, vehicle registries, repair orders, and role-based staff allocation with an Express.js MongoDB backend and a React SPA frontend.

Scope: full stackBackend EngineerDuration: 3 monthsYear: 2024Architecture: platform

Key Engineering Facts & Architecture Specs

Structural Invariants

roles

Fact

Manager, Employee, Customer

database

Fact

MongoDB / Mongoose

service registry

Fact

Vehicle & Order Registry

architecture

Fact

Express REST + React SPA

Architecture View

Processing state: architecture signal graph is initializing...

Architectural Decision Log

Trade-Off Analysis

Cookie-based JWT (httpOnly cookie) for authentication

httpOnly cookies prevent client JavaScript access (mitigates simple XSS extraction). Easier to integrate with browser-based clients and same-site policies.

Trade-off: Increases CSRF surface unless additional CSRF protections are added; requires correct sameSite/secure settings for cross-site use; cookie approach is stateful from a browser perspective (but token itself is stateless).

Mongoose ODM for persistence

Mongoose simplifies schema definition, population of refs, and common query patterns used across services.

Trade-off: Adds abstraction overhead and can hide inefficient queries; harder to fine-tune raw queries vs native driver.

Synchronous email sends from service layer (with production short-circuit)

Simpler implementation with immediate feedback during dev/test; production safety avoids runtime failures due to expired refresh tokens.

Trade-off: Synchronous calls increase latency for write operations; no background retries or delivery guarantees beyond Nodemailer response; real production should use a queue or transactional outbox.

Architecture Narrative

Challenge

Provides a single back-end service to operate an auto-repair shop workflow (register customers, add vehicles, create service orders, assign employees, notify customers) and administrative staff management.

Solution

Monolithic single-process Node.js application (Express) with a layered code organization (middleware → controllers → services → models) and direct integration to MongoDB via Mongoose. Packaged with Docker for deployment.

Result

Key measurable signals: endpoints (~25), models (5), estimated_loc (~1.2k).

Trade-off Matrix

DimensionSelected OptionImpactCompromise
Authentication storagehttpOnly JWT cookieReduced exposure to JS-based token theft (XSS), seamless browser integrationRequires CSRF mitigations; cookie policies must be correct for cross-site scenarios
Email delivery modelSynchronous sends in service layer, short-circuit in productionSimple implementation and immediate developer feedback in dev/testAdds latency to write operations and has no retry/DLQ; not robust under load

Failure Modes & Resilience Analysis

Degradation Protocol

Failure Path & Recovery Invariants

Possible failure scenarios: MongoDB connection failure (wrong CONNECTION_STRING or network outage)

What I'd Do Differently & Evolution

+

Add an asynchronous job queue (Redis + BullMQ or RabbitMQ) for email and other long-running side effects; include retry/backoff and dead-lettering.

+

Add structured logging, metrics and tracing (e.g., Winston/Elastic or Prometheus + Grafana) and an error aggregation tool (Sentry) to produce measurable telemetry.

Source Repositories & Access Endpoints

Verified Codebases

Estifanos Kebede

System Engineer & Full Stack Developer

Social

SYSTEM: ESTIFANOS.PORTFOLIO

STATUS: OPERATIONAL

LAST_UPDATED: 2026

© 2026 Estifanos Kebede. Built with precision and intent.