Beyond Vibe coding - Redesigning Filmz

Filmz

Some time ago I built a little iOS App called Filmz: keep track of films and shows you want to see or you have seen. Keep personal additional information like “how did I like it?” (I.e. my personal rating), “For what audience would I recommend it?” (Adults, kids, family) “When and where did I see it” etc. And then comes sharing: passing on film recommendations to friends, either one film at a time or lists.

As I didn’t know any Swift back then, I built it in a vibe coding style, fully supported by AI (back then mainly Cursor.ai). This gave me a fast start, but I was lost once I wanted to add more complex features that required a well structured code base. And since I didn’t know much about Swift, I couldn’t do it either. Vibe debugging doesn’t work - yet…

So here I start again, and with a different approach: I will try to work in a similar way as I would with a smart but junior peer developer. The focus will be on a stepwise approach, followed along with a proper documentation: Descriptions of the task at hand, description of the architecture changes, of the options that were inspected / thought of and what was chosen why…

I worked with my AI friend ChatGPT, and plan to start with a structure as described below.

README.md                        # Project overview and setup instructions
docs/                     # Everything that is *not* source code lives here
├── index.md              # High-level functional overview (user-centric)
├── architecture.md       # High-level tech
├── glossary.md           # Domain vocabulary
├── features/             # One sub-dir *per* feature ⬇
│   ├── dark-mode/
│   │   ├── 01-intent.md          # “User story” or problem statement
│   │   ├── 02-ui-flow.md         # Wire-flow, screenshots, diagrams → keep PNG/Drawio *in same folder*
│   │   ├── 03-design.md          # Tech design & pseudo-code
│   │   ├── 04-test-plan.md       # Acceptance & edge-case list
│   │   └── dark-mode.drawio.png  # Diagram sits next to the text that references it
│   ├── profile-refactor/
│   │   └── …
│   └── _TEMPLATE/               # Empty skeleton you copy when adding a feature
├── data-structure/            # Cross-feature, Entity structures or ERDs, migration notes
│   ├── schema-overview.mmd
│   └── schema.md
├── adr/                  # Architecture Decision Records
│   ├── ADR-001-use-themex.md
│   └── ADR-002-db-index.md
└── changelog.md          # “Keep a Changelog” style history

2025-05-28: I take this as a starting point, work, and see what’s missing. And add the missing bits on the way.