Voicebar
A voice-first keyboard for Android that works alongside Gboard. Tap Voice, talk, and a tidy message lands in the box.
翻譯準備中
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證A Simple Checklist app.
翻譯準備中
取自儲存庫 README
正在載入完整 README。
檢視完整 README ↗Shared Checklists - built with rowboat and BetterAuth.
nvm use reads .nvmrc) and npm 12 (npm install -g npm@12, once per Node
install)Each npm major writes different lockfile metadata (optional platform binaries, dev and
devOptional flags), so an install under another npm rewrites the lockfiles. The engines field
in the root, backend/ and migration/jazz-export/ package.json, each of which has its own
lockfile, pins the majors only (node ^24.0.0, npm ^12.0.0), since a minor version changes no
lockfile and the CI host runs an older Node 24 than the laptops. Each directory's .npmrc sets
engine-strict, so npm install under another major stops with EBADENGINE before it touches a
lockfile. scripts/toolchain.ts checks the running Node and npm against engines;
scripts/pre-land runs it, so the shared land command refuses a mismatched toolchain, and
scripts/toolchain.test.ts fails if the three engines fields differ or .nvmrc names another
Node major. To move to a new major, change all four in one commit and regenerate the lockfiles in
the next.
npm 12 runs a dependency's install scripts only when allowScripts in that package.json approves
them: esbuild and lefthook at the root, better-sqlite3 and esbuild in backend/. sharp
(used only by the icon and asset scripts) stays blocked. Approve a new one with
npm install-scripts approve <pkg> after reading what its script does.
npm install
cd backend && npm install && cd ..
cp .env.example .env
cp backend/.env.example backend/.env
# Edit both .env files with your OAuth credentials
npm run dev # Runs both frontend and backend
Visit http://localhost:5173
Available dev commands:
npm run dev - Run both frontend (port 5173) and backend (port 3001)npm run dev:frontend - Run only frontendnpm run dev:backend - Run only backendGoogle OAuth: https://console.cloud.google.com/ Apple OAuth: https://developer.apple.com/
Add redirect URIs:
http://localhost:5173/api/auth/callback/{provider}https://yourdomain.com/api/auth/callback/{provider}GOOGLE_CLIENT_ID=your_google_client_id
GOOGLE_CLIENT_SECRET=your_google_client_secret
APPLE_CLIENT_ID=your_apple_client_id
APPLE_CLIENT_SECRET=your_apple_client_secret
VITE_API_URL=http://localhost:3001
STRIPE_SECRET_KEY=your_stripe_secret_key
STRIPE_WEBHOOK_SECRET=your_stripe_webhook_secret
Templates are reusable checklists organized in folders.
Sessions are created when you "use" a template - they track what's in your cart and what you've purchased without modifying the template. A session is labeled by its date until you give it a name with Rename in its row menu.
Keyboard shortcuts in a session:
↓ / ↑: move between itemsSpace / Enter: check or uncheck the focused itemN: open the add/edit formEsc: leave the sessionrowboat provides:
BetterAuth provides:
Stripe provides:
npm run dev # Start dev server (frontend + backend)
npm run build # Build for production
npm run lint # Run linter
npm run type-check # Check TypeScript
npm run test:run # Run unit tests
npm run test:e2e # Run E2E tests
npm run check # Run type-check + lint + tests
See ARCHITECTURE.md for system overview and code locations.
Getting Started:
QUICKSTART.md - Get started in 5 minutesREADME.md - This fileArchitecture & Development:
ARCHITECTURE.md - System architecture and code organizationCLAUDE.md - Development guide and rowboat patternsdocs/DESIGN_SYSTEM.md - UI/UX design patternsdocs/INDENTED_LIST_FORMAT.md - Hierarchical text import/export formatDeployment:
DEPLOY.md - Deployment instructionsProduct:
docs/BACKLOG.md - Single project backlog (outstanding features + engineering)docs/ROADMAP.md - Product positioning and market analysisdocs/MARKET_COMPARISON.md - Competitive analysisdocs/GooglePlayStore.md - App store submission checklistThe app supports multiple brands via runtime domain detection:
Brand configuration is in src/lib/brand.ts. Set VITE_BRAND env var to override.
See DEPLOY.md for detailed deployment instructions.
Quick start:
./deploy-full.sh init # Initial deployment (frontend + backend)
./deploy-full.sh update # Subsequent updates
The app deploys in two parts:
PolyForm Noncommercial 1.0.0 - Free for non-commercial use.