8000 GitHub - jihunhong/velvet: πŸ“• Personal Finance Management Web Application Β· GitHub
[go: up one dir, main page]

Skip to content
jihunhongPublic

About

πŸ“• Personal Finance Management Web Application

Resources

Stars

4 stars

Watchers

2 watching

Forks

Repository files navigation

Velvet

Status React TypeScript Vite Tailwind CSS

Personal Finance Management Web Application

Velvet Dashboard Preview

Velvet is a local-first personal finance app. All records live in the browser's IndexedDB β€” there is no backend. Card-payment SMS messages are captured on iOS, pushed to a Google Sheet, and imported into the app on demand.

✨ Features

  • πŸ“Š Dashboard

    • Income/expense overview with period comparison
    • Spending limit against total budget
    • Profit/loss chart and recent transaction list
    • Regular-payment timeline (currently fed by static sample data)
    • On-device AI budget insights (Chrome built-in LanguageModel)
  • πŸ“ Transactions

    • Date-grouped list with expandable rows
    • Search, category filter and date range
    • Bulk selection, edit and delete
    • Detail modal per transaction
  • πŸ”„ Google Sheets Sync

    • OAuth connection and spreadsheet selection
    • Imports unprocessed rows into IndexedDB, then marks them processed in the sheet
    • Pending-count banner with reconnect handling
    • iOS Shortcut + Apps Script setup guide built into the app

πŸš€ Development Status

Done

  • Dashboard page
  • Transactions page (list, search, filter, bulk actions)
  • Settings page (Google Sheets connection, sync, iOS Shortcut guide)
  • IndexedDB persistence layer
  • AI budget insights

In Progress

  • Budget page β€” components are scaffolded but no route is wired yet
  • AI insights for spending (budget side only for now)

Planned

  • Savings goals and streak
  • Account/card management
  • Excel export
  • Bookmarks

πŸ›  Tech Stack

Area Choice
Framework React 18, TypeScript 5.9, Vite 6
Routing react-router-dom 7
Server state @tanstack/react-query 5
Persistence IndexedDB via idb (velvet-db)
Forms / validation react-hook-form + zod
Charts Recharts, D3
Styling Tailwind CSS 3.4
Overlays overlay-kit, framer-motion
Lint / format oxlint, Prettier

πŸ“¦ Installation & Setup

git clone https://github.com/jihunhong/velvet.git
cd velvet
npm install

Google Sheets sync needs an OAuth client ID. Create a .env in the project root:

VITE_GOOGLE_CLIENT_ID=<your-google-oauth-client-id>

The rest of the app works without it β€” only the Settings sync section is affected.

npm run dev

πŸ“œ Scripts

Command Description
npm run dev Start the Vite dev server on port 5173
npm run build Type-check (tsc -b) and build for production
npm run lint Run oxlint
npm run lint:fix Run oxlint with --fix
npm run preview Preview the production build
npm run screenshot Seed sample data and capture a dashboard screenshot into docs/assets

πŸ‘¨β€πŸ’» Developer

  • Development Period: 2024.03.31 ~
  • Developer: @jihunhong

Built with ❀️ by @jihunhong

About

πŸ“• Personal Finance Management Web Application

Resources

Stars

4 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

0