From Side Project to #8 Education in the Polish App Store: Scaling IDU Mobile with SwiftUI

12 May, 2025 • by Ignacy Wielogórski

In a system nobody likes, there's opportunity.

Like all students in the Bednarska school group, I used IDU, a school-mandated LMS that worked—if you squinted hard enough. The web interface was clunky, non-responsive, and completely lacked a mobile experience. Teachers hated it. Students tolerated it. But no one loved it.

So I built an alternative.

Scratching a Real Itch

In 2023, frustrated with having to check grades and schedules on a sluggish site, I decided to ship my own version—a mobile-first, SwiftUI-based wrapper that scraped the data and made it actually usable.

I was 14 years old at the time.
This was the first app I had ever built.

It wasn’t a clone. It was a reimagination:

  • Instant grade notifications.
  • Native calendar sync.
  • An actually good dark mode.

Web Scraping: The Unreliable Backbone

Since there was no public API (of course), I analyzed IDU’s server-side rendered pages and built scraping logic directly into the app.
There was no reverse engineering—everything was extracted from the same HTML the browser saw. Because it was SSR, no API or internal endpoints were touched.

To protect user privacy:

  • All scraping happened locally on-device.
  • No servers or proxies were used, avoiding any breach of student data.
  • The app logged in using user credentials, scraped the relevant HTML, and extracted grades, messages, and schedule data.
  • It cached everything with Core Data and pulled only diffs to minimize traffic.

Getting It Into the App Store

Because I wasn’t 18, I couldn’t enroll in Apple’s Developer Program myself.
So I asked my mom to register on my behalf.

We sat together filling out the paperwork, uploading documents, setting up tax info I barely understood—just to let me push a school app to the App Store.

It wasn’t smooth.

  • My first two builds were rejected by App Review for unclear UI behavior and metadata issues.
  • I remember refreshing the status page obsessively, frustrated and a bit heartbroken.
  • On the third attempt, it finally went through.

That moment—seeing it live on the App Store for the first time—felt surreal.

Used by Students from 8 Bednarska Group Schools

What started as a tool just for me quickly spread to classmates—and then to classmates of classmates.

The app ended up being used by students from 8 different schools in the Bednarska Group.

Each school had slight differences in how IDU was configured, so I adapted the scraper to handle:

  • Different naming conventions,
  • Subject structures,
  • Login domains,
  • and localized quirks.

By the end, the app worked reliably across all of them—turning a fragmented, semi-broken system into a single usable mobile interface.

Shipping and Feedback Loops

Rollout was organic:

  • Shared via word-of-mouth in school group chats.
  • Teachers and students passed it around informally.
  • No marketing. No TikTok. Just usefulness.

Within weeks:

  • 850+ users signed up.
  • We hit #8 in the Polish App Store (Education category).

Product Decisions That Worked

  • Native-first: Instead of React Native, I went all-in on SwiftUI to make interactions feel right.
  • Offline mode: Unlike the web app, mine worked without a network.
  • Lightweight monetization: I added a simple banner ad model—no in-app purchases, no data tracking, no upsells.

Lessons for Indie Devs

  1. Solve actual pain. IDU’s interface sucked. That was enough of a wedge.
  2. Don’t wait for an API. Scrape if you must, but do it responsibly.
  3. Start hyper-local. I targeted one school. Then eight.
  4. Polish the experience. Most LMS apps look like dev tools. Mine looked like Notion.

Closing Thoughts

This project taught me that indie dev success doesn’t require a million users or viral growth. It needs:

  • Deep empathy for users.
  • The willingness to dive into ugly HTML.
  • A tight feedback loop.

Also: age doesn’t matter.
If you’ve got a pain point that everyone shrugs off—don’t. That’s your wedge.


If you're building something in education, scraping data the hard way, or wondering whether to bet on SwiftUI for your MVP—I'm happy to chat.