Running Kova Design
You are the only person who signs in. The same account manages stock and approves requests โ there is no separate approver role.
Signing in
Open /admin.html and sign in with your email and password. Regular users never sign in; they only type their name on the request form.
If the password change fails, the message says so explicitly โ the old password stays in use until you see the green confirmation. An expired session is the usual cause; sign out, sign in again, and retry.
Dashboard
Five counters across the top: products, inventory items, pending requests, low stock, out of stock.
Needs attention lists every item at or below its minimum level, lowest first.
Product availability shows how many units of each product can be issued right now, and names the item holding it back. That limiting item is the one to restock.
Reviewing requests
The Requests page shows pending requests by default; the sidebar carries a count badge. Click Review to open one.
The review screen lists each item the request needs, how many are required, how many you have, and whether that item is sufficient.
| Button | What happens |
|---|---|
| Approve | Deducts every item at once, writes one audit row per item, and marks the request approved. |
| Reject | Only changes the status. Nothing is deducted. A reason is required. |
The numbers on the review screen come from the database, not from the browser. They are the same numbers the approval itself uses, so what you see is what will happen.
Inventory
Items are the physical things in the store. They are the only things that carry a stock number.
Adding an item
Give it a code, a name, a minimum level, and optionally an image. If you enter an opening stock, it is recorded as a Stock In transaction rather than written straight into the stock column โ so the audit trail is complete from the very first unit.
Stock In and Stock Out
Use ๐ฅ In when stock arrives and ๐ค Out when something leaves outside a request โ damaged, lost, or issued by hand. A reason is compulsory; you can pick a common one and add a note.
Minimum level
The minimum level is what turns an item yellow and raises an alert. Set it to the point where you would want to start reordering, not to zero.
Products & recipes
A product is a recipe, not a stock item. It lists which items it uses and how many of each. Products never carry a stock number of their own.
When you edit a recipe, you replace the whole list โ add rows, change quantities, remove rows, then save.
This is why one empty item makes a whole package unavailable, even when everything else is full.
Stock alerts
A banner appears at the top of every admin screen when items need attention. Alerts are raised by the database itself the moment stock crosses a threshold:
| Event | Result |
|---|---|
| Stock falls to or below the minimum level | Low stock alert raised |
| Stock reaches zero | Out of stock alert raised |
| Stock restored above the minimum | Alert closes by itself |
| You press Mark handled | Alert closes and stops showing |
Unlike the coloured badges, an alert stays until it is closed โ so a drop that happened overnight is still waiting for you in the morning. Each item can only hold one open alert per level, so an item hovering around its minimum will not flood the list.
Audit trail
Every stock movement is recorded: time, item, direction, quantity, resulting balance, reason, and who did it. Approvals write one row per item automatically.
Because one person both manages stock and approves requests here, this record is the only independent account of what happened. It is worth keeping the reasons meaningful.
Deleting things
Both products and items have a delete button, and both check first whether deleting would destroy history. When it would, you are offered Deactivate instead โ the thing disappears from the catalogue and from new recipes, while past records stay readable.
Products
| Situation | What you can do |
|---|---|
| Never requested | Deleted for real, along with its recipe and image. Items and their stock are untouched. |
| Has any request, ever | Cannot be deleted. Deactivate instead. |
Items
Items are stricter โ three different things can hold them:
- used by a product recipe
- has stock movements in the audit trail
- appears in the snapshot of an approved request
The app tells you which one is blocking, and names the products using the item. In practice almost every item that was ever given opening stock falls into the Deactivate path, because that opening stock is itself an audit row.
Settings
Change your password here โ at least 8 characters, entered twice. The system information panel shows the counts held in the database and whether the initial password has been replaced.
Rules worth knowing
Requests do not reserve stock
Stock only moves on approval. If two requests need the last unit, the first one approved gets it and the second can no longer be approved. Approve in the order you want people served.
Approval uses the recipe as it is right now
If you change a product's recipe while a request for it is still pending, the approval follows the new recipe. The audit trail records what was actually issued, so nothing is hidden โ but the person may receive something different from what they asked for. Decide the recipe before approving.
Deleting a request does not put stock back
Stock that has already been issued stays issued. If items come back, record a Stock In with a reason such as "User return".
All or nothing
An approval either deducts every item or none of them. There is no partial approval, so stock can never be left half-consumed by a failed operation.