GitHub

Open the admin and the day is already sorted.

Twenty-nine kinds of task are computed from live store data, each arriving with what it is worth and when it is due.

PostgreSQLRedisS3StripeResend
admin.yourstore.com
Needs attention14 open
Orders to ship
6 · $1,204
Returns awaiting a decision
3 · 5d oldest
Coupon ending
2 · $840 driven
Webhooks failing
1 · 47 retries

Nobody knows what to do first.

Work hides in five places: an inbox, a spreadsheet, a dashboard somebody built once, a colleague's memory, and the orders page you scroll until something looks wrong.

A task is what the data already says, so nobody has to write one.

Every row here is a query that started matching. Ship the order and it disappears, because the query stops matching — there is nothing to tick off and nothing to archive.

Arriving now

Live
Order #4192 needs shipping

$182.40 · paid 2 hours ago

Orders

Every order carries its payment, fulfilment and refund history on one record.

#DateStatusCustomerRevenue
112 MarPaid
Maya Okonkwo
$182.40
212 MarRefunded
Leo Martins
$96.00
311 MarPaid
Priya Shah
$248.10
411 MarDisputed
Dana Feld
$74.00
Showing 4 rowsRead straight from your database

Cash that is sitting still.

Orders to ship, refunds pending, payouts, disputes. Each one carries what it is worth, so the biggest number is not buried under the newest one.

Money waiting82%
Someone waiting64%
About to go wrong47%
Quietly broken23%
Left half-done15%

Flagged before the deadline, not after.

Stockouts, low stock, sales and coupons ending. A coupon shows the revenue it has driven so far, so you know what expiring will cost.

Cleared per day

14 days
418cleared
31 tasks
M
44 tasks
T
28 tasks
W
52 tasks
T
61 tasks
F
22 tasks
S
14 tasks
S
38 tasks
M
47 tasks
T
33 tasks
W

The failure nobody was watching.

Webhooks, integrations, emails, imports. An endpoint that keeps failing is disabled and surfaced rather than retried into the dark.

Integration health2 failing
Stripe webhook
healthy
Warehouse ERP
47 retries
Klaviyo sync
disabled
Shopify import
healthy

It never empties, and it never surprises.

The queue is a read of the same tables the store runs on, so it is as current as the last order.

Task volume18 weeks
Every square is a daylessmore

Counts that lie are worse than no counts.

Every task's count and the list behind it are built from one query. If the badge says three, the page shows three.

Why the number is clickable

Two queries

A badge said one order needed shipping. The page it opened showed none.

One query

The count and the list read the same rows, so they cannot disagree.

Ratcheted in CI

A test pairs each task kind's detection with the filter its link opens, so the two cannot drift apart.

0
Task kinds
0
Cleared in 14 days
0
Nightly jobs

localhost:3000/admin

Live
Home

Start · what needs clearing today

Customers

4.8k+212

Cash collected

$18.4k+12%

Orders placed

312+48

Avg order

$59+$4

Needs attention

3 to clear
9d

Review fulfilment

Paid orders awaiting fulfilment — oldest 9d.

Ask AI
4d

Draft replies

Customers awaiting a reply — oldest 4d.

Ask AI
4d

Create recovery offer

Carts with items, idle — oldest 4d.

Ask AI

Trends

Live
$18.4k

Revenue

312

Orders

$59

AOV

Revenue by default — overlay orders, customers, or average order value.

Recent activity

Audit log
PS
Priya published Sunset Linen Shirt
Products · 12m ago
Sys
Payment captured for order #1042
Payments · 24m ago
MO
Maya approved 18 AI descriptions
Content · 1h ago
Sys
Stock movement recorded · −3 units
Inventory · 1h ago

Every change recorded, with the person who made it.

All caught up

Discovery

Nothing is waiting. Litestore suggests what to do next instead of showing an empty screen.

Improve AOV
29Task kinds

Computed, never stored

0Nightly jobs

Nothing flips a status at 2am

1Source

The rows the store runs on

MITLicence

The whole queue, included

Tasks disappear when the work is done. There is nothing to mark complete.

An admin you can work in

Twenty-nine kinds of task, each showing what it is worth and when it is due.

One order, one timeline

Payment, fulfilment, refund and support history sit on the same record.

Everything external is swappable

Payments, email, storage and analytics each work through their own interface.

Stop hunting for what needs doing.

The queue is computed from your own data the moment you point Litestore at a database.

29 task kindsMIT licensedSelf-hosted