A modern, cross-browser note-taking extension that helps you capture ideas, thoughts, and information on any website.
- π Quick Note Taking - Take notes instantly on any website
- π URL Association - Notes are automatically linked to the current website
- π·οΈ Tag System - Organize notes with custom tags for easy categorization
- π Search & Filter - Quickly find notes by searching through titles, content, and tags
- π View All Notes - Browse all your saved notes in one place
- π¨ Theme Customization - Choose from 6 beautiful color themes (Yellow, Pink, Blue, Green, Orange, Purple)
- π€ Export Functionality - Export all your notes to JSON format
- π₯ Import Functionality - Import notes from previously exported JSON files
- ποΈ Trash with Restore - Deleted notes go to trash and can be restored (30-day retention, 50-note limit)
- βοΈ Cloud Sync - Automatic synchronization across devices using browser sync storage
- π Cross-Browser - Works on both Chrome and Firefox
- β¨οΈ Keyboard Shortcuts - Quick save and delete with keyboard commands
- π Smart Organization - Notes automatically grouped by website domain
- β Starred Notes - Mark important notes as favorites for quick access
Speed up your note-taking workflow with these convenient keyboard shortcuts:
| Shortcut | Action | Description |
|---|---|---|
Ctrl+Enter (Mac: Cmd+Enter) |
Save Note | Quickly save the current note |
Ctrl+Shift+Backspace (Mac: Cmd+Shift+Backspace) |
Delete Note | Delete the current note |
Tip: Hover over the Save and Delete buttons to see the keyboard shortcuts!
Coming soon! Screenshots of the extension in action.
Coming soon - Extension will be available on Chrome Web Store
Coming soon - Extension will be available on Firefox Add-ons
Chrome:
- Download or clone this repository
- Run
npm installandnpm run build:chrome - Open Chrome and navigate to
chrome://extensions/ - Enable "Developer mode" (toggle in top-right corner)
- Click "Load unpacked"
- Select the
dist-chromefolder from the project
Firefox:
- Download or clone this repository
- Run
npm installandnpm run build:firefox - Open Firefox and navigate to
about:debugging#/runtime/this-firefox - Click "Load Temporary Add-on"
- Select the
manifest.jsonfile from thedist-firefoxfolder
- Node.js (v18 or higher)
- npm (v9 or higher)
- Git
-
Clone the repository
git clone https://github.com/PMFrancisco/Notably.git cd Notably -
Install dependencies
npm install
-
Run development server
npm run dev
-
Build for production
# Build for both browsers npm run build:cross-browser # Or build for specific browser npm run build:chrome # Chrome/Edge npm run build:firefox # Firefox
| Script | Description |
|---|---|
npm run dev |
Start development server with HMR |
npm run build |
Build the extension |
npm run build-ts |
TypeScript check + build |
npm run build:cross-browser |
Build for both Chrome and Firefox |
npm run build:chrome |
Build specifically for Chrome |
npm run build:firefox |
Build specifically for Firefox |
npm run lint |
Run ESLint for code quality |
npm test |
Run Jest tests |
npm run preview |
Preview production build |
Frontend:
- React 19.2.0 - UI framework
- TypeScript 5.8.3 - Type safety
- Vite 6.3.6 - Build tool & dev server
- Tailwind CSS 4.1.14 - Styling
- Lucide React - Icons
Browser APIs:
- webextension-polyfill - Cross-browser compatibility
Testing:
- Jest 29.7.0 - Test runner
- React Testing Library - Component testing
- @testing-library/user-event - User interaction testing
Code Quality:
- ESLint 9.37.0 - Linting
- TypeScript ESLint - TypeScript-specific linting rules
Notably/
βββ .github/
β βββ workflows/ # GitHub Actions CI/CD
βββ public/
β βββ icons/ # Extension icons
β βββ manifest.json # Base manifest
β βββ manifest-chrome.json
β βββ manifest-firefox.json
βββ src/
β βββ components/ # React components (Atomic Design)
β β βββ atoms/ # Basic UI elements
β β βββ molecules/ # Composite components
β β βββ organisms/ # Complex components
β β βββ templates/ # Page layouts
β βββ hooks/ # Custom React hooks
β βββ utils/ # Utility functions
β βββ types/ # TypeScript type definitions
β βββ background/ # Background script
β βββ content/ # Content script
β βββ __tests__/ # Test files
β βββ App.tsx # Main app component
β βββ main.tsx # Entry point
βββ scripts/ # Build scripts
βββ jest/ # Jest configuration
The project follows the Atomic Design pattern:
- Atoms: Basic building blocks (Button, Input, Badge, Textarea, etc.)
- Molecules: Simple combinations (FormField, TagInput, SearchBar, ThemeSelector, etc.)
- Organisms: Complex components (NoteForm, NotesList, NoteCard, DomainGroup, etc.)
- Templates: Page layouts (NoteTemplate, NotesListTemplate, etc.)
Run the test suite:
npm testRun tests in watch mode:
npm test -- --watchRun tests with coverage:
npm test -- --coverageCurrent Test Coverage:
- β 22 tests passing
- Component rendering
- User interactions
- Form validation
- Note management
- Navigation
- Search functionality
Contributions are welcome! Please follow these steps:
-
Fork the repository
-
Create a feature branch
git checkout -b feature/amazing-feature
-
Make your changes
- Write clean, readable code
- Follow the existing code style
- Add tests for new features
- Update documentation as needed
-
Run quality checks
npm run lint # Check code quality npm test # Run tests npm run build # Ensure it builds
-
Commit your changes
git commit -m 'feat: add amazing feature'Follow Conventional Commits format
-
Push to your fork
git push origin feature/amazing-feature
-
Open a Pull Request
This project uses Conventional Commits:
feat:- New featuresfix:- Bug fixesdocs:- Documentation changesstyle:- Code style changes (formatting, etc.)refactor:- Code refactoringtest:- Adding or updating testschore:- Maintenance tasks
- Click the Notably icon in your browser toolbar
- The extension popup opens showing the current website
- Add a title (optional) and your note content
- Add tags by typing and pressing Enter or comma
- Click "Save Note" to save
- Open the extension popup
- Click "All Notes" button
- Browse all your saved notes, automatically grouped by website domain
- Starred notes appear in a special section at the top for quick access
- Click on any domain name to expand/collapse notes from that site
- Use the search bar to filter notes (switches to flat list view when searching)
- Click the delete button to remove notes
- Go to "All Notes" view
- Click the β icon on any note to star it (it becomes β)
- Starred notes appear in the "β Starred" section at the top
- Starred notes also remain visible in their domain groups with the β icon
- Click the β icon again to unstar a note
When you delete a note, it's not permanently removed - it goes to trash where you can recover it:
- Deleting a Note: Click the delete button (ποΈ) on any note to move it to trash
- Accessing Trash: In "All Notes" view, click the ποΈ icon in the header (shows count of trashed items)
- Restoring Notes: In trash view, hover over a note and click the βΊ restore button
- Permanent Deletion: Hover over a note and click the Γ button to permanently delete it
- Empty Trash: Click "Empty Trash" button to permanently delete all trashed notes at once
- Auto-Cleanup: Notes are automatically removed from trash after 30 days
- Storage Limit: Trash keeps your last 50 deleted notes maximum
Note: Starred status is preserved when notes are moved to trash and restored!
- Go to "All Notes" view
- Click "Export All Notes" button
- A JSON file will be downloaded with all your notes
- Go to "All Notes" view
- Click "Import Notes" button
- Select a previously exported JSON file
- Your notes will be imported and merged with existing notes
- Notes with the same URL will be overwritten with the imported version
- Look for the colored circle in the top-right corner
- Click it to reveal the theme selector
- Choose your preferred color theme
- The theme is saved automatically
- β No data collection - Notably doesn't collect or send any user data
- β Local storage - All notes are stored locally in your browser
- β Browser sync - Optional sync uses your browser's built-in sync (encrypted by your browser)
- β No tracking - No analytics, no tracking, no telemetry
- β Open source - Full transparency - check the code yourself!
storage- To save your notestabs- To get the current tab's URLactiveTab- To associate notes with websites
- Search and filter notes
- Import notes from JSON
- Keyboard shortcuts
- Toast notifications
- Folders/categories (organized by domain)
- Favorites/starred notes
- Trash with restore functionality
- Smart tagging with autocomplete
- Note templates
- Linked notes
- Enhanced themes
- Browser sidebar support
See CHANGELOG.md for version history.
This project is licensed under the ISC License. See the LICENSE file for details.
PMFrancisco
- GitHub: @PMFrancisco
- Project: Notably
- Built with Vite
- UI components inspired by shadcn/ui
- Icons from Lucide
- Cross-browser compatibility via webextension-polyfill
If you encounter any issues or have questions:
- π Open an issue
- π¬ Start a discussion
If you find Notably useful, please consider:
- β Starring the repository
- π Reporting bugs
- π‘ Suggesting new features
- π€ Contributing to the code
- π’ Sharing with others
Made with β€οΈ by PMFrancisco
Happy note-taking! π