{"id":34976228,"url":"https://github.com/martian56/book-explorer-api","last_synced_at":"2026-04-15T13:31:22.177Z","repository":{"id":301368826,"uuid":"1009005113","full_name":"martian56/book-explorer-api","owner":"martian56","description":"Backend API for BookExplorer","archived":false,"fork":false,"pushed_at":"2025-06-26T15:27:39.000Z","size":113,"stargazers_count":15,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-12-28T12:40:53.072Z","etag":null,"topics":["api","backend-api","expressjs","nodejs"],"latest_commit_sha":null,"homepage":"https://book-explorer-api-xo85.onrender.com","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/martian56.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2025-06-26T12:32:23.000Z","updated_at":"2025-12-26T14:10:03.000Z","dependencies_parsed_at":"2025-08-20T14:43:51.839Z","dependency_job_id":"c6273c5e-e468-4c02-ad8e-e0b72b15f431","html_url":"https://github.com/martian56/book-explorer-api","commit_stats":null,"previous_names":["martian58/book-explorer-api","martian56/book-explorer-api"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/martian56/book-explorer-api","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/martian56%2Fbook-explorer-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/martian56%2Fbook-explorer-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/martian56%2Fbook-explorer-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/martian56%2Fbook-explorer-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/martian56","download_url":"https://codeload.github.com/martian56/book-explorer-api/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/martian56%2Fbook-explorer-api/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31842842,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-15T13:28:40.153Z","status":"ssl_error","status_checked_at":"2026-04-15T13:28:29.396Z","response_time":63,"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":["api","backend-api","expressjs","nodejs"],"created_at":"2025-12-27T00:11:33.088Z","updated_at":"2026-04-15T13:31:22.154Z","avatar_url":"https://github.com/martian56.png","language":"JavaScript","readme":"# 📚 Book Explorer API\n\nWelcome to **Book Explorer API** – a modern, cloud-ready REST API for managing your starred books, built for the [Book Explorer](https://github.com/martian58/book-explorer) app and anyone who wants a simple way to save, unstar, and fetch favorite books using Open Library data.\n\n---\n\n## 🌟 Features\n\n- **Star \u0026 Unstar Books:** Authenticated users can star or unstar any book by Open Library Work ID.\n- **Get Starred Books:** Instantly fetch your personal list of favorites.\n- **Authentication:** Secure endpoints with [Clerk](https://clerk.com/) JWT-based authentication.\n- **CORS \u0026 Modern Security:** Safe for modern web frontends.\n- **Express.js:** Fast, minimal, and easy to extend.\n- **Beautiful Welcome Page:** Visit the root endpoint (`/`) for a delightful API splash.\n\n---\n\n## 🚀 Quick Start\n\n### 1. **Clone \u0026 Install**\n\n```bash\ngit clone https://github.com/martian58/book-explorer-api.git\ncd book-explorer-api\nnpm install\n```\n\n### 2. **Environment Variables**\n\nCreate a `.env` file:\n\n```env\nDATABASE_URL=your_neon_serverless_connection_string\nCLERK_PUBLISHABLE_KEY=your_publishable_key\nCLERK_SECRET_KEY=your_secret_key\nNODE_ENV=development\n```\n\n### 3. **Run the Server**\n\n```bash\nnpm run dev\n```\n\nYour API is now live at `http://localhost:3000/` 🎉\n\n---\n\n## 🔑 Authentication\n\nAll star/unstar and favorites endpoints require a valid Clerk JWT in the `Authorization` header:\n\n```\nAuthorization: Bearer \u003ctoken\u003e\n```\n\nYou can get this token from the Book Explorer frontend or directly from Clerk.\n\n---\n\n## 📖 API Endpoints\n\n| Method | Endpoint              | Auth Required | Description                       |\n|--------|----------------------|---------------|-----------------------------------|\n| GET    | `/`                  | ❌            | Welcome page                      |\n| GET    | `/api/starred`       | ✅            | List IDs of books you starred     |\n| POST   | `/api/starred/:id`   | ✅            | Star a book by work ID            |\n| DELETE | `/api/starred/:id`   | ✅            | Unstar a book by work ID          |\n\n### Example: Star a Book\n\n```http\nPOST /api/starred/OL82563W\nAuthorization: Bearer \u003cyour-token\u003e\n```\n\n---\n\n## 🛠️ Tech Stack\n\n- **Node.js** + **Express.js**\n- **Clerk** for authentication\n- **MongoDB** (or any supported store) for user favorites\n- **Open Library** for book metadata\n\n---\n\n## 🌍 Deployment\n\n- **Ready for Vercel, Railway, Render, Heroku, and more.**\n- Just set your env vars and deploy!\n\n---\n\n## ⚡ Example Welcome Page\n\n![Book Explorer API Welcome Page Screenshot](./public/book-explorer-api-pic.png)\n\n---\n\n## 🤝 Contributing\n\nPull requests and issues are welcome!  \nSee [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.\n\n---\n\n## 📄 License\n\nMIT\n\n---\n\n## 💫 Credits\n\n- API by [@martian58](https://github.com/martian58)\n- Built for [Book Explorer](https://github.com/martian58/book-explorer)\n- Book data: [Open Library](https://openlibrary.org/)\n- Auth: [Clerk](https://clerk.com/)\n\n---","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmartian56%2Fbook-explorer-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmartian56%2Fbook-explorer-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmartian56%2Fbook-explorer-api/lists"}