Skip to content
Back to projects

Case study 10 / 18 · Websites & apps

Amethyst

Status: Internal tool, not publicly available

An internal finance-management application for double-entry accounting, shared expenses, document management, and reporting. Its mobile-first design combines an installable web experience with an INR-based financial model.

Case study

Amethyst is the internal finance-management system for Rekndl, part of Emladris’s internal tooling. It covers double-entry accounting, shared expenses, supporting documents and reporting, across web, backend, worker and native-bridge code.

The problem

Bring internal financial records, shared expenses, supporting documents and reporting into one consistent workflow, with a single accounting database as the source of truth.

What was built

  • A mobile-first, installable web app on a double-entry accounting foundation.
  • Shared expenses, document management, financial reports and multi-currency handling.
  • Integrations for document storage in Google Drive and a one-way reporting mirror in Google Sheets.

Key decisions

  • PostgreSQL is the canonical financial database.
  • Amounts are based in INR, on Asia/Kolkata time, with an April-to-March financial year.
  • Google Sheets is a reporting mirror, never the source of truth.
  • Entries start manual, rather than promising automatic bank or revenue imports.

Outcomes

  • Built through twelve documented phases, followed by a production-readiness remediation (gates 0–4) that has been merged.

Where it stands

Internal and not publicly available. Connecting real Google resources, testing on native devices, off-site restore checks and review by a professional accountant are still to come.

How it was built

Frontend

  • React
  • TypeScript
  • Vite
  • Tailwind CSS
  • TanStack Query — Server state
  • React Hook Form and Zod — Validated finance forms
  • Recharts — Financial reports
  • Vite PWA — Installable web app
  • Capacitor — Native bridges for biometric sign-in, push notifications and document scanning

Backend

  • NestJS
  • Prisma
  • BullMQ — Background jobs
  • Passport and JWT — Google and token-based sign-in

Data

  • PostgreSQL — The canonical financial database

Integrations

  • Google OAuth
  • Google Drive API — Document storage
  • Google Sheets API — One-way reporting mirror

Infrastructure

  • Docker Compose

Testing

  • Vitest
  • Jest
  • Testing Library