{"id":20847635,"url":"https://github.com/nosisky/hello-books","last_synced_at":"2025-05-12T02:31:56.011Z","repository":{"id":48430742,"uuid":"99026340","full_name":"nosisky/Hello-Books","owner":"nosisky","description":"Library management system with features for stocking, tracking and renting books. With this application users are able to find and rent books built with ReactJS, NodeJS and PostgreSQL","archived":false,"fork":false,"pushed_at":"2021-07-26T18:50:11.000Z","size":7351,"stargazers_count":29,"open_issues_count":2,"forks_count":17,"subscribers_count":1,"default_branch":"chore/154179289/implement-second-LF-feedback","last_synced_at":"2025-03-31T22:11:19.575Z","etag":null,"topics":["nodejs","react"],"latest_commit_sha":null,"homepage":"https://goo.gl/m9CEdQ","language":"JavaScript","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/nosisky.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}},"created_at":"2017-08-01T17:26:03.000Z","updated_at":"2025-02-22T21:44:02.000Z","dependencies_parsed_at":"2022-08-30T00:20:24.407Z","dependency_job_id":null,"html_url":"https://github.com/nosisky/Hello-Books","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nosisky%2FHello-Books","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nosisky%2FHello-Books/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nosisky%2FHello-Books/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nosisky%2FHello-Books/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nosisky","download_url":"https://codeload.github.com/nosisky/Hello-Books/tar.gz/refs/heads/chore/154179289/implement-second-LF-feedback","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253662645,"owners_count":21944111,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["nodejs","react"],"created_at":"2024-11-18T02:22:17.760Z","updated_at":"2025-05-12T02:31:55.418Z","avatar_url":"https://github.com/nosisky.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Build Status](https://travis-ci.org/nosisky/Hello-Books.svg?branch=chore%2F154179289%2Fimplement-second-LF-feedback)](https://travis-ci.org/nosisky/Hello-Books) [![Code Climate](https://codeclimate.com/github/codeclimate/codeclimate/badges/gpa.svg)](https://codeclimate.com/github/nosisky/Hello-Books)\n[![Coverage Status](https://coveralls.io/repos/github/nosisky/Hello-Books/badge.svg?branch=implement-tests)](https://coveralls.io/github/nosisky/Hello-Books?branch=implement-tests)\n[![Issue Count](https://codeclimate.com/github/ekundayo-ab/hello-books/badges/issue_count.svg)](https://codeclimate.com/github/nosisky/hello-books)\n# Hello-Books \n### Hello-Books is a simple application that helps manage a library and its processes like stocking, tracking and renting books. With this application users are able to find and rent books. The application also has an admin section where the admin can do things like add books, delete books, increase the quantity of a book etc.\n\n\n## Table of Contents\n\n* [Features](#features)\n* [Technologies](#technology)\n* [Installation and Setup](#installation)\n* [How to Contribute](#how-to-contribute)\n* [Frequently Asked Questions](#faqs)\n* [Support or New Features](#support-or-new-features)\n* [License](#license)\n\n## Features\nHelloBooks consists of the following features:\n### Authentication\n- It uses JSON Web Token (JWT) for authentication.\n- Token is generated on user login\n- Token is perpetually verified to check the state of the user if logged in or not.\n- User is assigned normal role on registration\n- Admin User is pre-seeded into the application with administrative priviledges\n\n### Normal Users\n- Users can register\n- Users can log in\n- Users can view all books in the library\n- Users can borrow books\n- Users can return books\n- User can view borrowing history\n\n### Admin Users\n- Admin Users have all priviledges as Normal Users.\n- Admin Users can log in\n- Admin Users can Add, Modify \u0026 Delete Books\n- Admin Users can manage application Users\n- Admin Users sort \u0026 categorize books\n\n## Technology\n**hello-books** makes use of a host of modern technologies. The core ones are:\n\n* REACT: This project makes use of the REACT Javascript library to build the interface. REACT is used for building web pages that are structured as a collection of components. For more information about  See [this link](https://facebook.github.io/react/).\n* ECMAScript 6: Also known as ES2015, this is a version of Javascript with\n    next-generation features like arrow functions, generators, enhanced object literals,\n    spread operators and more. The ES2015 is used in many areas of this project. See [this link](https://en.wikipedia.org/wiki/ECMAScript) for details.\n* NodeJS: Node.js is an open-source, cross-platform JavaScript run-time environment for executing JavaScript code on the server-side.\n    See [this link](https://en.wikipedia.org/wiki/Node.js) for details.\n* ExressJS: ExpressJS, is a web application framework for Node.js, It is designed for building web applications and APIs.\n    see [this link](https://en.wikipedia.org/wiki/Express.js).\n* Redux is a predictable state container for JavaScript apps. It helps you write applications that behave consistently, run in different environments (client, server, and native), and are easy to test. For more information about Redux see [this link](http://redux.js.org/) for details.\n* Materializecss is used to style the frontend. For more information about materializecss see [this link](http://materializecss.com/) for details.\n* Webpack: Webpack is a module bundler. Its main purpose is to bundle JavaScript files for usage in a browser, yet it is also capable of transforming, bundling, or packaging modules.\n* Postgresql \u0026 Sequelize: Postgresql is an advanced open source Object-Relational Model (ORM) database.Sequelize is a promise-based ORM for Node.js v4 and up. It supports the dialects PostgreSQL, MySQL, SQLite and MSSQL and features solid transaction support, relations, read replication and more.\n* Major codes are written using the Airbnb javascript style guide, see [this link](https://github.com/airbnb/javascript) for details.\n\n## Installation\n\u003e Git clone this repository\n\n\u003e CD to the created directory\n\n\u003e run ```npm install```\n\n\u003e run ```npm start``` to start server\n\n\u003e Install sequelize-cli, Create Postgresql database, Navigate to server directory and run migrations:\n```\n- npm install -g seqeulize-cli\n- cd server\n- sequelize db:migrate\n\n\n```\n\u003e Create a `.env` file in the root directory of the application. Use a different database for your testing and development. Example of the content of a .env file looks like this. Additionally, the contentof the .env.sample file should give you an overview of what the environment variables should look like. ```\n\n\n## Sample environment config\n- SecretKey=mysecretkey\n- DATABASE_TEST_URL=postgres://127.0.0.1:8000/hello-books-test\n- More details can be found in the .env.sample file\n- run `npm start`\n\n## API Routes\n\u003e POST : ```/api/v1/users/signup```\nAPI routes for users to create accounts and login to the application\n\n\u003e POST : ```/api/v1/users/signin (username, password)```\nAn API route that allow users add new book:\n\n\u003e GET : ```/api/v1/books```\nAn API route that allow users to get all books in the library\n\n\u003e PUT : /api/v1/books/\u003cbookId\u003e\nAn API route that allow users to modify book in the library\n\n\u003e GET : ```/api/v1/books?returned=false```\nAn API route that allow users to get all the books that the user has borrowed but has not returned\n\n\u003e POST : ```/api/users/\u003cuserId\u003e/books```\nAn API route that allow user to borrow a book\n\n\u003e PUT : ```/api/users/\u003cuserId\u003e/books```\nAn API route that allow user to return a book\n\n\u003e DELETE : ```/api/v1/books/delete/:bookId```\nAn API route that allows admin to delete books\n\n\u003e GET : ```/api/v1/users/all```\nAn API route that allows admin to get all users\n\n\u003e GET : ```/api/v1/books/:bookId```\nAn API route that allows users get a specific book\n\n\u003e GET : ```/api/v1/books/logs/:userId```\nAn API route that allows users see rented book history\n\n## How to Contribute\nContributions to this project are welcomed, If you need to contribute to this project, kindly take steps below\n* **Fork** the repository\n* Follow [Installation and Setup](#installation) as explained earlier\n* Create a branch off **master** for the feature you wish to add\n* Make neccessary changes, commit and raise a pull request against develop\n**Note** when making contributions, please endevour to follow the [Airbnb](https://github.com/airbnb/javascript) javascript style guide. check out the [wiki](https://github.com/nosisky/Hello-Books/wiki)\n\n## License\nThis project is authored by **Abdulrasaq Nasirudeen** (nosisky@gmail.com) and is licensed for your use, modification and distribution under the **MIT** license.\n[MIT][license]\n\u003c!-- Definitions --\u003e\n[license]: LICENSE\n[author]: Abdulrasaq Nasirudeen\n\n### FAQs\nFor more details contact nosisky@gmail.com\n\n### Support or New Features\nHaving new features you feel I can add to HelloBooks? Kindly contact as above, I'll look into it. Thanks.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnosisky%2Fhello-books","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnosisky%2Fhello-books","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnosisky%2Fhello-books/lists"}