Skip to content

Engagendy/MPPViewerMacOS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MPP Viewer Icon

MPP Viewer

A free, native macOS app for viewing Microsoft Project (.mpp) files
No Windows. No MS Project license. No subscriptions.
Built with SwiftUI • Powered by MPXJ

Release Platform Swift License Free


Screenshots

Dashboard — project health at a glance
Dashboard — project health overview with KPIs, milestones, and schedule status

Task Table — hierarchical WBS with progress tracking
Task Table — hierarchical WBS with duration, dates, progress bars, and predecessors

Gantt Chart — interactive timeline with critical path
Gantt Chart — zoomable timeline with critical path, baselines, milestones, and dependency arrows

Schedule View — split task list and Gantt
Schedule View — MS Project-style split view with task list and Gantt side by side

Earned Value Analysis — CPI, SPI, S-Curve
Earned Value Analysis — CPI, SPI, EAC, VAC with S-Curve chart and task-level EVM table

Resource Workload — allocation heatmap
Resource Workload — weekly allocation view with over-allocation highlighting


Installation

Homebrew (recommended)

brew tap Engagendy/tap
brew install --cask mpp-viewer

Direct Download

  1. Download the latest .dmg from GitHub Releases
  2. Open the DMG and drag MPP Viewer to your Applications folder
  3. On first launch, right-click the app → OpenOpen (required for unsigned apps)

The app bundles its own Java runtime and converter — no prerequisites needed.

Gatekeeper Bypass

Since the app is not signed with an Apple Developer certificate, macOS will show an "unidentified developer" warning. To bypass this:

Option A — Right-click Open (recommended): Right-click (or Control-click) the app → Open → click Open in the dialog.

Option B — Remove quarantine attribute:

xattr -cr /Applications/MPP\ Viewer.app

Option C — System Settings: Go to System Settings → Privacy & Security, scroll down, and click Open Anyway next to the MPP Viewer message.


Features

Dashboard

Instant overview of project health with KPI cards for overall progress, on-track status, critical tasks, total cost, CPI, and SPI. Includes task status breakdown, upcoming milestones, resource summary, and schedule timeline with days remaining.

Gantt Chart

Interactive timeline visualization with:

  • Zoom controls — Fit All, Week, Month presets, and manual px/day adjustment
  • Critical path toggle and baseline comparison overlay
  • Today marker, dependency arrows (FS, SS, FF, SF), and weekend shading
  • Color-coded task bars with progress fill
  • Pinch-to-zoom gesture support
  • PDF export — multi-page landscape output

Schedule View

Microsoft Project-style split view with a task list on the left and Gantt timeline on the right. Both panes share collapse/expand state and scroll together.

Task Table

Hierarchical task table with expand/collapse, sortable columns (ID, WBS, Name, Duration, Start, Finish, % Complete, Cost, Predecessors), detail inspector panel, flag/bookmark tasks, and custom field columns. Filter by critical, milestones, flagged, or behind schedule. Export to CSV or PDF.

Milestones & Deliverables

Dedicated view for milestones and summary deliverables with status badges (Completed, Upcoming, Overdue) and sortable columns.

Earned Value Analysis

Full EVM dashboard with CPI, SPI, EAC, VAC indicators, an S-Curve chart plotting PV/EV/AC over time, and a task-level EVM breakdown table.

Resources

Resource sheet showing all work, material, and cost resources with standard rates, max units, email, group, and assignment counts.

Resource Workload

Calendar-aware weekly workload view per resource. Green bars for normal allocation, red for over-allocation. Uses project calendar working days and exception dates.

Calendar

Visual calendar display with working/non-working day highlighting, exception days (holidays), and month navigation. Supports calendar inheritance (parent calendar chains).

Timeline View

Executive-level summary showing only summary tasks and milestones as horizontal ribbons and diamond markers.

Compare (Diff Two Versions)

Open a second .mpp file to compare against the current project. Shows added, removed, and modified tasks with field-level change details.

