Skip to content

Repository files navigation

Library Management System Application

Table of Contents

Introduction

RESTFUL API for a Fictional Library Management System

A node application that allows users to manage books, authors, and borrowers. The API provides functionality for adding, retrieving, updating, and deleting records.

The API supports key operations, employs JWT-based authentication for security and securing access to protected endpoints.

Pagination was used to optimize backend performance.

Users are assigned roles and access to some endpoints is based on registered role. The roles include Admin and Borrower roles.

Utilized OpenAPI 3.0 for your API documentation!. Leveraged Swagger.

AWS Lambda and API Gateway were used for serverless deployment.

Technologies used

  • Backend: NodeJS & RestAPI & Expressjs using Typescript
  • Database: MongoDB
  • Cloud services: AWS Lambda and API Gateway for serverless deployment
  • Authentication: JWT-based authentication
  • API documentation: Swagger
  • Testing: Jest
  • CI - Github Actions

Features

The service has four major endpoints implemented

  • Public Routes

  • GET "/api/public/v1/books/": This endpoint returns all book records. Pagination was implemented

  • GET "/api/public/v1/books/{authorId}": This endpoint returns books written by an author

  • GET "/api/public/v1/authors": This endpoint returns all authors

  • GET "/api/public/v1/authors/{id}" : This endpoint returns all authors by id

  • GET "/api/public/v1/api/public/v1/borrowers": This endpoint returns all borrowers

  • GET "/api/public/v1/api/public/v1/{borrowerId}/borrowed-books": This endpoint returns all books borrowed by borrower's id

  • Protected Routes

  • Author Routes

  • POST "/api/private/v1/admin/authors/": This endpoint is used to create an author and to database

  • PUT "/api/private/v1/admin/authors/{authorId}",: This endpoint is used to update author details

  • DELETE "/api/private/v1/admin/authors/{authorId}" : This endpoint is used to delete an author

  • Book Routes

  • POST "/api/private/v1/admin/books" : This endpoint is used to create a book and add to database

  • PUT "/api/private/v1/admin/books/{bookId}",: This endpoint is used to update book details

  • DELETE "/api/private/v1/admin/books/{bookId}" : This endpoint is used to delete a book by id

  • Borrowers Routes

  • GET "/api/private/v1/admin/borrowers/{id}": This endpoint returns all borrowers details. The borrowers Id is used to implement it.

  • POST "/api/private/v1/admin/borrowers": This endpoint is used to create a borrower

  • PUT "/api/private/v1/admin/borrowers/:borrowerId": This endpoint is used to update record of borrowed books by a borrower. Admin user access

  • PUT "/api/private/v1/borrowers/:borrowerId": This endpoint is used to update record of borrowed books by a borrower. Borrower user access

  • DELETE "/api/private/v1/admin/borrowers/:borrowerId": This endpoint is used to delete a borrower.

  • DELETE "/api/private/v1/admin/borrowers/:borrowerId/books/:bookId": This endpoint is used to delete a borrowered book from a borrowers record. Admin user access

  • DELETE "/api/private/v1/borrowers/:borrowerId/books/:bookId": This endpoint is used to delete a borrowered book from a borrowers record. Borrower user access

security mechanisms in use (cors)

Getting Started

To run this web application on your local machine, follow the steps below:

Prerequisites

Before getting started, ensure that you have the following software installed on your machine:

  • Node.js, typescript, mongodb, aws cli

Before you start the application, you need to set up an environment variable to with the MongoURI within the express-backend directory. Here's how you can do it:

MONGO_URI="YOUR KEY"
ACCESS_TOKEN_SECRET="YOUR KEY"
JWT_SECRET="YOUR KEY"

Create a file called .env in express-backend folder of the project with the environmental variables above.

To run your test environment, create a file called .env.test and input the code below in the file

Note ACCESS_TOKEN_SECRET and JWT_SECRET should be the same string.

MONGO_URI="KEY FOR Test DB"
ACCESS_TOKEN_SECRET="YOUR KEY"
JWT_SECRET="YOUR KEY"

Installation

Step-by-step guide on how to install the project and its dependencies.

  1. Clone the repository to your local machine using Git:
git clone https://github.com/ayofalo/libman.git
  1. Navigate to the project directory
cd libman
  1. Install the project dependencies using NPM(Node Package Manager):
npm install

Running the web application

Once you have installed the dependencies, build the application then you can start the web application using the command below

npm run build
npm run start

This should be done from the root directory

Running Tests

To run tests, ensure you have created your test .env file with the details mentioned above. use the command below to run your test

npm run test

Serverless deployment

Used AWS Lambda and API Gateway for serverless deployment.

For serverless deployment, the express application was wrapped in serverless provided by the 'serverless-http' from npm. To deploy the application using serverless framework follow the steps

complete aws configuration use

aws configure

add your serverless.yml file with the necessary configuration

To deploy to AWS lambda use the command below

serverless deploy 

API documentation

Access API documentation via Swagger UI using the link below after starting up the application

http://localhost:3001/api-docs/v1/

Usage

License

This project is licensed under the MIT License.

Authors

Contributors names and contact info

Ayo Falowo

About

Library Management System

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
GitHub - afally/libman: Library Management System · GitHub
Skip to content

