- Vue 66.6%
- TypeScript 26.8%
- JavaScript 4.1%
- Shell 1.3%
- HTML 1.1%
Cloud sync via Supabase was experiencing connection reliability issues. Removed all authentication and sync functionality to keep the app stable. Removed: - @supabase/supabase-js dependency - src/lib/supabase.ts, src/lib/sync.ts - src/stores/auth.ts - src/views/AuthView.vue - src/components/MigrationPrompt.vue - supabase/schema.sql - .env.example Kept: - Settings modal (without account section) - What's New page - New checkmark app icon Co-Authored-By: Claude Opus 4.5 <[email protected]> |
||
|---|---|---|
| concept | ||
| helper | ||
| prompt | ||
| prompts/completed | ||
| public | ||
| scripts | ||
| src | ||
| .gitignore | ||
| .prettierrc.json | ||
| CHANGELOG.md | ||
| CLAUDE.md | ||
| env.d.ts | ||
| eslint.config.js | ||
| index.html | ||
| LICENSE.md | ||
| package-lock.json | ||
| package.json | ||
| postcss.config.js | ||
| readme.md | ||
| tailwind.config.js | ||
| tsconfig.app.json | ||
| tsconfig.json | ||
| tsconfig.node.json | ||
| vite.config.ts | ||
Inch
Tiny rituals, effortlessly remembered.
Inch is a lightweight Progressive Web App for managing recurring personal routines. It holds your checklists and gently reminds you when it's time — then gets out of your way.
Features
- Routines — Named checklists for recurring tasks (morning routine, weekly review, pre-flight packing)
- Triggers — Schedule reminders daily, weekly, or monthly — or trigger manually
- Frictionless completion — One tap per item, no confirmations, no celebrations
- Catch-up friendly — "Earlier today" section shows missed routines without guilt
- Offline-ready — Works without internet, installable on your home screen
- Privacy-first — All data stays on your device (localStorage)
Philosophy
| Principle | Meaning |
|---|---|
| Invisible until needed | No dashboards. Appears when triggered, disappears when done. |
| Zero guilt | No streaks, no judgmental messages. Missed routines are neutral. |
| Frictionless | One tap per item. No friction, no fanfare. |
| Your servant, not your coach | Holds what you tell it. Doesn't lecture or optimize. |
Architecture
src/
├── assets/ # Global CSS (Tailwind)
├── components/ # Reusable Vue components
│ └── RoutineCard.vue
├── composables/ # Vue composables
│ └── useRoutineReminders.ts
├── router/ # Vue Router configuration
├── stores/ # Pinia stores (state management)
│ └── routines.ts
├── types/ # TypeScript type definitions
│ └── routine.ts
└── views/ # Page-level components
├── RoutineListView.vue
├── RoutineCreateView.vue
├── RoutineEditView.vue
└── RoutineActiveView.vue
Tech stack: Vue 3, TypeScript, Vite, Tailwind CSS, Pinia, vite-plugin-pwa
Data storage: localStorage (device-local, no backend required)
Local Development (macOS)
Prerequisites
- Node.js 18+ — Install via Homebrew:
brew install node
Setup
# Clone the repository
git clone https://codeberg.org/schwarzdev/inch.git
cd inch
# Install dependencies
npm install
# Start development server
npm run dev
The app runs at http://localhost:5173
Available Commands
| Command | Description |
|---|---|
npm run dev |
Start dev server with hot reload |
npm run build |
Type-check and build for production (root path) |
npm run preview |
Preview production build locally |
npm run lint |
Run ESLint |
npm run lint:fix |
Fix ESLint issues |
npm run format |
Format code with Prettier |
Deploying to a Subpath
By default, the build assumes deployment at the root (/). To deploy under a subpath (e.g., https://example.com/inch/), set the VITE_BASE_PATH environment variable:
# Build for https://example.com/inch/
VITE_BASE_PATH=/inch/ npm run build
# Build for https://example.com/myapp/
VITE_BASE_PATH=/myapp/ npm run build
# Build for root (default)
npm run build
The built files will be in the dist/ folder, ready to deploy to your web server.
Deploying to Remote Server
Use the included deploy script to push the build to a remote server via scp:
# Copy the example env file and fill in your credentials
cp helper/.env.example helper/.env
# Edit helper/.env with your server details:
# DEPLOY_HOST=example.com
# DEPLOY_USER=username
# DEPLOY_PATH=/var/www/html
# Build and deploy
npm run build
./helper/deploy.sh
Regenerate PWA Icons
node scripts/generate-icons.js
License
MIT — see LICENSE.md