Skip to content

Paranoid-Pufferfish/alexandria-library

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 

Repository files navigation

The Alexandria Library

Concept

The Alexandria Library is a University library management platform designed to optimize the process of renting and returning books, providing a REST API Microservice & a Webapp Interface for both administrating and managing books and rents, making it possible to integrate in other environnements, and developing native desktop/phone apps.

Needs Analysis

Overview

  • A student/professor interface for managing rented books, showing delays and warnings, and offering the possibility to extend delays.
  • An admin/staff interface for both assigning books to students/professors, adding books to the inventory, and check logs and events.
  • Possibility of creating a student/professor account without staff intervention.
  • Guest access is also possible to check for availability of a book/piece of work.
  • Importing and Exporting Data in a CSV/SQLite format.
  • A simple and advanced search interface (FTS5 for partial matches).
  • Getting book infos from the ISBN13 using public APIs (OPTIONAL).
  • Possibility of scanning a books codebar to autofill its infos (OPTIONAL).

Details

Accounts

The platform will have three types of accounts : External(Student/Teacher), Library Staff and Admins. Where registration is possible for External accounts, Admins and Staff need to be added manually through the Administration interface.

Guest Mode

Guest(or Account-less) mode lets the user browse the catalogue and see available books and related details. Only data that is logged is checked books for analytics and statistics sake

External users

Users who signed up will have a user account that lets them check their inventory/rented books, their rent history, and extend deadlines, or get notified about delays.

Note

Practically speaking, there is no difference between a student and a professor account, though this may change in the future.

Staff & Admins

Staff and Admins have the required authorizations to assign a book to an External account, mark it as returned, check global & user specific histories and add and remove books from the global inventory and import/export data. Admins are the only ones who can add Campuses and create Staff accounts.

Books

A Book is identified with its serialnum which is a unique integer and a primary key for the BOOK table.

Attributes & Types
  • booktitle: TEXT
  • bookreleasedate: INTEGER
  • bookcover: TEXT(URL to cover)
Foreign Keys:
  • langID: References LANG(langID)
  • typeID: References TYPE(typeID)
  • categoryID: References CATEGORY(categoryID)
  • authorID: References AUTHOR(authorID)
  • publisherID: References PUBLISHER(publisherID)

Database

TODO

Sequence Diagram

TODO

License

BSD 3-Clause License

Copyright (c) 2025, AIT MEDDOUR Fouad-Eddine

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

  1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.

  2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

  3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Project Components

Backend: Mellow

Team members

Stack

  • BCHS: The backbone of the server, BCHS is not a software per-say, but merely a concept/idea. It prioritizes security and sandboxing over speed.
  • kcgi: "kcgi is an open source CGI and FastCGI library for C/C++ web applications. It's minimal, secure, auditable, and fits within your BCHS software stack"¹
  • sqlbox: "sqlbox is an open source C/C++ secure database access library at this time limited to sqlite3 databases"²
  • SQLiteV3: "SQLite is a C-language library that implements a small, fast, self-contained, high-reliability, full-featured, SQL database engine. SQLite is the most used database engine in the world. SQLite is built into all mobile phones and most computers and comes bundled inside countless other applications that people use every day"³
  • OpenBSD: "The OpenBSD project produces a FREE, multi-platform 4.4BSD-based UNIX-like operating system. Our efforts emphasize portability, standardization, correctness, proactive security and integrated cryptography"

Frontend: Seele

Team members

Stack

Sources & Citations

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published