← Back to SuroSec

Building CalcPlus, PDFDarkMode, and MemoryPush

CalcPlus
PDFDarkMode
MemoryPush

I like to build mobile apps that I want on my phone. If other people find them useful, even better. I’ve never been drawn to bloated products or aggressive monetization. What I care about is utility. Over the past few months, I built and shipped three iOS apps — CalcPlus, PDFDarkMode, and MemoryPush — all following this same ethos.

Each app is structured around a simple freemium model: limited free use, then a $9.99 one-time unlock for full functionality. No subscriptions, no dark patterns. Here's what I built and why.

CalcPlus

CalcPlus
CalcPlus
CalcPlus

CalcPlus is a secure notes app disguised as a calculator. On the surface, it looks and functions like a basic calculator, but entering a specific PIN unlocks a hidden notes section. It’s the kind of tool I wanted for storing private notes or codes without relying on iCloud or external services.

I designed the calculator interface to match the native iOS aesthetic, so it blends into the home screen. Behind the scenes, notes are stored locally using secure storage. The PIN system is customizable, and the app handles fallback states gracefully (e.g. default PIN handling, incorrect entry resets, etc.).

There's no backend, no signup flow, and no syncing. Just a lightweight, private utility built for speed and discretion. It’s already picked up early traction without any marketing, which tells me there’s a real use case here.

https://calcplusapp.com

PDFDarkMode

PDFDarkMode
PDFDarkMode
PDFDarkMode

PDFDarkMode converts any PDF into a night-friendly version, using a custom processing pipeline to darken backgrounds and adjust text color while preserving formatting. I made this because I often read technical books as PDFs and got tired of being blinded by the white background at night.

The iOS app uses PDFKit for rendering and preview, with uploads sent to a Node.js backend hosted on DigitalOcean. There, a headless processing script converts the PDF and returns the result. I use a simple PM2 + NGINX setup to host the backend, with auto-deletion of the converted PDFs as soon as they are downloaded in the app.

Monetization is straightforward: users can convert and preview a PDF for free, then pay $2.99 per download or $9.99 for unlimited conversions. There’s no account system, just a local flag to track free use.

https://pdfdarkmode.com

MemoryPush

MemoryPush
MemoryPush
MemoryPush

MemoryPush is the most feature-rich of the three apps. It's a flashcard learning tool designed for both passive and active recall. The core idea is simple: study with flashcards using swipe (Tinder-style), scroll (Instagram-style), push notifications, or spaced repetition.

Initially, I included OpenAI-powered card generation and priced the app as a subscription. But the overhead of managing API costs and converting users to paid plans didn’t feel worth it. I ended up cutting the AI features entirely and switching to a freemium IAP model. This made the app simpler, faster, and more focused.

Now, users can create their own decks or import them via CSV. I use a strict schema for CSV import that makes bulk creation easy. On-device, everything is managed with Core Data. Push notification delivery for flashcards is handled via a cron-based system on the backend, with APNs integration for silent pushes. The app also includes a home screen widget that uses TimelineProvider to rotate through cards on a custom schedule.

Originally I supported searching and downloading other user's decks, but I ended up scrapping this. The app now focuses on the core value: delivering flashcards in the background via push, and letting users study in short bursts. It’s clean and performant.

https://memorypush.app

Wrapping Up

All three of these apps solve problems I personally had. I didn’t chase trends or try to maximize engagement metrics. I just wanted tools that worked. I built them how I’d want them built — minimal UX, no signup walls, everything fast and responsive.

The freemium IAP model gives users a chance to try the product before deciding to pay, and it keeps things simple for me — no server-side account management, no subscription logic to maintain. Just clean code and clear utility.

There’s something satisfying about building small apps that do one thing well. If they end up helping other people too, that’s a win.

More Posts