Skip to content

Repository files navigation

NoteRecall - AI-Powered Personal Knowledge Management

NoteRecall is an intelligent personal knowledge management application that helps you capture, organize, and retrieve your memories, notes, and ideas using AI-powered features.

🌟 Features

Core 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

AI Capabilities

  • 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

🚀 Getting Started

Prerequisites

Installation

Step 1: Clone the Repository

git clone <YOUR_GIT_URL>
cd <PROJECT_NAME>

Step 2: Install Dependencies

Using npm:

npm install

Using bun:

bun install

Step 3: Set Up Environment Variables

Create 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_id

Note: 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.

Step 4: Start the Development Server

npm run dev

The app will be available at http://localhost:5173 (or another port if 5173 is in use).


🔧 Backend Setup

This project uses Supabase for backend services including:

  • PostgreSQL Database
  • Authentication
  • File Storage
  • AI Gateway
  • Edge Functions

Database Schema

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

Edge Functions

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

AI Models Used

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

📁 Project Structure

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

🛠️ Development Commands

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

🚢 Deployment

Deploy to Supabase + Vercel / Netlify

  1. Push your code to a GitHub repository
  2. Connect the repo to Vercel or Netlify
  3. Add your environment variables in the platform's dashboard
  4. Deploy — the app will be live at your assigned URL

Deploy to Custom Domain

  1. Configure DNS records to point to your hosting provider
  2. Add the custom domain in your hosting dashboard
  3. SSL is typically provisioned automatically

🔐 Security

  • 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

🐛 Troubleshooting

Common Issues

Build fails with "Cannot find module"

rm -rf node_modules && npm install

Supabase connection errors

  • Verify your .env file has the correct VITE_SUPABASE_URL and VITE_SUPABASE_PUBLISHABLE_KEY values
  • 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 3000

📄 License

This project is open source. See LICENSE for details.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages