v40.0 ยท Full Documentation

WIM โ€” Watchmaking
Inventory Manager

A complete inventory, procurement, and production tracking system built specifically for watchmakers. Manage parts across multiple calibres, track orders, plan production, and sync across devices in real time.

๐Ÿ‘‹Introduction

WIM is a Progressive Web App (PWA) โ€” it runs entirely in your browser, works offline, and can be installed on any device like a native app. All data is stored locally in your browser's IndexedDB database and optionally synchronized to a cloud server you control.

ARCHITECTURE

PWA + PHP Sync

STORAGE

IndexedDB (Local)

VERSION

v40.0 โ€” "Cloud Sync"

What WIM manages

Key concepts

TERM

MEANING

Movement

A watch calibre or model you track (e.g. "ETA 2824-2"). Each movement has its own parts list, production target, and locations.

Part

A single component type. Has a reference number, stock across locations, quantity needed per watch, and metadata.

Location / Box

A physical storage container (e.g. "Box 3", "Shelf A"). You define these per movement.

Assembly

A pre-assembled group of parts (e.g. a riveted wheel pair). Contributes to individual part stock counts.

Neutres

Parts shared across calibres or not specific to production (e.g. crown gaskets, generic screws). Flagged separately to focus alerts on production-critical parts.

Can Make

The maximum number of watches you can currently produce with parts on hand โ€” limited by your lowest-covered component.

๐Ÿš€Quick Start

Get from zero to managing your first calibre in 10 minutes.

1

Open the app

Navigate to https://wim.tl-watchmaking.com in any modern browser. The app installs a service worker automatically for offline use. You can also install it as a PWA via your browser's "Add to Home Screen" or "Install App" option.

2

Create your first Movement

On the landing page, click + New Movement. Enter the calibre name (e.g. "ETA 2824-2"). Set your annual production target and click Create.

3

Set up Locations

Click into your movement, then go to View โ†’ Locations. Add each physical storage box or shelf (e.g. "Box 1", "Box 2", "Shelf A"). These become the columns in your inventory table.

4

Add Parts

Click + Add Part in the Inventory tab. Fill in the part name, reference number, quantity needed per watch, and optionally a photo. Repeat for all components of the calibre โ€” or use Import from Excel to bulk-import.

5

Enter initial stock

Click the ๐Ÿ“ฆ Receive button on any part, select "Unregistered Receive", choose the location, and enter your current stock. Repeat for each part and location.

6

Enable Cloud Sync (optional)

Go to the landing page โ†’ โ˜๏ธ Cloud Sync. Enter your server URL and token (see the Cloud Sync section). Your data will now sync automatically.

๐Ÿ—บ๏ธNavigation




https://wim.tl-watchmaking.com

๐Ÿ“ฆ Inventory

๐Ÿ›’ Purchasing

๐ŸŽฏ Production

๐Ÿ“Š Activity

๐Ÿ—‘๏ธ Written Off

๐Ÿ“‹ Stock Mgmt

๐Ÿ‘” Executive

โœ… Actions

โ† Back to Landing ย |ย  ETA 2824-2 ย |ย  ๐Ÿ”” Alerts ย |ย  โ˜๏ธ Sync: Synced โœ“

Landing Page vs. Movement View

WIM has two levels of navigation:

Tabs inside a Movement

TAB

WHAT IT DOES

๐Ÿ“ฆ Inventory

Your main parts list. View stock by location, search, filter, edit parts, receive stock, make watches.

๐Ÿ›’ Purchasing Hub

Manage orders โ€” suggested orders, order batches, pending deliveries, received history.

๐ŸŽฏ Production

Set targets, record made watches, manage assemblies, view bottlenecks, production forecast.

๐Ÿ“Š Activity Log

Full audit trail of every action taken in the system with filters by type, user, date.

๐Ÿ—‘๏ธ Written Off

Parts removed from inventory (damaged, lost). Includes restore capability.

๐Ÿ“‹ Stock Management

Compact table with coverage metrics, reorder dates, lead times. Inline double-click editing.

