Offline-first property management software for mini hotels
A desktop PMS for small hotels and guesthouses in Vietnam.
Property onboarding · Vietnamese ID OCR · Check-in/check-out · Reservations · Night audit
Why CapyInn · Demo · Features · Local development · Verification
Built for mini hotels that need one local app for room status, guest intake, nightly billing, housekeeping, and end-of-day reconciliation.
CapyInn is a desktop app for mini hotels and guesthouses that need a local-first operating tool without relying on a remote backend. The project focuses on real front-desk workflows: room layout setup, faster guest intake, Vietnamese ID OCR, nightly pricing, housekeeping, revenue reporting, and end-of-day reconciliation.
Note:
CapyInnis a clean-slate rename fromMHM. Current builds use the new runtime root at~/CapyInnand do not auto-migrate legacy local data from~/MHM.
Table of contents
CapyInn is built for a narrow but practical use case: small hotels that need a system they can run locally, control directly, and adopt without a long setup project.
| Before | With CapyInn |
|---|---|
| Handwritten logs and fragmented tracking | Room status, bookings, and transactions live in one app |
| Manual guest registration entry | OCR extracts Vietnamese ID details and speeds up intake |
| Nightly pricing calculated by hand | Check-in, extend-stay, check-out, and folio flows are automated |
| End-of-day reporting done manually | Dashboard, analytics, expenses, and night audit are built in |
| Initial setup takes too much time | Onboarding generates room types, layouts, and operating defaults |
- Configure hotel identity, check-in and check-out rules, invoice details, and app lock
- Create room types and default pricing during the first-run wizard
- Generate a room layout by floors, room count, and naming scheme
- Dashboard organized around the configured room layout
- Check-in, check-out, extend-stay, and reservation flows in one desktop app
- Support for multiple guests on the same booking
- Fast copy flow for guest registration details
- Local OCR powered by PaddleOCR v5 through
ocr-rs - Watches
~/CapyInn/Scans/for new scan files - Extracts guest name, national ID number, birth date, and address for check-in
- Night-based pricing by room type
- Charge, payment, deposit, and balance tracking
- Revenue analytics, expense tracking, and CSV export
- Post-checkout housekeeping state tracking
- Maintenance notes per room
- Night-audit flow for daily reconciliation
- CapyInn can be extended through MCP-friendly workflows for operator tooling and agent-driven automations
- These flows can be paired with OpenClaw and n8n for custom orchestration around hotel operations
- For Zalo personal chat automations, you can use the prebuilt community node
n8n-nodes-zca-zalo, published on npm and built on top ofzca-js
- Severe crashes are always written locally under
~/CapyInn/diagnosticsso the app can recover on the next launch. - Sending a sanitized crash report to Sentry is optional and controlled in Settings. The remote report flow does not include usage analytics, session replay, guest records, or raw OCR payloads.
| Layer | Technology |
|---|---|
| App shell | Tauri 2 |
| Backend | Rust + SQLite (sqlx) |
| Frontend | React 19 + TypeScript |
| State | Zustand |
| UI | Tailwind CSS 4 + shadcn/ui |
| OCR | ocr-rs + PaddleOCR v5 + MNN |
| Charts | Recharts |
| Tests | Vitest + Rust tests + Clippy |
| Component | Requirement |
|---|---|
| macOS | 12+ |
| Node.js | 20+ |
| Rust | stable via rustup |
| Xcode CLT | recent version |
| Disk footprint | roughly 25MB before operational data |
The project is currently verified most heavily on macOS and Apple Silicon.
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source ~/.cargo/env
xcode-select --install
node --versiongit clone https://github.com/chuanman2707/CapyInn.git
cd CapyInn/mhm
npm ci
npm run tauri devcd CapyInn/mhm
npm run tauri buildRelease bundles are generated under mhm/src-tauri/target/release/bundle/.
cd CapyInn/mhm
npm test
npm run build
cargo check --manifest-path src-tauri/Cargo.toml
cargo test --manifest-path src-tauri/Cargo.toml
cargo clippy --manifest-path src-tauri/Cargo.toml --all-targets -- -D warningsIf you only need the web UI during frontend work:
cd CapyInn/mhm
npm run devCapyInn/
├── Public/ # README demo screenshots
├── mhm/
│ ├── src/ # React UI, stores, pages, components
│ ├── src-tauri/ # Rust backend, IPC commands, DB, gateway, OCR
│ ├── tests/ # Vitest suites and mocked desktop flows
│ ├── public/ # Static assets
│ └── models/ # OCR models
├── PRD.md # Product requirements
├── CONTRIBUTING.md
├── SECURITY.md
└── README.md
- OCR is currently optimized for Vietnamese national ID cards; passports and international documents are not complete yet
- Windows and Linux are not first-class targets yet
- The project is designed for mini-hotel scale, not large chain operations
Read CONTRIBUTING.md before opening a pull request.
Short checklist:
- Fork the repository
- Create a branch from
main - Keep commit messages in Conventional Commits format
- Re-run
npm test,npm run build,cargo check,cargo test, andcargo clippy - Open a pull request with scope and verification notes
CapyInn is released under the MIT License.







