Skip to content

MinitJain/recall

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

155 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Recall

Recall

Save it once. Recall brings it back.

Most bookmark managers help you save things. Recall helps you actually use them.

Live Build License Version PRs Welcome


Recall demo - paste a URL, AI tags it instantly

Try it live ยท Download Extension

What is Recall?

Recall is a bookmark manager that doesn't let things disappear. Save any URL and Gemini tags it automatically. Then Recall works in the background. A daily digest resurfaces things you forgot you saved. The Surprise me button pulls up a random save on demand. You don't have to remember to look. Recall remembers for you.

Search is there too. Find anything across titles, descriptions, and tags without remembering the exact URL.

Features

Feature Description Status
๐Ÿ”– Save anything Any URL works. Tweet, blog post, YouTube video, image, Reddit thread, product page. Live
๐Ÿค– AI auto-tagging The moment you save, Gemini generates 3โ€“5 relevant tags automatically. Not satisfied? You can always add or remove tags manually too. Live
๐Ÿ–ผ๏ธ Rich previews Every bookmark shows title, description, and thumbnail fetched automatically from OG tags. Live
๐Ÿงฉ Chrome extension Save any tab in one click or with Alt+Shift+S (Windows/Linux) / Option+Shift+S (Mac). No copy-paste needed. Live
๐Ÿ” Secure auth Email/password + Google + GitHub via Supabase Auth. Live
โšก Rate limiting Per-user rate limiting via Upstash Redis to keep the service stable. Live
๐Ÿ” Instant search Search by title, URL, or description. Filter by tag. Sort by newest, oldest, or Aโ†’Z. Live
๐Ÿ“ Collections Group bookmarks into folders. Filter your saves by collection. Live
๐Ÿ”— Bookmarklet No extension? Drag a link to your bookmarks bar to save any page from any browser in one click. Live
โœจ Resurfacing Daily digest email, random rediscovery ("Surprise me"), and unsubscribe flow. Recall brings things back to you. Live

Screenshots

Dashboard - every save, tagged and searchable Dashboard

Chrome extension - save any tab in one click Chrome extension

Daily digest - resurfaced in your inbox every morning Daily digest email

Random rediscovery - surface something you forgot you saved Random rediscovery

Tech Stack

Layer Technology
Frontend + API Next.js 16 (App Router)
Styling Tailwind CSS v4
Database PostgreSQL via Supabase
ORM Prisma 7
AI Tagging Google Gemini API
Auth Supabase Auth
Deployment Vercel
Rate Limiting Upstash Redis
Analytics Vercel Analytics + Speed Insights

Getting Started

Use the web app

Visit recallsave.vercel.app - no setup required. Sign up with Google, GitHub, or email and start saving immediately.

Run it locally

Prerequisites

Setup

git clone https://github.com/MinitJain/recall.git
cd recall/client
npm install

Create client/.env.local:

DATABASE_URL=your_supabase_postgres_connection_string
DIRECT_URL=your_supabase_direct_connection_string
NEXT_PUBLIC_SUPABASE_URL=your_supabase_project_url
NEXT_PUBLIC_SUPABASE_ANON_KEY=your_supabase_anon_key
GEMINI_API_KEY=your_gemini_api_key
UPSTASH_REDIS_REST_URL=your_upstash_redis_url
UPSTASH_REDIS_REST_TOKEN=your_upstash_redis_token
npx prisma generate
npx prisma db push
npm run dev

App runs at http://localhost:3000.

All npm and npx prisma commands must be run from the client/ directory.

Chrome Extension

From the Chrome Web Store

Coming soon. The extension is not yet listed on the Chrome Web Store. Download the latest release from the link at the top of this page, then follow the manual install instructions below.

Manual Install (Load Unpacked)

Manual install instructions

No ZIP download needed. Just clone the repo and point Chrome at the extension/ folder.

Step 1 - Clone the repo

git clone https://github.com/MinitJain/recall.git

Keep this folder somewhere permanent on your computer. Chrome needs it to stay there.

Step 2 - Open Chrome Extensions

In Chrome, navigate to chrome://extensions or go to Menu (โ‹ฎ) > More tools > Extensions.

Step 3 - Enable Developer Mode

Toggle Developer mode on in the top-right corner of the Extensions page.

Step 4 - Load the extension

Click Load unpacked in the top-left corner.

Step 5 - Select the extension folder

In the file picker, navigate into the cloned repo and select the extension/ folder. Select the folder itself, not a file inside it.

Step 6 - Done

Recall will appear in your extensions list with the bookmark icon. Click the puzzle piece in the Chrome toolbar and pin Recall to keep it visible.

Keyboard shortcut

Shortcut Action
Alt+Shift+S (Windows / Linux) Save the current tab instantly, no popup needed
Option+Shift+S (Mac) Save the current tab instantly, no popup needed

Remap it at chrome://extensions/shortcuts.

How It Works

You find something worth saving
        โ†“
Click the Recall extension icon (or press Alt+Shift+S)
        โ†“
Recall sends the URL to the API at recallsave.vercel.app
        โ†“
The server scrapes the page and fetches title, description, thumbnail
        โ†“
Google Gemini reads the content and generates 3โ€“5 tags
        โ†“
Everything is saved to your account in the database
        โ†“
Open recallsave.vercel.app/app and your bookmark is there,
tagged, previewed, and searchable

The search side

When you search, Recall looks across titles, descriptions, and tags simultaneously. You don't need to remember the exact title. Searching "focus music productivity" will surface bookmarks tagged with any of those concepts.

Architecture

Architecture diagrams

Architecture

Database Schema

Roadmap

Status Item
โœ… Chrome extension (save, popup, keyboard shortcut)
โœ… AI auto-tagging via Gemini
โœ… Vercel deployment at recallsave.vercel.app
โœ… OAuth (Google + GitHub)
โœ… User dashboard (web UI)
โœ… Admin dashboard
โœ… Collections UI
โฌœ Natural language / semantic search
โœ… Resurfacing (daily digest, random rediscovery, unsubscribe)
โœ… Bookmarklet (no extension required)
โฌœ Chrome Web Store listing
โฌœ D3.js knowledge graph
โฌœ Background queue for async AI tagging

Contributing

PRs are welcome. Before starting anything major, open an issue first so we can align on the approach.

  1. Fork the repo and create a feature branch off main
  2. Make your changes. All source code lives in client/
  3. Run npx tsc --noEmit to check for type errors
  4. Open a PR. CodeRabbit will review it automatically
  5. CI runs lint, typecheck, and build on every push

Please don't open PRs that add unrelated dependencies, change the deployment config, or touch prisma/schema.prisma without discussing it first.

Bug Reports

Found something broken? Open an issue on GitHub.

Please include what you did, what you expected, what actually happened, and your browser + OS for extension bugs.

Feature Requests

Have an idea? Start a discussion or open an issue with the enhancement label.

License

MIT. See LICENSE for details.

Acknowledgements

Built with Next.js, Supabase, Google Gemini, Prisma, Vercel, Upstash, Tailwind CSS, and CodeRabbit.

recallsave.vercel.app ยท Built for everyone who saves things and can never find them again.

About

Save anything. Recall connects it, tags it, and resurfaces it when it matters

Topics

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors