
macOS App Development
TidyImage
TidyImage is a native macOS application GrandWorks built to solve our own image workflow problem, then turned into a commercial product. We built the full stack: the Mac app, a Stripe-based licensing system, user accounts, team seat management, and an admin panel to run it all.
Client
GrandWorks
Industry
Productivity Tools
Solution
MacOS App, Licensing Platform, Backend

A Tool We Needed, So We Built It
Every GrandWorks project ends at the same step: compress the images. For years we patched this together with whatever was available. Most tools handled one format. Some uploaded files to servers we didn't control. None had any concept of a team licence. TidyImage started as an internal tool. It became a product we sell.
Every GrandWorks project ends at the same step: compress the images. For years we patched this together with whatever was available. Most tools handled one format. Some uploaded files to servers we didn't control. None had any concept of a team licence.
TidyImage started as an internal tool. It became a product we sell.
The Challenge & Solution
The image compression market has plenty of utilities. What it lacks is products. Most tools solve the compression step in isolation - drag in a file, get a smaller file back - without thinking about what comes before or after. No bulk ops for folders of hundreds. No format conversion in the same pass. No team licensing. The time was lost in the workflow gaps, not the compression itself.
We built TidyImage to close those gaps. Bulk processing on-device, format conversion in the same job, output to a configured directory. Around the app, we built the commercial layer: Stripe checkout, server-side licence validation, account management, and team seat provisioning.

On-Device Bulk Compression
Processes large batches of images using native macOS image frameworks, with no files sent to external servers. A folder of 500 assets compresses in the background while other work continues, with progress visible but not intrusive.
Modern Format Coverage
Supports JPEG, PNG, WebP, HEIC, and SVG, with format conversion available as part of the same batch job. A designer can drop in a folder of HEIC exports from iPhone and get a folder of WebP files back in one pass.

Per-Format
Compression Control
Each format has its own quality slider rather than a single global setting. JPEG and WebP can be tuned independently. The interface shows estimated file size reduction before export, so users can make an informed call without running the job twice.
Stripe Licensing System
Handles individual purchases, plan upgrades, and renewals through Stripe Checkout. Licence keys are generated server-side on successful payment, delivered by email, and validated on app launch. Webhook handling covers failed payments and subscription changes without manual intervention.

User Management
An internal dashboard gives us a view across all accounts, licences, and payment history. We can adjust licences, investigate support issues, and check platform health without database access. Built for practical daily use, not for completeness.
Team Seat Management
A team licence covers a defined number of seats under one account. The licence owner invites team members by email, and the system provisions their access. Seats can be reassigned. Usage is tracked per seat, not per device.
Admin Panel
Users register, log in, manage their licence, and review purchase history through a web account. Password reset, email verification, and session management are all handled server-side. Nothing is stored locally that doesn't need to be.
Design & UX
TidyImage is used when someone wants to ship assets, not explore features. The interface reflects that: drag and drop is the main action, settings don't demand attention on every run, and progress doesn't block the screen. The same logic applied to the web side. Short purchase flow. Account page shows only what's needed. The design work was mostly about deciding what to leave out.
Technical Implementation
macOS Application
Built in Swift using Apple's native image processing frameworks, CoreImage and ImageIO, rather than third-party codec libraries. Processing stays on-device, which keeps it fast and avoids the privacy and latency issues that come with server-side compression.
Backend & API
A Node.js API handles licence validation, account operations, team seat logic, and Stripe webhook events. Licence checks run at app launch and at intervals during use, with short-lived tokens cached locally to avoid latency on every check.
Stripe Checkout manages the purchase flow. Webhooks handle licence provisioning, renewal, and lapsed payment states. All webhook events are processed with idempotency keys, so retried events don't create duplicate licences or double-charge customers.
Keys are signed server-side and scoped to an account, not a device. The app validates against the API rather than a local key file. Seat assignment is enforced at the account level, so a team licence can't be shared beyond its seat count.
Technical Stack
macOS App: Swift, CoreImage, ImageIO
Backend: Node.js, Express, PostgreSQL
Payments: Stripe (Checkout, Billing, Webhooks)
Authentication: JWT, bcrypt
Admin Panel: React
Hosting & Infrastructure: [TO BE FILLED]
Email: Transactional email (licence delivery, account verification, receipts)
Analytics: [TO BE FILLED]
"GrandWorks have been our development partner for more than four years, guiding our logistics app from first release to a feature-rich product used by thousands of drivers every day. Their technical depth, proactive communication and refreshingly competitive pricing have consistently exceeded our expectations. If you need a team that feels like an extension of your own—fast, reliable and budget-conscious—look no further."

Kim Aleksander Hammer Iversen
CEO at Zendera
Key Takeaways
The Zendera project showcases our expertise in building enterprise-grade native mobile applications designed for mission-critical logistics operations. We successfully implemented real-time data synchronization at scale, processing hundreds of thousands of deliveries while creating an intuitive UX that simplifies complex logistics workflows for drivers and dispatchers alike.
Our development of offline-capable mobile solutions ensures uninterrupted operations regardless of connectivity, while our integration of advanced technologies like AI-powered route optimization demonstrates our ability to leverage cutting-edge innovations for tangible business impact. Throughout the project, we maintained strict regulatory compliance and implemented robust data security measures, proving our capability to deliver solutions that meet the highest enterprise standards.







