OpenChart
Claude·Codex와 함께하는 무료 데스크톱 차트 도구. 알림 설정·차트 움직임 분석·데이터 제공자 선택
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Ứng dụng web (cài được ra màn hình chính điện thoại) để hai người ghi và chia chi tiêu chung, kèm sổ chi tiêu cá nhân.
/api/import/notify; giao dịch
nằm ở Chờ xác nhận để xếp vào Cá nhân hay Sổ chung. Cài ở Liên kết → Tự động nhập.Next.js 16 (App Router) · React 19 · Prisma 7 · PostgreSQL (Neon). Triển khai trên Vercel: push lên main là tự build
(prisma generate && prisma db push && next build) và lên production.
Cần Node 22+ và Docker Desktop.
npm install
npm run db:up # Postgres trong Docker, cổng 5544 (compose.yaml)
npm run db:push # tạo bảng theo prisma/schema.prisma
npm run db:seed # dữ liệu mẫu: 3 người dùng, 2 sổ chung, ~6 tháng chi tiêu — XOÁ SẠCH dữ liệu cũ trong database ở máy
npm run dev # http://localhost:4000
npm test # bộ thử (Vitest): đọc thông báo ngân hàng / MoMo, đoán danh mục
Đổi gói thì dùng npm 10: npx npm@10 install <gói>. npm 11 (tới 11.6) làm rơi các gói biên dịch theo nền tảng khỏi
package-lock.json (binding của rolldown cho máy khác, lightningcss-* riêng của vite) — kể cả npm install không đổi gì.
Chỉ npm ci thì npm nào cũng được. optionalDependencies ghi sẵn @rolldown/binding-* cho Windows và Linux để lỡ dùng npm 11
thì Vitest vẫn chạy; nâng Vitest thì nâng các gói này cùng phiên bản rolldown.
db:push, db:seed, dev:login đọc .env.local; seed và dev:login từ chối chạy nếu DATABASE_URL không phải localhost.
Prisma 7: client sinh vào src/generated/prisma (không commit, tạo lại ở postinstall) — import từ
@/generated/prisma/client, không phải @prisma/client. Kết nối qua @prisma/adapter-pg (src/lib/db.ts); chuỗi kết nối
cho CLI nằm ở prisma.config.ts. Prisma 7 không tự đọc .env và db push không tự generate — các lệnh npm run db:* đã lo
việc đó. Script ở scripts/ import client TypeScript nên chạy qua tsx.
.env.localNext.js ưu tiên file này hơn .env. Không commit (.gitignore đã chặn .env*).
DATABASE_URL="postgresql://postgres:postgres@localhost:5544/chi_tieu"
AUTH_SECRET="<chuỗi ngẫu nhiên bất kỳ>" # node -e "console.log(require('crypto').randomBytes(32).toString('base64url'))"
Muốn đăng nhập Google thật ở máy thì thêm GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET (đặt trong .env hay .env.local đều được).
npm run dev:login # Quốc Thiệu ([email protected])
npm run dev:login -- [email protected] # người còn lại trong sổ
Lệnh in ra một dòng JavaScript. Mở http://localhost:4000/login, F12 → Console, dán dòng đó là vào app. Cookie ký bằng
AUTH_SECRET của .env.local nên không dùng được trên production; app không có đường đăng nhập nào thêm.
Tắt database: docker compose stop (dữ liệu giữ trong volume chi-tieu-db).
| Biến | Dùng cho |
|---|---|
DATABASE_URL | Postgres production |
AUTH_SECRET | ký cookie đăng nhập |
GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET | đăng nhập Google |
APP_URL (tùy chọn) | origin cố định cho địa chỉ callback Google, khi chạy sau proxy làm sai origin |
Đổi schema: chỉ thêm cột/bảng có giá trị mặc định hoặc cho phép null, và không thêm @unique vào bảng đã có dữ
liệu (dùng @@index) — prisma db push chạy thẳng lên database thật mỗi lần deploy, gặp cảnh báo mất dữ liệu là hỏng build.
docs/_internal/viec-con-treo.md — việc chưa làmdocs/_internal/nhat-ky-lam-viec.md — nhật ký làm việcAGENTS.md — quy ước mở / đóng phiên cho Claude