LinkHub
Overview
LinkHub began from a practical problem: I was collecting many online resources but could not manage them effectively with default browser bookmarks. What started as a personal bookmark manager has since pivoted into a platform for anyone — researchers, writers, content creators, or anyone who shares links — to organize their resources into curated guides that can be shared via a single link or exported as a PDF.
Problem
Browser bookmarks are static and cluttered. They lack flexible organization, tagging, and the ability to easily search through hundreds of saved resources. Beyond that, simply saving links is not enough. People share resources across social platforms, bios, and messages — maintaining them in multiple places is repetitive and fragile. There is a real need to organize links into structured, categorized collections that can be maintained in one place and shared everywhere.
Approach
I initially built LinkHub as a lightweight API to make link storage organized and accessible. As the project matured, I realized the real value was not just in saving links but in curating them into structured guides that others could follow. Instead of listing ten links in your bio, you share one LinkHub link and keep it updated in one place. You can build a full guide pointing people to online resources, export it as a PDF, or share it as an unlisted link on request. And since public guides are discoverable, users can search for curated collections on topics they care about using tags and descriptions — instead of hunting across the web.
Implementation
v1 — Flask API:
The first version was a RESTful API built with Flask (Python) and MySQL. It already supported organizing web resources into repositories and tags, with full CRUD operations, user authentication, and documented API endpoints. This version established the core concept of treating saved links as structured, manageable knowledge rather than a flat list of bookmarks.
v2 — NestJS Rewrite:
The second version is a greenfield rewrite using NestJS (TypeScript), PostgreSQL, and Redis. The focus shifted to curated resource guides:
- Nested repositories with visibility controls (public, unlisted, private) for organizing resources hierarchically.
- Tagging and metadata for both repositories and individual link entries.
- Import pipelines for ingesting links from CSV files, browser bookmark exports, and WhatsApp conversations.
- Asynchronous export workflows using BullMQ and Redis for generating Markdown and PDF guides from repositories.
- Share-link generation so that curated collections can be shared directly with others via URL.
- Authentication and user management with JWT, Passport, and Argon2.
Current State
The v2 backend API is functional with core features in place. The project is actively under development, with a web application and browser extension on the roadmap — there is still a lot more to build.