Oracle3
Oracle3: 예측시장 거래 엔진·MCP 서버
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Prototype/foundation Next.js untuk mengubah foto struk belanja menjadi catatan keuangan terstruktur. Dibangun sebagai pondasi yang akan diperluas ke pelaporan keuangan perusahaan (multi-akun, multi-user, laporan periodik, dst).README 전문 보기 ↗
Prototype/foundation Next.js untuk mengubah foto struk belanja menjadi catatan keuangan terstruktur. Dibangun sebagai pondasi yang akan diperluas ke pelaporan keuangan perusahaan (multi-akun, multi-user, laporan periodik, dst).
@anthropic-ai/sdk) untuk
diekstrak jadi data terstruktur (merchant, tanggal, item, total).Next.js 16 (App Router, TypeScript, Tailwind v4)
Prisma 7 + SQLite (@prisma/adapter-libsql — dipilih karena binary-nya
prebuilt per platform, jadi npm install tidak butuh Python/C++ build tools
di Windows) — lihat
src/lib/db.ts dan src/lib/receipts.ts. Semua akses data lewat
src/lib/receipts.ts; ganti ke Postgres nanti cukup ubah DATABASE_URL,
adapter di db.ts, dan datasource.provider di prisma/schema.prisma.
LLM provider pluggable — lihat src/lib/llm/. getReceiptParser()
memilih implementasi berdasarkan env var LLM_PROVIDER:
gemini → @google/genai, butuh GEMINI_API_KEY
(free tier, tanpa kartu kredit)anthropic → @anthropic-ai/sdk, butuh ANTHROPIC_API_KEYUntuk menambah provider lain, buat adapter baru yang mengimplementasikan
ReceiptParser (satu method: parseReceipt), pakai normalizeReceipt() dari
src/lib/llm/normalize.ts untuk merapikan hasilnya, lalu daftarkan di
src/lib/llm/index.ts. Tidak ada file lain yang perlu disentuh.
cp .env.example .env
# isi GEMINI_API_KEY (atau ANTHROPIC_API_KEY, sesuai LLM_PROVIDER)
npm install # postinstall otomatis menjalankan `prisma generate`
npx prisma migrate dev # sekali di awal / setiap ubah schema
npm run dev
Di Windows PowerShell, pakai npm.cmd / npx.cmd kalau kena error execution
policy, atau jalankan Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser.
Buka http://localhost:3000.
Serverless punya filesystem read-only, jadi SQLite di disk tidak bisa dipakai di produksi. Databasenya pindah ke Turso (SQLite yang di-host, adapter-nya sama).
Buat database di turso.tech (free tier), catat URL
libsql://... dan auth token-nya.
Terapkan skema sekali. prisma migrate deploy tidak bisa dipakai di sini
karena Prisma 7 hanya menerima URL biasa untuk migration, jadi jalankan isi
prisma/migrations/20260918164830_init/migration.sql langsung:
turso db shell <nama-db> < .../migration.sql
di bash/zsh. Di PowerShell operator < tidak ada, pakai:
Get-Content .../migration.sql | turso db shell <nama-db>Di Vercel, isi environment variables:
| Key | Value |
|---|---|
DATABASE_URL | libsql://...turso.io |
TURSO_AUTH_TOKEN | token dari Turso (tandai sensitif) |
LLM_PROVIDER | gemini |
GEMINI_API_KEY | API key kamu (tandai sensitif) |
Biarkan Build/Output/Install Command memakai default Vercel.
Foto struk tidak tersimpan di produksi. saveReceiptImage() gagal diam-diam
di filesystem read-only dan struk tetap tercatat tanpa foto — saat ini tidak ada
bagian UI yang menampilkan foto tersimpan, jadi tidak ada fitur yang hilang.
Untuk menyimpannya secara permanen, ganti isi src/lib/image.ts ke object
storage (Vercel Blob / S3).
prisma/schema.prisma # model Receipt & ReceiptItem
src/lib/db.ts # Prisma client singleton + driver adapter
src/lib/receipts.ts # satu-satunya modul yang bicara ke database
src/lib/llm/ # interface ReceiptParser + adapter Claude
src/lib/image.ts # simpan foto struk ke public/uploads/receipts
src/app/api/receipts/parse/ # POST: foto -> data terstruktur (belum disimpan)
src/app/api/receipts/ # GET: daftar struk, POST: simpan struk
src/components/receipt-app.tsx # UI: upload -> review/edit -> riwayat
public/uploads/receipts), cukup untuk
prototype single-instance. Pindah ke object storage (S3, dll) kalau app
sudah jalan di lebih dari satu instance.category di ReceiptItem), belum ada
taksonomi/master data kategori — ditambahkan saat kebutuhan pelaporan jadi
jelas, bukan diasumsikan sekarang.public/uploads/receipts/. Belum ada
pembersihan otomatis — cukup untuk prototype, perlu ditangani sebelum produksi.