This project is intended to provide a simple, free administration software for smaller libraries. To this extent, it is possible to catalogize different media, make user and admin accounts, and track which media are currently borrowed by an user.
This project is created with:
- Vue.js
- Quasar
- Axios
- PHP
- MySQL
- Catalogue (fields: title, author, year, categories, )
- Frontend
- Backend
- UI to manage media
- Sorting
- Hierarchical categories (e.g. ability test > intelligence test > figural matrices test)
- User Administration
- Export media state (what is due / overdue / accessible)
- Reminders (mailto:)
- Backups (SQL & XLSX)
- History (per medium)
- User Interface for users (what is lent, when are deadlines)
- Barcodes / QR
- Cronjobs for auto reminders
- Reservation
- Installer
- Fulltext search (titel & abstract)
- Search Engine (synonyms etc.)
Catalogue
represents the whole catalogue with a list of CatalogueItems and a hash code used to compare local and online versions for updates of the Catalogue
.
export interface Catalogue {
items: Array<CatalogueItem>;
hash: string;
}
CatalogueItem
represents the type for media of the catalogue. Currently it mandatorily consists of an ID, a title, a list of authors, and a status. However, it is also possible to enter a due date, the abstract of a medium, up to four levels of categories (with any number of categories per level), an image, a publisher and the language of the medium.
export interface CatalogueItem {
ID: string;
title: string;
authors: Array<string>;
status: 0 | 1 | 2;
//0 = avail.; 1 = out of stock; 2 = due
due?: Date;
abstract?: string;
category1?: Array<number>;
category2?: Array<number>;
category3?: Array<number>;
category4?: Array<number>;
image?: string;
publisher?: string;
language?: string;
}
CategoryItem
represents the type of a single category. It is mandatory to enter a title to be displayed and the hierarchy level the category is supposed to be part of. Additionally children and parents of the category can be entered.
export interface CategoryItem {
title: string;
level: number;
children?: Array<CategoryItem>;
parents?: Array<CategoryItem>;
}
UserAccount
represents the type of local user information. It must have a name, an access group, and a token. It can further have a list of reserved and borrowed media (referenced by their IDs)
export interface UserAccount {
name: string;
accessGroup: 0 | 1 | 2 | 3;
token: string;
//0 = guest; 1 = registered user; 2 = staff; 3 = admin
reservedMedia?: Array<string>;
borrowedMedia?: Array<string>;
}
The project is still under development and no release is available, yet.
This project was developed in order to facilitate the process of catalogizing and to automate the administration of the Testothek at Saarland University, a small library that makes psychological tests available to local students.
Created by Marco Koch