Skip to content
Built by Clérise
← All work
Legacy rescueIn progress

FEW Cutting Tools

A website, a shop, a sales dashboard and a factory calculator on one API.

French Engineering Works makes cutting tools in South Africa. I am rebuilding their web presence as one Laravel API with four Vue apps, and moving their factory calculation programs off an old Windows XP machine before it gives up.

Role
Design, build and deployment
Stack
  • Laravel 13
  • PostgreSQL 17
  • Redis
  • Sanctum
  • Vue 3
  • TypeScript
  • Tailwind CSS v4
  • Docker
  • Cloudflare Tunnel
Links
few.co.za (current site)Demo (access on request)

The demo is behind a login. Ask me for access.

The problem

FEW had a WordPress website, a printed catalogue, quote requests by e-mail and phone, and a set of factory calculation programs written in Eloquence BASIC. Those programs run on a single Windows XP computer. Very few people still read Eloquence, and nobody wants to find out what happens when that machine stops booting.

What I built

One Laravel 13 API on PostgreSQL and Redis, with four Vue 3 + TypeScript single-page apps on top of it:

  • The website, with branches, office hours, FAQs and downloads served from the API.
  • An online shop: the printed catalogue as data (one file per catalogue page), search by name, catalogue page or FEW code, a quote list instead of a cart, and customer accounts that show the status of each request.
  • A sales dashboard where staff work through quote requests, edit them, and keep internal notes. Every change is kept in the request’s history with who made it and when.
  • A staff calculator that runs the ported factory programs on the server, behind a login.

The hard part

The calculator has to give exactly the answers the old programs give, bugs included. So I documented how Eloquence rounds and reads input before porting anything, and I port one program at a time, each with tests against the original’s output.

Where the old code looks wrong, I don’t quietly fix it. Each suspicion goes on a findings list for FEW to decide, from a missing comma in a data list to a variable that is never set. The number field even accepts sums like “16 + 0.381”, because that is how the staff typed into the old program.

Engineering notes

  • Six repositories: API, four frontends and devops, with one-command local setup in Docker.
  • Separate PostgreSQL schemas per domain (content, accounts, catalog, sales, calculator).
  • Sanctum cookie auth with separate guards for customers and staff; admin rights enforced by the API.
  • Rate-limited public endpoints and a honeypot on the contact form.
  • Production images behind a Cloudflare Tunnel; a push to main deploys the demo.

Designed and built by Clérise with Vue 3 and TypeScript.

Read the sourceSouth Africa · remote