How Inscriptio is structured
Carrel Object List
This was originally a google document developed collaboratively by project principals. This is still a work in progress and will evolve over time.
Library
A library:
* has many floors
* has an address, including latitude / longitude, URL and basic contact info
* has many reservable asset types
* has a bulletin board post expiration time
Floor
A floor:
* belongs to a library
* has a map, most likely a high quality PNG
* is ordered relative to other floors – meaning a different floor is above or below it.
* has many call numbers
* has many subject areas.
* has many reservable assets
Subject Area
A subject area:
* has and belongs to many floors
* has many call numbers
* has basic attributes like description and name
Call number
A call number:
* belongs to a subject area
* has and belongs to many floors
* has a code, description and other basic attributes
Reservable Asset
A reservable asset:
* belongs to a floor
* belongs to a reservable asset type
* has a location on the floor map – most likely an x y pixel offset to place it in the proper place.
* has many reservations
* has many users through its reservations
* has a section and number
* has a bulletin board
* has current users
* has a photo (optional)
* has a video (optional)
* has a minimum reservation time
* has a maximum reservation time
* has a reservation time increment – can only reserve in – say, 1 day or 1 week chunks.
* has a maximum number of concurrent users
* has a locker key / code (if defined in the reservable asset type)
* has general information, that’s probably merged into the welcome message.
* can be relinquished by the user reserving it, returning a slot to the reservable pool.
Reservable Asset Type
A reservable asset type:
* belongs to a Library
* has many reservable assets
* Has a name – carrel, locker, hold shelf, etc.
* Sets defaults for reservable assets – minimum reservation time, maximum reservation time, maximum number of concurrent users, reservation time increment, whether or not it has a code / key,
* Has options that effect the bulletin board – can have one? How long should posts live?
* has a photo
* has a welcome message, which may include follow-up instructions (Pick up your carrel reservation card here)
* has an expiration extension time period: the time before the expiration in which a user can renew a reservation for up to the maximum reservation time.
* has user types that can reserve this asset.
* has many Reservation Expiration Notices, which define the content and scheduling of reservation expiration messages. These messages can be related to either when an active reservation expires, or when a “reservation hold” is expiration. A reservation hold is a reservation that hasn’t been approved by a moderator.
* has a moderation flag – meaning, either the reservation goes through automatically without administrator approval OR an asset reservation must be OK’d by an admin.
* has a “moderation held” message. The welcome message can serve as the moderation approved message.
Reservation Expiration Notices
A reservation expiration notice:
* has a type – “hold” or “actual,” where “hold” is a notice for the reservation hold expiration times, and “actual” is a notice for when an actively reserved item is expiring.
* belongs to a reservable asset type.
* has a “days before expiration” attribute, which sets when this message is sent.
* has a message and a subject line
* has a reply-to
* is a multipart text/html message
* will template tags to substitute simple parameter like Library name, user name, date, etc.
* belongs to many reservations, but is only invoked when the “days before expiration” time is hit.
Reservation
A reservation:
* belongs to a reservable asset
* belongs to a user
* has a code to uniquely identify it
* has a start date
* has an end date
* has an approved flag, which means the reservation has been approved by an administrator.
Bulletin Board
A bulletin board:
* has many posts ordered by creation time
* belongs to a discussable asset – currently only a reservable asset, but could include a library.
* has many users through the reservable assets list of current users
* has a maximum “post lifetime”
Post
A post:
* belongs to a bulletin board
* belongs to a user
* has a creation time
* has a message
* has an (optional) image file attachment
* has many (optional) moderator flags
* has a “public” flag, allowing a post to be seen more broadly.
Moderator Flag
A moderator flag:
* belongs to a post
* has a reason – Abusive, Offensive, etc?
* belongs to user
Authentication source
An authentication source:
* has many users
* has many user types
* has an “authenticate” method that accepts user information and does a backend lookup returning a true or false if a user has authenticated properly to that user type.
User Type
A user type:
* has many users
* has a name – “grad students”, “undergrads”, etc.
* has many authentication sources
User
A user:
* has many reservations
* has many reservable assets through reservations
* has many posts
* belongs to a User Type
* has an authentication source through its user type
Administrator
An administrator:
* Has a username and password.
* has an email address