A native macOS application for viewing multiple Google Analytics real-time dashboards in a customizable grid layout.
- Grid Layout: View multiple Google Analytics dashboards simultaneously in a customizable grid (default 2x3)
- Shared Sessions: Login once to Google Analytics, and all grid cells share the same session
- Minimal UI: Clean, minimal address bar and refresh button for each cell
- Fullscreen Mode: Hide all controls for a distraction-free dashboard view
- Persistent URLs: All URLs are automatically saved and restored between sessions
- Native Performance: Built with Swift 6.0 and SwiftUI for optimal Apple Silicon performance
- macOS 14.0 or later
- Xcode 15.0 or later (for building from source)
- Apple Silicon (M1/M2/M3) or Intel Mac
-
Clone the repository:
git clone https://github.com/charlesjones-dev/ga-mac-dash.git cd ga-mac-dash -
Open the project in Xcode:
open "GA Mac Dashboard.xcodeproj" -
Build and run:
- Select "GA Mac Dashboard" scheme
- Press ⌘R to build and run
- Or use Product → Run from menu
-
Install to Applications folder:
# Build Release version xcodebuild -project "GA Mac Dashboard.xcodeproj" \ -scheme "GA Mac Dashboard" \ -configuration Release \ -destination 'platform=macOS,arch=arm64' \ build CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO # Copy to Applications cp -R ~/Library/Developer/Xcode/DerivedData/GA_Mac_Dashboard-*/Build/Products/Release/GA\ Mac\ Dashboard.app /Applications/
For development and testing:
open "GA Mac Dashboard.xcodeproj"
# Press ⌘R in Xcode- Click on the address bar in any grid cell
- Paste your Google Analytics dashboard URL
- Press Enter to load the dashboard
⌘R- Refresh all dashboards⌘⌃F- Toggle fullscreen mode⌘,- Open settings
Access settings via the gear icon or press ⌘, to customize:
- Grid Layout: Adjust the number of columns and rows (1-6 each)
- View current grid configuration
- Login to Google Analytics in any cell, and all cells will share the session
- URLs are automatically saved and will be restored when you relaunch the app
- Use fullscreen mode for a clean, distraction-free monitoring experience
- Swift 6.0: Modern, type-safe Swift with strict concurrency checking
- SwiftUI: Declarative UI framework for native macOS experience
- WKWebView: Apple's web rendering engine with shared session management
- UserDefaults: Persistent storage for URLs and grid configuration
If you modify the icon design:
# Install Pillow if needed
pip3 install Pillow
# Generate icons
python3 generate_icon.py- Debug: For development with debugging symbols
- Release: Optimized build for production use
ga-mac-dash/
├── GA Mac Dashboard.xcodeproj/ # Xcode project
├── GA Mac Dashboard/
│ ├── GA_Mac_DashboardApp.swift # App entry point + AppState
│ ├── ContentView.swift # Main view + toolbar + grid
│ ├── GridCellView.swift # Individual cell with address bar
│ ├── WebView.swift # WKWebView wrapper
│ ├── SettingsView.swift # Grid configuration settings
│ ├── Assets.xcassets/ # App icons and assets
│ └── GA_Mac_Dashboard.entitlements
├── generate_icon.py # Icon generation script
├── README.md
├── CONTRIBUTING.md
├── CLAUDE.md # Development process documentation
└── LICENSE
Contributions are welcome! Please read CONTRIBUTING.md for guidelines.
This project was built with assistance from Claude AI. See CLAUDE.md for details about the development process.
MIT License - see LICENSE for details