Repository files navigation

Library Management System Application

Table of Contents

Introduction

RESTFUL API for a Fictional Library Management System

A node application that allows users to manage books, authors, and borrowers. The API provides functionality for adding, retrieving, updating, and deleting records.

The API supports key operations, employs JWT-based authentication for security and securing access to protected endpoints.

Pagination was used to optimize backend performance.

Users are assigned roles and access to some endpoints is based on registered role. The roles include Admin and Borrower roles.

Utilized OpenAPI 3.0 for your API documentation!. Leveraged Swagger.

AWS Lambda and API Gateway were used for serverless deployment.

Technologies used

  • Backend: NodeJS & RestAPI & Expressjs using Typescript
  • Database: MongoDB
  • Cloud services: AWS Lambda and API Gateway for serverless deployment
  • Authentication: JWT-based authentication
  • API documentation: Swagger
  • Testing: Jest
  • CI - Github Actions

Features

The service has four major endpoints implemented

  • Public Routes

  • GET "/api/public/v1/books/": This endpoint returns all book records. Pagination was implemented

  • GET "/api/public/v1/books/{authorId}": This endpoint returns books written by an author

  • GET "/api/public/v1/authors": This endpoint returns all authors

  • GET "/api/public/v1/authors/{id}" : This endpoint returns all authors by id

  • GET "/api/public/v1/api/public/v1/borrowers": This endpoint returns all borrowers

  • GET "/api/public/v1/api/public/v1/{borrowerId}/borrowed-books": This endpoint returns all books borrowed by borrower's id

  • Protected Routes

  • Author Routes

  • POST "/api/private/v1/admin/authors/": This endpoint is used to create an author and to database

  • PUT "/api/private/v1/admin/authors/{authorId}",: This endpoint is used to update author details

  • DELETE "/api/private/v1/admin/authors/{authorId}" : This endpoint is used to delete an author

  • Book Routes

  • POST "/api/private/v1/admin/books" : This endpoint is used to create a book and add to database

  • PUT "/api/private/v1/admin/books/{bookId}",: This endpoint is used to update book details

  • DELETE "/api/private/v1/admin/books/{bookId}" : This endpoint is used to delete a book by id

  • Borrowers Routes

  • GET "/api/private/v1/admin/borrowers/{id}": This endpoint returns all borrowers details. The borrowers Id is used to implement it.

  • POST "/api/private/v1/admin/borrowers": This endpoint is used to create a borrower

  • PUT "/api/private/v1/admin/borrowers/:borrowerId": This endpoint is used to update record of borrowed books by a borrower. Admin user access

  • PUT "/api/private/v1/borrowers/:borrowerId": This endpoint is used to update record of borrowed books by a borrower. Borrower user access

  • DELETE "/api/private/v1/admin/borrowers/:borrowerId": This endpoint is used to delete a borrower.

  • DELETE "/api/private/v1/admin/borrowers/:borrowerId/books/:bookId": This endpoint is used to delete a borrowered book from a borrowers record. Admin user access

  • DELETE "/api/private/v1/borrowers/:borrowerId/books/:bookId": This endpoint is used to delete a borrowered book from a borrowers record. Borrower user access

security mechanisms in use (cors)

Getting Started

To run this web application on your local machine, follow the steps below:

Prerequisites

Before getting started, ensure that you have the following software installed on your machine:

  • Node.js, typescript, mongodb, aws cli

Before you start the application, you need to set up an environment variable to with the MongoURI within the express-backend directory. Here's how you can do it:

MONGO_URI="YOUR KEY"
ACCESS_TOKEN_SECRET="YOUR KEY"
JWT_SECRET="YOUR KEY"

Create a file called .env in express-backend folder of the project with the environmental variables above.

To run your test environment, create a file called .env.test and input the code below in the file

Note ACCESS_TOKEN_SECRET and JWT_SECRET should be the same string.

MONGO_URI="KEY FOR Test DB"
ACCESS_TOKEN_SECRET="YOUR KEY"
JWT_SECRET="YOUR KEY"

Installation

Step-by-step guide on how to install the project and its dependencies.

  1. Clone the repository to your local machine using Git:
git clone https://github.com/ayofalo/libman.git
  1. Navigate to the project directory
cd libman
  1. Install the project dependencies using NPM(Node Package Manager):
npm install

Running the web application

Once you have installed the dependencies, build the application then you can start the web application using the command below

npm run build
npm run start

This should be done from the root directory

Running Tests

To run tests, ensure you have created your test .env file with the details mentioned above. use the command below to run your test

npm run test

Serverless deployment

Used AWS Lambda and API Gateway for serverless deployment.

For serverless deployment, the express application was wrapped in serverless provided by the 'serverless-http' from npm. To deploy the application using serverless framework follow the steps

complete aws configuration use

aws configure

add your serverless.yml file with the necessary configuration

To deploy to AWS lambda use the command below

serverless deploy 

API documentation

Access API documentation via Swagger UI using the link below after starting up the application

http://localhost:3001/api-docs/v1/

Usage

License

This project is licensed under the MIT License.

Authors

Contributors names and contact info

Ayo Falowo

About

Library Management System

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - afally/libman: Library Management System · GitHub
Skip to content

Repository files navigation

Library Management System Application

Table of Contents

Introduction

RESTFUL API for a Fictional Library Management System

A node application that allows users to manage books, authors, and borrowers. The API provides functionality for adding, retrieving, updating, and deleting records.

The API supports key operations, employs JWT-based authentication for security and securing access to protected endpoints.

Pagination was used to optimize backend performance.

Users are assigned roles and access to some endpoints is based on registered role. The roles include Admin and Borrower roles.

Utilized OpenAPI 3.0 for your API documentation!. Leveraged Swagger.

AWS Lambda and API Gateway were used for serverless deployment.

Technologies used

  • Backend: NodeJS & RestAPI & Expressjs using Typescript
  • Database: MongoDB
  • Cloud services: AWS Lambda and API Gateway for serverless deployment
  • Authentication: JWT-based authentication
  • API documentation: Swagger
  • Testing: Jest
  • CI - Github Actions

Features

The service has four major endpoints implemented

  • Public Routes

  • GET "/api/public/v1/books/": This endpoint returns all book records. Pagination was implemented

  • GET "/api/public/v1/books/{authorId}": This endpoint returns books written by an author

  • GET "/api/public/v1/authors": This endpoint returns all authors

  • GET "/api/public/v1/authors/{id}" : This endpoint returns all authors by id

  • GET "/api/public/v1/api/public/v1/borrowers": This endpoint returns all borrowers

  • GET "/api/public/v1/api/public/v1/{borrowerId}/borrowed-books": This endpoint returns all books borrowed by borrower's id

  • Protected Routes

  • Author Routes

  • POST "/api/private/v1/admin/authors/": This endpoint is used to create an author and to database

  • PUT "/api/private/v1/admin/authors/{authorId}",: This endpoint is used to update author details

  • DELETE "/api/private/v1/admin/authors/{authorId}" : This endpoint is used to delete an author

  • Book Routes

  • POST "/api/private/v1/admin/books" : This endpoint is used to create a book and add to database

  • PUT "/api/private/v1/admin/books/{bookId}",: This endpoint is used to update book details

  • DELETE "/api/private/v1/admin/books/{bookId}" : This endpoint is used to delete a book by id

  • Borrowers Routes

  • GET "/api/private/v1/admin/borrowers/{id}": This endpoint returns all borrowers details. The borrowers Id is used to implement it.

  • POST "/api/private/v1/admin/borrowers": This endpoint is used to create a borrower

  • PUT "/api/private/v1/admin/borrowers/:borrowerId": This endpoint is used to update record of borrowed books by a borrower. Admin user access

  • PUT "/api/private/v1/borrowers/:borrowerId": This endpoint is used to update record of borrowed books by a borrower. Borrower user access

  • DELETE "/api/private/v1/admin/borrowers/:borrowerId": This endpoint is used to delete a borrower.

  • DELETE "/api/private/v1/admin/borrowers/:borrowerId/books/:bookId": This endpoint is used to delete a borrowered book from a borrowers record. Admin user access

  • DELETE "/api/private/v1/borrowers/:borrowerId/books/:bookId": This endpoint is used to delete a borrowered book from a borrowers record. Borrower user access

security mechanisms in use (cors)

Getting Started

To run this web application on your local machine, follow the steps below:

Prerequisites

Before getting started, ensure that you have the following software installed on your machine:

  • Node.js, typescript, mongodb, aws cli

Before you start the application, you need to set up an environment variable to with the MongoURI within the express-backend directory. Here's how you can do it:

MONGO_URI="YOUR KEY"
ACCESS_TOKEN_SECRET="YOUR KEY"
JWT_SECRET="YOUR KEY"

Create a file called .env in express-backend folder of the project with the environmental variables above.

To run your test environment, create a file called .env.test and input the code below in the file

Note ACCESS_TOKEN_SECRET and JWT_SECRET should be the same string.

MONGO_URI="KEY FOR Test DB"
ACCESS_TOKEN_SECRET="YOUR KEY"
JWT_SECRET="YOUR KEY"

Installation

Step-by-step guide on how to install the project and its dependencies.

  1. Clone the repository to your local machine using Git:
git clone https://github.com/ayofalo/libman.git
  1. Navigate to the project directory
cd libman
  1. Install the project dependencies using NPM(Node Package Manager):
npm install

Running the web application

Once you have installed the dependencies, build the application then you can start the web application using the command below

npm run build
npm run start

This should be done from the root directory

Running Tests

To run tests, ensure you have created your test .env file with the details mentioned above. use the command below to run your test

npm run test

Serverless deployment

Used AWS Lambda and API Gateway for serverless deployment.

For serverless deployment, the express application was wrapped in serverless provided by the 'serverless-http' from npm. To deploy the application using serverless framework follow the steps

complete aws configuration use

aws configure

add your serverless.yml file with the necessary configuration

To deploy to AWS lambda use the command below

serverless deploy 

API documentation

Access API documentation via Swagger UI using the link below after starting up the application

http://localhost:3001/api-docs/v1/

Usage

License

This project is licensed under the MIT License.

Authors

Contributors names and contact info

Ayo Falowo

About

Library Management System

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - afally/libman: Library Management System · GitHub
Skip to content

Repository files navigation

Library Management System Application

Table of Contents

Introduction

RESTFUL API for a Fictional Library Management System

A node application that allows users to manage books, authors, and borrowers. The API provides functionality for adding, retrieving, updating, and deleting records.

The API supports key operations, employs JWT-based authentication for security and securing access to protected endpoints.

Pagination was used to optimize backend performance.

Users are assigned roles and access to some endpoints is based on registered role. The roles include Admin and Borrower roles.

Utilized OpenAPI 3.0 for your API documentation!. Leveraged Swagger.

AWS Lambda and API Gateway were used for serverless deployment.

Technologies used

  • Backend: NodeJS & RestAPI & Expressjs using Typescript
  • Database: MongoDB
  • Cloud services: AWS Lambda and API Gateway for serverless deployment
  • Authentication: JWT-based authentication
  • API documentation: Swagger
  • Testing: Jest
  • CI - Github Actions

Features

The service has four major endpoints implemented

  • Public Routes

  • GET "/api/public/v1/books/": This endpoint returns all book records. Pagination was implemented

  • GET "/api/public/v1/books/{authorId}": This endpoint returns books written by an author

  • GET "/api/public/v1/authors": This endpoint returns all authors

  • GET "/api/public/v1/authors/{id}" : This endpoint returns all authors by id

  • GET "/api/public/v1/api/public/v1/borrowers": This endpoint returns all borrowers

  • GET "/api/public/v1/api/public/v1/{borrowerId}/borrowed-books": This endpoint returns all books borrowed by borrower's id

  • Protected Routes

  • Author Routes

  • POST "/api/private/v1/admin/authors/": This endpoint is used to create an author and to database

  • PUT "/api/private/v1/admin/authors/{authorId}",: This endpoint is used to update author details

  • DELETE "/api/private/v1/admin/authors/{authorId}" : This endpoint is used to delete an author

  • Book Routes

  • POST "/api/private/v1/admin/books" : This endpoint is used to create a book and add to database

  • PUT "/api/private/v1/admin/books/{bookId}",: This endpoint is used to update book details

  • DELETE "/api/private/v1/admin/books/{bookId}" : This endpoint is used to delete a book by id

  • Borrowers Routes

  • GET "/api/private/v1/admin/borrowers/{id}": This endpoint returns all borrowers details. The borrowers Id is used to implement it.

  • POST "/api/private/v1/admin/borrowers": This endpoint is used to create a borrower

  • PUT "/api/private/v1/admin/borrowers/:borrowerId": This endpoint is used to update record of borrowed books by a borrower. Admin user access

  • PUT "/api/private/v1/borrowers/:borrowerId": This endpoint is used to update record of borrowed books by a borrower. Borrower user access

  • DELETE "/api/private/v1/admin/borrowers/:borrowerId": This endpoint is used to delete a borrower.

  • DELETE "/api/private/v1/admin/borrowers/:borrowerId/books/:bookId": This endpoint is used to delete a borrowered book from a borrowers record. Admin user access

  • DELETE "/api/private/v1/borrowers/:borrowerId/books/:bookId": This endpoint is used to delete a borrowered book from a borrowers record. Borrower user access

security mechanisms in use (cors)

Getting Started

To run this web application on your local machine, follow the steps below:

Prerequisites

Before getting started, ensure that you have the following software installed on your machine:

  • Node.js, typescript, mongodb, aws cli

Before you start the application, you need to set up an environment variable to with the MongoURI within the express-backend directory. Here's how you can do it:

MONGO_URI="YOUR KEY"
ACCESS_TOKEN_SECRET="YOUR KEY"
JWT_SECRET="YOUR KEY"

Create a file called .env in express-backend folder of the project with the environmental variables above.

To run your test environment, create a file called .env.test and input the code below in the file

Note ACCESS_TOKEN_SECRET and JWT_SECRET should be the same string.

MONGO_URI="KEY FOR Test DB"
ACCESS_TOKEN_SECRET="YOUR KEY"
JWT_SECRET="YOUR KEY"

Installation

Step-by-step guide on how to install the project and its dependencies.

  1. Clone the repository to your local machine using Git:
git clone https://github.com/ayofalo/libman.git
  1. Navigate to the project directory
cd libman
  1. Install the project dependencies using NPM(Node Package Manager):
npm install

Running the web application

Once you have installed the dependencies, build the application then you can start the web application using the command below

npm run build
npm run start

This should be done from the root directory

Running Tests

To run tests, ensure you have created your test .env file with the details mentioned above. use the command below to run your test

npm run test

Serverless deployment

Used AWS Lambda and API Gateway for serverless deployment.

For serverless deployment, the express application was wrapped in serverless provided by the 'serverless-http' from npm. To deploy the application using serverless framework follow the steps

complete aws configuration use

aws configure

add your serverless.yml file with the necessary configuration

To deploy to AWS lambda use the command below

serverless deploy 

API documentation

Access API documentation via Swagger UI using the link below after starting up the application

http://localhost:3001/api-docs/v1/

Usage

License

This project is licensed under the MIT License.

Authors

Contributors names and contact info

Ayo Falowo

About

Library Management System

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' GitHub - afally/libman: Library Management System · GitHub
Skip to content

Repository files navigation

Library Management System Application

Table of Contents

Introduction

RESTFUL API for a Fictional Library Management System

A node application that allows users to manage books, authors, and borrowers. The API provides functionality for adding, retrieving, updating, and deleting records.

The API supports key operations, employs JWT-based authentication for security and securing access to protected endpoints.

Pagination was used to optimize backend performance.

Users are assigned roles and access to some endpoints is based on registered role. The roles include Admin and Borrower roles.

Utilized OpenAPI 3.0 for your API documentation!. Leveraged Swagger.

AWS Lambda and API Gateway were used for serverless deployment.

Technologies used

  • Backend: NodeJS & RestAPI & Expressjs using Typescript
  • Database: MongoDB
  • Cloud services: AWS Lambda and API Gateway for serverless deployment
  • Authentication: JWT-based authentication
  • API documentation: Swagger
  • Testing: Jest
  • CI - Github Actions

Features

The service has four major endpoints implemented

  • Public Routes

  • GET "/api/public/v1/books/": This endpoint returns all book records. Pagination was implemented

  • GET "/api/public/v1/books/{authorId}": This endpoint returns books written by an author

  • GET "/api/public/v1/authors": This endpoint returns all authors

  • GET "/api/public/v1/authors/{id}" : This endpoint returns all authors by id

  • GET "/api/public/v1/api/public/v1/borrowers": This endpoint returns all borrowers

  • GET "/api/public/v1/api/public/v1/{borrowerId}/borrowed-books": This endpoint returns all books borrowed by borrower's id

  • Protected Routes

  • Author Routes

  • POST "/api/private/v1/admin/authors/": This endpoint is used to create an author and to database

  • PUT "/api/private/v1/admin/authors/{authorId}",: This endpoint is used to update author details

  • DELETE "/api/private/v1/admin/authors/{authorId}" : This endpoint is used to delete an author

  • Book Routes

  • POST "/api/private/v1/admin/books" : This endpoint is used to create a book and add to database

  • PUT "/api/private/v1/admin/books/{bookId}",: This endpoint is used to update book details

  • DELETE "/api/private/v1/admin/books/{bookId}" : This endpoint is used to delete a book by id

  • Borrowers Routes

  • GET "/api/private/v1/admin/borrowers/{id}": This endpoint returns all borrowers details. The borrowers Id is used to implement it.

  • POST "/api/private/v1/admin/borrowers": This endpoint is used to create a borrower

  • PUT "/api/private/v1/admin/borrowers/:borrowerId": This endpoint is used to update record of borrowed books by a borrower. Admin user access

  • PUT "/api/private/v1/borrowers/:borrowerId": This endpoint is used to update record of borrowed books by a borrower. Borrower user access

  • DELETE "/api/private/v1/admin/borrowers/:borrowerId": This endpoint is used to delete a borrower.

  • DELETE "/api/private/v1/admin/borrowers/:borrowerId/books/:bookId": This endpoint is used to delete a borrowered book from a borrowers record. Admin user access

  • DELETE "/api/private/v1/borrowers/:borrowerId/books/:bookId": This endpoint is used to delete a borrowered book from a borrowers record. Borrower user access

security mechanisms in use (cors)

Getting Started

To run this web application on your local machine, follow the steps below:

Prerequisites

Before getting started, ensure that you have the following software installed on your machine:

  • Node.js, typescript, mongodb, aws cli

Before you start the application, you need to set up an environment variable to with the MongoURI within the express-backend directory. Here's how you can do it:

MONGO_URI="YOUR KEY"
ACCESS_TOKEN_SECRET="YOUR KEY"
JWT_SECRET="YOUR KEY"

Create a file called .env in express-backend folder of the project with the environmental variables above.

To run your test environment, create a file called .env.test and input the code below in the file

Note ACCESS_TOKEN_SECRET and JWT_SECRET should be the same string.

MONGO_URI="KEY FOR Test DB"
ACCESS_TOKEN_SECRET="YOUR KEY"
JWT_SECRET="YOUR KEY"

Installation

Step-by-step guide on how to install the project and its dependencies.

  1. Clone the repository to your local machine using Git:
git clone https://github.com/ayofalo/libman.git
  1. Navigate to the project directory
cd libman
  1. Install the project dependencies using NPM(Node Package Manager):
npm install

Running the web application

Once you have installed the dependencies, build the application then you can start the web application using the command below

npm run build
npm run start

This should be done from the root directory

Running Tests

To run tests, ensure you have created your test .env file with the details mentioned above. use the command below to run your test

npm run test

Serverless deployment

Used AWS Lambda and API Gateway for serverless deployment.

For serverless deployment, the express application was wrapped in serverless provided by the 'serverless-http' from npm. To deploy the application using serverless framework follow the steps

complete aws configuration use

aws configure

add your serverless.yml file with the necessary configuration

To deploy to AWS lambda use the command below

serverless deploy 

API documentation

Access API documentation via Swagger UI using the link below after starting up the application

http://localhost:3001/api-docs/v1/

Usage

License

This project is licensed under the MIT License.

Authors

Contributors names and contact info

Ayo Falowo

About

