Deliveries - CristoRodriguez1/Rappiteca GitHub Wiki

Delivery 1

1. Introduction

1.1 Product perspective

Rappiteca is a standalone, self-contained web application. It is not a component of a larger system and does not depend on or integrate with any pre-existing institutional platform. Users and administrators interact with Rappiteca directly through their own accounts created within the system.

The software operates under the following constraints:

a) System interfaces: Rappiteca does not interface with external systems. All functionality is self-contained within the application.

b) User interfaces: Rappiteca is accessed through a responsive web interface, usable from desktop and mobile browsers. Two main interface views exist: a user-facing interface and an administrator dashboard.

c) Hardware interfaces: No specialized hardware is required. All operations are performed manually through the web interface; no barcode or QR code scanners are used.

d) Software interfaces: Rappiteca relies on a relational database management system to store and manage catalog, user, loan, and fine data. It uses Python with the Django framework for the application logic.

e) Communications interfaces: The system communicates over standard HTTP/HTTPS protocols. Notifications (due date reminders, overdue alerts, availability, and fine notifications) are delivered through in-app notifications and email (SMTP).

f) Memory: Not applicable / no specific memory constraints beyond standard web hosting requirements.

g) Operations: The system is expected to be available for continuous, unattended operation (24/7), with scheduled/automated processes (e.g., overdue checks, notification triggers) running periodically in the background.

h) Site adaptation requirements: No special site adaptation is required, as the system is accessed entirely through a web browser.

1.2 Product functions

Rappiteca provides the following main functions:

  • User account management: Allows users and administrators to register, log in, and manage their profile information.
  • Book catalog management: Allows users to search and browse the book catalog by title, author, category, or ID, and view real-time availability status and book details. Allows administrators to add, edit, and remove books from the inventory.
  • Loan management: Allows users to request loans, renew active loans, reserve unavailable books, cancel reservations, and view their active loans and loan history.
  • Notification management: Automatically notifies users about due dates, overdue loans, book availability (for reservations), and applicable fines, through in-app notifications.
  • Fine management: Automatically calculates and applies fines for overdue loans, and allows administrators to track payment status.
  • Loan traceability and reporting: Allows administrators to trace who currently holds each book, monitor due dates and overdue items, manage registered users, and generate reports.

1.3 User characteristics

Rappiteca is intended for two main types of users:

Library users: Users are expected to have basic computer literacy and familiarity with web applications, such as browsing websites and filling out online forms. No specialized technical knowledge is required. Users may have varying levels of experience with digital library systems, ranging from frequent users to first-time users, so the interface must be intuitive and easy to navigate without prior training. Administrators: Administrators are expected to have basic to intermediate computer literacy and some familiarity with library management processes (cataloging, loan policies, fine calculation). While they do not require technical/programming expertise, they are expected to be trained on how to use the system's administrative dashboard, given the greater responsibility and impact of their actions (e.g., inventory changes, fine management).

Both user types are assumed to have reliable access to a computer or mobile device with an internet connection and a modern web browser.

1.4 Limitations

a) Regulatory policies: Not applicable. Rappiteca is an academic project and is not subject to specific regulatory or industry compliance policies.

b) Hardware limitations: Not applicable, since no specialized hardware is used. The system only requires standard hosting infrastructure and devices with a modern web browser.

c) Interfaces to other applications: Not applicable, since Rappiteca is a standalone system with no integration with external applications or platforms.

d) Parallel operation: The system must support multiple users (regular users and administrators) accessing and performing operations concurrently (e.g., simultaneous searches, loan requests, and inventory updates) without data inconsistency.

e) Audit functions: The system shall keep a record of administrator actions (e.g., inventory changes, fine management) through an admin activity log, to support traceability of critical operations.

f) Control functions: Access to administrative functions (inventory control, fine management, user management, reports) shall be restricted to users with the administrator role.

g) Signal handshake protocols: Not applicable, as the system does not use low-level communication protocols; all communication is handled over standard HTTP/HTTPS.

h) Quality requirements: The system shall be reliable and available, ensuring accurate, real-time tracking of book availability and loan status to prevent conflicts (e.g., two users borrowing the same copy simultaneously).

i) Criticality of the application: Rappiteca is not a safety-critical or life-critical application. However, it is important for the continuity of the library's daily loan operations, so extended downtime would negatively affect users and administrators.