๐Ÿ‘” Executive

Admin-only high-level summary of all movements, production health, and KPIs.

โœ… Actions

Supplier action tracker โ€” log commitments and follow-ups with suppliers.

๐Ÿ“ŠDashboard

The landing page dashboard gives you an instant health check across all calibres.




wim.tl-watchmaking.com โ€” Landing

4

Movements

847

Total Parts

12

Activity Today

3

Critical Alerts

STOCK HEALTH

Stacked Bar Chart

LOW STOCK

Doughnut Chart

PRODUCTION

Progress vs Target

Dashboard Charts

Duplicate Reference Detector

The dashboard automatically scans for part references shared across multiple calibres โ€” useful for identifying shared supplier parts. Click any movement tag to navigate directly to that calibre.

Landing Page Actions

โ˜๏ธ Cloud Sync ๐Ÿ‘ฅ Users โš™๏ธ Settings โฌ‡๏ธ Backup โฌ†๏ธ Restore ๐Ÿ“Š Export Excel ๐Ÿ” Ctrl+K Search

๐Ÿ“ฆInventory

The Inventory Table

Each row is one part. Columns are: Name ยท Reference ยท Kind ยท Image ยท Qty/Watch ยท [Location columns] ยท Total Stock ยท Actions.

STOCK COLOUR CODING

โœ… OK โ€” enough for remaining watches โš ๏ธ Low โ€” below needed quantity ๐Ÿ”ด Critical โ€” below 50% of needed

Stock thresholds are production-based โ€” they auto-calculate from remaining watches ร— qty/watch, not arbitrary minimums.

Filters & Focus

FILTER

HOW IT WORKS

Search

Part name or reference โ€” live filtering as you type

Kind

Filter by part category (jewel, screw, spring, wheel, etc.)

Neutres only

Show only neutral/shared parts

Stock status

Show only shortage or critical parts

Focus View

Pin specific parts or locations for a "workbench" view. Saved between sessions.

Location filter

Show stock for one box/shelf only

Part Actions

BUTTON

ACTION

โœ๏ธ Edit

Open full part editor (name, reference, qty/watch, notes, image, compatibility, lead time, etc.)

๐Ÿ“ฆ Receive

Add stock โ€” from a pending order or as an unregistered delivery

โš™๏ธ Make

Deduct parts for one completed watch from a specific location

๐Ÿ—‘๏ธ Write Off

Remove damaged or lost parts with a reason note

๐Ÿ–ผ๏ธ Image

Add or change the part photo (shared across all movements using that reference)

Inline Stock Entry

In the Stock Management tab, double-click any stock cell to edit the quantity inline. You can also type arithmetic directly: type 12+33 and it will calculate to 45.

Receiving Stock

When clicking ๐Ÿ“ฆ Receive on a part, two modes are available:

โš ๏ธ

QC Hold

Parts received into QC Hold are tracked but not counted toward production stock. Use this for parts awaiting quality inspection.

Part Fields (Edit Modal)

FIELD

DESCRIPTION

Name

Full descriptive name (e.g. "3rd Wheel, gilded")

Reference

Supplier part number. Must be unique within the movement.

Kind

Category: jewel, tenon, screw, spring, wheel, pinion, plate, bridge, hand, dial, case, crown, gasket, other

Qty / Watch

How many of this part goes into one watch

Neutres

Toggle if this part is not production-specific (generic/shared)

Notes

Free-text field for supplier info, specs, etc.

Compatible With

Alternative part references that can substitute this part

Old Part Numbers

Superseded references (useful when a part has been renumbered)

Lead Time

Weeks between ordering and receiving (used for "Order By" date calculation)

Order Qty

Recommended order quantity (e.g. minimum order)

Discontinued

Flag if part is no longer available from supplier

Excluded

Flag to exclude from stock calculations and alerts

๐Ÿ›’Purchasing Hub

Manage the full order lifecycle: generate suggested orders, group them into batches, track pending deliveries, and record receipts.

Suggested Orders

WIM automatically calculates what needs to be ordered based on:

Parts below their needed quantity appear in the Suggested Orders list with a recommended order quantity.

Order Workflow

1

Review suggested orders

In Purchasing Hub โ†’ Suggested, review the auto-generated list. Adjust quantities as needed.

2

Add to Draft / Send

Select items, group into a batch (by supplier), add notes, and mark as "Sent to Supplier".

3

Track pending deliveries

Orders appear in the To Order / Pending list. Set an ETA date on each order. Overdue deliveries are highlighted in red.

4

Receive the delivery

When parts arrive, click ๐Ÿ“ฆ Receive on the part, select "From Pending Order", choose the location, and confirm the quantity. The order status updates automatically.

Order Batch Export

Each order batch can be exported as:

๐Ÿ“Š Excel (XLS) ๐Ÿ“„ PDF

Quick Order

For ad-hoc orders, use the Quick Order panel: type a reference, set quantity, add notes, and place without going through the suggested list.

The "Covers" Column

In Stock Management, the Covers column shows stock รท qty/watch โ€” i.e., how many watches this part alone could support. Color coded:

๐ŸŸข Covers โ‰ฅ remaining target ๐ŸŸก Covers < remaining target ๐Ÿ”ด Covers = 0

"Order By" Date

Calculated automatically: today + (remaining runout rate ร— stock days) โˆ’ lead time. If the date is in the past or near, the cell turns red, signalling an urgent order.

๐ŸŽฏProduction

Production Targets

FIELD

MEANING

Annual Target

How many watches you plan to produce this year

Made This Year

Watches already recorded as complete (auto-increments each time you record production)

Pre-Production

Watches produced before WIM was set up (counts toward target, not in the log)

Remaining

Target โˆ’ (Made + Pre-Production) โ€” drives all stock calculations

Recording Production ("Making a Watch")

When a watch is completed:

  1. Click โŒš Make Watch in the Production tab
  2. Select which location to deduct parts from
  3. Optionally enter a serial number / batch note
  4. Confirm โ€” all parts are decremented, Made +1, activity logged

Undo Last Watch โ€” reverses the last production entry (restores stock, decrements Made).

Can Make Count

The Can Make number is the maximum watches producible with current stock across all locations. It is limited by whichever part has the lowest coverage. Click "Can Make" to see the breakdown and which part is the bottleneck.

Kit Builder

For calibres assembled from sub-kits (e.g. a base plate kit with pre-installed jewels):

Production Forecast

The forecast section shows weeks of stock remaining for each critical part at your current production rate. Cards are colour-coded:

๐Ÿ”ด Under 4 weeks โ€” order immediately ๐ŸŸก Under 8 weeks โ€” plan order soon ๐ŸŸข 8+ weeks โ€” healthy

A summary line identifies the critical bottleneck โ€” the part that will halt production soonest.

๐Ÿ“Locations & Storage

Creating Locations

Locations map to your physical storage (boxes, drawers, shelves). Each movement has its own set of locations โ€” they're fully independent.

  1. Inside a movement, click View โ†’ Locations
  2. Click + Add Location
  3. Enter a name (e.g. "Box 1 โ€” Wheel Train"), optional description
  4. Toggle Aftersales if parts in this location are reserved for repairs (excluded from production calculations)

๐Ÿ’ก

Naming tip

Use descriptive names like "Box 1 โ€” Escapements" or "Shelf B โ€” Mainsprings" to make the inventory table self-documenting.

Box Contents View

Click View โ†’ Box Contents to see all parts stored in a specific box, total units, and export the list to Excel โ€” useful for physical stock counts.

The "On Bench" Location

A special virtual location for parts currently under assembly. It's separate from physical stock and is included in Can Make calculations. Use it to track parts pulled from boxes that haven't yet become completed watches.

Stock Transfers

To move stock between locations: use Edit Part to manually adjust location quantities. The system records the change in the activity log.

๐Ÿ”ฉAssemblies & Linked Parts

Assemblies

An assembly is a pre-built sub-unit containing multiple parts (e.g. a riveted pallet fork + pallet stones). When you have 10 assemblies in stock, WIM adds that to each component's stock count automatically.

