尚未检测到更新。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.