Skip to content

itsiteon/offline-record-manager

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Offline Record Management System

A fully offline desktop application for managing records with PDF/Image conversion, TOC generation, Diary/Dispatch management, and duplicate handling.

🎯 Features

Core Features

  • File Upload & Conversion: Support PDF and image formats (JPG, PNG)
  • Auto PDF Conversion: Images automatically converted to PDF pages (A4 size)
  • PDF Merge with TOC: Auto-generate Table of Contents with hyperlinks
  • Duplicate Detection: Check Number + Date combination to prevent duplicates
  • Diary Management: Create, search, and manage diary entries
  • Dispatch Management: Track dispatch records with Excel export
  • Dark/Light Mode: Toggle between themes
  • Search & Filter: Find records by title, subject, or tags
  • Dashboard: View statistics and quick overview

📦 Installation

Requirements

  • Node.js (v14 or higher)
  • npm

Setup

  1. Clone the repository

    git clone https://github.com/itsiteon/offline-record-manager.git
    cd offline-record-manager
  2. Install dependencies

    npm install
  3. Start the server

    npm start

    The app will be available at http://localhost:3000

  4. For development with auto-reload

    npm run dev

🚀 Usage

Upload & Convert

  1. Navigate to Upload tab
  2. Select image or PDF files
  3. System auto-converts images to PDF (A4 size)
  4. Click Convert & Save

Merge PDFs with TOC

  1. Go to Merge tab
  2. Select multiple PDFs
  3. Choose sort order (Newest first/Oldest first)
  4. System auto-generates TOC on first page
  5. Download merged PDF

Diary Management

  1. Click Diary tab
  2. Enter Diary Number, Date, and Subject
  3. Add entry - stored in local data folder
  4. Search and filter by date range

Dispatch Management

  1. Click Dispatch tab
  2. Enter Dispatch Number, Date, and Subject
  3. Add entry
  4. Export to Excel (All dispatch records)

Duplicate Check

  • System automatically checks Number + Date combination
  • Shows warning with existing entry preview
  • Options to Cancel, Allow Duplicate, or Overwrite

📂 Project Structure

offline-record-manager/
├── backend/
│   ├── server.js              # Express server
│   ├── routes/
│   │   ├── upload.js          # File upload & conversion
│   │   ├── merge.js           # PDF merge with TOC
│   │   ├── diary.js           # Diary management
│   │   ├── dispatch.js        # Dispatch management
│   │   └── stats.js           # Dashboard stats
│   └── utils/
│       ├── fileHandler.js     # File I/O operations
│       ├── pdfHandler.js      # PDF processing
│       └── imageHandler.js    # Image conversion
├── frontend/
│   ├── index.html             # Main HTML
│   ├── css/
│   │   └── style.css          # Responsive styles
│   └── js/
│       ├── app.js             # Main app logic
│       ├── ui.js              # UI interactions
│       └── api.js             # API calls
├── data/
│   ├── records/               # Stored PDFs
│   ├── diary/                 # Diary entries
│   ├── dispatch/              # Dispatch entries
│   └── uploads/               # Temporary uploads
├── package.json
├── README.md
├── INSTALLATION.md
└── FEATURES.md

💾 Data Storage

All data is stored locally in the ./data folder:

  • Records: data/records/*.pdf
  • Diary: data/diary/diary.json
  • Dispatch: data/dispatch/dispatch.json

🔒 Privacy

This is a fully offline application. No data is sent to external servers. All records remain in your local ./data folder.

🛠️ Development

Adding New Features

  1. Backend: Add route in backend/routes/
  2. Frontend: Add UI in frontend/js/
  3. Utils: Add helpers in backend/utils/

File Format Examples

Diary Entry (data/diary/diary.json):

{
  "entries": [
    {
      "id": "uuid",
      "number": "D001",
      "date": "2026-07-11",
      "subject": "Meeting notes",
      "content": "...",
      "createdAt": "2026-07-11T10:00:00Z"
    }
  ]
}

Dispatch Entry (data/dispatch/dispatch.json):

{
  "entries": [
    {
      "id": "uuid",
      "number": "DS001",
      "date": "2026-07-11",
      "subject": "Urgent report",
      "createdAt": "2026-07-11T10:00:00Z"
    }
  ]
}

📄 License

MIT License - Feel free to use and modify

💡 Support

For issues or feature requests, create an issue on GitHub.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages