Oracle3
Open-source trading engine and MCP server for prediction markets. Fee-aware no-arbitrage trading across related contracts, live on Kalshi, Polymarket and Solana or on paper.
Record and review cash expenses for Hivefy Lifestyle Pvt Ltd.
FinanceTypeScript · CSSGitHub @krinesh-gifOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
HLPL-Expense-Dashboard
Translation pending
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
Cash expense control for Hivefy Lifestyle Pvt Ltd. Replaces the three separate
FY26-27 workbooks (warehouse, head office, founder) with one system where each team
records only its own spend, and the founder sees everything consolidated.
The three workbooks could not be added up. The importer surfaced three concrete problems:Read the full README ↗Cash expense control for Hivefy Lifestyle Pvt Ltd. Replaces the three separate FY26-27 workbooks (warehouse, head office, founder) with one system where each team records only its own spend, and the founder sees everything consolidated.
The three workbooks could not be added up. The importer surfaced three concrete problems:
Pani Puri-Maulik,
cake, Chair and Krinesh Sir as categories, with 15 of 58 rows in "Other".| Role | Sees | Does |
|---|---|---|
| Warehouse manager | Warehouse expenses only | Records spend, declares cash in hand |
| Accounts manager | Head-office expenses only | Records spend, declares cash in hand |
| Founder | Everything | Records own spend, moves cash, sets budgets, analyses |
Teams cannot see each other's entries or the founder's, and cannot reach the founder's
screens. The scope is applied server-side on every query (expenseScope in
src/lib/auth.ts) — it is not a UI filter, so editing the URL does not defeat it.
Cash flows in a closed loop, which is what makes month-end add up:
Cash received (supplier refund, billing recovery, collection)
│
▼
Founder's chest ──── issues float ────► WH float ──► WH expenses
│ └► HO float ──► HO expenses
├──── founder's own expenses
└──── director drawings (out of the business, never an expense)
Float balance = issued + locally received − spent. Each team periodically declares the cash it is physically holding; the gap against the book is the control number.
Three taps and a number: type the amount, tap a category chip, tap save. Categories are ordered by how often that user has picked them in the last 90 days, so the common ones sit first. Date defaults to today, payment mode to cash, everything else is optional.
Two things happen automatically at entry:
requiresBill demand a bill number above their threshold.One taxonomy for all three teams, 25 heads in 9 groups. Each head carries:
its Tally ledger name (so month-end exports import straight into Tally),
which teams may book to it, a monthly budget, and bill requirements.
The founder edits all of this at /categories.
Old sheet labels are mapped through CategoryAlias, so migrated rows land on the right
head — Pani Puri-Maulik, cake and Staff Food & Tea all become Staff Food & Tea.
Unclassified (re-tag) holds migrated rows whose original label carried no meaning
(mostly "Office Operations" and "Other"). It cannot be picked for new entries, and the
dashboard nags until the backlog is cleared.
It installs to the home screen as a Progressive Web App and keeps working without signal — an expense recorded in a dead spot is held on the phone and sent when the connection returns, with a device-generated id making the write idempotent so a retry cannot double-record it. Nothing from the network is cached, so a stale float balance is never shown; the offline page says so plainly instead.
An optional 6pm reminder tells each person what they have recorded that day and what cash they are still holding. Setup is in docs/DEPLOY.md.
Export for Tally on the dashboard produces a CSV with one row per voucher, carrying
the ledger name, cost centre, narration, bill number and a capex flag.
npm install
cp .env.example .env # set DATABASE_URL and AUTH_SECRET
npx prisma migrate deploy
npm run seed # category master + three users
npm run dev
Seeded logins (password Change@123 — change it immediately):
[email protected] (founder), [email protected], [email protected].
Put founder.xlsx, wh.xlsx and ho.xlsx in data/, then:
npm run import
It is idempotent — it clears previously imported rows (those carrying a legacyRef)
and re-imports, so it can be re-run after adjusting category mappings. Entries made in
the app are never touched.
The import loaded 692 expenses and 92 cash transactions covering FY24-25 and FY26-27. It reconciles exactly to the source books: warehouse ₹2,14,581 spent, head office ₹30,428 spent with ₹13,984 in hand — both matching the team sheets to the rupee. The warehouse shows ₹50,205 against the sheet's ₹20,205, the ₹30,000 difference being the unacknowledged 01-Sep hand-over.
Step-by-step Neon + Vercel instructions are in docs/DEPLOY.md, including the two connection strings Neon needs and the common failure messages.
Any Node host works. The app needs DATABASE_URL (pooled), DIRECT_URL (unpooled, for
migrations) and AUTH_SECRET.
There is no user admin screen yet; both jobs are one command:
npm run set-password -- [email protected] 'new-password'
npm run add-user -- "Ravi Patel" [email protected] WH 'their-password'
To revoke access, untick active on the user in npx prisma studio — they are signed
out on their next request and their past entries keep their author.