Open-source, mobile-first, self-hostable site management — for the people who actually run the job.
Track every delivery, vendor, payment, and rupee across one site or fifty. Installs on your phone as an app. Ships as a native desktop app. Your data, your server.
🚀 Sign Up Free • 👥 User Guide • 🤝 Contributing • 💬 Discussions
Construction runs on a thousand small facts: which vendor delivered what, on which date, for how much — and have we paid them yet? Most of that lives in notebooks, WhatsApp, and someone's head.
SiteWise puts it in one place. It's a modern, open-source construction site management app that handles both the operations (items, deliveries, vendors, services) and the finances (payments, accounts, outstanding balances, quotations) of real construction sites — built mobile-first so it works from the site, not just the back office.
It's a Progressive Web App you can install on any phone, it works offline, and it also ships as a native desktop app via Tauri. The backend is PocketBase — a single binary you can run anywhere — so self-hosting is genuinely easy and your data stays yours.
| Role | What they get |
|---|---|
| 👷 Owners | Full oversight across every site, finance-grade tracking, team control |
| 🧰 Supervisors | Fast on-site delivery logging, photo proof, day-to-day operations |
| 🧮 Accountants | Payment allocation, account balances, outstanding monitoring, exports |
Everything below is in the app today.
|
Run multiple construction sites from one account with strict per-site data isolation. Switch sites and every view re-scopes its data reactively — no leaks, no mixups. Three calculated permission roles — Owner, Supervisor, Accountant. Invite teammates and manage who can see and do what, per site. A catalog with units and tags, plus rich item detail pages: full delivery history, unit-price trend charts, price range (low / average / high), and total quantity delivered — so you always know if you're overpaying. Log multi-item deliveries with vendor, date, reference, and photo documentation straight from the camera. Browse proof in a full-screen, swipeable gallery, and track payment status per delivery. A vendor directory backed by detailed vendor pages with running balances (amount due / advance held) and a complete returns & refunds workflow for what goes back. |
SiteWise's most powerful surface. Track payments across multiple accounts, automatically allocate a single payment across deliveries, monitor outstanding amounts, and watch balances recalculate in real time. Drill into any account's detail page. Create and manage vendor quotations to compare and lock in pricing before you commit. Book labor, equipment, and professional services — manage rates, schedule work, and track completion with photo proof. Service detail pages keep the history. Real-time metrics with Chart.js visualizations: cost analysis, payment-trend charts, and vendor performance — turning raw entries into decisions. Built-in utilities including a time calculator, plus document tooling: PDF generation (jsPDF), in-app PDF viewing (pdf.js), and bulk export / zip (JSZip) for handing data to your accountant. |
📱 …and the polish layer that makes it pleasant to actually use
- Installable PWA — add to home screen, works offline, camera capture for delivery photos
- Native desktop app — packaged with Tauri for Windows / macOS / Linux
- Subscription system — tiered plans with usage limits (items, vendors, deliveries, and more), unlimited (
-1) plan support, and usage-aware gating on create actions - Onboarding & guided tours — a new-user onboarding flow plus interactive product tours (driver.js)
- Light & dark theme
- Keyboard shortcuts —
Shift+Alt+Nto create,Escto close modals, and more - Mobile-native feel — bottom navigation, pull-to-refresh, skeleton loaders, toast notifications
- Internationalization — full English and Hindi translations
- Node.js 20+
- A running PocketBase instance (the backend — a single downloadable binary)
- A modern web browser
# 1. Clone the repository
git clone https://github.com/site-wise/app.git
cd app
# 2. Install dependencies
npm install
# 3. Set up your environment
cp .env.example .env
# Edit .env and point VITE_POCKETBASE_URL at your PocketBase instance
# 4. Start the dev server
npm run dev🎉 Visit http://localhost:5173 and you're in.
Both halves of SiteWise ship as containers — the PocketBase backend (bundled with the SiteWise hooks, on a pinned release) and the Vue frontend (nginx).
# Backend (PocketBase) — serves on :8090, data in a named volume
cd external_services/pocketbase
TURNSTILE_SECRET_KEY=your-secret docker compose up -d --build
# Frontend (point it at your backend at build time)
docker build --build-arg VITE_POCKETBASE_URL=https://api.your-domain.com \
-t sitewise-frontend .
docker run -d -p 8080:8080 sitewise-frontendThere's also an ONCE-compatible backend image
(external_services/pocketbase/Dockerfile.once) for one-command self-hosting on
the ONCE app server. Full walkthrough: docs/SELF_HOSTING.md.
npm run dev:tauri # native desktop app in dev mode
npm run build:tauri # produce a distributable desktop buildnpm run android:init # one-time: generate the Android project
npm run dev:android # run on a connected device / emulator
npm run build:android:apk # build an APK
npm run build:android:aab # build an AAB (Play Store)Requires the Android SDK, NDK, Java 17, and the Rust Android targets. See docs/MOBILE_AND_DESKTOP_BUILDS.md for the full local + CI + signing guide.
| Script | What it does |
|---|---|
npm run dev |
Vite dev server (web / PWA) |
npm run dev:tauri |
Native desktop app (dev) |
npm run build |
Type-check + production web build |
npm run build:tauri |
Build the native desktop app |
npm run dev:android |
Native Android app (dev) |
npm run build:android:apk |
Build an Android APK |
npm run build:android:aab |
Build an Android AAB (Play Store) |
npm test |
Run the test suite (Vitest) |
npm run test:ui |
Vitest interactive UI |
npm run test:coverage |
Tests with coverage report |
npm run lint |
Lint the codebase |
npm run preview |
Preview the production build |
Don't want to self-host? Sign up free at sitewise.in — no install required, start managing your sites in minutes.
SiteWise is a Vue 3 single-page app talking to a PocketBase backend over REST + realtime. The same frontend ships three ways: in the browser, as an installable PWA, and as a Tauri desktop app.
graph TB
subgraph Clients
W[Browser / PWA]
D[Tauri Desktop App]
end
subgraph "Vue 3 Frontend"
R[Vue Router]
P[Pinia State]
C[Chart.js Analytics]
T[TailwindCSS UI]
SW[PWA Service Worker]
end
subgraph "PocketBase Backend"
API[REST + Realtime API]
DB[(SQLite)]
FS[File Storage / Photos]
end
W --> R
D --> R
R --> P
P --> API
SW --> P
API --> DB
API --> FS
| Category | Technologies |
|---|---|
| Frontend | Vue 3, TypeScript, Vite, TailwindCSS |
| State & Routing | Pinia, Vue Router |
| Backend | PocketBase (single binary, SQLite-backed) with realtime |
| Charts & Icons | Chart.js + vue-chartjs, Lucide |
| Documents | jsPDF (generation), pdf.js (viewing), JSZip (bulk export) |
| UX | driver.js (tours), vue-toastification, vite-plugin-pwa |
| Desktop | Tauri |
| Testing | Vitest, Vue Test Utils, Happy DOM |
| CI / Quality | GitHub Actions, Codecov |
| Document | Description |
|---|---|
| 👥 User Guide | End-user manual |
| 🐳 Self-Hosting | Deploy the backend + frontend with Docker (incl. ONCE) |
| 🤝 Contributing | How to contribute to the project |
| 🔒 Security | Security policy and responsible disclosure |
| 📋 Code of Conduct | Community guidelines |
SiteWise ships with two complete, first-class languages. More are welcome — translations live in src/locales, and every visible string must exist as a key in both en.json and hi.json.
| Language | Status |
|---|---|
| 🇬🇧 English | ✅ Complete |
| 🇮🇳 Hindi | ✅ Complete |
| 🌐 Your language | 📝 Help wanted — contribute a locale |
Security and tenant isolation are core to SiteWise:
- 🔐 Authentication via PocketBase's auth system with secure token handling
- 🛡️ Role-based access control — Owner / Supervisor / Accountant, with permissions calculated per role
- 🏢 Strict per-site data isolation — every service filters by the current site, and
getByIdlookups validate site ownership to prevent cross-site access - 🚨 Automated security scanning in CI
Found a vulnerability? Please report it responsibly to [email protected]. See our Security Policy for details.
SiteWise is built in the open, and contributions of every size are welcome.
- 🐛 Report bugs — open an issue
- ✨ Suggest features — start a discussion
- 📝 Improve docs — clearer docs help everyone
- 🔧 Write code — features, fixes, refactors
- 🌍 Translate — bring SiteWise to a new language
- 🎨 Design — sharpen the UI/UX
- Fork the repo and clone your fork
- Branch off
main - Make your change (add new strings to both
en.jsonandhi.json) - Test with
npm test - Open a pull request
👀 New here? Look for issues labeled good first issue. Read CONTRIBUTING.md before you start.
Forward-looking and shaped by the community — these are directions, not promises with dates.
🔜 Now
- Expand automated test coverage across views
- Documented self-host / deployment guide
- Deeper analytics on the dashboard
🛠️ Next
- More export formats and accounting-friendly reports
- Additional language translations
- Richer photo management
🔮 Later
- Integrations with popular accounting tools
- Project timeline / scheduling views
- Budget forecasting and variance analysis
Want to influence the roadmap? Join the discussions.
| Need | Where to go |
|---|---|
| 🐛 Bug reports | GitHub Issues |
| ❓ Questions & ideas | GitHub Discussions |
| 🔒 Security | [email protected] |
| 💼 Business inquiries | [email protected] |
SiteWise is open source under the O'Saasy License.
O'Saasy License — see the LICENSE file for details.
Copyright (c) 2025 SiteWise
SiteWise stands on the shoulders of excellent open-source projects:
- Vue.js — the progressive JavaScript framework
- PocketBase — open-source backend in a single file
- Tauri — tiny, secure native desktop apps
- TailwindCSS — utility-first CSS
- Vite — next-generation frontend tooling
- TypeScript — JavaScript with types
- Chart.js — flexible charting
…and everyone who contributes to making SiteWise better. 🎉
⭐ If SiteWise helps you run your sites better, give it a star — it genuinely helps. ⭐
🏠 Website • 🚀 Sign Up Free • 👥 User Guide • 💬 Discussions • 🐛 Issues • 🤝 Contribute