
Victor Oluwayemi
I build reliable backend systems and APIs. Focused on distributed systems, database optimization, and writing code that scales without drama.
Featured Project
Retry Engine
Resilient HTTP request retry engine
External API calls fail unpredictably — timeouts, 5xx errors, transient network blips. A naive caller either gives up too early or spins in a tight loop burning resources. Needed a resilient system that automatically retries failed requests with sane backoff, tracks every attempt with full visibility, and surfaces failures when they're truly terminal.
Preventing double-execution in a polling worker
The worker polls every 500ms for due requests. If a request execution takes longer than the poll interval, the same request could be picked up twice. Solved with a lock mechanism — before executing, the request's nextRetryAt is set 30s into the future (LOCK_DURATION), removing it from the due set. The lock is released when execution finishes and the next retry is scheduled with the real computed delay.
┌──────────┐ ┌─────────────┐
│ Client │────▶│ Express │
│ (curl) │ │ App │
└──────────┘ └──────┬──────┘
│
┌─────────▼─────────┐
│ Controller │
│ (validation) │
└─────────┬─────────┘
│
┌─────────▼─────────┐
│ Service │
│ (business logic) │
└─────────┬─────────┘
│
┌─────────▼─────────┐
│ SQLite │
│ requests + │
│ attempts tables │
└─────────┬─────────┘
│
┌─────────▼─────────┐
│ Worker (500ms) │
│ polls due → │
│ execute via Axios│
└───────────────────┘POST/requestSubmit a new request for retry processing
GET/requests/:idRetrieve request with full attempt history
GET/requestsList all requests, optionally filtered by status
Skills
RESTful versioned endpoints with validation pipelines, normalization rules, and rate-limited public access
PostgreSQL with Prisma ORM, SQLite with better-sqlite3, schema design with compound indexes
Redis-backed rate limiting with graceful degradation fallback during cache outages
Worker-based polling loop for retry execution with configurable intervals
Jest unit tests for validators, backoff algorithms, executor logic, and end-to-end scenarios
Structured logging with Pino, request-level logging middleware, log levels per environment
Exponential backoff retry queue with jitter, lock-based scheduling, and due-request polling
API docs with endpoint tables, error reference, natural language parsing logic, and troubleshooting guides
Projects
- -Built request lifecycle management with full status transition state machine
- -Implemented exponential backoff with jitter for retry scheduling
- -Designed SQLite schema with compound indexes for efficient due-request polling
- -Built worker-based polling loop with lock mechanism to prevent double-execution
- -Built rule-based NLP parser that translates plain English queries (e.g. 'young males from nigeria') into structured filters
- -Designed PostgreSQL schema with Prisma ORM supporting combined filter, sort, and pagination queries
- -Implemented idempotent database seeding for 2026 profiles with UUID v7 primary keys
- -Deployed live API endpoint with CORS, comprehensive error handling, and full README documentation
Open Profile
Public username validation endpoint acting as the single source of truth for format rules, blocked keywords, and real-time availability checks — built for a team platform.

- -Designed validation pipeline: normalization (trim, lowercase, reject ambiguous Unicode) → format rules (3-30 chars, letters/numbers/hyphens only) → keyword blocklist → DB availability check
- -Implemented Redis-backed rate limiting at 60 req/min/IP with graceful degradation fallback during Redis outages
- -Authored the RFC covering problem statement, API contract, cross-track impact assessment, risk mitigations, and trade-off documentation
What I Learned
Ship Confidently
Learned to ship from dev to staging to production, preventing unexpected breakage. Also learned to make database migrations idempotent so they can be run safely across environments.
API Design First
Sketching endpoints and thinking through edge cases before writing code leads to cleaner contracts and fewer PR debates about response formats.
Async by Default
Working with retry queues and background jobs changed how I decouple services — I now reach for async processing instead of blocking on every request.
Testing Matters
Tests ensure your project always works. Regression tests guarantee what worked last week still works today. Also learned nock for HTTP mocking and fact-check for assertions.
Get in Touch
Open to backend engineering roles and consulting on distributed systems, API design, and database architecture.