Engineering Lab
Experiments with a technical purpose
Not a trophy shelf — a working log of AI, APIs, realtime, and systems work. Statuses are honest: completed, in progress, experiment, or planned.
- AI / LLMIn progress
Portfolio knowledge assistant
Streaming assistant that answers only from a structured portfolio knowledge base — not a generic chatbot.
- Problem
- Visitors ask project and stack questions; a free-form LLM would invent experience unless grounded.
- What I learned
- Grounding + hard system rules beat long prompts. Streaming keeps the UI feeling responsive without waiting for full completions.
- Technology
- Next.js Route HandlersGroqServer-side retrievalSSE-style streaming
- RAGExperiment
Structured knowledge retrieval
Category-tagged knowledge chunks with keyword scoring, shaped so vector RAG can plug in later.
- Problem
- Dumping the whole site into one prompt wastes tokens and still hallucinates.
- What I learned
- Small, labeled chunks with explicit categories make answers auditable and upgradeable to embeddings later.
- Technology
- TypeScriptSectioned KBServer-only retrieval
- APIIn progress
Demo API playground
Interactive request → process → response demo with validation and rate limiting — no paid external calls.
- Problem
- Portfolios claim “API experience” without showing a safe, inspectable request/response path.
- What I learned
- Mock/demo responses are the right default when a live LLM call would create uncontrolled cost.
- Technology
- Route HandlersInput validationIn-memory rate limit
- RealtimeIn progress
Realtime collaboration surfaces (Zumelia)
LiveKit-backed realtime media/collaboration paths inside a social product stack.
- Problem
- Meet / collaborate flows need low-latency sessions without reinventing media infrastructure.
- What I learned
- Separating auth/data (Supabase) from realtime media (LiveKit) keeps responsibilities clear.
- Technology
- LiveKitNext.jsSupabase
- APIIn progress
Payment orchestration (Zumelia)
Paystack-integrated payment flows for earn/collaborate product motions.
- Problem
- Client-only payment confirmation is unsafe; webhooks and server verification are required.
- What I learned
- Treat payment success as unverified until the server confirms — never trust the browser alone.
- Technology
- PaystackServer-side verificationSupabase
- AI / LLMIn progress
On-product AI (Zumelia + Groq)
Groq-powered AI features inside Zumelia, kept server-side so keys never hit the browser.
- Problem
- Shipping AI features without leaking keys or letting prompts invent product facts.
- What I learned
- Provider-agnostic adapters make it easier to swap LLM vendors without rewriting product UI.
- Technology
- GroqNext.jsServer routes
- WebhooksExperiment
Webhook verification patterns
Patterns for validating inbound webhooks (payments, automation) before mutating data.
- Problem
- Unverified webhooks are an open write path into your database.
- What I learned
- Idempotency keys + signature verification prevent duplicate charges and forged events.
- Technology
- HMAC / signature checksIdempotencySupabase
- MCPPlanned
MCP-aware agent tooling
Exploring Model Context Protocol so agents can call tools with clear boundaries.
- Problem
- Agents without constrained tools become unpredictable and hard to secure.
- What I learned
- Explicit tool contracts beat free-form function calling for production-minded demos.
- Technology
- MCPTool schemasAgents
- CachingIn progress
Cached GitHub activity feed
Public GitHub profile/repos fetched server-side with caching so the portfolio does not hammer the API.
- Problem
- Live GitHub widgets can fail rate limits and slow first paint if called naively.
- What I learned
- Cache + fallback empty states are more professional than a broken widget.
- Technology
- GitHub RESTNext cacheGraceful degradation
- PerformanceExperiment
Portfolio performance budget
Keeping heavy AI/interactive surfaces off the home LCP path via route splitting and lazy UI.
- Problem
- Engineering demos can destroy Core Web Vitals if loaded on every page.
- What I learned
- Interactive engineering features belong on dedicated routes, not the marketing hero.
- Technology
- App Routerdynamic importImage optimization