Build theinterface.Ship thesystem.

I design and build software from the interface to production.

Eight frontend engineers · roughly 30 repositories · React to delivery

Selected work

Project studies of enterprise security, telecom systems, internal tools, and developer tooling. Each one explains the system, my role, and the work behind it.

Project ledger

More systems. Different problems.

Telecom, operations, automation, and the tools around the work. Open a project to see my contribution.

Original interface studies — not production screenshots.

Work experience.

Software Engineer Team Lead

DeepSafer

- Present

  • Lead technical delivery for eight developers, translating product requirements into application designs, implementation tasks and sprint priorities while remaining hands-on with core features.
  • Define application structure and frontend/backend boundaries; develop Django services and React interfaces and resolve architecture and integration issues across the stack.
  • Direct engineering work across endpoint protection, network discovery and security tooling, coordinating feature implementation with developers and project managers.
  • Design how the team works with AI coding agents: prepare developer environments, define orchestration workflows, and author reusable skills and project rules.
  • Manage developer environment setup and Python automation; use Git and GitLab to coordinate code changes and shared engineering workflows.
  • Review implementations, mentor engineers, resolve frontend/backend defects and refactor legacy components to improve maintainability and support continued feature development.

Frontend Developer (Part-time)

SGSTel

- Present

  • Own frontend feature implementation in React, Next.js and Tailwind CSS, translating product requirements into responsive application screens and reusable components.
  • Integrate interfaces with backend services through gRPC, coordinate frontend/backend behavior and investigate integration defects during feature delivery.
  • Improve usability and frontend performance through component refinement, responsive layouts and bug resolution, working with product and engineering teams.

Full Stack Software Engineer

DeepSafer

-

  • Delivered end-to-end features for enterprise cybersecurity applications, implementing Django backend functionality and React interfaces from requirements through frontend and backend integration.
  • Investigated and resolved critical defects across application layers, tracing issues between frontend behavior and backend logic to restore reliable feature operation.
  • Refactored legacy code and improved application architecture, strengthening maintainability and performance while supporting continued development of the cybersecurity platforms.
  • Contributed to shared code quality standards and implementation conventions, helping the team extend existing products with consistent, maintainable functionality.

Frontend Engineer

DeepSafer

-

  • Built responsive React interfaces for enterprise cybersecurity platforms, translating product requirements and UI designs into interactive screens and user workflows.
  • Developed reusable components and modular frontend structures aligned with design-system conventions, enabling shared interface patterns to be reused across product features.
  • Collaborated with design and product teams to improve usability, accessibility and frontend performance, refining components and responsive layouts to address product feedback.

From interface to release.

Four connected parts of my work. Follow the feature, or choose where to look.

Explore the engineering layers

Interface

Frontend engineering

React and Next.js are the centre of my work. I also use TanStack Start and Astro when their trade-offs fit the product.

React · Next.js · TypeScript · TanStack Start · Astro

Illustrative feature · saved viewsStart with what people use.

The happy path is only one state.

Workspace
Saved views
Open items
Status: openOwner: me
Review the interfaceReady
Connect the serviceIn review
UI / STATESDesigned for the in-between
LoadingEmptyErrorKeyboard

Services

Backend and services

I follow features through Django and Flask services, gRPC boundaries, PostgreSQL, and the failure states users eventually see.

Django · Flask · Python · gRPC · PostgreSQL · Lua

Illustrative feature · saved viewsGive the interface a contract.

Typed inputs. Explicit failure states.

saved_view.proto

rpc GetSavedView (ViewRequest)

returns (SavedView);


message ViewRequest {

string view_id = 1;

string owner_id = 2;

}

Response shape{ name: "Open items", filters: ["open"], can_edit: true}
Validate at the boundary
InputPermissionFailure

Agents

AI-agent workflows

I build project skills, shared rules, and bounded MCP tools for Codex and Claude, then keep linting, type checks, E2E tests, and human review in the path.

Codex · Claude · Cursor · Qoder · Ollama · OpenRouter

Illustrative feature · saved viewsGive the agent useful context.

Project rules in. Reviewed changes out.

Project context
  • ↳ AGENTS.md
  • ↳ skills/system-design.md
  • ↳ components / tokens
System-design skillThe rules travel with the task.
Checks before review
TypesLintE2E
Human reviewThe agent does not approve its own work.

Delivery

DevOps and release work

I handle the Docker, GitLab CI, nginx, scripting, and release troubleshooting needed to get a change beyond a local browser.

Docker · GitLab CI · nginx · CI/CD · Automation

Illustrative feature · saved viewsCarry the change into a release.

Repeatable checks, with a human in the loop.

release / pipeline

$ docker build .

→ compile application

→ package runtime

$ run checks

→ types · lint · e2e

› human review

Release path
  1. Build
  2. Verify
  3. 03Review
  4. 04Release
Ready for handoffContainer · configuration · rollback plan
The diagrams trace each example from the interface through the services behind it.

Scroll to move through the layers. Select one to explore at your own pace.

You’re in control. Choose any layer above.

Bring the real problem.

Tell me what you are building, where the workflow breaks, and what the team is working around. A rough first message is enough.

Start with the context

No polished brief required.