1

Create an assembly

In a movement, click View โ†’ Assemblies โ†’ + New Assembly. Give it a name.

2

Add components

Add each part that goes into the assembly. Set the ratio (default 1:1, or e.g. 2 if one assembly contains 2 of this part).

3

Set assembly stock

Use Receive on the assembly entry to add assembled units to stock.

In the inventory table, linked parts are colour-coded: โ–  green = this part, โ–  blue = linked via assembly, โ–  yellow = both.

Compatible Parts

Mark parts as compatible alternatives in the part editor (Compatible With field). WIM will pool compatible stock together when calculating coverage โ€” so if you have 10 of Part A and 5 of compatible Part B, coverage shows 15.

Old / Superseded References

When a supplier changes a part number, add the old reference in Old Part Numbers. The app will find the part when searching by the old reference.

โ˜๏ธCloud Sync

WIM can sync your data to a PHP server you control. Multiple users on different devices see the same data in near real-time.

โœ…

Your server is already configured

The sync endpoint is live at https://wim.tl-watchmaking.com/wim-sync.php. Use the credentials below.

Your Sync Credentials

SYNC URL

https://wim.tl-watchmaking.com/wim-sync.php

SECRET TOKEN

Ask the administratorย 

๐Ÿ”’

Keep this token private

Anyone with this token can read and overwrite all your inventory data. Do not share it publicly or commit it to a public repository.

Enabling Cloud Sync

1

Open Cloud Sync settings

On the landing page, click โ˜๏ธ Cloud Sync.

2

Enter URL and Token

Paste the Sync URL and Secret Token from above. Click Save.

3

Test the connection

Click Test Connection. You should see a green confirmation with server diagnostics (PHP version, disk writable, current version number).

4

Enable sync

Toggle Enable Cloud Sync to ON. The app will now auto-sync every 5 seconds when online.

How Sync Works

ACTION

WHAT HAPPENS

Auto-Push

Every time you save data, it queues a push to the server within 5 seconds

Auto-Pull

Every 5 seconds, checks if the server version is newer. If yes, pulls and reloads data.

Manual Push (โ†‘)

Force-pushes your current local data to the server immediately

Manual Pull (โ†“)

Force-fetches server data and replaces your local copy

Conflict resolution

Server version always wins. Last writer wins for simultaneous edits.

Presence Indicators

When multiple users are connected, you'll see avatar bubbles near the sync indicator. Each avatar shows initials and role colour:

๐Ÿ”ด Admin ๐ŸŸก Orderer ๐ŸŸข Standard user

A user is shown as online if they've sent a heartbeat within the last 30 seconds.

Server Files

FILE

PURPOSE

wim-sync.php

The sync endpoint. Handles push/pull/ping/heartbeat actions.

wim-data.json

Your entire inventory database (written atomically on each save)

wim-version.json

Version counter + last-updated metadata

wim-heartbeats.json

Online user presence registry (auto-pruned)

.htaccess

Blocks direct HTTP access to .json files (PHP can read them, browsers cannot)

๐Ÿ–ฅ๏ธ

First time setting up a server?

See the Server Setup & Deployment section for full step-by-step instructions โ€” OVH Manager, Cyberduck, file structure, permissions, and troubleshooting.

After Updating Files โ€” Clear Cache

After uploading new JS files to the server, run this in the browser console (F12) to force a fresh load:

(async () => {

ย  const regs = await navigator.serviceWorker.getRegistrations();

ย  for (const r of regs) await r.unregister();

ย  const keys = await caches.keys();

ย  for (const k of keys) await caches.delete(k);

ย  location.reload(true);

})();

๐Ÿ’ปUsing WIM as a Standalone App

WIM works entirely without a server. In standalone mode, all your data lives in your browser โ€” no internet connection required once the app is loaded, no account needed, no subscription.

How data is stored

All inventory data is saved in your browser's IndexedDB โ€” a built-in, persistent, structured database that browsers provide for web apps. Unlike cookies or localStorage, IndexedDB has virtually no size limit and survives browser restarts.

