FullStack-Flow /
cashory
Cashory Demo is a full‑stack, mobile‑first personal finance and lightweight invoicing app built as a Bun monorepo with an Expo/React Native client and a Hono/Bun API backed by PostgreSQL and Drizzle.
70/100 healthLoading repository data…
nihar8262 / repository
A full-stack personal finance application for tracking daily spending, managing budgets, sharing group wallets, and staying on top of bills — built with TypeScript, React, Express, PostgreSQL, and Firebase Auth.
A transparent discovery signal based on current public GitHub metadata.
This score does not audit code, security, maintainers, documentation quality, or suitability. Verify the repository and its current documentation before adoption.
A full-stack personal finance application for tracking daily spending, managing budgets, sharing group wallets, and staying on top of bills — built with TypeScript, React, Express, PostgreSQL, and Firebase Auth.
search_expenses_semantic) and structured retrieval tools, secured via user-managed SHA-256 hashed personal access tokens.| Layer | Technology |
|---|---|
| Frontend | React 19, TypeScript, Vite, Tailwind CSS v4 |
| Backend | Node.js, TypeScript, Express (local dev) |
| Production | Vercel Serverless Functions (API routes under api/) |
| Database | PostgreSQL with pgvector extension via postgres npm package |
| Auth Client | Firebase Auth (signInWithPopup for Google, GitHub, Facebook) |
| Auth Server | Firebase Admin SDK (ID token verification) |
| Testing | Vitest (backend unit tests with in-memory store) |
| AI Inference | Llama 3.1 70B (NVIDIA NIM) & Gemini 2.5 Flash / Embeddings |
| MCP Transport | Server-Sent Events (SSE) + HTTP POST JSON-RPC 2.0 |
| Monorepo | npm workspaces (backend/, frontend/) |
┌───────────────────────────────────────────────────────────────┐
│ Client (Browser) │
│ │
│ React SPA ── Firebase Auth ── fetch("/api/...") │
│ Vite Dev Server (port 5173) proxies /api → localhost:4101 │
└──────────────┬────────────────────────────────────────────────┘
│ Authorization: Bearer <Firebase ID Token>
▼
┌───────────────────────────────────────────────────────────────┐
│ API Layer │
│ │
│ Local: Express server (port 4101) │
│ Prod: Vercel Serverless Functions (api/*.js) │
│ │
│ ┌─────────────┐ ┌──────────────┐ ┌──────────────────┐ │
│ │ auth.ts │ │ http.ts │ │ lib/validation │ │
│ │ Firebase │──▶│ Handler fns │◀──│ Zod schemas │ │
│ │ Admin verify│ │ (pure logic) │ └──────────────────┘ │
│ └─────────────┘ └──────┬───────┘ │
│ │ │
│ ┌───────▼────────┐ │
│ │ store/ │ │
│ │ ├ types.ts │ ExpenseStore interface │
│ │ ├ postgres.ts │ Production impl │
│ │ └ memory.ts │ Test impl │
│ └───────┬────────┘ │
└────────────────────────────┼──────────────────────────────────┘
│
┌────────▼────────┐
│ PostgreSQL │
│ (hosted/cloud) │
└─────────────────┘
expense-tracker/
├── api/ # Vercel serverless entry points
│ ├── expenses.js # /api/expenses[/:id]
│ ├── budgets.js # /api/budgets[/:id]
│ ├── wallets.js # /api/wallets[/:id/...]
│ ├── notifications.js # /api/notifications[/:id/...]
│ ├── bill-reminders.js # /api/bill-reminders[/:id]
│ ├── wallet-invites.js # /api/wallet-invites[/:id/respond]
│ ├── reminder-preferences.js # /api/reminder-preferences
│ ├── account.js # /api/account
│ ├── health.js # /api/health
│ └── _lib/ # Shared serverless utilities
│
├── backend/ # Express backend (npm workspace)
│ ├── src/
│ │ ├── server.ts # Dev server entry (port 4101)
│ │ ├── app.ts # Express app factory with all routes
│ │ ├── auth.ts # Firebase Admin token verification
│ │ ├── http.ts # Pure handler functions
│ │ ├── lib/
│ │ │ └── validation.ts # Zod request schemas
│ │ └── store/
│ │ ├── types.ts # ExpenseStore interface & record types
│ │ ├── postgres.ts # PostgreSQL implementation
│ │ └── memory.ts # In-memory implementation (tests)
│ └── test/
│ └── expenses.test.ts # Vitest test suite
│
├── frontend/ # React frontend (npm workspace)
│ ├── src/
│ │ ├── main.tsx # App entry point
│ │ ├── App.tsx # Root component (routing, state, API)
│ │ ├── auth.ts # Firebase Auth client setup
│ │ ├── types.ts # Shared TypeScript types
│ │ ├── styles.css # Tailwind v4 + custom theme
│ │ ├── pages/
│ │ │ ├── LandingPage.tsx # Pre-auth landing
│ │ │ ├── AuthPage.tsx # Sign-in with social providers
│ │ │ ├── DashboardPage.tsx # Stats, budgets, trends, insights
│ │ │ ├── ExpensesPage.tsx # CRUD expenses with filters
│ │ │ ├── WalletsPage.tsx # Shared wallets management
│ │ │ └── AlertsPage.tsx # Notifications & bill reminders
│ │ ├── components/
│ │ │ ├── ui.tsx # Design system primitives
│ │ │ ├── BudgetTrackerSection.tsx
│ │ │ ├── CategoryIcon.tsx
│ │ │ ├── NotificationCenter.tsx
│ │ │ ├── ProfileMenu.tsx
│ │ │ ├── ConfirmModal.tsx
│ │ │ ├── AlertsSurface.tsx
│ │ │ └── ProviderLogo.tsx
│ │ └── layouts/
│ │ └── SignedInLayout.tsx # App shell (nav, bottom tabs, profile)
│ └── vite.config.ts # Vite + Tailwind + dev proxy
│
├── images/ # Application screenshots
├── vercel.json # Vercel deployment config & rewrites
├── package.json # Root workspace config
└── .env.example # Environment variable template
User clicks "Sign in" ──▶ Firebase Auth popup (Google / GitHub / Facebook)
│
▼
Firebase returns ID token
│
┌─────────────────┼─────────────────┐
▼ ▼
Stored in browser Sent as Bearer token
(browserLocalPersistence) on every API request
│
▼
Backend verifies token
via Firebase Admin SDK
│
▼
Extracts user.id (UID),
email, name, picture
│
▼
All queries scoped to UID
signInWithPopup and browserLocalPersistence. The onAuthStateChanged listener detects login state on page load.withAuthenticatedUser(), which decodes the Authorization: Bearer <token> header using firebase-admin. Unauthenticated requests receive a 401.userId in their WHERE clauses. Users can only access their own expenses, budgets, and notifications.wallet_members before returning wallet details.Selected from shared topics, language and repository description—not editorial ratings.
FullStack-Flow /
Cashory Demo is a full‑stack, mobile‑first personal finance and lightweight invoicing app built as a Bun monorepo with an Expo/React Native client and a Hono/Bun API backed by PostgreSQL and Drizzle.
70/100 healthChia1104 /
A modern full-stack personal website and content management system built with Next.js and Hono, featuring a monorepo architecture powered by Turborepo.
69/100 healthanand-ps /
The Personal Finance Management System is a full-stack platform built to simplify shared expense tracking, automate participant-level balance computation, and provide real-time visibility into personal and group financial flow.
62/100 healthimthatdev /
Swush is a secure, self-hosted full‑stack media, files, and contents manager and personal dashboard built with Next.js, TypeScript, TailwindCSS, and other tools.
77/100 healthhoangsonww /
A full-stack personal finance manager powered by Agentic AI, MCP, Next.js, Express, MongoDB, and a TypeScript Turborepo. Track accounts, transactions, budgets, goals, and analytics with a responsive UI, CSV import, and production-ready DevOps infrastructure (Docker, Kubernetes, Terraform, & multi-cloud support - AWS, Azure, OCI, and GCP)
66/100 healthasilbek2706 /
asilbek.dev - My personal full-stack web-site
53/100 health