Skip to content
Taking 2 projects at a timeBook a 20-min call
Book a 20-min callhello@theweb0.com

Private work

Clinic platform with 3D insole design

Internal tool. Screens recreated for confidentiality. No public link.

A web platform that takes a podiatry clinic from a foot scan to a finished insole, in the browser. Podiatrists and their staff keep patients and projects in it, shape each insole in 3D, and send it to a 3D printer or a CNC mill.

Recreated

Not a screenshot
Plotted from the same model as the editor further down. Orange rings: the five landmarks on each foot.
Role
Design and build
Used by
Podiatrists and clinic staff
Replaced
Desktop insole software that ties a clinic to one vendor
What comes out
STL files, G-code for a 3D printer, NC files for a CNC mill
Size
About 64,600 lines of code and 22 test files
Stack
Next.js 16, React 19, TypeScript, Prisma on Postgres, Better Auth with Google and Microsoft sign-in, Supabase Storage, Three.js with React Three Fiber, Tailwind 4, Vitest

Try it

The insole editor, to try.

I rebuilt how it feels for this page, with none of its code. Nothing you do here is saved, and Export ends in a demo state.
Demo Patient, AnnaRunning insoles
Version 3Back to project
Yaw 326° · Tilt 50° · 100%Drag to orbit · arrow keys · + and −Drag sideways to turn
View
Zoom
Analysis Point at the insole
Height under cursor–
EU 42 · 265 mm
4.0 mm
Heel cup height0–20 mm
12.0
12.0
Medial arch correction0–15 mm
7.0
9.0
Heel lift0–20 mm
0.0
3.0
Heel lift length
Sole width80–110 mm
94
94
Demo. Nothing is saved.Autosave is off here

Private work

Design editor

Recreated and live. Orbit the pair, move a slider, set a zone, re-pick the landmarks.

  • Turn it

    Drag the insoles. Or click the view and use the arrow keys, plus and minus.

  • Shape it

    Design tab. Heel cup, medial arch and heel lift have a slider per foot, and the surface follows while you drag.

  • Set the hardness

    Print tab. Split an insole into front, middle and back, then give each zone its own infill.

  • Mark the scan

    Basics tab. Re-pick the five landmarks in the order the tool asks for them.

Why it is here

What it replaced, and what it shows.

The clinic makes the insoles and stays their manufacturer. The platform is the tool it designs them with, and I don’t market it as a medical device.

What it replaced

It was built as an alternative to desktop insole software that ties a clinic to one vendor. Same job, in a browser tab.

What I won’t tell you

A result. I have no outcome figures for this one, so I claim none.

One product, many customers
Each clinic has its own workspace, address, users, plan and usage limits. A platform admin manages the clinics, their plans and the access keys new sign-ups need.
Roles and access
Admin and Staff roles, invitations by email or by code, and an audit log table in the data model. Patients, projects and designs are soft-deleted.
3D in the browser
Scans arrive as STL pairs. Staff mark five landmarks, then shape the insole with sliders that rebuild the mesh as they move, pads from a library, and a hardness per zone.
Software that talks to machines
A small agent on the clinic’s Windows PC turns a design into G-code for the 3D printer. It sits in the tray, reports a heartbeat and updates itself. Milled insoles leave as NC files, planned on an eight-slot fixture.

Screens

Seven screens, redrawn from scratch.

The fields, statuses and settings are the real tool’s. The clinic, the people and the files are made up.

Screen 1 of 7: Dashboard

Demo Clinic
Dashboard
Patients
Projects
Settings
Emma ExampleAdmin
Log out
Dashboard
Welcome back, Emma
Wednesday 11 November 2026
Patients
148
Projects
312
Printers
2
Recent projects
ProjectPatientStatusDate
Running insolesDemo Patient, AnnaIn progress10 Nov 2026
Work shoes, second pairTest Patient, TomDraft9 Nov 2026
Everyday pairSample, SaraCompleted6 Nov 2026
Football bootsExample, EvaIn progress5 Nov 2026
Hiking bootsPlaceholder, PieterArchived28 Oct 2026

Screen 2 of 7: Patients

