{"id":28321884,"url":"https://github.com/na-cho-dev/bookrack","last_synced_at":"2026-04-07T22:31:23.699Z","repository":{"id":294889802,"uuid":"988021324","full_name":"na-cho-dev/bookrack","owner":"na-cho-dev","description":"BookRack is a modern, full-featured library management system for schools, universities, and community libraries. ","archived":false,"fork":false,"pushed_at":"2025-09-30T07:01:27.000Z","size":75587,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-09-30T09:06:10.969Z","etag":null,"topics":["jwt","mongodb-database","nestjs-backend","react-router-dom","reactjs","tailwindcss","tanstack-react-query","typescipt","zustand"],"latest_commit_sha":null,"homepage":"https://bookrack.nachodevv.me","language":"TypeScript","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/na-cho-dev.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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-05-22T00:04:24.000Z","updated_at":"2025-09-30T07:38:33.000Z","dependencies_parsed_at":"2025-09-30T09:15:08.149Z","dependency_job_id":null,"html_url":"https://github.com/na-cho-dev/bookrack","commit_stats":null,"previous_names":["na-cho-dev/bookrack"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/na-cho-dev/bookrack","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/na-cho-dev%2Fbookrack","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/na-cho-dev%2Fbookrack/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/na-cho-dev%2Fbookrack/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/na-cho-dev%2Fbookrack/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/na-cho-dev","download_url":"https://codeload.github.com/na-cho-dev/bookrack/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/na-cho-dev%2Fbookrack/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31532187,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-07T16:28:08.000Z","status":"ssl_error","status_checked_at":"2026-04-07T16:28:06.951Z","response_time":105,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: 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":["jwt","mongodb-database","nestjs-backend","react-router-dom","reactjs","tailwindcss","tanstack-react-query","typescipt","zustand"],"created_at":"2025-05-25T13:09:43.986Z","updated_at":"2026-04-07T22:31:23.683Z","avatar_url":"https://github.com/na-cho-dev.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# BookRack 📚\n\nBookRack is a modern, full-featured library management system for schools, universities, and community libraries. It consists of a robust backend built with [NestJS](https://nestjs.com/) and [MongoDB](https://www.mongodb.com/), and a responsive frontend built with [React](https://react.dev/), [TypeScript](https://www.typescriptlang.org/), and [Vite](https://vitejs.dev/).\n\n---\n\n## Table of Contents\n\n- [Features](#features)\n- [Tech Stack](#tech-stack)\n- [Architecture Overview](#architecture-overview)\n- [Getting Started](#getting-started)\n- [Project Structure](#project-structure)\n- [API Documentation](#api-documentation)\n- [Deployment](#deployment)\n- [Contributing](#contributing)\n- [License](#license)\n- [Acknowledgements](#acknowledgements)\n\n---\n\n## 🚀 Features\n\n- User authentication (register, login, logout, session restore)\n- Role-based access control (admin/user)\n- Book management (add, update, delete, view)\n- Borrow and return system with due date tracking\n- Overdue book detection and availability tracking\n- User profile and library summary\n- Password strength meter and validation\n- Responsive UI with TailwindCSS\n- Toast notifications and loading states\n- Swagger API docs (backend)\n\n---\n\n## 🛠️ Tech Stack\n\n**Backend:**\n- [NestJS](https://nestjs.com/) (TypeScript)\n- [MongoDB](https://www.mongodb.com/) + [Mongoose](https://mongoosejs.com/)\n- [Passport.js](http://www.passportjs.org/) (JWT \u0026 Local strategies)\n- [class-validator](https://github.com/typestack/class-validator)\n- [Swagger](https://swagger.io/) via [@nestjs/swagger](https://docs.nestjs.com/openapi/introduction)\n- [Jest](https://jestjs.io/) for testing\n\n**Frontend:**\n- [React](https://react.dev/) + [TypeScript](https://www.typescriptlang.org/)\n- [Vite](https://vitejs.dev/) for fast development\n- [TailwindCSS](https://tailwindcss.com/) for styling\n- [Zustand](https://zustand-demo.pmnd.rs/) for state management\n- [React Query](https://tanstack.com/query/latest) for data fetching/caching\n- [Axios](https://axios-http.com/) for HTTP requests\n- [Zod](https://zod.dev/) for schema validation\n- [React Hook Form](https://react-hook-form.com/) for forms\n\n---\n\n## 🏗️ Architecture Overview\n\nBookRack follows a modular, layered architecture:\n\n- **Backend:** Controllers, services, schemas/models, guards, decorators, DTOs for clean separation of concerns.\n- **Frontend:** Modular components, hooks, Zustand stores, and schema validation for maintainability and scalability.\n\n---\n\n\n## 🧪 Demo/Test Accounts\n\nTo make it easy to explore BookRack, the database seed script creates the following users by default. You can use these credentials to log in and test the app:\n\n### Admin Accounts\n\n| Name         | Email                | Password      |\n|--------------|----------------------|---------------|\n| Alice Admin  | alice@central.com    | Password123!  |\n| Bob Admin    | bob@tech.com         | Password123!  |\n| Carol Admin  | carol@kids.com       | Password123!  |\n\n### Member Accounts\n\n| Name          | Email                | Password      | Organization      |\n|---------------|----------------------|---------------|-------------------|\n| Dave Member   | dave@central.com     | Password123!  | Central Library   |\n| Eve Member    | eve@tech.com         | Password123!  | Tech Library      |\n| Frank Member  | frank@kids.com       | Password123!  | Kids Library      |\n| Grace Member  | grace@central.com    | Password123!  | Central Library   |\n| Heidi Member  | heidi@tech.com       | Password123!  | Tech Library      |\n\nAll accounts use the password `Password123!`.\n\n---\n## 🏁 Getting Started\n\n### Prerequisites\n\n- Node.js (v18+ recommended)\n- pnpm, npm, or yarn\n- MongoDB instance (local or cloud)\n\n### Installation\n\n```bash\ngit clone https://github.com/yourusername/bookrack.git\ncd bookrack\n```\n\n### Configuration\n\n#### Backend\n\n1. Copy `.env.example` to `.env` in the root and fill in your MongoDB URI and secrets.\n2. Adjust config in `src/common/config/env.config.ts` as needed.\n\n#### Frontend\n\n1. Go to the `client` directory:\n    ```bash\n    cd client\n    ```\n2. Create a `.env` file if needed (see `.env.example`).\n3. Set `VITE_API_URL` to your backend server URL (default: `http://localhost:3330/api`).\n\n### Running the Application\n\n#### Backend\n\n```bash\n# Development\npnpm run start:dev\n\n# Production\npnpm run build\npnpm run start:prod\n```\n\nThe server will start on the port specified in your `.env` (default: 3000).\n\n#### Frontend\n\n```bash\ncd client\npnpm run dev\n```\n\nThe app will be available at [http://localhost:4400](http://localhost:4400) (or your configured port).\n\n### Testing (Backend)\n\n```bash\n# Run all unit tests\npnpm run test\n\n# Watch mode\npnpm run test:watch\n\n# Test coverage\npnpm run test:cov\n\n# End-to-end tests\npnpm run test:e2e\n```\n\n---\n\n## 📦 Project Structure\n\n```\nbookrack/\n├── client/                  # React frontend\n│   ├── src/\n│   └── ...\n├── src/                     # NestJS backend\n│   ├── app.module.ts\n│   ├── auth/\n│   ├── book/\n│   ├── borrow-book/\n│   ├── common/\n│   ├── user/\n│   └── ...\n├── test/                    # e2e tests\n├── .env                     # Environment variables\n├── package.json\n├── pnpm-lock.yaml\n└── README.md\n```\n\n---\n\n## 📖 API Documentation\n\nSwagger UI: [http://localhost:3300/api-docs](http://localhost:3000/api-docs) (development mode)\n\n---\n\n## 🚀 Deployment\n\nBookRack is production-ready and can be deployed to any Node.js hosting platform.\n\n### Steps\n\n1. **Build the project**:\n   ```bash\n   pnpm run build\n   ```\n2. **Set environment variables** (see [Configuration](#configuration)).\n3. **Start the server**:\n   ```bash\n   pnpm run start:prod\n   ```\n4. **Deploy the frontend** (see Vite docs for static hosting or deploy to Vercel/Netlify).\n\n---\n\n## 🤝 Contributing\n\nContributions are welcome! Please:\n\n1. Fork the repository.\n2. Create a feature branch.\n3. Write clear, well-tested code.\n4. Submit a pull request with a detailed description.\n\nFor major changes, open an issue first to discuss your ideas.\n\n---\n\n## 📄 License\n\nMIT\n\n---\n\n## 🙏 Acknowledgements\n\n- [NestJS](https://nestjs.com/)\n- [MongoDB](https://www.mongodb.com/)\n- [React](https://react.dev/)\n- [Passport.js](http://www.passportjs.org/)\n- [Jest](https://jestjs.io/)\n- All contributors and the open-source community!\n\n---\n\n**Happy reading with BookRack!**","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fna-cho-dev%2Fbookrack","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fna-cho-dev%2Fbookrack","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fna-cho-dev%2Fbookrack/lists"}