Architecture first
It is tempting to point the AI at a blank screen and say build my landing page. Resist it for a moment longer and decide the shape first, because a few structural choices made up front save you from rework that compounds. This matters more in a vibe-coding workflow than it did when you typed everything, because the AI will generate volume fast, and volume on a bad structure is just more to untangle.
Build your reusable pieces before your screens. A small gallery of primitives, the buttons and components you will use everywhere, means a single change propagates across the whole app instead of being fixed in forty places. This is dull work that feels like a detour, and it is the cheapest insurance you will buy. If you want the full version of this argument, the How to build with UI component parts playbook is exactly this discipline taken to its conclusion.
Keep the front end and back end together in one repository while you are solo. The AI does its best work when it can see the whole picture, and a single repo gives it that context for every edit. You split into separate repos later, when it is a real business with multiple people pushing at once and collisions become the bigger cost. Until then, one repo, full context.
Build the shell first. Stand up the entire interface as an empty frame, every screen and flow in place, before you wire any real logic behind it. You get to see and feel the whole product early, catch structural mistakes while they are cheap to fix, and give the AI a clear map of what connects to what when you start filling it in. The shell is also the cheapest possible usability test: you can click through the whole product and notice that a flow is missing a step before a single line of real logic exists.
None of this is glamorous. All of it is the difference between an app you can keep extending and one that fights you every time you add a feature. Decide the structure, then build inside it.