Inch is an application to manage (and remind you of) your daily checklist. Frictionless, unobtrusive and easy to use. It is built upon the idea, that single, small steps sum up to something greater that can be done with great effort.
  • Vue 66.6%
  • TypeScript 26.8%
  • JavaScript 4.1%
  • Shell 1.3%
  • HTML 1.1%
Find a file
Oliver Schwarz 318f7cb0d7 refactor: remove Supabase cloud sync (v0.5.0)
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]>
2026-01-26 23:45:12 +01:00
concept Adding Inch Description 2026-01-13 13:51:54 +01:00
helper feat: add scp deployment script 2026-01-26 13:23:57 +01:00
prompt Adding project handoff for more prompt contexts to start with 2026-01-13 13:55:07 +01:00
prompts/completed feat: add version display, import/export, and branding update (v0.1.2) 2026-01-20 19:54:59 +01:00
public feat: release 1.0.0 with cloud sync and authentication 2026-01-26 23:23:26 +01:00
scripts feat: release 1.0.0 with cloud sync and authentication 2026-01-26 23:23:26 +01:00
src refactor: remove Supabase cloud sync (v0.5.0) 2026-01-26 23:45:12 +01:00
.gitignore feat: add scp deployment script 2026-01-26 13:23:57 +01:00
.prettierrc.json feat: MVP release v0.1.0 2026-01-16 20:49:39 +01:00
CHANGELOG.md refactor: remove Supabase cloud sync (v0.5.0) 2026-01-26 23:45:12 +01:00
CLAUDE.md refactor: remove Supabase cloud sync (v0.5.0) 2026-01-26 23:45:12 +01:00
env.d.ts feat: add version display, import/export, and branding update (v0.1.2) 2026-01-20 19:54:59 +01:00
eslint.config.js feat: add URL truncation and drag-and-drop item reordering (v0.1.1) 2026-01-20 19:33:27 +01:00
index.html feat: MVP release v0.1.0 2026-01-16 20:49:39 +01:00
LICENSE.md docs: Add README documentation and MIT license 2026-01-16 20:58:53 +01:00
package-lock.json refactor: remove Supabase cloud sync (v0.5.0) 2026-01-26 23:45:12 +01:00
package.json refactor: remove Supabase cloud sync (v0.5.0) 2026-01-26 23:45:12 +01:00
postcss.config.js feat: MVP release v0.1.0 2026-01-16 20:49:39 +01:00
readme.md feat: add scp deployment script 2026-01-26 13:23:57 +01:00
tailwind.config.js feat: MVP release v0.1.0 2026-01-16 20:49:39 +01:00
tsconfig.app.json feat: MVP release v0.1.0 2026-01-16 20:49:39 +01:00
tsconfig.json feat: MVP release v0.1.0 2026-01-16 20:49:39 +01:00
tsconfig.node.json feat: MVP release v0.1.0 2026-01-16 20:49:39 +01:00
vite.config.ts feat: add version display, import/export, and branding update (v0.1.2) 2026-01-20 19:54:59 +01:00

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