{"id":40163288,"url":"https://github.com/kaleb110/bookmarkly","last_synced_at":"2026-01-19T16:33:29.351Z","repository":{"id":268612351,"uuid":"883890899","full_name":"kaleb110/bookmarkly","owner":"kaleb110","description":"🔖a minimal bookmark manager","archived":false,"fork":false,"pushed_at":"2025-12-28T12:06:27.000Z","size":28395,"stargazers_count":12,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-12-30T23:13:43.794Z","etag":null,"topics":["bookmarks","docker","expressjs","full-stack","jwt","minimal","nextjs","nodejs","nodemailer","reactjs","saas","stripe","tailwindcss","typescript","web"],"latest_commit_sha":null,"homepage":"https://bookmark-manager-liart.vercel.app","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kaleb110.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-11-05T18:54:41.000Z","updated_at":"2025-12-28T12:06:32.000Z","dependencies_parsed_at":"2024-12-19T13:45:21.956Z","dependency_job_id":null,"html_url":"https://github.com/kaleb110/bookmarkly","commit_stats":null,"previous_names":["kaleb110/easyboxify","kaleb110/bookmarkly"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/kaleb110/bookmarkly","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kaleb110%2Fbookmarkly","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kaleb110%2Fbookmarkly/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kaleb110%2Fbookmarkly/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kaleb110%2Fbookmarkly/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kaleb110","download_url":"https://codeload.github.com/kaleb110/bookmarkly/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kaleb110%2Fbookmarkly/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28574426,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-19T16:29:19.148Z","status":"ssl_error","status_checked_at":"2026-01-19T16:29:17.772Z","response_time":67,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bookmarks","docker","expressjs","full-stack","jwt","minimal","nextjs","nodejs","nodemailer","reactjs","saas","stripe","tailwindcss","typescript","web"],"created_at":"2026-01-19T16:33:29.290Z","updated_at":"2026-01-19T16:33:29.342Z","avatar_url":"https://github.com/kaleb110.png","language":"TypeScript","readme":"# Easyboxify - a Bookmark Manager \n\n![Easyboxify web App](https://i.postimg.cc/2898tc4h/home-bm.png)\n\nEasyboxify is A minimalist and fast bookmark manager designed to boost productivity by helping users organize, search, and manage their bookmarks with ease. It offers a clean, intuitive interface and robust features tailored to meet the needs of casual users and power users alike.\n\n## Table of Contents\n\n- [Project Overview](#project-overview)\n- [Features](#features)\n- [Tech Stack](#tech-stack)\n- [Setup Instructions](#setup-instructions)\n  - [Prerequisites](#prerequisites)\n  - [Environment Variables](#environment-variables)\n  - [Database Initialization](#database-initialization)\n  - [Running the App](#running-the-app)\n- [Usage](#usage)\n- [Future Plans](#future-plans)\n- [Contribution Guidelines](#contribution-guidelines)\n- [License](#license)\n\n## Project Overview\n\nBookmark Manager simplifies bookmark management with features like secure login, seamless import/export, and intuitive organization tools. With both free and pro tiers, it caters to a wide range of users by balancing essential functionality with advanced productivity tools.\n\n### Target Audience\n\n- Individuals seeking a simple, organized way to manage bookmarks efficiently.\n- Productivity enthusiasts who value fast search and clutter-free design.\n\n## Features\n\n### Free Tier\n- Up to 100 bookmarks.\n- Create 3 folders and 3 tags max.\n\n### Pro Tier\n- Unlimited bookmarks, folders, and tags.\n- Advanced features and priority support and upcoming features.\n\n### Core Features\n- **Bookmark Import/Export**: Supports Chrome HTML format for easy data portability.\n- **Add/edit bookmark**: users can add bookmark with title, url, notes and tags.\n- **Search Functionality**: Quickly locate bookmarks with efficient search algorithms.\n- **Minimalist UI**: Designed for ease of use and productivity.\n\n## Tech Stack\n\n- **Frontend**: Next.js\n- **Backend**: Express.js (TypeScript)\n- **Database**: PostgreSQL (using Drizzle ORM)\n- **Styling**: Tailwind CSS with shadcn/ui components.\n- **Authentication**: JSON Web Tokens (JWT), OAuth2, and Nodemailer.\n- **Payments**: Stripe for managing Pro subscriptions (monthly/yearly).\n- **Deployment**:\n  - Frontend: Vercel\n  - Backend: Render\n  - Database: Neon\n\n## Setup Instructions\n\n### Prerequisites\n- Node.js (v16 or above)\n- Docker (optional, for containerized setup)\n- PostgreSQL (if running without Docker)\n- A Stripe account for subscription management.\n\n### Environment Variables\nCreate a `.env` file in the backend directory and include the following variables:\n```env\nNODE_ENV=development\nDATABASE_URL=your_neon_database_url\nPORT=5000\nBASE_URL=http://localhost:3000\nBASE_URL_PROD=production_base_url\nJWT_SECRET_KEY=your_jwt_secret\nTOKEN_EXPIRATION=15m\nREFRESH_TOKEN_EXPIRATION=7d\nCLIENT_ID=your_oauth_client_id\nCLIENT_SECRET=your_oauth_client_secret\nREFRESH_TOKEN=refrsh_token_generated_from_oauth-playground\nEMAIL_USER=your_email_address\nSTRIPE_SECRET_KEY=your-stripe-secret-key\nSTRIPE_WEBHOOK_SECRET=your-stripe-webhook-secret\nSTRIPE_MONTHLY_PRICE_ID=the_product_monthly_price-id\nSTRIPE_YEARLY_PRICE_ID=the_product_yearly_price-id\n```\n\nCreate a `.env.local` file in the frontend directory and include the following variables:\n```env\nNODE_ENV=development\nNEXT_PUBLIC_BASE_URL=http://localhost:5000\nNEXT_PUBLIC_BASE_URL_PROD=production_base_url\n```\n\n### Database Initialization\n1. Install the necessary dependencies for database migration.\n   ```bash\n   npm install --legacy-peer-deps\n   ```\n2. Apply migrations using Drizzle ORM.\n   ```bash\n   npm run db:migrate or npx drizzle-orm generate/migrate/push\n   ```\n\n### Running the App\n#### Using Docker\n1. Build and run the Docker containers.\n   ```bash\n   docker-compose up --build\n   ```\n2. Access the app at `http://localhost:3000`.\n\n#### Running Locally\n1. Install dependencies.\n   ```bash\n   npm install --legacy-peer-deps\n   ```\n2. Start the backend server.\n   ```bash\n   cd ./backend\n   npm run dev\n   ```\n3. Start the frontend server.\n   ```bash\n   cd ./frontend\n   npm run dev\n   ```\n4. Access the app at `http://localhost:3000`.\n\n## Usage\n\n1. **Register/Login**: Create an account or log in using your email.\n2. **Manage Bookmarks**: Add, edit, organize into folders, and tag bookmarks.\n3. **Search**: Use the search bar to quickly find(filter) bookmarks by keyword.\n4. **Upgrade to Pro**: Unlock advanced features via Stripe-powered subscriptions.\n5. **Import/Export**: Import bookmarks from Chrome or export for backup.\n\n## Future Plans \n\n- Browser extensions for Chrome and others.\n- Mobile-friendly interface for seamless access on the go.\n- Collaborative features like shared folders and tags.\n- better folder and tag organization\n- improved ui/ux with high customization\n- ai based bookmark/tag suggestion\n\n## 🌐 Live Demo\n\nCheck out the live demo of the App [here](https://easyboxify.com).\n\n## Contribution Guidelines\n\nWe welcome contributions to improve Bookmark Manager! Follow these steps:\n1. Fork the repository.\n2. Create a new branch for your feature or fix.\n   ```bash\n   git checkout -b feature/your-feature-name\n   ```\n3. Commit your changes with descriptive messages.\n   ```bash\n   git commit -m \"Add feature: your feature name\"\n   ```\n4. Push to your branch.\n   ```bash\n   git push origin feature/your-feature-name\n   ```\n5. Create a pull request and describe your changes.\n6. i will merge any fixes weather tiny or big.\n\n## 📧 Contact\n\nIf you have any questions, feel free to reach out:\n\n- **Kaleb**: [kalisha123k.com](mailto:kalisha123k@gmail.com)\n- [GitHub Issues](https://github.com/kaleb110/ecom/issues)\n  \n## License\nThis project is licensed under the MIT License. See the [LICENSE](./LICENSE) file for details.\n\n## Star History\n\n[![Star History Chart](https://api.star-history.com/svg?repos=bookmarkly/diagram\u0026type=Date)](https://star-history.com/#bookmarkly/diagram\u0026Date)\n\n---\nStart managing your bookmarks with ease! 🚀\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkaleb110%2Fbookmarkly","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkaleb110%2Fbookmarkly","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkaleb110%2Fbookmarkly/lists"}