woo-invoice-dashboard is an open-source admin suite for WooCommerce. It helps shop owners and developers manage orders, generate invoices, export data, and view reports — all outside WordPress — with a modern React + Hono.js + Supabase stack.
- 📊 Dashboard – a clean React-based admin dashboard for orders, stats, and reporting
- 🧾 Invoices – generate secure, shareable invoice links with revocation control
- 🔍 Search – powerful filters and search across orders and customers
- 📦 Exports – export orders, customers, and items in JSON or CSV
- 🔄 Sync – stay up-to-date with WooCommerce via webhooks or manual sync
- ⚡ Modern stack – built with React, Hono.js, and Supabase
Managing WooCommerce orders inside WordPress can feel limited, and many plugins for invoices, reporting, or exports are paid and closed-source.
This project exists to:
- Provide a free, open-source alternative to WooCommerce admin/invoice plugins
- Show how to build a decoupled dashboard outside WordPress
- Let developers customize and extend WooCommerce workflows
- Serve as a reference project for Hono.js + Supabase integrations
woo-invoice-dashboard/
├── apps/
│ ├── dashboard/ # React admin dashboard
│ ├── invoice/ # React public invoice site
│ └── backend/ # Hono.js backend
├── db/
│ └── schema.sql # Supabase/Postgres schema
├── README.md
├── LICENSE
└── .gitignore
- Node.js 18+
- Supabase project (or any Postgres DB)
- WooCommerce store with REST API keys & a webhook secret
git clone https://github.com/Sigmakib2/woo-invoice-dashboard.git
cd woo-invoice-dashboardcd apps/dashboard && npm install
cd ../invoice && npm install
cd ../backend && npm installFirst, deploy the backend. Open the wrangler.jsonc file and fill in all required variables.
To set this up:
- Go to Supabase and create a project.
- Copy the DB schema from
./db/schema.sqland paste it into the Supabase SQL editor to create your tables. - Copy the Service Role key and Project URL, then add them to your config:
# backend/wrangler.jsonc
"SUPABASE_SERVICE_ROLE_KEY": "*******************.*******************",
"WC_WEBHOOK_SECRET": "this_is_a_secret",- In your WooCommerce site dashboard, go to Settings → Advanced → REST API and create a new key (read-only is fine for now). Copy the Consumer key and Consumer secret and add them to your config:
"WC_CONSUMER_KEY": "ck_********************************",
"WC_CONSUMER_SECRET": "cs_********************************",
"WC_WEBHOOK_SECRET": "this_is_a_secret"- Next to the REST API settings, you’ll see Webhook options. Create webhooks for order create, update, and delete events. You’ll need a webhook URL, so deploy the backend first. (See the deployment section below.)
- Backend (Hono + Cloudflare Workers):
cd apps/backend
npm install
npm run devYou’ll get a localhost address — note it.
- Invoice site:
cd apps/invoice
npm install
npm run devIn ./apps/invoice/src/App.jsx, replace:
const baseUrl = 'https://example.workers.dev';with the backend localhost address you noted.
- Dashboard:
cd apps/dashboard
npm installIn ./apps/dashboard/src/App.jsx, replace:
const baseUrl = "https://example.workers.dev";with the backend localhost address. Then run:
npm run dev-
Backend: Cloudflare Workers (recommended) From the backend folder:
npm install npm run build npm run deploy
Cloudflare will ask you to log in and will handle the deployment. Once complete, you’ll get a
.workers.devURL. -
Frontend: Vercel / Netlify / Cloudflare Pages
-
Database: Supabase / Postgres
Note: Update the frontend
baseUrlvalues with your deployed backend.workers.devaddress.
PRs and issues are welcome! Please open a discussion before proposing major feature changes.
This project is licensed under the MIT License.