notes/source/blog/biblioteka.rst

107 lines
3.4 KiB
ReStructuredText
Raw Permalink Normal View History

2020-02-03 17:38:02 +01:00
.. 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