ResourceNest
A modern, smart bookmark manager powered by AI — helping you organize, search, and manage your resources effectively with beautiful UI, AI-generated metadata, and smart features.
- Frontend: https://resource-nest.vercel.app
- Backend: https://resourcenest.onrender.com
- AI-Powered Organization: Automatically scrapes titles, descriptions, and generates relevant tags for your bookmarks.
- Semantic Search: Find bookmarks by describing what you're looking for, powered by sentence embeddings and cosine similarity.
- Collections: Group your bookmarks into logical collections for better organization and project management.
- Link Health Monitoring: Automatically checks for broken or dead links to keep your collection clean and up-to-date.
- Import & Export: Seamlessly import your existing bookmarks from browser exports (HTML), JSON, or CSV files.
- Secure Sharing: Create shareable links for individual bookmarks or entire collections.
- User Authentication: Secure user registration and login system using JWT.
- Admin Dashboard: An analytics panel for administrators to monitor system-wide statistics like total users, bookmarks, and popular tags.
- Modern UI: A responsive and intuitive interface built with React, TypeScript, and Tailwind CSS, featuring a dark mode.
-
Framework: FastAPI
-
Database: MongoDB Atlas
-
Authentication: JWT
-
ML/AI:
sentence-transformers/paraphrase-MiniLM-L3-v2for semantic embeddingkeybertfor keyword/tag generation
-
Web Scraping: BeautifulSoup, Requests
-
Hosting: Render
- Framework: React + Vite
- Language: TypeScript
- Styling: Tailwind CSS
- State Management: Context API
- Routing: React Router
- UI Components:
lucide-react, custom components - Animations: Framer Motion
- Hosting: Vercel
frontend/
├── src/
│ ├── components/ # Reusable UI components
│ │ ├── bookmarks/
│ │ │ ├── BookmarkCard.tsx
│ │ │ └── BookmarkForm.tsx
│ │ ├── layout/
│ │ │ └── Navbar.tsx
│ │ └── UI/
│ │ ├── Button.tsx
| | ├── Badge.tsx
| | ├── Card.tsx
| | ├── Input.tsx
│ │ └── Modal.tsx
│ ├── context/ # Theme and Auth Context Providers
│ │ ├── ThemeContext.tsx
│ │ └── AuthContext.tsx
│ ├── pages/ # Route pages
│ │ ├── AdminPanel.tsx
│ │ ├── Collections.tsx
│ │ ├── Dashboard.tsx
│ │ ├── LandingPage.tsx
│ │ ├── Settings.tsx
│ │ └── SharedBookmarks.tsx
│ ├── services/ # API services
│ │ └── api.ts
│ ├── types/
│ │ └── index.ts
│ ├── App.tsx
│ ├── main.tsx
│ └── index.css
└── config files
backend/
├── main.py
├── models.py
├── utils.py
├── db.py
├── routes/
│ ├── admin.py
│ ├── analytics.py
│ ├── auth.py
│ ├── bookmarks.py
│ ├── collection.py
│ └── import_bookmarks.py
├── ml/
│ ├── embedding.py
│ ├── tags.py
│ └── scraper.py
├── requirements.txt
└── .env.example
git clone https://github.com/rushikatabathuni/ResourceNest.git
cd ResourceNest/backend
python -m venv venv
source venv/bin/activate # On Windows use venv\Scripts\activate
pip install -r requirements.txt
cp .env.example .env
# Fill in MongoDB and JWT secret in backend's.env
# Fill in VITE_API_URL in frontend's.env [backend link]
#In backend/main.py, add your url to cors origin
uvicorn main:app --reloadcd ../frontend
npm install
cp .env.example .env
# VITE_API_URL=http://localhost:8000
npm run devsentence-transformers/paraphrase-MiniLM-L3-v2: Embedding generationkeybert: Tag generationBeautifulSoup: Metadata scraping
POST /registerPOST /loginPOST /admin/loginGET /bookmarks/POST /bookmarks/addPUT /bookmarks/edit/{id}DELETE /bookmarks/delete/{id}POST /searchPOST /bookmarks/importPOST /bookmarks/shareGET /shared/{share_id}GET /collections/POST /collections/DELETE /collections/{id}GET /admin/analytics
- Browser Extension
- Tag Merging and Tag Suggestions
- Browser Sync
- Collaborative Collections
Open to issues and PRs. Star ⭐ the repo if you find it useful!
ScreenShots:






