A sleek, fast, and modern Progressive Web App (PWA) for scanning and organizing documents using your phone. Designed to feel as intuitive as Notion — with built-in AI processing and seamless integration with Google Drive and Notion.
- 📸 Camera-first UI – Scan or upload directly from your device
- 📡 Offline queue + auto sync – Uploads even when offline, with retry
- 🔄 SyncBox view – Manage document queue, status, retry or delete
- 🌙 Dark/light mode – Based on system + toggle in UI
- 🌐 Multi-language support – Polish 🇵🇱 & English 🇬🇧 (more coming!)
- 🧠 AI classification (Claude/OpenRouter) – Detects invoice vs other
- 🗂️ Organizes in Google Drive – Auto folders per month/year
- 🧾 Logs in Notion – With category, summary, and file link
🔗 https://.github.io/document-scanner-pwa
Replace <your-username> with your actual GitHub username.
- Vue 3 + TypeScript
- Vite
- Tailwind CSS + shadcn/ui
- Pinia – state management
- Google Apps Script – backend
- Notion API, OpenRouter
# 1. Install dependencies
npm install
# 2. Run dev server
npm run dev
# 3. Build for production
npm run build
# 4. Preview production build
npm run previewMake sure to update
vite.config.tsbase path when building for GitHub Pages:base: '/document-scanner-pwa/',
- Push to
MVPbranch → triggers GitHub Actions - Builds app with Vite
- Publishes
/distfolder togh-pagesbranch - GitHub Pages serves the app from there
Workflow: .github/workflows/deploy.yml
src/
├── components/ui/ # Shared UI elements (Button, Card, Toast...)
├── views/ # HomeView.vue, SyncBox.vue, etc.
├── router/ # Vue Router
├── stores/ # Pinia store (queue, theme)
├── assets/ # Styles, icons, scss
├── App.vue # Root component
├── main.ts # Entry point
- Auto retry + spinner feedback
- Theme toggle + context menu
- Language switcher
- Upload with base64 compression
- Firebase / Supabase variant
- Animations / transitions like Notion
- Client-ready installer modal (add to homescreen)
Created with ❤️ by @lukasz512 – built for speed, clarity, and elegance.