Skip to content

andiamine/keeptodo

Repository files navigation

Keep Todo

A feature-rich, Google Keep-inspired note-taking application built with React, TypeScript, Material-UI, and Vite.

Features

Core Note Management

  • Rich Note Creation: Create notes with titles, content, and multiple media types
  • Interactive Checkboxes: Add draggable todo lists within notes with completion tracking
  • Image Support: Upload and manage images with drag & drop functionality
  • Link Previews: Automatic detection and preview generation for URLs in notes
  • Color Coding: Choose from 12 beautiful colors to organize your notes
  • Pin Notes: Keep important notes at the top of your workspace

Advanced Organization

  • Labels System: Create, manage, and filter notes by custom labels
  • Archive & Trash: Archive notes for later or move them to trash with restore options
  • Search Functionality: Real-time search across titles, content, and checkboxes
  • Advanced Filtering: Filter by labels, pinned status, archived/deleted states
  • Drag & Drop: Reorder notes and checkbox items with intuitive drag & drop

User Experience

  • Material-UI Design: Modern, clean interface following Material Design principles
  • Dual View Modes: Switch between grid and list view layouts
  • Responsive Design: Fully responsive design optimized for desktop, tablet, and mobile
  • Sidebar Navigation: Collapsible sidebar with filtering and organization tools
  • History Tracking: Undo/redo functionality with note edit history
  • Auto-save: Automatic saving of all changes with real-time persistence

Getting Started

Prerequisites

  • Node.js (v16 or higher)
  • npm or yarn

Installation

  1. Clone the repository

  2. Install dependencies:

    npm install
  3. Start the development server:

    npm run dev
  4. Open http://localhost:5173 in your browser

Building for Production

npm run build

Usage

Creating Notes

  1. Basic Note: Click "Take a note..." or the floating + button
  2. Add Content: Enter title and content with support for line breaks
  3. Add Checkboxes: Click the checkbox icon to create interactive todo lists
  4. Upload Images: Drag & drop images or use the image upload button
  5. Organize: Choose colors, add labels, and pin important notes
  6. Save: Notes auto-save as you type

Advanced Features

Interactive Checkboxes

  • Click the checkbox icon in any note to add todo items
  • Drag and drop to reorder checkbox items
  • Check/uncheck items to track completion
  • Add new items with the "Add item" button

Image Management

  • Drag & drop images directly into notes
  • Click images to view in full size
  • Delete images using the X button overlay
  • Images are automatically resized and optimized

Link Previews

  • Paste any URL into note content
  • Automatic link detection and preview generation
  • Click previews to open links in new tabs
  • Rich previews show title, description, and thumbnail

Labels & Organization

  • Create custom labels from the sidebar
  • Filter notes by one or multiple labels
  • Assign labels to notes during creation or editing
  • Delete unused labels (removes from all notes)

Search & Filtering

  • Search: Use the search bar to find notes by title, content, or checkbox text
  • Pin Filter: Toggle to show only pinned notes
  • View Modes: Switch between grid and list layouts
  • Archive/Trash: Navigate between active, archived, and deleted notes
  • Clear Filters: Reset all active filters at once

Sidebar Navigation

  • All Notes: View all active notes
  • Archive: Access archived notes
  • Trash: Manage deleted notes with restore options
  • Labels: Filter by custom labels with note counts
  • Responsive: Auto-collapses on mobile, persistent on desktop

Technologies Used

  • React 19 - Modern UI framework with latest features
  • TypeScript - Type safety and enhanced developer experience
  • Material-UI (MUI) - Comprehensive React component library
  • Vite - Fast build tool and development server
  • @dnd-kit - Modern drag and drop toolkit for React
  • React Dropzone - File upload with drag & drop support
  • Linkify React - Automatic link detection and preview generation
  • Local Storage - Client-side data persistence
  • CSS-in-JS - Styled components with Material-UI's emotion-based styling

Project Structure

src/
├── components/
│   ├── AddNote.tsx           # Enhanced note creation with media support
│   ├── DraggableCheckbox.tsx # Sortable checkbox component
│   ├── EditNoteModal.tsx     # Full-screen note editing modal
│   ├── LinkPreview.tsx       # URL link preview component
│   ├── Note.tsx              # Individual note display component
│   ├── NoteDisplay.tsx       # Note content rendering component
│   ├── NotesGrid.tsx         # Grid/list layout with drag & drop
│   ├── SearchBar.tsx         # Expandable search functionality
│   ├── Sidebar.tsx           # Navigation and filtering sidebar
│   └── SortableNote.tsx      # Drag & drop wrapper for notes
├── types/
│   └── Note.ts               # TypeScript interfaces for notes, labels, history
├── utils/
│   ├── colorUtils.ts         # Color scheme and theme utilities
│   ├── linkUtils.ts          # URL detection and preview generation
│   └── localStorage.ts       # Data persistence utilities
├── App.tsx                   # Main application with state management
├── index.css                 # Global styles and Material-UI theme
└── main.tsx                  # Application entry point

Key Highlights

Modern Design System

  • Material-UI Components: Professional, accessible UI components
  • Responsive Layout: Seamlessly adapts from mobile to desktop
  • Dark/Light Theme Support: Consistent with system preferences
  • Touch-Optimized: Gesture-friendly interface for mobile devices

Performance & Reliability

  • Real-time Auto-save: Never lose your work with instant persistence
  • Offline Support: Full functionality without internet connection
  • Fast Loading: Optimized bundle size and lazy loading
  • Cross-browser Compatible: Works on all modern browsers

Accessibility Features

  • Keyboard Navigation: Full keyboard support for all features
  • Screen Reader Friendly: ARIA labels and semantic HTML
  • High Contrast: Clear visual hierarchy and readable text
  • Focus Management: Intuitive tab order and focus indicators

Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Submit a pull request

License

This project is open source and available under the MIT License.

About

Todo app like Google Keep with ReactJS, MUI and LocalStorage

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages