Oracle3
Oracle3: 예측시장 거래 엔진·MCP 서버
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗A business-tracking app for freelancers and small businesses in Austria — income/expense tracking, VAT (UVA) reporting, invoicing, and industry-specific modules (Transport/Fleet, Retail/Inventory), plus a read-only companion portal for accountants.
Live: https://smartac-wine.vercel.app
A single-file, no-build, client-side web app. There is no backend and no build step — index.html is the entire application (HTML, CSS, and JS in one file), loaded directly by the browser or served as-is by Vercel.
Two HTML files make up the product:
index.html — the main app: transactions, invoices, clients/suppliers, employees, calendar/notes, and (depending on the business's selected type) Fleet or Inventory. This is what business owners use.buchhalter.html — German-only, read-only accountant portal in the Trabis design (client list → year/month view with invoices → employees' hours & leave → government entities → Steuerberater-Paket). All data goes through one BuApi object: today it reads the same browser's storage as the app; set window.BU_API_BASE to talk to the server instead (contract in ACCOUNTANT_SHARING.md).| File | What it is |
|---|---|
trabis.html | The current app (served at /). Full working app with the new home picker, month screen, Government Entities, Projects and the timesheet/vacation sheet. Same smartac_* storage keys as before. |
index.html | The previous stable app, kept untouched and reachable at /index.html. |
css/trabis.css, js/*.js | The current app's styles and code, split out of trabis.html by area (01-core … 14-system, then 99-boot). Plain global scripts, loaded in order — no build step. 99-boot.js runs last (language + saved notifications). jsPDF comes from cdnjs (same 2.5.1 that used to be inlined). |
preview.html | Static design mockup with demo data only, reachable at /preview.html. |
buchhalter.html | Read-only accountant portal (BuApi: local storage now, server via BU_API_BASE). |
trabis-package.js | Builds the accountant package (PDF with invoices + Excel + CSV); shared by the app and the portal. |
vercel.json redirects / to /trabis.html (a rewrite does not work because Vercel serves the existing index.html first).
index.html) for PDF export; SheetJS via CDN for Excel exportpackage.json, no build pipeline — the app runs by opening the HTML fileThere's nothing to install or build. Either:
# just open it
open index.html
# or serve it (recommended, so relative paths and the PWA manifest work correctly)
python3 -m http.server 8000
# then visit http://localhost:8000
Everything lives in the browser — there is no server and no database.
localStorage, namespaced per user: keys are prefixed smartac_u_<username>_<key> (see uk() in index.html). All reads/writes go through loadUserData() and save().smartac_receipts (expense receipts), smartac_empdocs (employee documents), smartac_fleetdocs (vehicle documents). Created via a shared makeFileStore(dbName) factory.btoa, not real encryption — this is a prototype auth scheme) live under smartac_accounts.⚠️ IndexedDB gotcha: indexedDB.open(name, version) creates the database if it doesn't exist yet, even from a read-only caller. buchhalter.html has to open these databases without ever accidentally triggering their onupgradeneeded (which would leave an empty, uninitialized store that the main app can then never properly create). If you touch the IndexedDB code in either file, preserve the existence-check-first pattern in buchhalter.html's idbGet()/dbExists().
Because everything is localStorage/IndexedDB, data is per-browser, per-device — there's no sync between devices. That's also why buchhalter.html only works from the same browser the business data was entered in.
Set once at registration (state.businessType, editable later from Settings → Account). Gates which extra modules show up in navigation:
| Type | Unlocks |
|---|---|
general | Base app only |
transport | Fleet (vehicles, maintenance log, document expiry alerts, depreciation linked to Assets) |
retail | Inventory (products, stock levels, low-stock alerts, quantity auto-adjusts on income/expense) |
restaurant, construction, medical | Selectable in onboarding, but no dedicated module yet — planned for v2.0 |
Auto-deploys via Vercel on every push to main. There's no CI/build step — Vercel just serves the static files.
See TODO.md for the phased plan (current phase, what's done, what's deferred to the Cloud/v2.0 phase, and why).
Bringing on a backend developer for the Cloud (v2.0) phase? See BACKEND_HANDOFF.md — what's already set up (Supabase schema, RLS, Auth, Storage buckets), what's still client-only, and the Supabase-vs-own-server tradeoffs.
Proprietary — Smartordi OG. Not licensed for reuse.