A simple and easy-to-use bookmark management tool built with Go backend and Vue.js frontend.
- 📁 Folder Management - Create, edit, delete folders with nested structure support
- 🔖 Bookmark Management - Add, edit, delete bookmarks with batch operations
- 🔄 Drag & Drop - Reorder folders and bookmarks with drag-and-drop
- 📦 Batch Operations - Select, delete and move bookmarks in batches
- 🌐 Metadata Fetching - Auto-fetch webpage titles and favicon icons
- 🎨 Modern UI - Clean and beautiful user interface
- 📱 Responsive Design - Adapts to different screen sizes
- ⚡ Fast Performance - SQLite-based local database for quick queries
- 🔒 Secure & Reliable - Supports intranet HTTPS sites
- Go 1.21+ - Primary programming language
- Chi - Lightweight HTTP router
- SQLite - Local database storage
- Go Modules - Dependency management
- Vue.js 3 - Modern JavaScript framework
- HTML5/CSS3 - Page layout and styling
- Fetch API - HTTP request handling
- SQLite database file:
data.db - Foreign key constraints and data consistency
- Automatic position maintenance
- Go 1.21 or higher
- SQLite-supported operating system (Windows/macOS/Linux)
-
Clone or download the project
git clone <project-url> cd bookmarks
-
Run the application
go run main.go
Configuration options:
- Custom port:
go run main.go -port 3000 - Custom data path:
go run main.go -dataUrl=/path/to/your/data/ - Combined configuration:
go run main.go -dataUrl=/path/to/data -port 8080 - View all options:
go run main.go -h
- Custom port:
-
Access the application
- Default address: http://localhost:8901
- Or visit your specified port address
You can customize the bookmark manager via command line parameters:
Available Parameters:
-dataUrl: Data storage path (default: "./")-port: Server listening port (default: "8901")
Examples:
# Custom data path
go run main.go -dataUrl=/path/to/your/data/
# Custom port
go run main.go -port 3000
# Combined configuration
go run main.go -dataUrl=/path/to/data -port 8080
# View all options
go run main.go -h-
Create Folders
- Click "New Folder" button on the left panel
- Or right-click existing folder and select "New Subfolder"
-
Add Bookmarks
- Click "Add URL" button on the left panel
- Or right-click folder and select "Add URL"
- Enter URL and click "Fetch Info" to auto-fill title and icon
-
Edit Items
- Double-click folder or bookmark name to edit
- Or right-click and select "Edit" option
-
Delete Items
- Right-click and select "Delete" option
- Or use batch deletion in edit mode
-
Reordering
- Drag folders or bookmarks to new positions
- Or use "Move Up"/"Move Down" options in right-click menu
-
Move to Folder
- Right-click and select "Move to Folder"
- Select target folder and confirm
-
Batch Operations
- Click "Edit" button to enter edit mode
- Use checkboxes to select multiple items
- Execute batch delete or move operations
-
Search and Organization
- Organize bookmarks through folder structure
- View bookmark path information
- Right-click Menu: Right-click any item to see available operations
- Double-click Edit: Double-click item name for quick editing
- Drag & Drop: Directly drag to target position
- Batch Selection: Use edit mode for batch operations
GET /api/tree- Get complete tree structureGET /api/metadata?url=<url>- Fetch webpage metadataPOST /api/folders- Create folderPOST /api/bookmarks- Create bookmarkPUT /api/nodes/{id}- Update nodeDELETE /api/nodes/{id}- Delete nodePOST /api/nodes/reorder- Reorder nodes
# Get tree structure
curl http://localhost:8901/api/tree
# Create folder
curl -X POST http://localhost:8901/api/folders \
-H "Content-Type: application/json" \
-d '{"title":"Work Related","parent_id":null}'
# Create bookmark
curl -X POST http://localhost:8901/api/bookmarks \
-H "Content-Type: application/json" \
-d '{"title":"GitHub","url":"https://github.com","parent_id":1}'- Database file location: configurable via
-dataUrlparameter - Default location:
data.dbin current directory - Automatically creates necessary tables and indexes
- Default port: 8901
- Static file serving support
- Built-in CORS support
bookmarks/
├── main.go # Main program entry point
├── go.mod # Go module definition
├── go.sum # Dependency checksums
├── data.db # SQLite database file (generated at runtime)
├── static/ # Static files directory
│ ├── index.html # Main page
│ ├── app.js # Vue.js application
│ └── style.css # Style sheet
├── README.md # Chinese documentation
├── README.en.md # English documentation
└── techfunway.bookmarks/ # Packaging related files
- Go 1.21+
- Modern browser support (Chrome, Firefox, Safari, Edge)
# Start development server
go run main.go
# After modifying frontend code, refresh browser to see changes- Can be packaged as single executable file
- Runs on any platform supporting Go
- Data files can be separated from program for easy backup
-
Port Already in Use
- Check if port 8901 is occupied by other programs
- Or modify port configuration in code
-
Database Errors
- Ensure write permissions
- Check if disk space is sufficient
-
Metadata Fetching Failures
- Check network connection
- Some websites may restrict crawler access
-
HTTPS Site Access Failures
- Application supports self-signed certificates
- Intranet HTTPS sites can be accessed normally
- Server startup shows running port
- Browser developer tools for frontend errors
- Server logs show API requests and error information
This project uses the MIT License, see LICENSE file for details.
Issues and Pull Requests are welcome!
- Fork the repository
- Create feature branch (
git checkout -b feature/AmazingFeature) - Commit changes (
git commit -m 'Add some AmazingFeature') - Push to branch (
git push origin feature/AmazingFeature) - Open Pull Request
- Initial release
- Basic folder and bookmark management
- Drag & drop reordering support
- Batch operations functionality
- Webpage metadata fetching
