Repository navigation
Releases
Rechvix 0.23.0
-
Mobile 2.3.0 and server fixes (verified on an emulator and a real server). Mobile: full backup and restore (the old backup left out payments and could not be restored), delivery note, bill-of-supply title for unregistered Indian businesses (and TAX INVOICE when the linked company is registered), an HSN guard so a GST item without an HSN code is never uploaded half-set-up, part-returns of discounted lines (the phone checks the server's draft first and refuses to issue it on a server that would over-credit). Server: dashboard "sales today" no longer counts quotations and now subtracts returns/credit notes; "overdue" is the unpaid part of invoices past due (it used to be their full value); receivables ageing now applies a receipt to the oldest open invoice whatever its date (a receipt dated before its invoice used to vanish); new
GET /inventory/policiesand a Low-stock level field on the web stock card (the level could not be set from the web before, so low stock never triggered); tests now prove a backup restore preserves invoices, customers, payments and stock. Not built, on purpose: a portal-format GSTR-1 JSON (the server already writes the GST offline utility's B2B/B2CL/B2CS/CDNR/HSN files; a hand-made portal JSON could not be checked against the portal here). -
Mobile 2.2.1 / server fix. Server: converting a document into a part-return or credit note now carries only the returned share of a line's discount (it used to copy the whole line's discount, over-crediting a 1-of-4 return). Phone: per-item low-stock level with Low / Out of stock filters and a warning on the bill; "Save as quotation" moved into the bill so the Save bar stays compact; after a goods return the phone's own stock figure is corrected on the synced copy of the item too. Verified end to end against a real server and PostgreSQL 18: the new payment-history integration test and the full integration suite pass, and
apps/mobile/test/live-credit.test.ts(opt-in) checks returns, credit notes and balances against it. -
Mobile 2.2.0: quotations, credit notes / returns, keyboard-safe Save bar. Quotations are kept on the phone and never count as sales; credit notes and returns are issued through the server (sales return puts stock back, credit note is money only), resumable and idempotent, and lower the net bill everywhere; money received beyond the net bill is shown as owed back to the customer. No server migration (phone database v4, additive). Web: Reverse on a receipt (with a required reason; the row stays, struck through), Prices include GST for Indian bills, and the receivables export has a Party name column.
-
Invoices keep the full total and show every installment. The PDF, print (A4, compact, 80/58 mm thermal), HTML and on-screen invoice now print the invoice total, each payment received (date, method, reference), total paid, balance due and status, instead of only the grand total. The UPI QR on a part-paid invoice asks for the balance due, not the whole total again. Reversed receipts are not counted. Overpayment shows a zero balance (no refund is invented).
GET /sales/documents/{id}/previewgains apaymentblock. No migration. Mobile 2.1.3 lists each installment on all three designs; the web payment panel sums in whole cents. -
Receipts are safe to retry and safe to correct (migration 0065).
POST /accounting/receiptsaccepts an optionalclient_ref: the same value returns the receipt already booked instead of booking it twice (a phone on a flaky connection can retry freely). NewPOST /accounting/receipts/{id}/reverse(with a requiredreason) undoes a receipt entered by mistake without deleting it: a reversing journal is posted, the receipt records who, when and why, and the customer's balance and the invoice's paid amount go back up. Reversed receipts are ignored by every "paid against this invoice" total (invoice lists, reminders, SEPA, online payments, shop, dashboard collections, payment-mode report). Validation problems on receipts now answer 400INVALID_INPUTinstead of 500.
Everyday-use polish across billing, purchasing, reporting and phones. No database migration. API changes are additive.
- Fixed: customer search missed name fragments. Typing the first word of a customer ("Gupta") found nothing for "Gupta Engineering Works", so the billing box offered only "+ New customer". Search now matches substrings of the name, trade name, email and phone (case-insensitive, wildcards escaped), ranks prefix matches first and keeps trigram matching for typos. Integration test included.
- Item names everywhere.
GET /sales/documents/{id}andGET /purchases/documents/{id}also returnline_names(variant id to product name). Resumed drafts no longer show "Item 1", the finalized invoice page and saved purchase bills gain an Item column, and a saved purchase shows its bill number as the heading. - Collect payment faster. "Record payment" leads the invoice actions, opens the form with the full balance filled in, and disappears once the invoice is paid in full. Rarely used panels (payment links, e-signature, recurring, email, share links) sit under one disclosure.
- Sales list. All / Invoices / Drafts / Quotations / Orders views with counts, an empty state with a New sale button, secondary filters behind "More filters".
- Billing screen. Language, currency and exchange rate fold into "More options"; Start sale explains why it is disabled; the catalogue list no longer pushes the bill off screen once items are added; stock counts show as plain text unless low or out.
- Inventory opens on a stock-on-hand table instead of an empty search. Reports gain a period selector (last 30 days, this month, last month, quarter, financial year, custom) applied to every dated report, chart and export. GST / Tax leads with filing and accountant files.
- Dashboard "Get started" checklist driven by real data (business state, items, first customer, first invoice) that hides itself once complete.
- Phones. A bottom bar (Home, Sales, Catalogue, Contacts, More) with a full-menu sheet replaces the 16-item scrolling strip; sales, catalogue, contacts and purchases lists become stacked rows instead of tables that hide their totals off screen.
- Design. No gradients or glow shadows, no endlessly looping skeleton shimmer, no card-inside-card (empty states, billing total, nested import panel), real SVG icons instead of text glyphs and emoji, status badges only where they say something, concentric radii where boxes still nest.
- Accessibility. Defined the missing
.sr-onlyclass (screen-reader-only captions were rendering visibly), labelled the calendar assignee select, per-section browser tab titles. axe-core (WCAG 2.1 AA and best practice) reports no violations across all 20 app routes at 1440 and 390 px. - Deployment. Optional
HTTP_BINDin the Compose file to publish the app on 127.0.0.1 behind a same-host TLS proxy; the default is unchanged. - Purchases list total and sales payment status.
GET /purchases/documentsrows carry a read-onlyLinesTotal(sum of line totals before tax) andGET /sales/documentsrows a read-onlyPaidAmount(sum of receipts against the document); both are computed on read, so there is still no migration. The purchases list gains a Total column. The sales list shows Paid, Part paid, Overdue or Unpaid on finalized invoices and has Unpaid and Overdue views. Integration tests included. - Fixed: GST reports. The HSN summary counted every intra-state line twice (taxable value and total tax), and finalized quotations, orders and challans were listed in GSTR-1, GSTR-3B and the HSN and tax-rate summaries as if they were supplies. Both are fixed; the summary now reconciles with GST payable in the ledger. Regression test included.
- Fixed from a real-data walk-through. Field service lists incidents first with aligned fields and readable priorities; the CRM board and the invoice preview no longer show empty or mismatched blocks; calendar tasks have an accessible label; the reports chart legend no longer overlaps its axis and report tables show status and type as words; the setup form proposes a first branch and warehouse.
LineProductNamesis permission-gated. A.dockerignorekeeps hostnode_modulesout of image builds. - Verified on a real stack. The production Docker Compose stack (built from the Dockerfiles) was brought up with the setup wizard, sign-in and a backup download; backup and restore were exercised against real data. The accountant package accepts 2026 only (the verified mapping year), so it needs the 2027 mappings before January 2027.
- Languages. The Sales list and the Billing counter are now fully translated in all eight languages (English, Spanish, French, German, Italian, Portuguese, Dutch, Hindi), including plurals, validation and error messages. Credit notes and sales returns are now subtracted in GSTR-3B, the HSN summary and the tax-rate summary, and listed as negative rows in GSTR-1. The accountant-files date picker defaults to the supported year instead of one the server rejects.
serovalis updated to 1.7.7 (security advisories). - Not yet done: about 900 more strings across 67 screens (Contacts, Purchases, Catalogue, Settings, CRM, GST, Import and others) still use English literals outside the eight-language files.
Install on Ubuntu or Debian (amd64, arm64)
curl -fsSL https://rechvix.nodedr.com/install-linux.sh | sudo bash
Docker, CasaOS and the Windows app are described at https://rechvix.nodedr.com/install.
Rechvix 0.22.0
CRM, brought up to the everyday standard of a sales team's tools (adapting Zulivio's lead scoring, My Day queue, funnel and bulk-assignment conventions). No database migration and no new endpoints; everything below is drawn from the leads already in the CRM.
- Three sections: Pipeline, My day, Insights. The board and list stay in Pipeline; the other two answer "who do I call?" and "how is the team doing?".
- Lead score. Every open lead shows HOT, WARM or COLD with a 0 to 100 score from six visible facts (phone, email, deal value, a close date still ahead, a follow-up booked, how far along the pipeline it is). The lead sheet lists every point, so nobody has to trust a black box. Filter the board and list by score and by source.
- My day lists who needs you, most urgent first: overdue follow-ups, today's, deals past their close date, then hot leads with nothing scheduled, with call, WhatsApp and email on each. Call next lead dials the first one. The tab shows how many are overdue or due today.
- Why a lead was lost. Moving a lead to Lost asks for a reason (price, no response, competitor, not interested and so on) and keeps it on the lead's timeline.
- Insights: open pipeline, a weighted forecast (open value times the chance of winning at each stage), win rate, leads added in the last 14 days, a funnel by stage, where leads come from with conversion per source, and a table by owner.
- Bulk actions in the list: select leads (or all shown), assign them to one owner or unassign in one step, and export the selection. Export CSV downloads what is on screen; cells that start with =, +, - or @ are neutralised so a spreadsheet never runs them as formulas.
Install on Ubuntu or Debian (amd64, arm64)
curl -fsSL https://rechvix.nodedr.com/install-linux.sh | sudo bash
Docker, CasaOS and the Windows app are described at https://rechvix.nodedr.com/install.
Rechvix 0.21.0
- Import leads into the CRM from a spreadsheet. On the CRM screen, Import leads takes a CSV or Excel file (no key or account needed), matches your columns for you (Lead Name, Company, Mobile No., E-mail, Amount, Lead Source, Status and similar headers from other CRMs are recognised, and any match can be changed), shows a preview of every row, and writes nothing until you confirm. Each row can carry a company, contact person, phone, email, deal value (₹ and thousands separators are cleaned), currency, source, stage, owner (by name or email) and an expected close date (day-first dates work). A row without any name is reported as an error; a row whose phone, email or name and company already exists in the CRM, or earlier in the same file, is skipped as a duplicate, so a file can be re-run safely. The same panel is step 5 of the Import page. New
POST /crm/opportunities/importand/inspect. No database migration.
Install on Ubuntu or Debian (amd64, arm64)
curl -fsSL https://rechvix.nodedr.com/install-linux.sh | sudo bash
Docker, CasaOS and the Windows app are described at https://rechvix.nodedr.com/install.
Rechvix 0.20.0
- New purchase is now a full bill grid. Pick the supplier (search by name or phone, or + Add party without leaving), enter the supplier's bill number and date, then type items down the grid: item, quantity, unit, rate, discount % and amount, with a running total. Enter walks item → quantity → rate → discount → the next row, a new row appears by itself, Ctrl+Enter saves, and Save as draft keeps it for later. The item list shows sale price and stock as you type, and Enter always looks up exactly what was typed (so a barcode scanner or fast typist never gets a stale match). The discount is applied to the unit price. Leaving a half-filled bill asks first.
- Add new item in purchase and sales: item name, sale rate, MRP, HSN code, tax rate (GST %) and unit in one small form. Enter moves to the next field and saves from the last; Save & add another keeps the form open so several items can be created in a row. The item is saved to the catalogue (searchable and reusable straight away), its sale rate goes to the price list, and the tax rate is recorded for its HSN code if none is on file. On the sales screen it is added to the bill at its sale rate, and searching or scanning something that does not exist offers to create it.
- Tally day-book import: Sales and Purchase vouchers in a Tally XML export become past invoices (original number, date, party and total, tax included). Cancelled and optional vouchers are skipped; receipts and payments are separate vouchers in Tally, so invoices arrive fully due.
- Imported invoices show what is still owed and for how long: an "Unpaid only" filter, an age in days on every invoice, and an ageing table (0-30, 31-60, 61-90, over 90 days) for customers and suppliers. Still a reference view; the books' balances come from the opening balances.
- Install on a phone: the web app has an install manifest and icons, so "Add to Home screen" opens Rechvix full screen like an app. It is a web app, not a store app.
- No database migration.
Install on Ubuntu or Debian (amd64, arm64)
curl -fsSL https://rechvix.nodedr.com/install-linux.sh | sudo bash
Docker, CasaOS and the Windows app are described at https://rechvix.nodedr.com/install.
Rechvix 0.19.0
- Import your data (new menu item,
/import): one guided page that takes a business over from Vyapar, Tally, Marg or a spreadsheet in the right order: customers and suppliers, items with opening stock, opening balances, then past invoices. Each step has the column-matching preview and never writes until confirmed. - Opening balances for customers and suppliers become real journal entries (a receivable as Dr Accounts Receivable / Cr Opening Balance Equity, a payable as Dr Opening Balance Equity / Cr Accounts Payable, tagged to the party), so ledgers, ageing and the dashboard are right from the first day. One balance per contact, so a file can be re-run safely; a contact that is both customer and supplier must say RECEIVABLE or PAYABLE; the books still balance. New
POST /migration/opening-balances/importand/inspect. - Past invoices (sales and purchases) are kept in an imported-history register with their original numbers, dates, totals and amounts paid, searchable on the Import page. They are reference records only and never change stock, tax returns or the accounts, so nothing is counted twice. Day-first dates (25/12/2025, 25-Dec-2025) are understood. New
POST /migration/invoices/import,/inspectandGET /migration/invoices. Migration 0064 (additive). - Dashboard "How customers paid": cash, UPI, card, bank transfer, cheque and other for the chosen period, from the receipts already recorded, with amounts and percentages. New
GET /reports/sales/payment-modes.
Install on Ubuntu or Debian (amd64, arm64)
curl -fsSL https://rechvix.nodedr.com/install-linux.sh | sudo bash
Docker, CasaOS and the Windows app are described at https://rechvix.nodedr.com/install.
Rechvix 0.17.1
- Fixed the dashboard (and any long page) scrolling past its end and exposing a white strip: content positioned absolutely inside a page, such as screen-reader tables and chart internals, was escaping the scroll area and making the whole document taller than the window. The scroll area now contains it, the shell height follows a phone browser's collapsing toolbar, and scrolling no longer chains to the page.
- Dashboard: "Collect payments" (largest balances with a one-tap WhatsApp reminder) and "Running low" (items under their reorder level, with a link to create a purchase). The Receivable vs payable chart uses compact figures so labels are no longer cut off on phones, and a sales change above 999% reads ">999%".
Install on Ubuntu or Debian (amd64, arm64)
curl -fsSL https://rechvix.nodedr.com/install-linux.sh | sudo bash
Docker, CasaOS and the Windows app are described at https://rechvix.nodedr.com/install.
Rechvix 0.17.0
- Bulk import of products and contacts now has a "Match your columns" step: headers from Vyapar, Tally, Marg or a hand-made sheet (Party Name, Phone No., Item Name, HSN, Sale Price, Tax Rate, Opening Stock and so on) are matched to Rechvix fields automatically and can be changed, skipped or set to one fixed value for every row (for example party type). Rupee signs, thousands separators (including 1,23,456.50) and a trailing % are cleaned from numeric columns. Files whose headers already use the old column names import exactly as before. New
POST /contacts/parties/import/inspectandPOST /catalogue/products/import/inspect; the import endpoints accept an optionalmappingquery parameter. No migration. - Tally Prime / ERP 9 master exports (.xml) import directly: Sundry Debtors and Creditors become customers and suppliers, stock items become products with unit, HSN, GST rate and opening quantity. Tally's UTF-16 files and stray control characters are handled. Choose the .xml file in the same import panel.
- Retail mode (Settings, per browser): hides CRM, Service, Accounting, SEPA and Integrations from the menu and command palette for counter-billing shops. Nothing is removed and the switch is reversible.
Install on Ubuntu or Debian (amd64, arm64)
curl -fsSL https://rechvix.nodedr.com/install-linux.sh | sudo bash
Docker, CasaOS and the Windows app are described at https://rechvix.nodedr.com/install.
Rechvix 0.15.2
- Ubuntu and Debian package (amd64 and arm64):
curl -fsSL https://rechvix.nodedr.com/install-linux.sh | sudo bashinstalls PostgreSQL if needed, creates the database and two roles, writes a private configuration with generated secrets, applies migrations and starts the server and worker under systemd. CI installs, uses, reinstalls, removes and purges it on Ubuntu 24.04 (both architectures) and Debian 12. Removing it keeps the database and encryption key. - Dashboard redesigned around one question, "what needs me today?": the period's sales with a comparison to the previous period and an insight headline, a "Needs your attention" list (overdue receivables, overdue CRM follow-ups, low stock, absent staff, tasks), and a ledger strip of today's sales, collections, receivable (with overdue share), payable and stock value. Period selector (7/30/90 days), refresh and freshness note. Headline figures show whole currency units.
- CRM rebuilt: summary strip, search, owner filter, board and list views, drag-to-move with rollback and keyboard stage buttons, call/WhatsApp/email on each deal, a side sheet for the deal and its activity, overdue follow-up highlighting, and a visible error with retry for each fetch (a failed load used to leave a skeleton on screen forever). Adapts Zulivio's lead card, stage strip and follow-up conventions.
- Sales documents show the invoice itself (seller, customer, itemised tax, totals, bank details) via the new
GET /sales/documents/{id}/preview, which returns the figures computed at finalization; the layout adapts Mavri's paper view. No recalculation happens in the browser. - GST is loaded and shown only for Indian companies. The GST page no longer requests rates, vehicles or e-Way Bills before the company is known or for a company abroad; the GST line column, GST settings panel, GSTIN labels and the "GST invoice" print label follow the company's country; creating a second company asks for its country instead of assuming India.
- CRM opportunity owner picker and audited assignment, adapting Zulivio's organisation-scoped reference checks. Foreign-tenant customer/owner references are rejected on creation and update.
- CRM quotations carry the selected customer and quotation type into the document workspace.
- Ageing totals retain the organisation's base currency outside the scoped query (fixes GBP/EUR/USD balances falling back to INR).
- Fresh-install quickstart refuses existing directories and no longer installs privileged packages. Generated secrets are private; installation reports ready only after Compose and HTTP readiness succeed.
- Added isolated GitHub-runner fresh-install smoke test. No database migration or new application dependency.
Changelog
Install on Ubuntu or Debian (amd64, arm64)
curl -fsSL https://rechvix.nodedr.com/install-linux.sh | sudo bash
Docker, CasaOS and the Windows app are described at https://rechvix.nodedr.com/install.