尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 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.