Skip to content

A fast, lightweight self-hosted startpage that integrates with Linkding for bookmark management. Built with Vue.js and served via nginx for optimal performance.

License

Notifications You must be signed in to change notification settings

cloonix/startpage-vue

Repository files navigation

Vue Startpage

A lightweight self-hosted startpage that connects to Linkding for bookmark management. Built with Vue.js 3 and nginx for fast, responsive bookmark browsing.

Linkding is the backbone - This app requires a Linkding instance to function.

screenshot

✨ Features

  • 🔖 Real-time bookmark search with debounced filtering
  • 🏷️ Tag-based sections for organized layouts
  • ⌨️ Full keyboard navigation (arrows, enter, escape)
  • 🎨 Drag-and-drop bookmark organization
  • 🖼️ Custom icons via bookmark notes (with fallback to favicons)
  • 📱 Responsive design across all devices
  • 🔒 Security hardened with XSS protection, CSP, and SRI
  • 🐳 Docker deployment with single command
  • 🚨 Error feedback with toast notifications

🚀 Quick Start

Prerequisites

  • Docker & Docker Compose
  • Running Linkding instance
  • Linkding API token

Deploy

git clone https://github.com/cloonix/startpage-vue.git
cd startpage-vue
cp .env.example .env
# IMPORTANT: Edit .env with your real Linkding credentials
nano .env  # or use your preferred editor
./build.sh

⚠️ Important: The .env file must be updated with your actual Linkding URL and API token before deployment. The placeholder values will not work!

Access at http://localhost:3000

⚙️ Configuration

Create .env file from .env.example:

cp .env.example .env

Then edit with your actual values:

PORT=3000                                    # Port for the web interface
LINKDING_BASE_URL=https://your-linkding.com # Your Linkding instance URL
LINKDING_API_TOKEN=your_api_token_here      # Your Linkding API token

# Optional: Cloudflare Access (if your Linkding is behind CF Access)
CF_ACCESS_CLIENT_ID=your_client_id
CF_ACCESS_CLIENT_SECRET=your_client_secret

Get your API token: Linkding → Settings → Integrations → REST API Token

💡 Tip: The build script validates your configuration and will reject placeholder values to prevent deployment errors.

📋 Usage

Organize Bookmarks

  • Tag bookmarks with #startpage + optional category tags
  • Bookmarks are automatically organized by categories

Custom Icons

Add to bookmark notes: icon::https://example.com/favicon.png

Navigation

  • Type to search • ↑↓ to navigate • Enter to open • Esc to clear

🐳 Docker Commands

docker compose up -d        # Start
docker compose down         # Stop
docker compose logs -f      # View logs
./build.sh                  # Rebuild

🔧 Architecture

  • Frontend: Vue.js 3 (no build step)
  • Server: nginx with caching
  • Backend: Linkding API proxy
  • Deployment: Docker container

📝 License

MIT License - see LICENSE file.

About

A fast, lightweight self-hosted startpage that integrates with Linkding for bookmark management. Built with Vue.js and served via nginx for optimal performance.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors 2

  •  
  •