Skip to main content
godwin@portfolio ~ (zsh)
runtime v2.0ready

Product Engineer

building products people use

I build user-facing software end-to-end across product interfaces, backend systems, DevOps, AI workflows, and the feedback loops that make software better.

Project Work

Selected Projects

Adaptive learning product01

In Progress

StudyLoopAI

Turns scattered course material into a guided study workspace where students can upload files, ask questions with citations, practice, and see what to review next.

Problem

Students rarely struggle because they lack content; they struggle because notes, slides, readings, and deadlines are scattered, and they cannot quickly tell what they understand.

Product

A learner uploads course files or web content, organizes it by course and week, then gets grounded chat, summaries, Notes, quizzes, cuecards, concept maps, and adaptive recommendations.

What I built

  • End-to-end upload and ingestion flows for multiple content types, chat with content, citations, multi-model, tools and artifacts generation and consumption.
  • Retryable background jobs that index uploaded material, track progress, and generate study assets without blocking the user.
  • AI generation paths for summaries, quizzes, cuecards, Golden Notes, open questions, concept maps, and grounded chat responses.
  • Onboarding, usage quotas and limits, billing, analytics, caching, rate limits, and protected multi-tenant data access.
Next.jsReact 19SupabasePostgreSQLpgvectorRLSAgentic RAGTrigger.devVercel AI SDKLlamaCloudRedisPolar.shPostHogAdaptive Learning
AI research assistant02

Completed

DeepSearch

Turns research-heavy questions into a visible research process that plans searches, gathers sources, streams progress, and answers with evidence.

Problem

A normal chat answer can sound confident even when it lacks fresh context, shows no work, and gives the user no source trail to inspect.

Product

The app signs users in, rewrites the question into search plans, gathers web context, streams each research step, decides when it has enough information, and saves the sourced conversation.

What I built

  • An agent loop that plans searches, runs web retrieval, evaluates whether more context is needed, and then writes the final answer.
  • Streaming chat UX with action steps, resumable responses, and progress updates so users can follow the research instead of waiting on a black box.
  • Authentication, per-user usage limits, global API protection, chat persistence, structured logging, and monitoring.
  • Evaluation and observability hooks so answer quality, tool behavior, and regressions can be inspected instead of guessed.
Next.jsTypeScriptVercel AI SDKGeminiAgent LoopWeb SearchStreaming UXResumable StreamsNextAuthPostgreSQLDrizzleRedisLangfuseEvalite
Full-stack product patterns03

Completed

React Node tRPC Patterns

Shows how a full-stack TypeScript product can keep forms, API contracts, auth, and responsive data updates predictable as the app grows.

Problem

Full-stack apps often drift: forms validate one shape, APIs expect another, protected flows grow inconsistent, and UI updates lag behind user actions.

Product

A Basic clone of X (Twitter) app demonstrates profiles, experiences, attendance, comments, favorites, tags, search, notifications, image uploads, and protected user flows.

What I built

  • Shared Zod schemas for forms and server inputs so the client and API agree on the same validation rules.
  • Protected tRPC procedures, JWT refresh flows, output validation, and reusable server middleware for authenticated workflows.
  • Optimistic UI updates, cache rollback, infinite feeds, filtering, image uploads, and targeted invalidation.
  • A client, server, and shared package structure that lets reviewers trace a feature from route to database and back to the UI.
React 19tRPCNode.jsExpressTanStack RouterTanStack QueryDrizzleSQLiteZodJWT AuthOptimistic UIInfinite ScrollFile UploadsMonorepo
DevOps and deployment architecture04

Completed

Fleets Microservices

Packages a fleet tracking system into separate deployable services so vehicle data can be simulated, queued, processed, stored, and viewed reliably.

Problem

A fleet system has several moving parts that should run independently: a web app, API gateway, tracker, simulator, queue, and database.

Product

Kubernetes manifests deploy the full local environment, expose the web UI and queue console, and keep the internal API, tracker, and database private inside the cluster.

What I built

  • Kubernetes workloads for the Angular web app, API gateway, position simulator, position tracker, ActiveMQ, and MongoDB.
  • Service boundaries that expose only the user-facing web UI and queue console while keeping internal traffic on ClusterIP services.
  • Persistent MongoDB storage so vehicle state can survive pod restarts in a local cluster.
KubernetesSpring BootAngularActiveMQMongoDBMicroservicesNodePortClusterIPPersistent VolumeskubectlDevOps
Technical Profile

Skills & Experience

A focused stack across product interfaces, backend services, AI-enabled workflows, and deployment. Experience entries show the tools used in each role.

Product Interfaces

React and Next.js interfaces with reusable components, clear product flows, and motion where it improves comprehension.

Backend & Data

Backend routes, typed contracts, database modeling, caching, and integration work.

AI Workflows & Delivery

LLM workflows, RAG patterns, CI/CD, containers, cloud services, and the deployment work needed to ship reliably.

Languages

TypeScriptPythonGolang

Frontend

ReactNext.jsReact NativeTailwind CSSShadcn UIFramerGSAPDesign SystemsComponent Libraries

Backend

Node.jsExpressFastAPIGinRuby on RailstRPCREST APIsGraphQLZodBackground Jobs

Databases

PostgreSQLSQLiteRedisSupabaseDrizzle ORMpgvectorRLS

Infrastructure

DockerKubernetesTerraformAWSVercelGitHub ActionsGitLab CI/CD

Testing

Unit TestingIntegration TestingE2E TestingTest Driven Development