Library Management System

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - afally/libman: Library Management System · GitHub
Skip to content

Repository files navigation

Library Management System Application

Table of Contents

Introduction

RESTFUL API for a Fictional Library Management System

A node application that allows users to manage books, authors, and borrowers. The API provides functionality for adding, retrieving, updating, and deleting records.

The API supports key operations, employs JWT-based authentication for security and securing access to protected endpoints.

Pagination was used to optimize backend performance.

Users are assigned roles and access to some endpoints is based on registered role. The roles include Admin and Borrower roles.

Utilized OpenAPI 3.0 for your API documentation!. Leveraged Swagger.

AWS Lambda and API Gateway were used for serverless deployment.

Technologies used

  • Backend: NodeJS & RestAPI & Expressjs using Typescript
  • Database: MongoDB
  • Cloud services: AWS Lambda and API Gateway for serverless deployment
  • Authentication: JWT-based authentication
  • API documentation: Swagger
  • Testing: Jest
  • CI - Github Actions

Features

The service has four major endpoints implemented

  • Public Routes

  • GET "/api/public/v1/books/": This endpoint returns all book records. Pagination was implemented

  • GET "/api/public/v1/books/{authorId}": This endpoint returns books written by an author

  • GET "/api/public/v1/authors": This endpoint returns all authors

  • GET "/api/public/v1/authors/{id}" : This endpoint returns all authors by id

  • GET "/api/public/v1/api/public/v1/borrowers": This endpoint returns all borrowers

  • GET "/api/public/v1/api/public/v1/{borrowerId}/borrowed-books": This endpoint returns all books borrowed by borrower's id

  • Protected Routes

  • Author Routes

  • POST "/api/private/v1/admin/authors/": This endpoint is used to create an author and to database

  • PUT "/api/private/v1/admin/authors/{authorId}",: This endpoint is used to update author details

  • DELETE "/api/private/v1/admin/authors/{authorId}" : This endpoint is used to delete an author

  • Book Routes

  • POST "/api/private/v1/admin/books" : This endpoint is used to create a book and add to database

  • PUT "/api/private/v1/admin/books/{bookId}",: This endpoint is used to update book details

  • DELETE "/api/private/v1/admin/books/{bookId}" : This endpoint is used to delete a book by id

  • Borrowers Routes

  • GET "/api/private/v1/admin/borrowers/{id}": This endpoint returns all borrowers details. The borrowers Id is used to implement it.

  • POST "/api/private/v1/admin/borrowers": This endpoint is used to create a borrower

  • PUT "/api/private/v1/admin/borrowers/:borrowerId": This endpoint is used to update record of borrowed books by a borrower. Admin user access

  • PUT "/api/private/v1/borrowers/:borrowerId": This endpoint is used to update record of borrowed books by a borrower. Borrower user access

  • DELETE "/api/private/v1/admin/borrowers/:borrowerId": This endpoint is used to delete a borrower.

  • DELETE "/api/private/v1/admin/borrowers/:borrowerId/books/:bookId": This endpoint is used to delete a borrowered book from a borrowers record. Admin user access

  • DELETE "/api/private/v1/borrowers/:borrowerId/books/:bookId": This endpoint is used to delete a borrowered book from a borrowers record. Borrower user access

security mechanisms in use (cors)

Getting Started

To run this web application on your local machine, follow the steps below:

Prerequisites

Before getting started, ensure that you have the following software installed on your machine:

  • Node.js, typescript, mongodb, aws cli

Before you start the application, you need to set up an environment variable to with the MongoURI within the express-backend directory. Here's how you can do it:

MONGO_URI="YOUR KEY"
ACCESS_TOKEN_SECRET="YOUR KEY"
JWT_SECRET="YOUR KEY"

Create a file called .env in express-backend folder of the project with the environmental variables above.

To run your test environment, create a file called .env.test and input the code below in the file

Note ACCESS_TOKEN_SECRET and JWT_SECRET should be the same string.

MONGO_URI="KEY FOR Test DB"
ACCESS_TOKEN_SECRET="YOUR KEY"
JWT_SECRET="YOUR KEY"

Installation

Step-by-step guide on how to install the project and its dependencies.

  1. Clone the repository to your local machine using Git:
git clone https://github.com/ayofalo/libman.git
  1. Navigate to the project directory
cd libman
  1. Install the project dependencies using NPM(Node Package Manager):
npm install

Running the web application

Once you have installed the dependencies, build the application then you can start the web application using the command below

npm run build
npm run start

This should be done from the root directory

Running Tests

To run tests, ensure you have created your test .env file with the details mentioned above. use the command below to run your test

npm run test

Serverless deployment

Used AWS Lambda and API Gateway for serverless deployment.

For serverless deployment, the express application was wrapped in serverless provided by the 'serverless-http' from npm. To deploy the application using serverless framework follow the steps

complete aws configuration use

aws configure

add your serverless.yml file with the necessary configuration

To deploy to AWS lambda use the command below

serverless deploy 

API documentation

Access API documentation via Swagger UI using the link below after starting up the application

http://localhost:3001/api-docs/v1/

Usage

License

This project is licensed under the MIT License.

Authors

Contributors names and contact info

Ayo Falowo

About

