Documentation
Per pagina wat het doet, welke Excel cellen, welke webhooks, hoe data flows.
Dashboard = Next 14 App Router + shadcn/ui + NextAuth Discord OAuth, gehost op Vercel (dashboard.aventerprise.nl). Data flow loopt 2 kanten:
READ: Excel → openpyxl → dashboard_push.py (5 min) → Vercel Blob → DashboardProvider (60s) → React pages
WRITE: Dashboard click → /api/excel-actions → Upstash Redis queue → excel_action_poller.py (60s) → Excel
Mac scripts → /api/notifications → Vercel Blob → /notifications page/abel/*AV Enterprise — Abel.xlsx/investeerders/*Investeerders EU.xlsx/Per pagina
Per workspace zijn er 5 pagina's: Dashboard, Inventory, Money flow, Agenda, Financials. Alle oude losse URLs (sales/inkopen/charges/deliveries/ pnl/bookkeeper/reconciliation) redirecten naar de juiste sub-tab.
/ — Combined OverviewSide-by-side overzicht Abel + Investeerders. Voor lifetime trend monitoring.
Beide master tabs (Abel EU + Abel Lysted + Investeerders EU + US)
Per workspace: Capital = SUM(O), Revenue = SUMIF(Sold & Paid, S), Profit = Revenue − Inkoop
/abel + /investeerders — Workspace DashboardHoofdpagina per workspace. KPIs, EU vs Lysted/US breakdown, charts, quick links.
Per workspace: master tabs (Abel EU + Lysted, of Investeerders EU + US)
Total Capital = SUM(O). Revenue = SUMIF(Sold&Paid, S). Cumulative profit chart = profit_eur per dag (60d/90d).
/abel/inventory + /investeerders/inventoryAlle tickets met period+status filter. Klikbare status pills. Drill-down naar Excel row.
Master tab — kolom A (artist) tot AD (notes)
Status filter = COUNTIF op col E ("Sold And Paid", "Listed", "Instock", etc)
/abel/money-flow + /investeerders/money-flowSub-tabs Sales | Inkopen | Bank | Deliveries — alles wat geld in en uit beweegt. Tab state in URL via ?tab=…
Master tab — sales (S col), inkopen (O col), bank CSV upload, deliveries (status='Sold Not Delivered')
Revenue = SUMIF Sold&Paid (S); Inkoop = SUMIF face (O); Bank match = datum±3d + bedrag±€0.01 + merchant keyword
/abel/calendar + /investeerders/calendar — AgendaEvents kalender per workspace. Maand view met deeplinks naar tickets.
Master tab event_date kolom
Group by event_date, show count per dag
/abel/financials + /investeerders/financialsSub-tabs P&L | Boekhouder | Reconciliation — alle cijfers die naar Argo gaan.
P&L: master Sold&Paid + Lysted profit_eur. Boekhouder: BH-tabs auto-gegenereerd. Reconciliation: bh_purchases revolut_charge.
P&L: Revenue − Costs (closed only). Reconciliation: match status uit BH Inkopen kolom G.
/notifications (shared)Agent feed — Mac scripts POSTen events. Klik resolve/heropen per item.
POST /api/notifications (bearer AGENT_TOKEN)
Categories: match_needed, manual_review, update, error, info
/todos (shared)Roadmap synced uit TODO.md. Edit lokaal, dashboard refresh elke 5 min.
Mac dashboard_push.py parses TODO.md
Bucket: Now / Soon / Later / Ideas
/docs (shared)Deze pagina — per-pagina uitleg + data flows + webhooks reference.
Statisch — bedoeld als handleiding
—
/settings (shared)Period default, FX rates display, Excel file links, system info.
LocalStorage + dashboard.json
—
- Dashboard — KPIs + charts
- Inventory — tickets met status filter
- Money flow — Sales / Inkopen / Bank / Deliveries (sub-tabs)
- Agenda — events kalender
- Financials — P&L / Boekhouder / Reconciliation (sub-tabs)
- Notifications — agent feed
- Docs — deze pagina
- Settings — config + FX
- TODO — roadmap (TODO.md sync)
Verliesposten, Open Voorraad en Payouts.| Trigger | Channel / Endpoint | Wanneer |
|---|---|---|
| Lysted invoice email | Discord #sales (Benjamin embed) | Real-time bij gmail_lysted_watcher hit |
| Lysted delivery reminder | Discord #actie | T-1d / T-3d / T-7d voor event_date |
| Pipeline error | Discord #errors | Parser fail / Excel lock / OneDrive sync issue |
| Daily digest | Discord #sales | 09:00 UTC dagelijks |
| Event reminders | Discord #actie | T-14d / T-7d / T-3d / T-1d voor event_date |
| Cartly/Silently checkout | Mac discord_purchase_listener.py | Realtime via Discord bot polling |
| Match needed | Dashboard /notifications + Discord | Mac script kan inkoop niet matchen aan Revolut charge |
| Manual review | Dashboard /notifications | Parser onzeker over inkoop/sale |
| Update (info) | Dashboard /notifications | Nieuwe sale/inkoop verwerkt — informatief |
CLAUDE.mdTODO.mdAUTOMATION_PIPELINE.mddashboard/ARCHITECTURE.mddashboard/DEPLOY.mdscripts/dashboard_push.pyscripts/notify_dashboard.pyscripts/mail_watcher.py