From 6be151ba2e912b6c53bb06698770bc5a9b31706a Mon Sep 17 00:00:00 2001 From: Nicholas Pease Date: Wed, 26 Nov 2025 04:57:28 +0000 Subject: [PATCH] Final Final Final --- README.md | 37 ++++--------------------------------- 1 file changed, 4 insertions(+), 33 deletions(-) diff --git a/README.md b/README.md index ee40a23..37164fb 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,13 @@ # COS498 HW3: PDF Document Management System -This is Homework 3 for **COS498: Server Side Programming Languages** that demonstrates a complete PDF document management system with custom routing, PDF discovery, and validation modules. +This is Homework 3 for **COS498: Server Side Programming Languages** that demonstrates a PDF document management system with custom routing and validation modules. ## Project Overview This project implements a PDF document management system with the following features: - **Frontend**: Nginx serving static files and Handlebars templates - **Backend**: Node.js/Express server with custom routing and PDF management -- **PDF Management**: Comprehensive PDF discovery and validation system +- **PDF Management**: PDF validation and secure serving system - **Security**: Path validation and access control for PDF serving - **Database Integration**: SQLite database for book and chapter metadata - **Containerization**: Docker containers orchestrated with Docker Compose @@ -17,7 +17,6 @@ This project implements a PDF document management system with the following feat ### PDF Document Management - **PDF Validation Module**: Comprehensive validation before serving any PDF - **Custom Routing**: Dedicated routing module for book and chapter navigation -- **PDF Discovery**: Automatic discovery of PDF documents in designated folders - **Security Controls**: Path validation and access restrictions - **Database Integration**: SQLite database with books and chapters metadata @@ -148,11 +147,6 @@ The backend provides the following endpoints: - `GET /book/:bookName/chapter/:chapterFile` - Chapter viewer with PDF display - `GET /pdf/:bookName/:chapterFile` - Direct PDF serving (with validation) -### Management Endpoints -- `GET /api/pdfs` - List all discovered PDFs -- `GET /api/books/discovery` - List all available books -- `POST /api/pdfs/refresh` - Force refresh PDF discovery cache - ## Module Architecture ### 1. PDF Validation Module (`PDFValidationManager.js`) @@ -178,20 +172,10 @@ The backend provides the following endpoints: **Key Features**: - Database integration for book/chapter metadata -- Fallback to file system discovery when database is empty - Handlebars template rendering - URL construction for PDF links - Error handling and 404 responses -### 3. PDF Discovery Module (`PDFDiscoveryManager.js`) - Future Enhancement -**Purpose**: Automatically discover and catalog PDF documents - -**Planned Features**: -- Folder scanning for PDF files -- Metadata extraction from filenames -- Caching system to avoid repeated file system reads -- Integration with database for metadata storage - ## Architecture Details ### Frontend (Nginx + Handlebars) @@ -253,21 +237,14 @@ The system includes sample data with the "Ways of the World" textbook by Strayer - **Size Limits**: Prevents serving oversized files - **Comprehensive Logging**: Security events logged for monitoring -### Database vs File System -- **Primary**: SQLite database with books and chapters metadata -- **Fallback**: File system discovery when database is empty -- **Hybrid Approach**: Combines database efficiency with file system flexibility -- **Future-Ready**: Architecture supports expansion to additional data sources - ## Course Information **Course**: COS498 - Server Side Programming Languages **Assignment**: Homework 3 - PDF Document Management System **Focus**: Demonstrating: - Custom routing modules and URL handling -- PDF document discovery and management -- Comprehensive security validation systems -- Database integration with file system operations +- PDF validation and security systems +- Database integration with file operations - Modular architecture and separation of concerns ## Implementation Requirements Met @@ -278,12 +255,6 @@ The system includes sample data with the "Ways of the World" textbook by Strayer - ✅ Handlebars template rendering with dynamic data - ✅ URL construction for PDF links and navigation -### 2.4.2 PDF Discovery Module ✅ -- ✅ `PDFDiscoveryManager.js` searches designated folders -- ✅ File system scanning and PDF cataloging -- ✅ Caching system to avoid repeated reads -- ✅ Metadata extraction from filenames and paths - ### 2.4.3 PDF Validation Module ✅ - ✅ `PDFValidationManager.js` validates all PDF requests - ✅ File existence verification before serving