Skip to content

sici17/LibSphere-Web-Applications-Project

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

59 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🌐 LibSphere — Web Applications Project

A modern, full-stack web platform designed for library resource management, membership card issuing, digital loans tracking, and document processing.

Academic Note: Developed as part of the 3rd Year Web Applications Course for the Bachelor’s Degree in Computer Science.


📌 Project Overview

LibSphere (Web Applications Project) is an enterprise-grade digital library web application. The platform provides a complete solution for library management, digital loans, store catalog management, order processing, and identity access control using a modern full-stack web architecture (Angular Single Page Application + Spring Boot REST APIs + Keycloak IAM).

Additionally, it incorporates an extensible document processing engine (textdoc) demonstrating architectural design patterns (Composite, Visitor, Builder) for rendering documents into Plain Text, HTML, LaTeX, and JSON.


✨ Features

  • User Authentication & Authorization (IAM): Keycloak JWT-based OAuth2 authentication, dynamic user roles (Admin vs User), and secure Angular route guards.
  • Library Resource & Loan Management: Reserve resources, manage active loans, track return deadlines, and issue library membership cards (TesseraLibreria).
  • Store & Cart Management: Browse articles, manage persistent shopping carts, and execute order checkout workflows.
  • Admin Dashboard: Administrative controls for user management, resource catalog updates, and order/loan tracking.
  • Multi-Format Document Processing Subsystem (textdoc): Parse, manipulate, and export structured documents to HTML, LaTeX, JSON, and Plain Text formats.

🛠️ Architecture & Tech Stack

🔹 Frontend (Angular SPA)

  • Framework: Angular 17+ (TypeScript, RxJS, Angular Router, HTTP Interceptors)
  • Authentication: Keycloak JS client, Auth Interceptors, and Role-Based Guards
  • UI & Layout: Modular component structure (admin-dashboard, user-dashboard, risorse, tessere, login, registration)

🔹 Backend (Spring Boot REST Service)

  • Framework: Java 17 / Spring Boot, Spring Security (OAuth2 Resource Server with JWT conversion), Spring Data JPA
  • Controllers & APIs: REST endpoints for Utenti, Risorsa, Prestito, TesseraLibreria, Cart, Ordine
  • Security: Integrated Keycloak user service API for user registration and JWT token validation

🔹 Document Engine Subsystem (textdoc)

Demonstrates classical Gang of Four (GoF) design patterns:

  • Composite Pattern: CompositeDocumentElement, Section, SubSection, Paragraph
  • Visitor Pattern: TextDocumentVisitor, HtmlTextVisitor, PlainTextVisitor, RemoveSubSectionVisitor
  • Builder Pattern: DocumentBuilder, HTMLTextBuilder, LaTeXTextBuilder, JsonTextBuilder

📁 Repository Structure

.
├── FrontEnd/                   # Angular Single Page Application
│   ├── src/app/
│   │   ├── components/         # Feature components (Dashboard, Login, Resources, Cards)
│   │   ├── guards/             # Auth Route Guards
│   │   ├── interceptors/       # JWT Token HTTP Interceptor
│   │   └── services/           # ApiService, AuthService
│   ├── tsconfig.json
│   └── package.json
├── backend/                    # Spring Boot REST API Service
│   └── src/main/java/
│       ├── controller/         # REST Controllers
│       ├── entities/           # JPA Domain Entities
│       ├── repositories/       # Spring Data JPA Repositories
│       ├── services/           # Business Logic Services
│       └── support/            # Auth Security Config, Keycloak API, Custom Exceptions
├── textdoc/                    # Document Processing Engine & GoF Design Patterns
│   ├── builder/                # Document Builders (HTML, LaTeX, JSON, Text)
│   ├── parser/                 # Text Document Parser
│   └── visitor/                # Document Structure Visitors
└── README.md

🚀 Getting Started

Prerequisites

  • Node.js (v18+) & Angular CLI
  • JDK 17 or higher & Maven
  • Running Keycloak Server instance configured with OAuth2 Client Realm

1️⃣ Running the Backend (Spring Boot)

cd backend

# Build and run the Spring Boot service
mvn spring-boot:run

The server will start on http://localhost:8080 (configured in application.properties).


2️⃣ Running the Frontend (Angular)

cd FrontEnd

# Install dependencies
npm install

# Start development server
ng serve

Navigate to http://localhost:4200 in your browser.


📄 License

This project was developed for academic purposes as part of the 3rd Year Bachelor's Degree in Computer Science (Web Applications Course).

About

A modern, full-stack web platform designed for library resource management, membership card issuing, digital loans tracking, and document processing.

Resources

Stars

Watchers

Forks

Releases

Packages

Used by

Contributors

Languages