Demo Clinic
Dashboard
Patients
Projects
Settings
Emma ExampleAdmin
Log out
Patients
9 of 148
Demo Patient, AnnaBorn 14 Mar 1988
3 projectsCreated 2 Sep 2026
Test Patient, TomBorn 2 Nov 1975
1 projectCreated 9 Sep 2026
Sample, SaraBorn 27 Jun 1994
2 projectsCreated 16 Sep 2026
Placeholder, PieterBorn 8 Jan 1969
4 projectsCreated 23 Sep 2026
Example, EvaBorn 19 Aug 2001
1 projectCreated 1 Oct 2026
Fictional, FinnBorn 30 Apr 1983
2 projectsCreated 8 Oct 2026
Specimen, SamBorn 11 Dec 1990
1 projectCreated 20 Oct 2026
Mock, MilaBorn 5 Feb 2012
2 projectsCreated 29 Oct 2026
Nobody, NoorBorn 22 Jul 1957
5 projectsCreated 4 Nov 2026

Screen 3 of 7: Project

Demo Clinic
Dashboard
Patients
Projects
Settings
Emma ExampleAdmin
Log out
ProjectsRunning insoles
In progress
Details
Status
In progress
Patient
Demo Patient, Anna
Practitioner
Emma Example
Date
3 Nov 2026
Created
3 Nov 2026, 09:12
Scans2 pairs
First scan 3 Nov 2026
Left foot
Right foot
Check-up scan 10 Nov 2026
Left foot
Right foot
Designs3 versions
Version 310 Nov 2026 · from version 2
Exported
Version 26 Nov 2026 · from version 1
Not exported
Version 13 Nov 2026 · first design
Exported

Screen 4 of 7: Landmarks

Demo Patient, AnnaRunning insolesLandmarks
Back to project
Auto-detect could not place the points on this scan. Click them in order.
ActionLeft foot

Click the 5th metatarsal head

Point 3 of 5. Then the lateral stability point and the heel centre.

BackCancelReset all points

Screen 5 of 7: Design editor

Demo Patient, AnnaRunning insoles
Saved 14:32Back to project
View
IsoTopFrontBackLeftRight
Left
Right
Transparent
Height map
Insole
3D model
Analysis
Height under cursor11.4 mm
BasicsDesignPrintExport
Production method
3D printEVA milling
ScansLeftRight
Re-pick points
Elements Left 1 · Right 1
SD 2-5Pad · left
RCTB 3Pad · right
Add element
SD 2-5 selected
Profile
FlatConvexConcaveBlended
Height5.0 mm
Floor
SoleScan
15°ScaleBox latticeEdit trimlineMirror

Screen 6 of 7: CNC planner

CNC planner
EVA millingBack to project
Fixture, from above3 of 8 slots · 2 pairs waiting
Milling mode
Single-sidedDouble-sided
Block height
32 mm34 mm37 mm
Tool
Cutter type
Ball nose
Diameter
6mm
Spindle
18 000rpm
Stepover
1.2mm
Feed XY
2 400mm/min
Feed Z
600mm/min
Safe Z
45mm

Click a slot to assign the next pair, or to clear it.

Screen 7 of 7: Settings

Demo Clinic
Dashboard
Patients
Projects
Settings
Emma ExampleAdmin
Log out
Settings
Plan
400
248of 400 scans and exports this period
Plans200400750Custom
Activity
STL uploads121
Exports127
Prints started96
Projects opened640
Designs opened471
Designs created139

Private work

Dashboard

The clinic’s counts and its five most recent projects. Every clinic has a workspace of its own.

Dashboardno projects
No projects yet
Dashboardloading
Scan uploadper file
Left footDrop an STL file
first-scan-right.stlUploading
first-scan-left.stlUploaded
first-scan-right.objOnly STL files are allowed
Autosaveeditor footer
Saved 14:32Saving
Save failed
G-codeproduce directly
Generating G-code (print agent busy)
G-code ready and downloaded.
G-codetimed out
No G-code this time
The print agent did not answer in time.
Try again
Print agentthree states
ConnectedUpdate availableSlicer not found
Print agentmissing
Print agent not detected. Click to install.

Private work

States

What the tour does not stop on: empty and loading, the ends of an upload, autosave, the G-code job, the print agent.