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
Dashboard — project health overview with KPIs, milestones, and schedule status
Task Table — hierarchical WBS with duration, dates, progress bars, and predecessors
Gantt Chart — zoomable timeline with critical path, baselines, milestones, and dependency arrows
Schedule View — MS Project-style split view with task list and Gantt side by side
Earned Value Analysis — CPI, SPI, EAC, VAC with S-Curve chart and task-level EVM table
Resource Workload — weekly allocation view with over-allocation highlighting
brew tap Engagendy/tap
brew install --cask mpp-viewer- Download the latest
.dmgfrom GitHub Releases - Open the DMG and drag MPP Viewer to your Applications folder
- On first launch, right-click the app → Open → Open (required for unsigned apps)
The app bundles its own Java runtime and converter — no prerequisites needed.
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.appOption C — System Settings: Go to System Settings → Privacy & Security, scroll down, and click Open Anyway next to the MPP Viewer message.
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.
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
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.
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.
Dedicated view for milestones and summary deliverables with status badges (Completed, Upcoming, Overdue) and sortable columns.
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.
Resource sheet showing all work, material, and cost resources with standard rates, max units, email, group, and assignment counts.
Calendar-aware weekly workload view per resource. Green bars for normal allocation, red for over-allocation. Uses project calendar working days and exception dates.
Visual calendar display with working/non-working day highlighting, exception days (holidays), and month navigation. Supports calendar inheritance (parent calendar chains).
Executive-level summary showing only summary tasks and milestones as horizontal ribbons and diamond markers.
Open a second .mpp file to compare against the current project. Shows added, removed, and modified tasks with field-level change details.
- 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
.mppfile to open it directly
| Requirement | Version |
|---|---|
| macOS | 14.0 (Sonoma) or later |
| Xcode | 15.0+ |
| Java | OpenJDK 21 |
| Maven | 3.8+ |
# 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.xcodeprojSelect the MPPViewer scheme, choose My Mac as the destination, and hit Run (Cmd+R).
./scripts/package.shThis 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
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
.mpp file → MPPConverterService (Swift)
↓
Java Process / XPC Service
↓
MPXJ (Java) → JSON
↓
JSONProjectParser (Swift)
↓
ProjectModel → SwiftUI Views
- The app receives an
.mppfile through the macOS document system MPPConverterServiceinvokes a Java process running the MPXJ-based converter JAR- MPXJ reads the binary
.mppformat and outputs structured JSON JSONProjectParserdecodes the JSON into Swift model objects- SwiftUI views render the project data across all tabs
- 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
Contributions are welcome. Please open an issue to discuss proposed changes before submitting a pull request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License. See LICENSE for details.
Built with SwiftUI for macOS • Powered by MPXJ