2025-11-27 02:43:23 +00:00
2025-11-27 02:43:23 +00:00
2025-11-27 02:43:23 +00:00
2025-11-25 22:55:02 +00:00
2025-11-25 22:55:02 +00:00
2025-11-27 02:43:23 +00:00

COS498 HW3: PDF Document Management System

This is Homework 3 for COS498: Server Side Programming Languages that demonstrates a PDF document management system with custom routing.

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
  • JSON Metadata: Book and chapter metadata stored as JSON files
  • Containerization: Docker containers orchestrated with Docker Compose

Features

PDF Document Management

  • Custom Routing: Dedicated routing module for book and chapter navigation
  • JSON Metadata: Book and chapter information stored in JSON format
  • File Serving: Direct access to PDF files through designated routes

User Interface

  • Book Browser: Navigate through available books and chapters
  • PDF Viewer: Embedded PDF viewing with iframe integration
  • Responsive Design: Mobile-friendly layout with consistent styling
  • Navigation: Breadcrumb navigation and book/chapter selection

Prerequisites

Before running this project, ensure you have the following installed:

Project Structure

COS498-HW3/
├── docker-compose.yml          # Docker Compose configuration
├── README.md                   # This file
├── .git/                       # Git repository metadata
├── .gitmodules                 # Git submodules configuration
├── backend/
│   ├── Dockerfile             # Backend container configuration
│   ├── package.json           # Node.js dependencies and scripts
│   ├── package-lock.json      # Locked dependency versions
│   ├── server.js              # Node.js Express server
│   ├── database/
│   │   └── backend.schema     # Database schema definition
│   └── modules/
│       ├── RoutingManager.js      # Custom routing module
│       ├── PDFValidationManager.js # PDF validation module
│       └── PDFDatabaseManager.js   # Database management module
└── frontend/
    ├── Dockerfile             # Frontend container configuration
    ├── default.conf           # Nginx configuration
    ├── views/                 # Handlebars templates
    │   ├── index.hbs          # Main application template
    │   └── layout.hbs         # Base layout template
    ├── partials/              # Reusable template components
    │   ├── books.hbs          # Book listing partial
    │   └── chapters.hbs       # Chapter listing partial
    └── public/                # Static assets and PDF files
        ├── books/             # PDF document storage
        │   └── WaysOfTheWorld-Strayer/  # Sample textbook (git submodule)
        │       ├── README.md          # Book information
        │       ├── .git               # Submodule repository metadata
        │       ├── bookMetadata.json  # Book metadata
        │       ├── chapter1-23.json   # Chapter metadata files
        │       └── chapter1-23.pdf    # 23 chapter PDF files
        └── styles/
            └── main.css       # Application stylesheet

Setup Instructions

Prerequisites

Before running the application, you'll need to download the PDF books which are stored as git submodules.

  1. Clone the repository and navigate to the project directory:

    git clone <repository-url>
    cd /home/npease/COS498-HW3
    
  2. Initialize and download git submodules (required for PDF books):

    git submodule init
    git submodule update
    

    Or in one command:

    git submodule update --init --recursive
    

Note: The PDF books (e.g., WaysOfTheWorld-Strayer) are stored as git submodules and must be downloaded separately. Without this step, the PDF files will not be available.

How to Start the PDF Management System

  1. Start all services:

    docker compose up --build
    
  2. Access the application:

    The application will automatically display available books and chapters for browsing and PDF viewing.

  3. Stop the services:

    docker compose down
    

Author

Nicholas Pease
COS498: Server Side Programming Languages
Homework 3: PDF Document Management System

S
Description
No description provided
Readme 128 KiB
Languages
JavaScript 52.2%
CSS 30.1%
Handlebars 15.3%
Dockerfile 2.4%