← Back to all projects

work project

VavaStone - Inventory, Sales & Delivery for Natural Stones Industry

VavaStone - Inventory, Sales & Delivery for Natural Stones Industry

Services

  • Fullstack development (Go + React + TypeScript)
  • OpenAPI contract definitions and typed client generation
  • Local Kubernetes dev environment standardisation
  • Inventory and order management module development
  • Engineering hiring, structured onboarding, and mentorship

Deliverables

  • Type-safe API contracts between microservices — integration bugs caught at compile time
  • Makefile-based local dev setup — new engineers productive on day one
  • Inventory and order management feature improvements
  • Hiring pipeline and onboarding process for distributed engineering team

Challenge

VavaStone is an international platform for natural stone inventory, sales, and delivery — a domain with complex logistics: multi-warehouse stock, weight-based shipping, multi-currency pricing, and multinational customer workflows. The engineering team was distributed across several countries. By the time I joined, the Go + React microservice architecture was functional but had accumulated friction: service boundaries were implicit, local development required significant setup, and onboarding new engineers took too long.

Discovery

A few weeks of codebase exploration and team conversations identified three root causes. First: services communicated via untyped JSON with no shared schema, making integration bugs subtle and hard to catch before production. Second: the local Kubernetes environment required manual steps that weren't documented, so each engineer had a slightly different setup. Third: the hiring and onboarding process was informal — knowledge lived in people's heads, not in docs.

Options Considered

  1. Introduce a service mesh and auto-generated clients — too heavy for the team size; would have taken months to migrate existing services.
  2. Add OpenAPI specs and generate typed clients per service — chosen as the pragmatic middle ground. Explicit contracts, generated types, no new infrastructure.
  3. Migrate to a monorepo with shared type packages — deferred; viable long-term but too disruptive short-term.

Decision

Introduce typed API contracts incrementally as services are touched, rather than a big-bang migration. Simultaneously: document the local dev environment into a repeatable setup script, and formalise the onboarding process with a written checklist and a designated buddy for new hires.

Implementation

Added OpenAPI definitions to the services I worked on and generated TypeScript client types used by the React frontend. This caught a class of bugs at compile time that previously only surfaced in staging. Refactored the local Kubernetes setup into a documented Makefile-based workflow — `make dev-up` instead of six manual commands. New engineers could run the full stack locally on day one.

On the product side, delivered inventory and order management module improvements: stock level display across warehouses, order status tracking, and delivery cost calculation flows. Participated actively in hiring: wrote job descriptions, conducted technical interviews, and ran the first structured onboarding for two new engineers.

Outcome

Integration bugs between services dropped measurably as typed contracts caught mismatches at build time. New engineer ramp-up time shortened from weeks to days with the documented dev environment. The team shipped features at a noticeably higher velocity in the quarters following the tooling improvements.

Demo

The video below demonstrates the result of enforcing strict type alignment with API calls — type mismatches surface as compile-time errors automatically, eliminating an entire category of runtime integration bugs.

Intermediate R&D recording exploring AI-assisted backend-to-frontend type generation — an experiment in automating the type-alignment workflow that was previously done manually.

Early alpha of the reporting system prototype — order and inventory analytics built on top of the type-safe data layer.

Open for contract collaboration

I am available for contract-based collaboration. If you have an interesting project idea, schedule a call via Calendly.

Schedule a 30-min call