Giter Site home page Giter Site logo

dylansalim3 / library-management-system-docker Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 92.6 MB

Primary School Library Management System frontend developed using React and Node JS. This is the Containerized version of the Library Management System using Docker.

Home Page: https://fyp-frontend.herokuapp.com/

Dockerfile 0.12% JavaScript 94.38% Roff 2.60% Shell 0.24% HTML 0.32% CSS 2.34%

library-management-system-docker's Introduction

Primary School Library Management System Frontend

Description

Through the Primary School Library management systems, librarians can keep track of the books and their checkouts, as well as members’ profiles. The Primary School Library management systems also involve maintaining the database for entering new books and recording books that have been borrowed with their respective due dates. The library system also provides an easy way to register user accounts, user accounts can be registered using csv files and normal form registrations.
Link to Library Management System
Link to Frontend Github
Link to Backend Github

Project Objective

The project objective is to develop a web-based application that provides students with the ease of accessing library catalogue online and provides librarians with the ease of managing the large number of library catalogue and handles day-to-day tasks, such as borrow, return and reserve books. The other purpose of this project is to encourage reading habits among primary school students by providing an user friendly library management system that is accessible anywhere and anytime.

Dependencies

Frontend Dependencies

➔ React (Front-End View Library)
➔ Axios (HTTP client)
➔ Material-UI (UI Framework)
➔ React Hooks Form (Form Library)
➔ React Barcode (Generate barcode)
➔ Jwt-Decode (Decode JWT token from the backend)
➔ Date-fns (JS Date Utility Library)
➔ Socket.io-client (Socket Library)

Backend Dependencies

➔ Node JS (Execution environment)
➔ Express JS (Node JS web framework)
➔ Sequelize (ORM tool)
➔ MySQL2 (MySQL connector)
➔ Mutler (Upload Image)
➔ BCrypt (Hashing algorithm)
➔ Json Web Token, JWT (To transfer verified user credential)
➔ NodeMailer (To send email)
➔ CSV Parser (Parse CSV files)
➔ Cors (Handles cross origin requests)

Environment File

Frontend env

REACT_APP_SERVER_BASE_URL=<Frontend_Domain>
REACT_APP_WEB_BASE_URL=<Backend_Domain>

Backend env

NODE_ENV=<development_or_production>
EMAIL_SERVICE=gmail
CLIENT_ID=<Google_API_CLIENT_ID>
CLIENT_SECRET=<Google_API_CLIENT_SECRET>
REFRESH_TOKEN=<Google_API_REFRESH_TOKEN>
SENDER_EMAIL=

DB_TABLE_NAME=fyp_primary_school_management
DB_USERNAME=
DB_PASSWORD=password
DB_HOST=<DB_HOST>
DB_PORT=<DB_PORT>
DB_DIALECT=mysql

PUBLIC_VAPID_KEY=
PRIVATE_VAPID_KEY=

FRONTEND_URL=<FRONTEND_URL>

Instructions

  1. Install docker and run "docker-compose up --build -d"
  2. Using a MySQL Client, connect to the database via localhost:3306, username = root, password = password Create a database named "fyp_primary_school_management"
  3. Re-build the docker images using the command "docker-compose up --build -d"
  4. All of the database fields should be auto generated by Sequelize
  5. Setup the database fields(refer to #1)
  6. The client web application is started at http://localhost:3000

Setup the database fields:

  1. Go to the backend folder, run all the SQL command available in the "createData.sql"
  2. Insert the following command to the MySQL client
	USE "fyp_primary_school_management";
	INSERT INTO role (id, role) VALUES (1, 'admin'), (2, 'student'), (3, 'librarian'), (4, 'teacher');

	ALTER TABLE book AUTO_INCREMENT = 1001;
	ALTER TABLE book_detail AUTO_INCREMENT = 1001;

	ALTER TABLE BOOK_DETAIL ADD COLUMN barcode_path varchar(255);
  1. Add one data into the settings table.

IMPORTANT

  • Frontend exposed port = 3000
  • Backend exposed port = 3000
  • MySQL exposed port = 3300

library-management-system-docker's People

Contributors

dylansalim3 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.