A modern dashboard for managing and organizing web links with advanced features for categorization, search, and user interaction.
- Runtime: Node.js with Express.js Framework
- Database: SQLite with automatic schema initialization
- API: RESTful endpoints with CORS support
- Validation: Server-side input validation and sanitization
- Error Handling: Structured exception handling with HTTP status codes
- Technology: Vanilla JavaScript (ES6+)
- Styling: Modular CSS with CSS Custom Properties
- Responsive Design: Mobile-first approach with Flexbox/Grid
- State Management: LocalStorage for user preferences
- API Communication: Fetch API with Promise-based error handling
- Node.js >= 14.0.0
- npm >= 6.0.0
# Clone repository
git clone <repository-url>
cd linkboard
# Install dependencies
npm install
# Start development server
npm startThe application will be available at http://localhost:3000.
# For production environment
NODE_ENV=production npm start- CRUD Operations: Complete link management (Create, Read, Update, Delete)
- Tag System: Hierarchical categorization with autocomplete functionality
- Search Function: Full-text indexing across title, URL, description, and tags
- Filtering: Tag-based filtering with combination capabilities
- Dual View: Switchable display between card and list view
- Theme System: Dark/Light mode with persistent storage
- Metadata: Automatic favicon extraction and note functionality
- Modal Dialogs: Contextual forms for link editing
- Confirmation Dialogs: Security prompts for destructive operations
- Keyboard Navigation: Full keyboard support (ESC, Enter)
- Loading States: Asynchronous operation feedback
- Toast Notifications: Status notifications for user actions
Retrieves all links with optional query parameters.
Query Parameters:
- search: string (optional) - Full-text search
- tag: string (optional) - Tag filter
Creates a new link.
{
"title": "string (required)",
"url": "string (required, valid URL)",
"description": "string (optional)",
"tags": "string (optional, comma-separated)",
"notes": "string (optional)"
}Updates an existing link.
Permanently deletes a link.
Retrieves all available tags.
CREATE TABLE links (
id INTEGER PRIMARY KEY AUTOINCREMENT,
title TEXT NOT NULL,
url TEXT NOT NULL,
description TEXT,
tags TEXT,
notes TEXT,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
);linkboard/
├── server.js # Express server and API routes
├── package.json # Project configuration and dependencies
├── package-lock.json # Dependency lock file
├── index.html # Single-page application entry point
├── css/
│ ├── base.css # CSS reset and base styles
│ ├── layout.css # Layout system and grid definitions
│ ├── components.css # UI component styles
│ ├── dark-mode.css # Dark theme variables
│ └── light-mode.css # Light theme variables
├── js/
│ └── app.js # Frontend application logic
├── notes/ # Development documentation
└── links.db # SQLite database file (auto-generated)
PORT: Server port (default: 3000)NODE_ENV: Environment (development/production)DB_PATH: Path to SQLite database file
The theme system uses CSS Custom Properties for consistent styling:
:root {
--primary-color: #007bff;
--background-color: #ffffff;
--text-color: #333333;
/* ... additional variables */
}- Lazy Loading: Asynchronous loading of link metadata
- Debounced Search: Delayed search execution to reduce API calls
- Efficient DOM Updates: Minimal DOM manipulations through Virtual-DOM-like patterns
- CSS Optimization: Modular stylesheets with minimal redundancy
- Input Sanitization: Server-side sanitization of all user inputs
- SQL Injection Protection: Prepared statements for database operations
- XSS Prevention: Escaping of HTML content in output
- CORS Configuration: Controlled cross-origin requests
- Chrome/Chromium >= 60
- Firefox >= 55
- Safari >= 12
- Edge >= 79
- ES6+ JavaScript with strict typing
- Modular CSS with BEM-like naming convention
- RESTful API design principles
- Semantic HTML5
# Run unit tests (if implemented)
npm test
# Linting
npm run lint- Import/Export functionality (JSON, CSV)
- User authentication and authorization
- Link categories in addition to tags
- Bulk operations for multiple links
- Link preview with thumbnail generation
- API rate limiting
- Full-text search index optimization
- TypeScript migration
- Unit test suite
- Docker containerization
- CI/CD pipeline
- Performance monitoring