Library Management System

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - afally/libman: Library Management System · GitHub
Skip to content

Repository files navigation

Library Management System Application

Table of Contents

Introduction

RESTFUL API for a Fictional Library Management System

A node application that allows users to manage books, authors, and borrowers. The API provides functionality for adding, retrieving, updating, and deleting records.

The API supports key operations, employs JWT-based authentication for security and securing access to protected endpoints.

Pagination was used to optimize backend performance.

Users are assigned roles and access to some endpoints is based on registered role. The roles include Admin and Borrower roles.

Utilized OpenAPI 3.0 for your API documentation!. Leveraged Swagger.

AWS Lambda and API Gateway were used for serverless deployment.

Technologies used

  • Backend: NodeJS & RestAPI & Expressjs using Typescript
  • Database: MongoDB
  • Cloud services: AWS Lambda and API Gateway for serverless deployment
  • Authentication: JWT-based authentication
  • API documentation: Swagger
  • Testing: Jest
  • CI - Github Actions

Features

The service has four major endpoints implemented

  • Public Routes

  • GET "/api/public/v1/books/": This endpoint returns all book records. Pagination was implemented

  • GET "/api/public/v1/books/{authorId}": This endpoint returns books written by an author

  • GET "/api/public/v1/authors": This endpoint returns all authors

  • GET "/api/public/v1/authors/{id}" : This endpoint returns all authors by id

  • GET "/api/public/v1/api/public/v1/borrowers": This endpoint returns all borrowers

  • GET "/api/public/v1/api/public/v1/{borrowerId}/borrowed-books": This endpoint returns all books borrowed by borrower's id

  • Protected Routes

  • Author Routes

  • POST "/api/private/v1/admin/authors/": This endpoint is used to create an author and to database

  • PUT "/api/private/v1/admin/authors/{authorId}",: This endpoint is used to update author details

  • DELETE "/api/private/v1/admin/authors/{authorId}" : This endpoint is used to delete an author

  • Book Routes

  • POST "/api/private/v1/admin/books" : This endpoint is used to create a book and add to database

  • PUT "/api/private/v1/admin/books/{bookId}",: This endpoint is used to update book details

  • DELETE "/api/private/v1/admin/books/{bookId}" : This endpoint is used to delete a book by id

  • Borrowers Routes

  • GET "/api/private/v1/admin/borrowers/{id}": This endpoint returns all borrowers details. The borrowers Id is used to implement it.

  • POST "/api/private/v1/admin/borrowers": This endpoint is used to create a borrower

  • PUT "/api/private/v1/admin/borrowers/:borrowerId": This endpoint is used to update record of borrowed books by a borrower. Admin user access

  • PUT "/api/private/v1/borrowers/:borrowerId": This endpoint is used to update record of borrowed books by a borrower. Borrower user access

  • DELETE "/api/private/v1/admin/borrowers/:borrowerId": This endpoint is used to delete a borrower.

  • DELETE "/api/private/v1/admin/borrowers/:borrowerId/books/:bookId": This endpoint is used to delete a borrowered book from a borrowers record. Admin user access

  • DELETE "/api/private/v1/borrowers/:borrowerId/books/:bookId": This endpoint is used to delete a borrowered book from a borrowers record. Borrower user access

security mechanisms in use (cors)

Getting Started

To run this web application on your local machine, follow the steps below:

Prerequisites

Before getting started, ensure that you have the following software installed on your machine:

  • Node.js, typescript, mongodb, aws cli

Before you start the application, you need to set up an environment variable to with the MongoURI within the express-backend directory. Here's how you can do it:

MONGO_URI="YOUR KEY"
ACCESS_TOKEN_SECRET="YOUR KEY"
JWT_SECRET="YOUR KEY"

Create a file called .env in express-backend folder of the project with the environmental variables above.

To run your test environment, create a file called .env.test and input the code below in the file

Note ACCESS_TOKEN_SECRET and JWT_SECRET should be the same string.

MONGO_URI="KEY FOR Test DB"
ACCESS_TOKEN_SECRET="YOUR KEY"
JWT_SECRET="YOUR KEY"

Installation

Step-by-step guide on how to install the project and its dependencies.

  1. Clone the repository to your local machine using Git:
git clone https://github.com/ayofalo/libman.git
  1. Navigate to the project directory
cd libman
  1. Install the project dependencies using NPM(Node Package Manager):
npm install

Running the web application

Once you have installed the dependencies, build the application then you can start the web application using the command below

npm run build
npm run start

This should be done from the root directory

Running Tests

To run tests, ensure you have created your test .env file with the details mentioned above. use the command below to run your test

npm run test

Serverless deployment

Used AWS Lambda and API Gateway for serverless deployment.

For serverless deployment, the express application was wrapped in serverless provided by the 'serverless-http' from npm. To deploy the application using serverless framework follow the steps

complete aws configuration use

aws configure

add your serverless.yml file with the necessary configuration

To deploy to AWS lambda use the command below

serverless deploy 

API documentation

Access API documentation via Swagger UI using the link below after starting up the application

http://localhost:3001/api-docs/v1/

Usage

License

This project is licensed under the MIT License.

Authors

Contributors names and contact info

Ayo Falowo

About

Library Management System

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); GitHub - afally/libman: Library Management System · GitHub
Skip to content

Repository files navigation

Library Management System Application

Table of Contents

Introduction

RESTFUL API for a Fictional Library Management System

A node application that allows users to manage books, authors, and borrowers. The API provides functionality for adding, retrieving, updating, and deleting records.

The API supports key operations, employs JWT-based authentication for security and securing access to protected endpoints.

Pagination was used to optimize backend performance.

Users are assigned roles and access to some endpoints is based on registered role. The roles include Admin and Borrower roles.

Utilized OpenAPI 3.0 for your API documentation!. Leveraged Swagger.

AWS Lambda and API Gateway were used for serverless deployment.

Technologies used

  • Backend: NodeJS & RestAPI & Expressjs using Typescript
  • Database: MongoDB
  • Cloud services: AWS Lambda and API Gateway for serverless deployment
  • Authentication: JWT-based authentication
  • API documentation: Swagger
  • Testing: Jest
  • CI - Github Actions

Features

The service has four major endpoints implemented

  • Public Routes

  • GET "/api/public/v1/books/": This endpoint returns all book records. Pagination was implemented

  • GET "/api/public/v1/books/{authorId}": This endpoint returns books written by an author

  • GET "/api/public/v1/authors": This endpoint returns all authors

  • GET "/api/public/v1/authors/{id}" : This endpoint returns all authors by id

  • GET "/api/public/v1/api/public/v1/borrowers": This endpoint returns all borrowers

  • GET "/api/public/v1/api/public/v1/{borrowerId}/borrowed-books": This endpoint returns all books borrowed by borrower's id

  • Protected Routes

  • Author Routes

  • POST "/api/private/v1/admin/authors/": This endpoint is used to create an author and to database

  • PUT "/api/private/v1/admin/authors/{authorId}",: This endpoint is used to update author details

  • DELETE "/api/private/v1/admin/authors/{authorId}" : This endpoint is used to delete an author

  • Book Routes

  • POST "/api/private/v1/admin/books" : This endpoint is used to create a book and add to database

  • PUT "/api/private/v1/admin/books/{bookId}",: This endpoint is used to update book details

  • DELETE "/api/private/v1/admin/books/{bookId}" : This endpoint is used to delete a book by id

  • Borrowers Routes

  • GET "/api/private/v1/admin/borrowers/{id}": This endpoint returns all borrowers details. The borrowers Id is used to implement it.

  • POST "/api/private/v1/admin/borrowers": This endpoint is used to create a borrower

  • PUT "/api/private/v1/admin/borrowers/:borrowerId": This endpoint is used to update record of borrowed books by a borrower. Admin user access

  • PUT "/api/private/v1/borrowers/:borrowerId": This endpoint is used to update record of borrowed books by a borrower. Borrower user access

  • DELETE "/api/private/v1/admin/borrowers/:borrowerId": This endpoint is used to delete a borrower.

  • DELETE "/api/private/v1/admin/borrowers/:borrowerId/books/:bookId": This endpoint is used to delete a borrowered book from a borrowers record. Admin user access

  • DELETE "/api/private/v1/borrowers/:borrowerId/books/:bookId": This endpoint is used to delete a borrowered book from a borrowers record. Borrower user access

security mechanisms in use (cors)

Getting Started

To run this web application on your local machine, follow the steps below:

Prerequisites

Before getting started, ensure that you have the following software installed on your machine:

  • Node.js, typescript, mongodb, aws cli

Before you start the application, you need to set up an environment variable to with the MongoURI within the express-backend directory. Here's how you can do it:

MONGO_URI="YOUR KEY"
ACCESS_TOKEN_SECRET="YOUR KEY"
JWT_SECRET="YOUR KEY"

Create a file called .env in express-backend folder of the project with the environmental variables above.

To run your test environment, create a file called .env.test and input the code below in the file

Note ACCESS_TOKEN_SECRET and JWT_SECRET should be the same string.

MONGO_URI="KEY FOR Test DB"
ACCESS_TOKEN_SECRET="YOUR KEY"
JWT_SECRET="YOUR KEY"

Installation

Step-by-step guide on how to install the project and its dependencies.

  1. Clone the repository to your local machine using Git:
git clone https://github.com/ayofalo/libman.git
  1. Navigate to the project directory
cd libman
  1. Install the project dependencies using NPM(Node Package Manager):
npm install

Running the web application

Once you have installed the dependencies, build the application then you can start the web application using the command below

npm run build
npm run start

This should be done from the root directory

Running Tests

To run tests, ensure you have created your test .env file with the details mentioned above. use the command below to run your test

npm run test

Serverless deployment

Used AWS Lambda and API Gateway for serverless deployment.

For serverless deployment, the express application was wrapped in serverless provided by the 'serverless-http' from npm. To deploy the application using serverless framework follow the steps

complete aws configuration use

aws configure

add your serverless.yml file with the necessary configuration

To deploy to AWS lambda use the command below

serverless deploy 

API documentation

Access API documentation via Swagger UI using the link below after starting up the application

http://localhost:3001/api-docs/v1/

Usage

License

This project is licensed under the MIT License.

Authors

Contributors names and contact info

Ayo Falowo

About

Library Management System

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages