An Electron-based desktop application for managing bookmarks using the nb command-line tool. This project was created 100% with AI assistance (vibecoded) and the developer doesn't have extensive knowledge of TypeScript, React, or Electron technologies used.
- Bookmark Management: View, search, and filter bookmarks from your
nbinstallation - Tag-based Organization: Browse bookmarks by tags with count indicators
- Search Functionality: Real-time search across bookmark titles, URLs, and tags
- Native Integration: Opens URLs in your default system browser
- Cross-platform: Works on Windows, macOS, and Linux
- Modern UI: Clean, responsive interface built with React and CSS
- Electron Wrapper: Desktop application with native OS integration
- Node.js (v16 or higher)
- npm (comes with Node.js)
- nb command-line tool installed and configured on your system
# On macOS
brew install nb
# On Linux
wget -qO - https://github.com/xwmx/nb/raw/master/install | bash
# On Windows (using Chocolatey)
choco install nb
# Or using npm (less recommended)
npm install -g nbgit clone https://github.com/yourusername/bookmark-manager.git
cd bookmark-managernpm install# Check if nb is installed
nb --version
# List your bookmarks (optional, to verify it works)
nb bookmarks# Start React development server + Electron
npm run electron-dev
# Or separately:
npm start # Starts React dev server on http://localhost:3000
npm run electron # Starts Electron (requires dev server running)# Build the React app
npm run build
# Start Electron with production build
npm run electronnpm run buildThis creates a build/ directory with the optimized React application.
# Create distributable packages (no publish)
npm run dist
# Create and publish to GitHub Releases
npm run build-electronThe dist/ directory will contain:
- Linux:
.AppImage,.snap, and.debpackages - macOS:
.dmgand.ziparchives - Windows:
.exeinstaller and portable version
Update the version in package.json:
{
"version": "0.1.1"
}git add package.json
git commit -m "Bump version to 0.1.1"
git tag v0.1.1
git push origin main --tags# Build distributables
npm run dist
# Upload to GitHub Releases
# Option 1: Use GitHub CLI
gh release create v0.1.1 dist/* --title "Release v0.1.1" --generate-notes
# Option 2: Manual upload via GitHub web interface
# 1. Go to https://github.com/yourusername/bookmark-manager/releases
# 2. Click "Create a new release"
# 3. Select the v0.1.1 tag
# 4. Upload all files from the dist/ directoryCreate a script in scripts/release.sh:
#!/bin/bash
set -e
# Get version from package.json
VERSION=$(node -p "require('./package.json').version")
# Check if tag exists
if git rev-parse "v$VERSION" >/dev/null 2>&1; then
echo "Tag v$VERSION already exists"
exit 1
fi
# Build
npm run dist
# Create tag
git tag "v$VERSION"
git push origin "v$VERSION"
# Create GitHub release
gh release create "v$VERSION" dist/* \
--title "Release v$VERSION" \
--generate-notes
echo "β
Release v$VERSION created successfully!"bookmark-manager/
βββ public/
β βββ electron.js # Main Electron process
β βββ preload.js # Preload script for security
β βββ index.html # HTML template
βββ src/
β βββ components/ # React components
β β βββ BookmarkList.tsx
β β βββ TagList.tsx
β β βββ ErrorBoundary.tsx
β βββ services/ # Business logic
β β βββ nbService.ts # nb command integration
β βββ types/ # TypeScript definitions
β βββ App.tsx # Main React component
β βββ index.tsx # React entry point
βββ dist/ # Built distributables
βββ build/ # React build output
βββ package.json # Dependencies and scripts
- Frontend: React 19 with TypeScript
- Desktop: Electron 40
- Build Tools: Create React App, electron-builder
- Styling: CSS3 with custom components
- Backend Integration: Node.js child processes for
nbcommand
- Ensure
nbis installed and in your system's PATH - Try running
nb --versionin your terminal first - On Windows, you may need to restart your terminal after installation
- Make sure you're running the app through Electron (
npm run electron) - This error won't occur in the browser development mode
- Check if your
nbinstallation has bookmarks:nb bookmarks - Verify
nbis properly configured with a notebook
- Delete
node_modulesand runnpm install - Clear the build directory:
rm -rf build dist - Ensure you're using Node.js 16+
# Make scripts executable
chmod +x scripts/release.sh
# Fix npm permissions if needed
sudo chown -R $(whoami) ~/.npmSince this was vibecoded without extensive TypeScript knowledge:
- TypeScript Errors: Most can be fixed by adding proper type annotations or using
anytype - Component State: Use
useState<Type>()for typed state variables - Import/Export: Default exports work well for components
- Build Issues: Clear
node_modulesand rebuild if errors persist
- Bookmark Creation: Add new bookmarks directly from the UI
- Bookmark Editing: Modify existing bookmark titles, URLs, and tags
- Bookmark Deletion: Remove bookmarks with confirmation
- Import/Export: Backup and restore bookmarks
- Settings Panel: Configure nb notebook path and other preferences
- Tag Management: Create, edit, and delete tags
- Advanced Search: Search by date, content, or advanced filters
- Keyboard Shortcuts: Quick navigation and actions
- Dark/Light Theme: Theme switching capability
- Bookmark Preview: Show webpage previews
- Multiple Notebook Support: Switch between different nb notebooks
- Plugin System: Extensible architecture for custom features
- Sync Integration: Cloud sync for bookmarks across devices
- Statistics Dashboard: Usage analytics and insights
- Mobile Companion: Basic mobile app for viewing bookmarks
- Test Coverage: Add unit and integration tests
- Error Handling: Better error messages and recovery
- Performance: Optimize for large bookmark collections
- Accessibility: Improve screen reader support
- Documentation: API docs for extension developers
Since this was created with AI assistance, contributions are especially welcome! Here's how you can help:
- Bug Reports: Open an issue with detailed reproduction steps
- Feature Requests: Suggest improvements for the roadmap
- Code Contributions:
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
# Fork and clone your fork
git clone https://github.com/yourusername/bookmark-manager.git
cd bookmark-manager
# Install dependencies
npm install
# Start development
npm run electron-dev
# Make your changes and test
npm run build # Verify production build worksThis project is licensed under the MIT License - see the LICENSE file for details.
- **nb **: The excellent command-line notebook tool that powers this application
- Electron: For enabling cross-platform desktop applications with web technologies
- React: For the component-based UI framework
- AI Assistance: This project was created 100% with AI coding assistance as a learning experiment
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- nb Documentation: https://xwmx.github.io/nb
β‘ Note: This is a vibecoded project created as a learning exercise. The developer is learning TypeScript, React, and Electron alongside the AI, so the codebase may evolve as understanding improves.