A modern, fast bookmark manager and personal directory for organizing tools, libraries, fonts, and AI services across different categories.
- Categorized Organization: Group bookmarks into categories with emoji support for visual distinction
- Real-time Search: Filter bookmarks instantly by title or URL
- Responsive Design: Mobile-first layout with sticky sidebar navigation on desktop
- Modern UI: Clean, minimalist interface built with Tailwind CSS
- Fast Performance: Built with Vite for optimal development and production builds
- Type-Safe: Full TypeScript implementation for reliability
- Auto Favicons: Automatically fetches website favicons using Google's favicon service
- Frontend Framework: React
- Language: TypeScript
- Build Tool: Vite
- Styling: Tailwind CSS
- Linting: ESLint with Prettier
zelinks/
├── public/
│ └── favicon.png # Application favicon
├── src/
│ ├── components/
│ │ └── Index.tsx # Main bookmark display component
│ ├── data/
│ │ └── bookmarks.json # Bookmark data store
│ ├── main.tsx # Application entry point
│ └── styles.css # Global styles
├── index.html # HTML template
├── package.json # Dependencies and scripts
├── tsconfig.json # TypeScript configuration
├── vite.config.ts # Vite configuration
└── eslint.config.js # ESLint configuration
-
Clone the repository
git clone <repository-url> cd zelinks
-
Install dependencies
npm install
Start the development server:
npm run devThe application will be available at http://localhost:5173
Build for production:
npm run buildThe optimized build will be output to the dist/ directory.
Preview the production build locally:
npm run previewBookmarks are stored in src/data/bookmarks.json. The structure follows this format:
[
{
"name": "🤖 Category Name",
"subs": [
{
"name": "Subcategory Name (or null)",
"links": [
{
"title": "Link Title",
"url": "https://example.com"
}
]
}
]
}
]- Categories: Use emoji prefixes for visual categorization
- Subcategories: Use
nullif no subcategory is needed - URLs: Include full URLs with
https:// - Titles: Use clear, descriptive titles
Run linting:
npm run lintFormat code:
npm run formatGlobal styles and Tailwind configuration can be modified in:
src/styles.css- Custom CSS variables and styles- Tailwind CSS is configured via the Vite plugin
The application uses Google Fonts:
- Inter: Primary font family
- Instrument Serif: Display font for headings
- JetBrains Mono: Monospace font for code elements
Modify fonts in index.html or src/styles.css as needed.
This project builds to static files and can be deployed to any static hosting service:
- Vercel:
vercel deploy - Netlify: Connect repository and deploy
- GitHub Pages: Use
gh-pagesbranch - Cloudflare Pages: Connect repository
The production build is optimized for:
- Minimal bundle size
- Fast initial load
- Efficient caching
- SEO-friendly structure
- Chrome (latest)
- Firefox (latest)
- Safari (latest)
- Edge (latest)