Skip to content

rajatvijay/mind

Repository files navigation

Mind

Mind

Save articles. Read them when you're ready.
Self-hostable. Offline-first. No algorithms.

Self-host · Features · Contribute


Mind is a read-later app you actually own. It's a PWA that installs on any device, works offline, and lets you share URLs straight from your phone's share sheet. Your reading list lives on your own database — no tracking, no feeds, no noise.

Features

  • Share to save — share a URL from any app on your phone, Mind catches it
  • Offline-first — your article list loads instantly from cache, even without a connection
  • Installable — works as a native app on iOS, Android, and desktop
  • Keyboard-firstj/k to navigate, / to search, e to mark read, ? for all shortcuts
  • API access — generate a token to save articles from scripts, shortcuts, or automation
  • Swipe gestures — swipe right to mark read, left to delete on mobile
  • Dark by default — easy on the eyes, always

Self-hosting

Mind is designed to be self-hosted. You need three things:

  1. Node.js 20+
  2. A Turso database — free tier is plenty
  3. Google OAuth credentials — from console.cloud.google.com

Get started

git clone https://github.com/rajatvijay/mind.git
cd mind
npm install

Create .env.local:

TURSO_DATABASE_URL=libsql://your-db.turso.io
TURSO_AUTH_TOKEN=your-token
GOOGLE_CLIENT_ID=your-client-id
GOOGLE_CLIENT_SECRET=your-client-secret
BETTER_AUTH_URL=http://localhost:3000
BETTER_AUTH_SECRET=$(openssl rand -hex 32)

Set up the database and run:

npx drizzle-kit push
npm run dev

That's it. Open localhost:3000.

Deploy

Works anywhere Node.js runs. For Vercel:

npx vercel

Set the same env vars in your provider's dashboard and update BETTER_AUTH_URL to your production URL.

iOS Shortcut

Save articles from Safari's share sheet using an iOS Shortcut.

Import the shortcut — you'll be asked to set your Mind URL and API token on import.

To generate an API token, open your Mind instance and use the iOS Shortcut Setup section on the main page.

Build your own

If you'd rather create one from scratch:

  1. Open the Shortcuts app → tap +
  2. Add a URL action — set it to https://your-mind-url/api/articles
  3. Add a Get Contents of URL action:
    • Method: POST
    • Headers: Authorization: Bearer YOUR_TOKEN
    • Body (JSON): {"url": "Shortcut Input"}
  4. Use Receive > URLs from the share sheet as input
  5. Done — share any link from Safari and pick your shortcut

Contributing

  1. Fork the repo
  2. Create a branch (git checkout -b my-feature)
  3. Make your changes
  4. npm run lint && npm run build
  5. Open a PR

Bug reports and ideas welcome in Issues.

Built with

Next.js 16 · React 19 · Turso · Drizzle · Better Auth · Tailwind CSS 4

License

MIT

About

Save articles. Read them when you're ready.

Resources

License

Stars

Watchers

Forks

Contributors