Additional

  • Project Summary — metadata, schedule info, statistics, and file information
  • Search — filter and navigate tasks by name, WBS, or notes across all views
  • Keyboard Navigation — Cmd+1 through Cmd+9 for sidebar navigation
  • Dark Mode — optimized contrast for all views
  • Print — native macOS print dialog for tasks and Gantt views
  • Document-based — double-click any .mpp file to open it directly

Building from Source

Requirements

Requirement Version
macOS 14.0 (Sonoma) or later
Xcode 15.0+
Java OpenJDK 21
Maven 3.8+

Development Setup

# Clone the repository
git clone https://github.com/Engagendy/MPPViewerMacOS.git
cd MPPViewerMacOS

# Build the Java converter
cd MPPConverter && mvn clean package && cd ..

# Open in Xcode
open MPPViewer/MPPViewer.xcodeproj

Select the MPPViewer scheme, choose My Mac as the destination, and hit Run (Cmd+R).

Building a DMG for Distribution

./scripts/package.sh

This script builds the JAR, builds the app, bundles the Eclipse Temurin JRE and converter JAR into the app, and creates a .dmg ready for distribution.

Options: --skip-jar, --skip-app, --arch arm64|x86_64, --version X.Y.Z


Architecture

MPPViewerMacOS/
├── MPPViewer/                          # macOS app (Swift/SwiftUI)
│   ├── App/                            # Entry point, routing, document handling
│   ├── Models/                         # Data models (tasks, resources, calendars)
│   ├── Services/                       # MPP conversion, JSON parsing, workload calculator
│   ├── Views/
│   │   ├── Dashboard/                  # KPI cards, status breakdown, schedule health
│   │   ├── Gantt/                      # Interactive Gantt chart with Canvas rendering
│   │   ├── Schedule/                   # Split-view task list + Gantt
│   │   ├── Tasks/                      # Task table, detail inspector, CSV export
│   │   ├── Milestones/                 # Milestone & deliverable tracking
│   │   ├── Resources/                  # Resource sheet
│   │   ├── EarnedValue/               # EVM dashboard with S-Curve
│   │   ├── Workload/                   # Resource workload heatmap
│   │   ├── Calendar/                   # Calendar visualization
│   │   ├── Timeline/                   # Executive timeline view
│   │   ├── Diff/                       # Two-version comparison
│   │   ├── Summary/                    # Project metadata
│   │   └── Components/                 # Shared UI (filter bar, zoom controls)
│   └── Utilities/                      # PDF/CSV export, print, date formatting
├── MPPConverterXPC/                    # XPC service target (sandboxed builds)
├── MPPConverter/                       # Java converter (Maven project)
│   └── src/main/java/.../MppToJson.java
└── scripts/
    └── package.sh                      # Build & package script

How it works

.mpp file → MPPConverterService (Swift)
                 ↓
         Java Process / XPC Service
                 ↓
         MPXJ (Java) → JSON
                 ↓
         JSONProjectParser (Swift)
                 ↓
         ProjectModel → SwiftUI Views
  1. The app receives an .mpp file through the macOS document system
  2. MPPConverterService invokes a Java process running the MPXJ-based converter JAR
  3. MPXJ reads the binary .mpp format and outputs structured JSON
  4. JSONProjectParser decodes the JSON into Swift model objects
  5. SwiftUI views render the project data across all tabs

Tech Stack

  • UI Framework: SwiftUI with Canvas for Gantt and workload rendering
  • Platform APIs: AppKit (PDF generation, printing, file dialogs)
  • Project Parsing: MPXJ 13.4.0 — the industry-standard library for reading Microsoft Project files
  • Build Tools: Xcode (Swift), Maven (Java)
  • CI/CD: GitHub Actions — automated build, release, and Homebrew cask update on tag push
  • Minimum Target: macOS 14.0 Sonoma

Contributing

Contributions are welcome. Please open an issue to discuss proposed changes before submitting a pull request.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

License

This project is licensed under the MIT License. See LICENSE for details.


Built with SwiftUI for macOS • Powered by MPXJ

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages