106 lines
3.4 KiB
ReStructuredText
106 lines
3.4 KiB
ReStructuredText
.. post:: 2020.02.03
|
|
:tags: project
|
|
:category: web
|
|
:author: vladan
|
|
:location: Linköping
|
|
|
|
==========
|
|
Biblioteka
|
|
==========
|
|
|
|
Biblioteka (Library in the many languages of Yugoslavia) is a library
|
|
management software written in multiple backend and frontend languages and
|
|
technologies.
|
|
|
|
The most basic features that are implemented are listed below.
|
|
|
|
application features / structure
|
|
================================
|
|
|
|
- List of all books (paginated).
|
|
- Provide filters by author, language, publisher ...
|
|
|
|
- A search module that will filter by author, language, publisher. One query
|
|
that will search through all possible parameters.
|
|
|
|
- A classical user management module, with login, profile, list of landed
|
|
books, wishlist, etc.
|
|
|
|
Endpoints
|
|
---------
|
|
|
|
.. table::
|
|
:align: left
|
|
|
|
+---------------------------+--------+-------------------------------------------------+
|
|
| URL | METHOD | Functionality |
|
|
+===========================+========+=================================================+
|
|
| / | GET | List all books w/ profile and other cool stuff. |
|
|
+---------------------------+--------+-------------------------------------------------+
|
|
| /loan/<user_id>/<isbn> | POST | Loan a book. |
|
|
+---------------------------+--------+-------------------------------------------------+
|
|
| /reserve/<user_id>/<isbn> | POST | Reserve a book for loaning. |
|
|
+---------------------------+--------+-------------------------------------------------+
|
|
| /filter?author=&isbn=& | GET | Filter the book list. |
|
|
+---------------------------+--------+-------------------------------------------------+
|
|
| /login | POST | Log the user in. |
|
|
+---------------------------+--------+-------------------------------------------------+
|
|
| /logout | POST | Log the user out. |
|
|
+---------------------------+--------+-------------------------------------------------+
|
|
| /profile | GET | Display the users profile. |
|
|
+---------------------------+--------+-------------------------------------------------+
|
|
| /register | GET | Register a new user in the application. |
|
|
+---------------------------+--------+-------------------------------------------------+
|
|
|
|
Forms
|
|
-----
|
|
|
|
- Reserve book(s) and add the reservation to a queue.
|
|
- A reservation is a structure containing:
|
|
- User
|
|
- Book
|
|
- [implicit] DateTime (reservation made at)
|
|
|
|
- Lend a book.
|
|
- A book lending structure is / should be the same as the reservations
|
|
structure.
|
|
|
|
- Search field with a fixed location on the page.
|
|
|
|
- Registration / login form.
|
|
|
|
Data types
|
|
==========
|
|
|
|
.. uml::
|
|
|
|
skinparam componentStyle uml2
|
|
|
|
class Book {
|
|
1. ISBN : String
|
|
2. author : Author
|
|
3. publisher : Publisher
|
|
4. year_published : Int
|
|
5. description : String
|
|
6. image_url : String
|
|
7. quantity : Integer
|
|
8. slug : String
|
|
9. title : String
|
|
}
|
|
|
|
class Author {
|
|
name : String
|
|
}
|
|
|
|
class Language {
|
|
iso_name : String
|
|
name : String
|
|
}
|
|
|
|
class Publisher {
|
|
name : String
|
|
}
|
|
|
|
Book - Publisher
|
|
Book - Language
|
|
Book - Author
|