DEV Community

Cover image for I Had an AI Agent Build Me a Full App. 46K Lines of Code, 3 Platforms, Zero Dart Knowledge
Hcan
Hcan

Posted on

I Had an AI Agent Build Me a Full App. 46K Lines of Code, 3 Platforms, Zero Dart Knowledge

Disclaimer: this article was also written by an AI agent. I’m a developer, not a writer — my raw drafts are something no human should be subjected to.

I’m Not a Flutter Developer

Let me be clear upfront: this app was built entirely by an AI agent based on my ideas and requirements. I didn’t write a single line.

I’m a PHP backend developer. Yii2, APIs, databases — that’s my world. I have never opened Android Studio. I don’t know what a widget tree is. I don’t understand Dart syntax. I’ve never built an APK, never configured a Windows installer, never set up GitHub Actions for release automation.

Everything I know about development stops at websites and short-lived request-response programs. A stateful application — first time in my life, though in my head I had a picture of how it should work.

What I Needed

I have text files. On my PC, on my phone. Lists of TV shows, lists of games I want to play, lists of movies someone recommended.

You know the drill: a friend says “watch this show,” you add it to your list, and six months later you find the name, look it up — and it has a 3.2 rating. I’m not ready for that kind of art.

As a developer, I wanted to automate this. Instead of plain text lists — something that pulls actual data: ratings, posters, descriptions. Specific goals:
Recommendations for friends. “What should I watch?” — open the app, sort by my rating, read off the top. Or just export the collection as a file and send it.

Retro games. I collect titles for emulators — SNES, PlayStation, NES. I find “Top 100 SNES Games” lists online and want to track: what I’ve played, what I dropped, what I want to try.

Everything in one place. Instead of scattered text files across devices — one app with search, structure, and the ability to share. And it should work offline after adding data.

I Didn’t Know the Alternatives Existed

Here’s the funny part: I only discovered Letterboxd, Backloggd, MyAnimeList, and all those services after I’d already started building my own app. I was googling for similar projects to see what else was out there — and that’s when I found them.

Subscriptions for what is essentially a list with posters. Ads everywhere. Your data locked in someone else’s cloud. And all of it only works with internet — while I needed an app that works offline after adding data. Some of these charge money for features that should be basic. I was genuinely shocked.

Same story with Trakt.tv — I discovered it later when I learned that people want to migrate their watch history between services. So I added Trakt ZIP import.

As a developer, my instinct has always been the same: if I need something, I’d rather build it myself. Even if I have to hire an AI to write the code.

How I Work

I picture the end goal and write step-by-step tasks for the agent, moving toward it. I don’t get into architecture, I don’t pick libraries — I just describe what I want as a user, test the result, and report what’s wrong.
Along the way, my concept changed significantly. Originally I envisioned it as a retro combo — launching and collecting retro games. But that niche is already filled with good frontends and solutions. So I rethought the concept for a wider audience — shared lists of games, movies, TV shows, anime. Everything I love.

What Got Built

Mixed collections. A collection is like a folder where you can put any media: games, movies, TV shows, anime. You can group by concept — for example, “Everything Batman” with Nolan’s films, animated series, and Arkham games in one place. Or “Fallout” — playing through the entire series in order, from the first game to the last, with marks for what’s done and what’s ahead.

Database search. IGDB for games (hundreds of thousands of titles, all platforms including retro, with platform filtering), TMDB for movies and TV. Type a name → poster, description, year, genres, rating.

Progress tracking. Statuses, per-episode tracking for TV shows, personal ratings from 1 to 10.

Visual boards. Free-form canvas — drag posters around, add text notes, images, links. Like a mood board for your media taste.

Wishlist. Quick notes — “that show my coworker mentioned.” Search for it later.

Collection sharing. Export as a file, send to a friend — they import it with all posters and ratings.

Trakt.tv import. Export your Trakt watch history as ZIP, import everything in one click.
Two languages, three platforms. English and Russian, switchable on the fly. Windows, Linux, Android.

Not Knowing the Syntax Doesn’t Make You a Bad Developer

I don’t know Dart. I can’t write a single Flutter widget from memory. But that doesn’t mean I have nothing to bring to the table.

I know how software should be built. Not the syntax — the process. Code standards, testing strategies, release management, documentation practices. These things are language-agnostic. They’re the same whether you write PHP, Dart, or anything else.

And this is where I found my role. Claude Code has a feature called skills — instruction files that teach the agent how to handle specific tasks. You write them once, the agent follows them every time. I started creating skills based on the same practices I use at my day job:
Coding standards skill.

Naming conventions, file structure, patterns to follow. The same discipline I apply to PHP code at work — just translated into instructions for an AI. Consistency across 135 files without me reviewing a single line of Dart.

Semver release skill. I had no idea how semantic versioning worked for mobile apps. But I know what a disciplined release process looks like. I wrote a skill that helps the agent compose proper release notes, tag versions, and maintain a changelog.

Documentation and review skill. How to document code, write meaningful comments, review changes before committing. The same standards I’d hold a junior developer to on my team.

Testing skill. What to cover, what patterns to use, how to structure tests. I can’t write Dart tests myself, but I’ve been writing PHPUnit tests for years. The principles are the same.

I don’t write code, but I create the system that produces consistent code. It’s like being a tech lead who doesn’t code but sets the standards.

What I Learned

Building an APK. Debug keys, release keys, keystores — none of this existed in my PHP world. The agent explained everything and set it up, but the very fact that mobile apps require signing was a revelation to me.

GitHub Actions. Automated builds for Windows, Linux, and Android on every tag. In web dev, you push to main and the server pulls. Here there are artifacts, runners, build matrices. The agent wrote the workflows, I just launched them — and they work.

Cross-platform. One codebase — three platforms. But each has its quirks: SQLite connects differently, file paths differ. The agent handled all of this, and I learned along the way.

Takeaway

This was an awesome experience. Five years ago I couldn’t have imagined that you could just build an app like this without diving into the language. The line between knowing and not knowing a language has simply been erased.

Did I enjoy it? Absolutely. I kept catching myself thinking about routine tasks at my day job — migrations, grids, ActiveRecord — and wondering how much faster all of that could be now. Plus there’s a new superpower — the ability to run multiple projects simultaneously. Because now your job isn’t to write code, it’s to see and understand the concept you’re working toward.

I’d love any feedback — reviews, suggestions, recommendations, bug reports. It all helps make the product better.

Try It
Free, open-source, no accounts, works offline.

github

site

Tonkatsu (とんかつ) is a Japanese pork cutlet. The name has absolutely nothing to do with the app. I just like tonkatsu.

Top comments (2)

Collapse
 
bkmillanzi profile image
Bkmillanzi

and you brag about this???

Collapse
 
hcan_359 profile image
Hcan

Not bragging about the result — I'm excited about the possibilities. The fact that you can use available tools to build something real without spending months learning a language and all its quirks just to get started — that's the value here. The barrier to entry has dropped dramatically, and I think that's worth talking about.