โš ๏ธ

Clearing browser data will erase WIM data

If you use your browser's "Clear site data", "Clear browsing data", or reset the browser, your IndexedDB is wiped.

Always keep a regular JSON backup

(Landing page โ†’ Backup). Without Cloud Sync, this is your only recovery option.

Installing WIM as a desktop app (PWA)

You can install WIM on your computer or phone so it opens like a native app โ€” its own window, its own icon, no browser chrome.

1

Open WIM in Chrome or Edge

Navigate to https://wim.tl-watchmaking.com.

2

Look for the install icon

In Chrome: click the โŠ• icon in the address bar (right side). In Edge: click the โ€ฆ menu โ†’ Apps โ†’ Install this site as an app.

3

Confirm installation

Click Install. WIM appears in your Start menu / Applications folder and opens in its own window. The data store is shared between the installed app and the browser tab.

4

On mobile (iOS / Android)

Safari on iPhone: tap Share โ†’ Add to Home Screen. Chrome on Android: tap โ‹ฎ โ†’ Add to Home Screen. The app installs with a full-screen icon.

Offline use

Once WIM has been loaded at least once, the service worker caches all app files. After that:

Moving data to another device (standalone)

Since IndexedDB is browser-local, moving to a new computer requires a manual transfer:

1

On the old device

Landing page โ†’ โฌ‡๏ธ Backup โ†’ save the wim-backup-[date].json file (e.g. to a USB drive or email it to yourself).

2

On the new device

Open WIM โ†’ Landing page โ†’ โฌ†๏ธ Restore โ†’ select the backup file. All data loads instantly.

Recommended backup schedule

FREQUENCY

WHEN TO DO IT

Weekly

Every Monday before starting โ€” takes 2 seconds

Before any bulk import

In case the import introduces errors

Before a restore

Always backup first, then restore

After major data entry

E.g. after entering a full new movement's stock

๐Ÿ’ก

Standalone vs. Cloud Sync

Standalone is perfect for a single user on one main device. If you want multiple people to see the same data, or want your phone and laptop in sync, enable Cloud Sync โ€” your data stays in IndexedDB locally, and the server acts as a shared relay.

๐Ÿ–ฅ๏ธServer Setup & Deployment

This section covers deploying WIM to a web server so it's accessible from any browser on any device. You need this to use Cloud Sync or to share the app with team members. The instructions below are specific to OVH shared hosting and Cyberduck FTP client.

What you need

Step 1 โ€” Get your FTP credentials from OVH

1

Log into OVH Manager

Go to manager.ovhcloud.com and sign in.

2

Find your hosting

Left menu: Web Cloud โ†’ Hosting plans โ†’ click your plan name.

3

Go to FTP-SSH tab

Click the FTP-SSH tab. Note down: FTP server (e.g. ftp.cluster0XX.hosting.ovh.net), Login (your FTP username), and FTP directory (usually / or /www/).

4

Get your password

If you don't remember it, click Create or change the password on the FTP-SSH tab to set a new one.

Step 2 โ€” Set up a subdomain (optional but recommended)

A dedicated subdomain like wim.yourdomain.com keeps WIM separate from your main website.

  1. In OVH Manager: Web Cloud โ†’ Hosting plans โ†’ your plan โ†’ Multisite
  2. Click Add a domain or subdomain
  3. Enter the subdomain (e.g. wim) and set its root folder (e.g. /wim)
  4. Enable SSL/HTTPS (free Let's Encrypt certificate)
  5. Click Confirm โ€” DNS propagation takes a few minutes

Step 3 โ€” Connect Cyberduck to OVH

1

Open a new connection

In Cyberduck, click Open Connection (top left).

2

Fill in the connection details

3

Click Connect

Cyberduck connects and shows your remote file tree. Navigate to the folder for your subdomain (e.g. /wim/).

4

Show hidden files

In Cyberduck menu: View โ†’ Show Hidden Files. This makes .htaccess visible โ€” you need this to upload it.

Step 4 โ€” Upload the project files

Your server folder structure must look exactly like this:

/wim/ ย (subdomain root)

ย ย โ”œโ”€โ”€ index.html

ย ย โ”œโ”€โ”€ sw.js ย (service worker)

ย ย โ”œโ”€โ”€ manifest.json ย (PWA manifest)

ย ย โ”œโ”€โ”€ wim-sync.php ย (cloud sync endpoint)

ย ย โ”œโ”€โ”€ .htaccess ย (protects .json files)

ย ย โ”œโ”€โ”€ css/

ย ย โ”‚ย ย ย โ””โ”€โ”€ styles.css

ย ย โ””โ”€โ”€ js/

ย ย ย ย ย ย โ”œโ”€โ”€ app.js

ย ย ย ย ย ย โ”œโ”€โ”€ ui_components.js

ย ย ย ย ย ย โ”œโ”€โ”€ store.js

ย ย ย ย ย ย โ”œโ”€โ”€ utils.js

ย ย ย ย ย ย โ”œโ”€โ”€ data_models.js

ย ย ย ย ย ย โ””โ”€โ”€ features/

ย ย ย ย ย ย ย ย ย ย โ”œโ”€โ”€ inventory.js

ย ย ย ย ย ย ย ย ย ย โ”œโ”€โ”€ orders.js

ย ย ย ย ย ย ย ย ย ย โ”œโ”€โ”€ production.js

ย ย ย ย ย ย ย ย ย ย โ”œโ”€โ”€ history.js

ย ย ย ย ย ย ย ย ย ย โ””โ”€โ”€ imports.js

Select all files from your local wim_modular/ folder and drag them into Cyberduck. Confirm any overwrite prompts.

Step 5 โ€” Set directory permissions

The PHP sync script needs write access to the folder to create the data JSON files.

  1. Right-click the /wim/ folder in Cyberduck โ†’ Info
  2. Click the Permissions tab
  3. Set to 755 (owner: read/write/execute, group+others: read/execute)
  4. Check Apply to enclosed items if available

Step 6 โ€” Verify everything works

WHAT TO CHECK

EXPECTED RESULT

Open https://wim.yourdomain.com

The WIM app loads. No blank screen, no 404.

Open https://wim.yourdomain.com/wim-sync.php

Shows {"ok":false,"error":"Only POST requests are accepted"}. If you see PHP source code or a server error, PHP is not enabled.

Enable Cloud Sync and click Test Connection

Green confirmation with PHP version, writable: true, data file info.

Push data once

A wim-data.json file appears in your FTP folder (refresh Cyberduck).

Troubleshooting

PROBLEM

SOLUTION

PHP file shows as plain text / downloads

PHP is not configured for this subdomain. In OVH Manager โ†’ your hosting โ†’ PHP version, set it to 8.1 or 8.2.

dir_writable: false in sync test

Set folder permissions to 755 via Cyberduck (Step 5).

App works but Push always fails

Check that .htaccess was uploaded (enable hidden files in Cyberduck). Also verify PHP post_max_size is at least 32M.

After updating JS files, old version still loads

Run the cache-clear command in browser console (see Cloud Sync section), or bump the version numbers in sw.js and index.html.

Cyberduck shows "Connection refused"

Use port 21 (not 22). Port 22 is SFTP โ€” use FTP mode instead.

๐Ÿ‘ฅUsers & Permissions

WIM has a full login system with username + password authentication. Each person has their own account; all actions in the activity log are attributed to their name. Access is controlled by role.

The Login Screen

When you open WIM, a login screen appears before any data is shown. Enter your username and password, then click Login. Alternatively, click Continue as Guest for read-only access with no credentials required.

SESSION BEHAVIOUR

Roles

ADMIN

Full access to everything โ€” manage users, settings, delete data, view the full activity log and the Executive tab.

USER / ORDERER

Can create orders, receive stock, edit parts, and record production. Cannot manage users or access admin settings.

VIEWER / GUEST

Read-only view of inventory and orders. Can browse, filter, and search โ€” cannot modify any data.

Credentials

Passwords are managed by the app administrator. If you don't know your credentials or need an account created, contact:

๐Ÿ“ง

Tristan Ledard โ€” WIM Administrator

tristan.ledard@tl-watchmaking.com

Adding a new user

1

Go to the landing page โ†’ ๐Ÿ‘ฅ Users

You must be logged in as Admin. Click the Users button in the top toolbar.

2

Click + Add User

Enter the username (lowercase, no spaces โ€” e.g. marc) and select their role.

3

Tell them their password

Their password is set by the administrator. Contact tristan.ledard@tl-watchmaking.com to request or communicate credentials โ€” passwords are never displayed in the app.

4

First login creates the account

The first time they log in, if their username isn't in the database yet, WIM prompts to confirm account creation. They click Yes and their profile is saved.

Guest access

The Continue as Guest button on the login screen grants immediate read-only access with no credentials. Use this to let visitors browse the inventory without an account. Guests can see all parts and orders but cannot edit anything, place orders, or export data.

Permission Matrix

ACTION

GUEST

USER

ORDERER

ADMIN

View inventory & orders

โœ“

โœ“

โœ“

โœ“

Create / edit parts

โœ—

โœ“

โœ“

โœ“

Receive stock

โœ—

โœ“

โœ“

โœ“

Create orders

โœ—

โœ“

โœ“

โœ“

Delete orders / parts

โœ—

โœ—

โœ—

โœ“

Import data

โœ—

โœ“

โœ—

โœ“

Export data

โœ—

โœ“

โœ—

โœ“

Record production

โœ—

โœ“

โœ“

โœ“

Manage users

โœ—

โœ—

โœ—

โœ“

Change admin settings

โœ—

โœ—

โœ—

โœ“

View full activity log

โœ—

โœ—

โœ—

โœ“

Access Executive tab

โœ—

โœ—

โœ—

โœ“

Admin lockout recovery

If the sole admin account is accidentally misconfigured, WIM tracks the last admin login date. After 30 days without any admin login, the system allows recovery on the next login attempt. Alternatively, restore a JSON backup from before the change was made.

๐Ÿ“คImport & Export

Export

FORMAT

CONTENTS

WHERE

Excel (XLS)

Full inventory: name, reference, qty/watch, stock by location, notes, compatibility

Landing page โ†’ Export

PDF Report

Formatted inventory, orders, low-stock, or production forecast

Inventory tab โ†’ Export โ†’ PDF

JSON Backup

Complete database dump (use for backup or migration)

Landing page โ†’ Backup

Order Batch PDF/XLS

Single order batch formatted for supplier

Purchasing Hub โ†’ batch header buttons

Box Contents XLS

All parts in a specific storage location

View โ†’ Box Contents โ†’ Export

Import Parts (Bulk)

To add many parts at once from an Excel spreadsheet:

  1. Go to View โ†’ Import in a movement
  2. Download the template (shows expected column headers)
  3. Fill in your parts data
  4. Upload the file โ€” parts are created automatically

Required columns: Name, Reference. Optional: Qty/Watch, Neutres, Notes, Compatible With, Old Part Numbers, Lead Time.

BOM Update (Bulk Metadata Edit)

To update existing part metadata from a spreadsheet (without touching stock):

  1. Go to View โ†’ BOM Update
  2. Upload an Excel file with updated part data
  3. Preview the diff โ€” WIM shows exactly what will change
  4. Apply โ€” non-destructive update (stock counts unchanged)

Restore from Backup

On the landing page โ†’ Restore โ†’ upload a previously downloaded JSON backup. This replaces the entire database.

โš ๏ธ

Restore is destructive

Restoring from a backup replaces all current data. Always download a fresh backup before restoring.

๐Ÿ””Alerts & Monitoring

How Alerts Work

WIM continuously monitors stock versus production needs and surfaces shortages. Alerts are production-based โ€” they factor in your remaining target, not arbitrary minimums.

ALERT CALCULATION

Alert horizon = 4 months (configurable)

Watches in horizon = remaining target ร— (horizon / 12)

Needed stock = watches in horizon ร— qty per watch

Shortage = max(0, needed_stock โˆ’ current_stock โˆ’ pending_orders)

Alert Levels

LEVEL

CONDITION

COLOUR

โœ… OK

Stock โ‰ฅ needed for horizon

Green

โš ๏ธ Low

Stock < needed but > 50%

Yellow

๐Ÿ”ด Critical

Stock < 50% of needed

Red

Silencing Alerts

Per-part alerts can be deactivated in the part editor. Useful for discontinued parts or parts with alternative supply paths not tracked in WIM.

Critical Alerts Modal

Click ๐Ÿ”” Critical Alerts (bell icon, top right) to see a consolidated list of all critical shortages across all movements โ€” a quick health check before placing orders.

Configuring Alert Horizon

Go to โš™๏ธ Settings (Admin) โ†’ adjust Alert Horizon (in months). A 4-month horizon means: "alert me if I'll run out within 4 months at current production rate".

๐ŸฅHealth Check

The Health Check scans your database for integrity issues and flags anything that needs attention.

What it checks

Run it from the landing page โ†’ movement card menu โ†’ Health Check. Issues are listed with severity and a description. Some can be auto-repaired; others require manual review.

๐Ÿ“‹Activity Log

Every action in WIM is logged with timestamp, user, and details. Admins see the full log; standard users see the last 20 entries.

Activity Types

ICON

TYPE

EXAMPLE

๐Ÿ“ฆ

Stock

"Received 50 ร— 2275 screw to Box 3 from Order #42"

๐Ÿ›’

Order

"Order placed: 2275 screw ร— 100 (Batch: Supplier A)"

โœ…

Receive

"Order #42 received: 50 ร— 2275 screw to Box 3"

๐Ÿ—‘๏ธ

Write-off

"Written off: 3 ร— mainspring (damaged)"

โš™๏ธ

System

"Watch produced โ€” Made: 47. Serial: SN-2025-047"

๐Ÿ‘ค

User

"User 'Tristan' switched to Admin role"

Filters

Filter the log by: Activity type ยท Username ยท Date. Use Clear Filters to reset.

โŒจ๏ธKeyboard Shortcuts

SHORTCUT

ACTION

Ctrl + K

Open Global Search across all movements

Esc

Close any open modal or search panel

โ†‘ / โ†“

Navigate autocomplete suggestions in search

Enter

Confirm search / submit current form

Double-click

Inline edit part name, reference, or stock quantity

Global Search (Ctrl+K)

The global search finds parts across all movements simultaneously. Results show part name, movement, reference, live stock status, and a thumbnail. Click any result to navigate directly to that part in its movement.

๐Ÿ“–Field Reference

Complete reference of all data fields tracked per part.

FIELD

TYPE

NOTES

name

String

Full descriptive part name

reference

String

Unique supplier/EAN reference per movement

kind

Enum

jewel ยท tenon ยท screw ยท spring ยท wheel ยท pinion ยท plate ยท bridge ยท hand ยท dial ยท case ยท crown ยท gasket ยท other

qtyNeeded

Number

Quantity per completed watch

neutres

Boolean

True = shared/non-production-critical part

notes

String

Free-text field (supplier info, specs, etc.)

compatibleWith

String[]

References of interchangeable parts

oldPartNumbers

String[]

Superseded references

masterRef

String

Primary reference if this part is linked

leadTime

Number (weeks)

Delivery lead time (used for Order By date)

orderQty

Number

Recommended reorder quantity

discontinued

Boolean

Supplier no longer makes this part

excluded

Boolean

Exclude from all calculations and alerts

isAssembly

Boolean

Part is an assembly-level item

stock[locationIndex]

Number

Quantity in each physical location

onBench

Number

Quantity currently under assembly

qcHold

Number

Quantity in QC quarantine

movement

String

Parent movement/calibre name

WIM โ€” Watchmaking Inventory Manager v40.0 ย ยทย  Built with Claude AI

Manual generated March 2026 ย ยทย  wim.tl-watchmaking.com