NoteRecall is an intelligent personal knowledge management application that helps you capture, organize, and retrieve your memories, notes, and ideas using AI-powered features.
- Memory Management: Store notes, PDFs, voice memos, images, and bookmarks
- AI-Powered Chat: Context-aware chat assistant that uses your saved memories
- Semantic Search: Find memories using natural language queries with AI reranking
- Collections: Organize memories into custom collections
- Math Notes: Interactive canvas for solving math problems with LaTeX rendering
- AI Presentations: Generate slide decks with AI-generated content and images
- Sharing: Share memories via public links with expiration
- Memory Chat: Ask questions about your stored memories
- Math Solving: Solve handwritten or typed math problems
- Presentation Generation: Auto-create slides from topics
- Image Generation: Create presentation images from text prompts
- Audio Transcription: Convert voice memos to text
- OCR: Extract text from images and PDFs
- Node.js (v18 or higher) — Download here
- npm or bun package manager
- Git — Download here
git clone <YOUR_GIT_URL>
cd <PROJECT_NAME>Using npm:
npm installUsing bun:
bun installCreate a .env file in the project root:
VITE_SUPABASE_URL=your_supabase_url
VITE_SUPABASE_PUBLISHABLE_KEY=your_supabase_anon_key
VITE_SUPABASE_PROJECT_ID=your_project_idNote: These are public/publishable keys safe for client-side use. AI API keys should be managed server-side via environment variables or a secrets manager.
npm run devThe app will be available at http://localhost:5173 (or another port if 5173 is in use).
This project uses Supabase for backend services including:
- PostgreSQL Database
- Authentication
- File Storage
- AI Gateway
- Edge Functions
| Table | Description |
|---|---|
memories |
Stores all memory entries |
memory_chunks |
Text chunks with embeddings for semantic search |
collections |
User-defined collections |
memory_collections |
Junction table for many-to-many relationship |
shared_memories |
Public sharing links |
| Function | Purpose |
|---|---|
chat-with-memories |
AI chat with memory context |
process-memory |
Text extraction and chunking |
batch-process-memories |
Batch embedding generation |
search-memories |
Semantic search with reranking |
analyze-math |
Math problem solving from images |
transcribe-audio |
Voice memo transcription |
generate-presentation |
Slide content generation |
generate-slide-image |
AI image generation for slides |
get-shared-memory |
Public memory retrieval |
| Feature | Model |
|---|---|
| Chat, OCR, Math, Audio | google/gemini-2.5-flash |
| Slide Image Generation | google/gemini-2.5-flash-image |
| Search Reranking | google/gemini-2.5-flash-lite |
noterecall/
├── public/ # Static assets
├── src/
│ ├── components/ # React components
│ │ ├── ui/ # shadcn/ui components
│ │ └── ... # Feature components
│ ├── hooks/ # Custom React hooks
│ ├── integrations/ # Third-party integrations
│ │ └── supabase/ # Supabase client & types
│ ├── lib/ # Utility functions
│ ├── pages/ # Page components
│ ├── types/ # TypeScript type definitions
│ └── ...
├── supabase/
│ ├── functions/ # Edge Functions
│ └── config.toml # Supabase config
├── .env # Environment variables
├── index.html # HTML entry point
├── package.json # Dependencies
├── tailwind.config.ts # Tailwind CSS config
├── tsconfig.json # TypeScript config
└── vite.config.ts # Vite config
| Command | Description |
|---|---|
npm run dev |
Start development server |
npm run build |
Build for production |
npm run preview |
Preview production build |
npm run test |
Run tests |
npm run lint |
Run ESLint |
- Push your code to a GitHub repository
- Connect the repo to Vercel or Netlify
- Add your environment variables in the platform's dashboard
- Deploy — the app will be live at your assigned URL
- Configure DNS records to point to your hosting provider
- Add the custom domain in your hosting dashboard
- SSL is typically provisioned automatically
- Row Level Security (RLS) is enabled on all tables
- Users can only access their own data
- Shared memories use secure tokens with optional expiration
- AI API keys are stored server-side only
- File uploads are validated and stored securely
Build fails with "Cannot find module"
rm -rf node_modules && npm installSupabase connection errors
- Verify your
.envfile has the correctVITE_SUPABASE_URLandVITE_SUPABASE_PUBLISHABLE_KEYvalues - Ensure your Supabase project is active and the anon key is valid
AI features not working
- Check that your AI API keys are correctly set as Supabase secrets
- Verify the edge functions are deployed:
supabase functions deploy
Port already in use
npm run dev -- --port 3000This project is open source. See LICENSE for details.