j) Safety and security considerations: The system shall protect user account information (e.g., passwords) and restrict access to sensitive administrative functions through role-based authentication.

k) Physical/mental considerations: Not applicable beyond standard usability and accessibility good practices.

2. Specific requirements

Requirements are written using EARS syntax (Easy Approach to Requirements Syntax): each statement follows a fixed pattern (THE system SHALL..., IF... THEN THE system SHALL..., WHILE... THE system SHALL..., AFTER... THE system SHALL...) so that every requirement is unambiguous, singular, and verifiable, per the characteristics defined for this specification.

Priority follows MoSCoW: Must, Should, Could, Won't.


2.1. Functions

ID Requirement Priority
FR-01 IF a new user provides valid registration information THEN THE Rappiteca system SHALL create a new user account within 3 seconds. Must
FR-02 IF a user enters valid credentials (email/username and password) THEN THE Rappiteca system SHALL grant access to the user's account within 3 seconds. Must
FR-03 IF an administrator enters valid credentials THEN THE Rappiteca system SHALL grant access to the admin dashboard within 3 seconds. Must
FR-04 IF an administrator submits valid book information THEN THE Rappiteca system SHALL add the new book to the inventory within 3 seconds. Must
FR-05 IF an administrator selects a book to delete THEN THE Rappiteca system SHALL remove the book from the inventory within 3 seconds. Must
FR-06 IF an administrator modifies a book's information THEN THE Rappiteca system SHALL update the book's record within 3 seconds. Must
FR-07 IF a user enters a search term (title, author, category, or ID) THEN THE Rappiteca system SHALL display matching book results within 3 seconds. Must
FR-08 IF a user selects an available book and requests a loan THEN THE Rappiteca system SHALL register the loan and update the book's availability status within 3 seconds. Must
FR-09 IF a user views the catalog or a book's details THEN THE Rappiteca system SHALL display the book's real-time availability status (available, borrowed, or reserved) within 3 seconds. Must
FR-10 IF a user selects a book from the catalog THEN THE Rappiteca system SHALL display the book's details (description, location, and copies available) within 3 seconds. Must
FR-11 IF a user selects an active loan and confirms the return THEN THE Rappiteca system SHALL register the return and update the book's availability status within 3 seconds. Must
FR-12 IF a user selects an active loan and requests a renewal THEN THE Rappiteca system SHALL extend the loan's due date within 3 seconds. Must
FR-13 IF a user accesses their loan section THEN THE Rappiteca system SHALL display the list of active loans along with their due dates within 3 seconds. Must
FR-14 IF a loan's due date is approaching THEN THE Rappiteca system SHALL send the user a reminder notification via email and/or in-app notification. Must
FR-15 IF a user selects the logout option THEN THE Rappiteca system SHALL end the user's session within 3 seconds. Must
FR-16 IF an administrator selects a book THEN THE Rappiteca system SHALL display the current borrower's information within 3 seconds. Must
FR-17 IF a user selects a book with no available copies THEN THE Rappiteca system SHOULD allow the user to place a reservation within 3 seconds. Should
FR-18 IF a user selects an active reservation and confirms cancellation THEN THE Rappiteca system SHOULD remove the reservation within 3 seconds. Should
FR-19 IF a loan's due date has passed THEN THE Rappiteca system SHOULD send the user an overdue alert via email and/or in-app notification. Should
FR-20 IF a reserved book becomes available THEN THE Rappiteca system SHOULD notify the user within 3 seconds of the status change. Should
FR-21 IF a user accesses their profile section THEN THE Rappiteca system SHOULD display the user's personal information within 3 seconds. Should
FR-22 IF a user accesses their loan history section THEN THE Rappiteca system SHOULD display the user's complete loan history within 3 seconds. Should
FR-23 IF a loan becomes overdue THEN THE Rappiteca system SHOULD automatically calculate the corresponding fine based on the number of overdue days. Should
FR-24 IF a fine has been calculated for a user THEN THE Rappiteca system SHOULD apply the fine to the user's account within 3 seconds. Should
FR-25 IF a user or administrator accesses the fines section THEN THE Rappiteca system SHOULD display the payment status of each fine within 3 seconds. Should
FR-26 IF a fine is applied to a user's account THEN THE Rappiteca system SHOULD notify the user via email and/or in-app notification. Should
FR-27 IF a user performs a catalog search THEN THE Rappiteca system SHOULD allow the user to filter and sort the results within 3 seconds. Should
FR-28 IF an administrator selects a registered user THEN THE Rappiteca system SHOULD display the user's profile information within 3 seconds. Should
FR-29 IF an administrator modifies a user's profile information THEN THE Rappiteca system SHOULD update the user's record within 3 seconds. Should
FR-30 IF a user requests a password reset THEN THE Rappiteca system SHOULD send a password recovery link to the user's registered email within 3 seconds. Should
FR-31 IF an administrator requests the most-borrowed-books report THEN THE Rappiteca system SHOULD generate and display the report within 5 seconds. Should
FR-32 IF an administrator requests the overdue rates report THEN THE Rappiteca system SHOULD generate and display the report within 5 seconds. Should
FR-33 IF an administrator requests the most-active-users report THEN THE Rappiteca system CAN generate and display the report within 5 seconds. Could
FR-34 IF a user views a book's details THEN THE Rappiteca system CAN display the book's cover image, when available, within 3 seconds. Could
FR-35 IF an administrator performs an action on the system (e.g., inventory change, fine management) THEN THE Rappiteca system CAN record the action in the audit log within 3 seconds. Could
FR-36 IF multiple users reserve the same unavailable book THEN THE Rappiteca system CAN manage a waitlist and notify users in order of reservation. Could
FR-37 IF an administrator uploads a CSV/Excel file with book records THEN THE Rappiteca system WONT import and add the valid records to the catalog within 30 seconds. Won't

2.2. Usability requirements

ID Requirement
US-01 THE web application SHALL maintain a consistent visual structure across all pages, using the same style and color palette.
US-02 THE web application SHALL load within 3 seconds on a stable internet connection.
US-03 THE web application SHALL display feedback confirming that an action (e.g., loan request, return, reservation) completed successfully.
US-04 THE web application SHALL display a clear and specific error message when an action cannot be completed.
US-05 THE web application SHALL complete a book loan or return request within 3 seconds under normal load conditions.
US-06 THE web application SHALL allow a first-time user to complete a book search without external assistance or a help guide.
US-07 THE web application SHALL allow a returning user to complete a loan renewal in no more than 3 steps (clicks/taps) from the active loans view.
US-08 THE web application SHALL achieve a minimum average user satisfaction score of 4 out of 5 in post-release usability surveys.

2.3 Logical Database Requirements

Stack: Django (Python) with MongoDB. The following requirements are derived from the entities implied by the Functional Requirements in Section 2.1 (User, Book, Loan, Reservation, Fine, AuditLog)

ID Requirement
LDR-01 A User document shall store name, institutional email, password hash, and role (user or admin).
LDR-02 A Book document shall store title, author, category, ISBN, description, location, total copies, and available copies.
LDR-03 A Loan document shall reference exactly one User (via user_id) and one Book (via book_id).
LDR-04 Book.isbn shall be unique and indexed.
LDR-05 A user may hold at most one active Loan per book (unique constraint on the combination of user_id, book_id, and status = active).
LDR-06 Book.copies_available shall be indexed, since availability status is queried on every search and every book detail view.
LDR-07 Only administrators shall have write access to the Book collection; regular users shall have read-only access.
LDR-08 Only the owning user or an administrator shall have read access to a given user's Loan and Fine documents.
LDR-09 Loan documents shall be retained indefinitely to preserve loan history, as required by FR-24.
LDR-10 AuditLog documents shall be retained for a minimum of 90 days, consistent with FR-36.

3. Video

https://youtu.be/NQEa0skPDaM

Video Transcript — Rappiteca (Deliverable 1)

Duration: ~6 minutes


Cristobal Rodríguez Rojas — Introduction

Hi, we're the team behind Rappiteca, a project developed for Proyecto Integrador 1 at Universidad EAFIT.

Let's start with the problem. Educational institutions — students, faculty, and library staff — still rely on slow, error-prone, manual processes to manage their libraries. Checking if a book is available often means walking to the library in person. Requesting a loan, renewing it, or finding out when a reserved book becomes available usually involves paper forms or waiting in line. And on the administration side, staff have to track inventory, due dates, and fines manually, which leads to delays and human error.

We saw an opportunity here: what if students and library staff could manage the entire loan process — from checking availability to returning a book — in real time, from any device?


