尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
製作者的介紹僅有上面的一句話。 更多詳情請閱讀儲存庫 README。 儲存庫 README ↗
正在載入完整 README。
檢視完整 README ↗Personal expense tracker: monthly expenses & income, custom categories, monthly plans, and month/year statistics.
Stack: Next.js 16 (App Router, Cache Components) · shadcn/ui · Tailwind v4 · Better Auth (Google) · Drizzle ORM · Neon Postgres · Recharts
npm install.env.example → .env.local and fill it in (see below).npm run db:migrate to create the tables.npm run dev and open http://localhost:3000In Google Cloud Console → Credentials create an OAuth client ID (type Web application):
http://localhost:3000 (+ your production URL)http://localhost:3000/api/auth/callback/google (+ https://<prod-domain>/api/auth/callback/google)Put the client ID/secret in GOOGLE_CLIENT_ID / GOOGLE_CLIENT_SECRET.
Anyone with a Google account can sign up. Every account gets the default categories on first sign-in, and all queries and actions are scoped to the signed-in user.
src/
app/
(app)/m/[month] month view: transactions, income, statistics (YYYY-MM)
(app)/y/[year] year statistics
(app)/settings categories, opening balance, account
api/auth/[...all] Better Auth handler
db/schema.ts Drizzle schema (auth + app tables)
server/
dal.ts requireUser(): the auth check used by every page & action
queries.ts read model (all queries scoped by userId)
actions.ts server actions (Zod-validated, re-authenticated, ownership-checked)
seed.ts default categories for new users
lib/ money (integer grosze), month helpers, category colors
components/ UI (shadcn in components/ui)
proxy.ts optimistic auth redirect to the landing page
type (expense / income).month_plan).src/db/schema.ts, then npm run db:generate and npm run db:migrate.npm run db:studio to browse data.