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.