Emanuell Torres López — Team Introduction

Let me introduce the team behind Rappiteca.

I'm Emanuell Torres López — I've worked on organizing our requirements and setting up our project documentation. Cristobal Rodríguez, who you just heard from, has led the definition of the project's backlog and repository structure. Juan Camilo Ríos Rodríguez has worked on defining our functional requirements and coordinating the team's workload. And Carlos Ochoa has supported the task of requirements prioritization and development of code.

Together, we're a team of four Systems Engineering students building a real solution to a problem we've all experienced as students ourselves.


Juan Camilo Ríos Rodríguez — Proposed Solution

So, what exactly is Rappiteca?

Rappiteca is a web application that lets library users check book availability in real time, request loans, renew them, and reserve titles that are currently unavailable — all without depending on in-person, paper-based procedures. Users also get automatic notifications for due dates and when a reserved book becomes available.

For administrators, Rappiteca centralizes inventory control, loan and return tracking, and automatically generates reports on overdue items and catalog usage.

Our value proposition is simple: we eliminate manual and paper-based processes to reduce operating costs, we increase user satisfaction through a self-service, agile experience, and we remove the friction that currently limits how many loans and reservations a library can actually process — all while building a solution that's scalable enough to be implemented across multiple institutions.


Carlos Ochoa Cifuentes — Top 10 Functional Requirements

To make this vision real, we defined and prioritized our functional requirements using the MoSCoW method. Here are our top 10 "Must-have" requirements for Rappiteca:

  1. User registration
  2. User login
  3. Search books by title, author, category, or ID
  4. Real-time availability status — available, borrowed, or reserved
  5. Book detail view, including description, location, and copies available
  6. Requesting a loan directly through the platform
  7. Viewing active loans and their due dates
  8. Renewing a current loan
  9. Self-service book returns
  10. Admin visibility into who currently has each book checked out

These ten requirements form the core loop of Rappiteca: search, borrow, track, and return — with full visibility for both users and staff.

Thanks for watching — this is Rappiteca.

Delivery 2

Deliverable 2: Architecture & Data

1. Architecture & Data

1.1. Deployment Diagram

WhatsApp Image 2026-09-01 at 9 40 42 PM

1.2. Component Diagram

Component Diagram Link

Modules Description:

  • accounts — Manages user and administrator registration, login, and profiles.
  • catalog — Manages the book inventory: adding, editing, deleting, and searching titles.
  • loans — Manages the loan lifecycle: requesting, returning, renewing, and tracking loans.
  • reservations — Manages reservations for unavailable books and their waitlist.
  • fines — Calculates and manages fines for overdue loans.
  • reports — Generates administrative reports and system usage statistics.
ComponentsDiagram drawio

1.3. Data Model

DataModel

2. Mockups

mocup1 mocup 2 mocup 3

3. Repository

Repository

4. Video

https://youtu.be/vJh9DA-IDg4

5. Project management

5.1. Weekly Meetings

Weeklies

5.2. Sprint Retrospective

5.3. Class Assignments

Activities

5.4. Requirements

Backlog

Delivery 3

Deliverable 3

1. Architecture & Data

1.1. Deployment Diagram

Despligue

1.2. Component Diagram

Modules Description:

  • accounts — Manages user and administrator registration, login, and profiles.
  • catalog — Manages the book inventory: adding, editing, deleting, and searching titles.
  • loans — Manages the loan lifecycle: requesting, returning, renewing, and tracking loans.
  • reservations — Manages reservations for unavailable books and their waitlist.
  • fines — Calculates and manages fines for overdue loans.
  • reports — Generates administrative reports and system usage statistics.
ComponentsDiagram drawio

Component Diagram Link

1.3. Data Model

WhatsApp Image 2026-10-12 at 4 54 16 PM

2. Corporate Image

2.1. Logo

Rappiteca logo

The logo combines an open book (the library) with speed lines on its left side, which express the idea behind the name Rappi + biblioteca: getting library services quickly and from anywhere. The brass ribbon works as a bookmark and ties the icon to the accent color of the application. The wordmark uses Fraunces, the same serif typeface used for titles in the app, with "teca" highlighted in brass.

Icon version (for favicon / small sizes):

Rappiteca icon

2.2. Slogan

"Your library, one click away."

It summarizes the value proposition of Rappiteca: checking availability, borrowing, renewing and reserving books without paper forms or waiting in line.

2.3. Color Palette

Rappiteca color palette
Color HEX Use in the app
Ink #20262F Main text, titles, primary buttons
Ink soft #565F6B Secondary text and subtitles
Paper #F1EEE6 Page background
Paper raised #FFFFFF Cards, header and tables
Brass #9A7B3C Accent: labels, dividers, highlights
Brass deep #7C6129 Accent hover state
Line #D8D2C2 Borders and separators
Available #3C6B3A "Available" status badge
Borrowed #9A4A32 "Borrowed" / "Checked out" status badge
Reserved #3A4C6B "Reserved" status badge

Typography: Fraunces (titles), Inter (body text), JetBrains Mono (labels and badges).

The palette is defined as CSS variables in catalog/static/catalog/css/style.css, which keeps a consistent visual structure across all pages (US-01).

2.4. Application Screenshots

Catalog search with real-time availability status

Catalog search

Book details

Book details

User loans section

User loans

Administrator loan management

Admin loans

Fines tab in the admin panel: overdue books with the fine applied to each user's account (FR-23 / FR-24)

Fines tab

3. Repository

Repository

Readme

Requirements

4. Video

https://youtu.be/w9udcKbv8D4

5. Project Management

5.1. Backlog

Backlog

5.2. Weekly Meetings

Weeklies

5.3. Retrospective

What went well

  • We delivered the Sprint 3 requirements (FR-17 to FR-24): waitlist, reservation cancellation, overdue alerts, availability notifications, user profile, loan history, and fine calculation and application.
  • Most requirements were developed in their own branch and merged through a pull request, which kept main stable and made each change easy to review.
  • Most new requirements were delivered with automated tests, so we could check that new features did not break existing ones.
  • The visual style stayed consistent across pages thanks to the shared CSS variables.

What could be improved

  • Communication and task assignment: in previous sprints we left coordination until the last minute, and the workload for this sprint was assigned late, which pushed most of the coding to the second half of the sprint.
  • Code consistency: part of the code is still written in Spanish and part in English, and some helper functions are duplicated across apps.
  • The documentation got out of sync with the code: the README and component diagram list reservations and reports modules that do not exist as separate apps yet.
  • Scheduled tasks (reminders, overdue alerts, fines) depend on management commands that have to be run manually; there is no scheduler configured.

Action items for the next sprint

  • Assign requirements in the first days of the sprint and do a short mid-sprint check-in.
  • Agree on English as the only language for code (names, comments and messages).
  • Update the README and diagrams when a module is added or changed, in the same pull request.
  • Document how to run the periodic commands (check_overdue_loans, send_loan_reminders, expire_reservations, calculate_fines) and evaluate a scheduler.
  • Implement the remaining fine requirements (FR-25 payment status and FR-26 fine notifications) on top of the new fines app.

6. Sprint Review

6.1 Pitch:

  • Presented by — Juan Camilo Rios Rodriguez.
  • Sprint 3 focused on making the reservation process more flexible and fair, and on keeping users informed. Users can now cancel a reservation they no longer want, join a waiting queue when a book has no copies, receive alerts about their loans and reservations, check their profile and loan history, and the system calculates and applies fines for overdue loans.
  • Value for the final product — fewer blocked copies, a fair first-come first-served process for popular books, and less manual work for the librarian.
  • Result — 8 of 8 planned requirements completed (FR-17 to FR-24).

https://youtu.be/kH-a2jAcHII

6.2 Demo of Functionality:

  • FR-17 Reserve unavailable book and FR-18 Cancel reservation — Juan Camilo Rios Rodriguez. A user cancels a reservation before the admin checks the book out. With a book at 0 copies, users join the waiting queue and see their position. When a copy is freed, the first user in the queue receives the reservation automatically.
  • FR-19 Overdue loan alert and FR-20 Reservation availability notification — Emanuell Torres Lopez. The user is notified when a loan is overdue and when a reserved book is ready for pickup.
  • FR-21 User profile display and FR-22 User loan history — Cristobal Rodriguez Rojas. The user views their profile information and the list of their past loans.
  • FR-23 Automatic fine calculation and FR-24 Apply fine to account — Carlos Manuel Ochoa Cifuentes. An overdue loan generates a fine that is calculated automatically and applied to the user's account.
⚠️ **GitHub.com Fallback** ⚠️