SagaraHarasgama · Consulting
ServicesWorkAboutInsightsContactDiscuss a Project
Oslo Felgretting AS — wheel & rim specialist, Norway

Solo-building and running Oslo Felgretting's ticketing platform for four years

Sole engineer for a job-ticketing and workflow platform used daily by Oslo Felgretting, a Norwegian wheel & rim specialist, for four years and counting — requirements, build, and every release since, on a lean, serverless AWS architecture.
ROLE

Freelance Full-Stack Engineer — sole engineer, requirements through deployment

TIMEFRAME

4+ years, ongoing

Job tracking

Owner's memory & handwritten notes

Structured digital tickets, searchable by ID/name/mobile

Customer history

Not tracked systematically

2,000+ customer records retained and searchable

Context

Oslo Felgretting is a wheel and rim repair shop near Oslo — straightening, welding, powder coating, refinishing, tyre fitting. Before this platform, job tracking lived in the owner's head and handwritten notes, not in any shared system. There was no existing software to migrate from — this was a from-scratch build, working directly from the owner's description of how a job actually moves from drop-off to delivery, plus a Business Analyst and a PO/Customer Success collaborator on the non-engineering side.

The challenge

A repair shop takes in multiple jobs per visit — straightening, welding, refinishing, a tyre swap — each with its own rim/tyre specs, vehicle details, and expected-vs-actual delivery date, for a customer who may come back repeatedly over years. None of that was structured anywhere. The system needed to be simple enough that in-house staff would actually use it instead of reverting to notes, and cheap enough to run indefinitely for a small business rather than something that would eventually get migrated away from over hosting cost.

Approach

Ran requirements directly with the business owner rather than against an existing system — no legacy software, no data migration, just a shop's real workflow translated into a schema.

Designed a multi-tenant GraphQL schema (Company → Ticket/Service/User) from day one, so the same platform could scope data per company rather than being hard-coded to one business.

Chose a genuinely serverless, pay-per-use AWS architecture deliberately, not by default — Cognito for auth, AppSync/GraphQL for the API, Lambda for business logic (ticket creation, invites, notifications, batch job fetches), DynamoDB and S3 for data and file storage. For a business this size, an always-on server would mean paying for idle capacity almost all the time; the serverless footprint keeps monthly infrastructure cost negligible even four years in.

Recovered from a production database rollback a couple of years into the engagement by re-provisioning a versioned set of tables rather than attempting a risky live in-place fix — kept the shop trading with zero data loss and no extended downtime.

What shipped

Multi-job tickets: each visit can carry several jobs against one ticket, each with rim/tyre specs, vehicle details, and expected vs. actual delivery dates.

Admin dashboard: ticket/job tracking, analytics on volume and trends, customer management, and role-based user management with an email invite flow.

Self-serve configuration: job types, brands, and sizes are editable by the shop itself through a settings screen — no code change needed for day-to-day catalogue updates.

Search across ticket ID, customer name, mobile number, and status, plus batch operations on jobs; a dedicated email-sending Lambda handles ticket-update notifications.

Scale of ownership

4+ years

In continuous production use

5–10

In-house users

60–80

Tickets logged monthly

2,000+

Customer records tracked
Lessons

The hard part was never the AWS wiring — it was translating a shop owner's memory of how a job actually flows into a schema simple enough that staff would use it instead of reverting to notes. Four years of near-continuous small releases on a genuinely serverless architecture, sized to the business's real usage rather than provisioned for growth that may not come, is what's kept this affordable enough for a small business to run indefinitely.

Technology
React
Redux
AWS Amplify
AWS Cognito
AWS AppSync (GraphQL)
AWS Lambda
Amazon DynamoDB
Amazon S3
Ant Design
TanStack Query
Vite
Have a codebase or product with similar problems?

Tell me what you're working on and where you're stuck. I'll determine whether I can help.

Discuss a Project