A modern, AI-powered note-taking application that automatically analyzes and organizes your thoughts with intelligent task prioritization.
- Smart Note Analysis: Automatically categorizes notes into todos, reminders, ideas, and important items
- Priority Intelligence: AI assigns priority levels (low, medium, high) based on content context
- Task Management: Built-in completion tracking and action item extraction
- Real-time Processing: Instant AI analysis as you type
- Persistent Storage: Local browser storage with IndexedDB
- Multiple AI Providers: Support for both Ollama and Google Gemini
- Flexible Configuration: Easy switching between AI providers
- Smart Parsing: Advanced JSON parsing with fallback mechanisms
- Context-Aware: AI understands due dates, urgency, and task relationships
- Modern Interface: Clean, responsive design with gradient backgrounds
- Urgent Task Alerts: Real-time notifications for high-priority items
- Detailed Task View: Expandable modals with full note analysis
- Connection Status: Live monitoring of AI service connectivity
- Search Functionality: Quick task filtering and search
- Data Backup/Export: Full export/import functionality for notes and settings
- Frontend: React 19.1.1 with TypeScript
- Build Tool: Vite 7.1.4
- Styling: Tailwind CSS 4.1.12
- Icons: Lucide React
- Markdown: React Markdown with GitHub Flavored Markdown support
- Code Highlighting: Shiki syntax highlighter
- Storage: IndexedDB via idb-keyval
- Code Quality: Biome for linting and formatting
- Node.js (version 18 or higher)
- npm or yarn package manager
- Clone the repository:
git clone https://github.com/skorotkiewicz/smart-notes
cd smart-notes- Install dependencies:
npm install- Start the development server:
npm run dev- Open your browser and navigate to
http://localhost:5173
- Install and run Ollama locally
- Pull a compatible model (e.g.,
llama2,mistral) - Configure the connection in the app settings:
- URL:
http://localhost:11434 - Model: Your preferred model name
- URL:
- Obtain a Gemini API key from Google AI Studio
- Configure in the app settings:
- API Key: Your Gemini API key
- Model:
gemini-1.5-flash(recommended)
npm run dev- Start development servernpm run build- Build for productionnpm run preview- Preview production build
src/
├── components/ # React components
│ ├── CodeBlock/ # Syntax highlighting
│ ├── ConfigModal.tsx # AI configuration
│ ├── ConnectionStatus.tsx
│ ├── Header.tsx
│ ├── NoteCard.tsx
│ ├── NoteInput.tsx
│ ├── NotesList.tsx
│ └── TaskDetailModal.tsx
├── hooks/ # Custom React hooks
│ └── useNotes.tsx # Note management logic
├── services/ # External service integrations
│ ├── ai.ts # AI service abstraction
│ ├── config.ts # Configuration management
│ ├── exportImport.ts # Data export/import functionality
│ ├── gemini.ts # Google Gemini integration
│ ├── ollama.ts # Ollama integration
│ └── storage.ts # Local storage utilities
├── utils/ # Utility functions
│ ├── jsonParser.ts # JSON parsing helpers
│ └── prompts.ts # AI prompt templates
├── types.ts # TypeScript definitions
├── App.tsx # Main application component
└── main.tsx # Application entry point
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
MIT
- Ensure your AI service (Ollama/Gemini) is running and accessible
- Check API keys and endpoint URLs in the configuration
- Verify network connectivity and firewall settings
- The app stores data locally in IndexedDB
- Clear browser storage if experiencing issues
- Large numbers of notes may impact performance
- Modern browsers with ES2020+ support required
- IndexedDB support necessary for data persistence
- Click the settings icon (⚙️) in the connection status bar
- Navigate to the "Data Management" section
- Click "Export Data" to download a JSON file containing:
- All your notes and their AI analyses
- Current configuration settings
- The file will be named
smart-notes-backup-YYYY-MM-DD.json
- Open the settings modal and go to "Data Management"
- Click "Import Data" and select your backup file
- Confirm to replace your current data
- The page will reload automatically to apply changes
Note: Import will completely replace all existing notes and settings with the backup data.

