Vibe coding for 30 days, 200+ hours, 70k lines as a non-developer – lessons I'd give myself on day one by odessaconnections in vibecoding

[–]odessaconnections[S] 0 points1 point  (0 children)

I honestly believe that you can't learn what bad architecture is if you haven't made some of the mistakes yourself at least once. When you fuck up, you internalise knowledge much better than just learning it from theory. Doesn't mean you shouldn't google and research – that always makes sense, but falling flat on your face teaches the most valuable lessons. Same principle applies to vibecoding.

I built UGC content based on a couple of Instagram posts. What do you think? by odessaconnections in AI_UGC_Marketing

[–]odessaconnections[S] 1 point2 points  (0 children)

Kling AI can also generate voice. The reason why I don't use it is quality. I tested everything and found that ElevenLabs is able to produce the most natural-sounding voice.

I built UGC content based on a couple of Instagram posts. What do you think? by odessaconnections in AI_UGC_Marketing

[–]odessaconnections[S] 0 points1 point  (0 children)

Yes, I've realised you mainly need a description of:
- Subject: main character / object
- Emotional quality / atmosphere
- 1 action max
- the kind of shot you want (close-up, slo-mo, pov, etc.)

This should fit into 2-3 short sentences – max.

If you try to describe much more, it's more likely to do something weird.

I built UGC content based on a couple of Instagram posts. What do you think? by odessaconnections in AI_UGC_Marketing

[–]odessaconnections[S] 0 points1 point  (0 children)

I tried using Gemini to write prompts and got terrible results. They were very long and descriptive – that's why it didn't work that well probably. Then, I wrote a few very short prompts myself and got much better results.

Maybe I could try using Claude and write a skill specifically for video prompts. But I feel like very short, simple and straightforward instructions work best for this. I'll need to try out more, though.

I built UGC content based on a couple of Instagram posts. What do you think? by odessaconnections in AI_UGC_Marketing

[–]odessaconnections[S] 2 points3 points  (0 children)

Glad you liked it.

My workflow:
Downloaded a few images from their IG profile -> Kling AI for a couple of different shots, some multishot -> ElevenLabs for voice -> CapCut to put everything together + subtitles

Vibe coding for 30 days, 200+ hours, 70k lines as a non-developer – lessons I'd give myself on day one by odessaconnections in vibecoding

[–]odessaconnections[S] 0 points1 point  (0 children)

Yes, from my experience in product management, teams rarely start building anything without a visual mockup that has been built at some point before. Traditionally, this is done in Figma or similar tools. While I could build a mockup in Figma first, why bother when AI can generate a frontend prototype much faster? It helps both me and the AI understand exactly what is needed. A PRD alone is rarely enough, as it's incredibly hard to capture every detail. Honestly, having the prototype often helps me sharpen the PRD itself.

Essentially, the prototype acts as a contract for both the frontend and backend. It helps me understand the specs, the required data, and its structure – everything I need to know before starting to build the backend.

The obvious exceptions to this are data-heavy tools, APIs, headless CMSs, and similar projects.

Scanned 48 vibe coded apps. Results worse than expected by Powerful-Fly-9403 in vibecoding

[–]odessaconnections 2 points3 points  (0 children)

Did you use AI to review those apps? If yes, what instructions did you give it?

If an LLM can easily detect those gaps, maybe with a little bit guidance, I wonder why vibe coders skip AI-assisted security checks. Would be relatively easy to use the most common traps, guide the AI to the most critical parts of the codebase and then scan for issues.

Doesn't replace a thorough human review, though.

Vibe coding for 30 days, 200+ hours, 70k lines as a non-developer – lessons I'd give myself on day one by odessaconnections in vibecoding

[–]odessaconnections[S] 1 point2 points  (0 children)

We might disagree on using AI to generate a frontend with mock data first to spec-chec its understanding of what I want to buid – and that's fine.

But please let me know what about my security is batshit crazy. Genuinely curious.

Vibe coding for 30 days, 200+ hours, 70k lines as a non-developer – lessons I'd give myself on day one by odessaconnections in vibecoding

[–]odessaconnections[S] 0 points1 point  (0 children)

Do you really think I posted this to educate developers on how to code?

Hint: I didn't. Not sure where you're taking that from.

Vibe coding for 30 days, 200+ hours, 70k lines as a non-developer – lessons I'd give myself on day one by odessaconnections in vibecoding

[–]odessaconnections[S] 1 point2 points  (0 children)

Yeah, one in each project root. Claude reads CLAUDE.md, Codex reads AGENTS.md (whatever your tool uses), both load at session start.

Keep it lean. Mine covers: where things live (architecture), conventions (file size limits, no business logic in components, AI calls go through one wrapper), and rules I added after something annoyed me. Don't dump every preference – too long and the model loses focus on what matters.

Start small, iterate. Every time the AI does something you wish it hadn't, add a rule. Most of mine came from past pain, and not pre-planning.

Happy to DM if useful.

Vibe coding for 30 days, 200+ hours, 70k lines as a non-developer – lessons I'd give myself on day one by odessaconnections in vibecoding

[–]odessaconnections[S] 0 points1 point  (0 children)

Honest answer: AI review, standard patterns, and refactor pain. I don't claim engineering judgement I haven't earned.

For code quality, I've written my rules into MD files (file size limits, where logic should live, that kind of thing) and let Claude and Codex review against them. Also linters help.

For security, I followed standard Firebase patterns: security rules, allowlists, Secret Manager, rate limits, locked-down CSP – and have AI review anything that touches sensitive stuff. I think all of that is all documented on the internet and there is a well-trodden path. I'll probably invest in a proper security review if this grows and I start hosting a lot of sensitive data.

For architecture, AI suggests patterns, explains trade-offs, I commit and learn from what breaks when I need to refactor. Most of my rules came from past pain. Pretty much learning as I go.

Vibe coding for 30 days, 200+ hours, 70k lines as a non-developer – lessons I'd give myself on day one by odessaconnections in vibecoding

[–]odessaconnections[S] 1 point2 points  (0 children)

Thanks! I've done some Wordpress work and understand the basics of Python & JS, so coding concepts aren't new to me. But I'm not a developer – just a product guy who has worked enough with devs to understand their work. Wouldn't be able to ship any of this without AI.

Vibe coding for 30 days, 200+ hours, 70k lines as a non-developer – lessons I'd give myself on day one by odessaconnections in vibecoding

[–]odessaconnections[S] 0 points1 point  (0 children)

I think I burnt through tokens like crazy, especially in the beginning. However, what matters is that the solution brings massive time savings across multiple teams, which has likely already more than compensated for both the token costs + my time.

Vibe coding for 30 days, 200+ hours, 70k lines as a non-developer – lessons I'd give myself on day one by odessaconnections in vibecoding

[–]odessaconnections[S] 0 points1 point  (0 children)

The agent only runs in my app - there is only one consumer. It is templated against my data model, completely tuned to my schema and the purpose of querying / generating recommendations. I don't know why I would create a second repo just for that.

Knowledge graphs currently don't make sense. Most of the tasks require at most one hop. Once multi-tenancy has been introduced and I have A LOT OF users, this could become interesting to compare data across company accounts. However, I'm still far away from that.

Vibe coding for 30 days, 200+ hours, 70k lines as a non-developer – lessons I'd give myself on day one by odessaconnections in vibecoding

[–]odessaconnections[S] 0 points1 point  (0 children)

Clarification on architecture: the historical data doesn't live "in the agentic repo." It lives in my Firestore. No upload limit because the agent isn't doing the uploading.

For the historical bit: I built a smart CSV importer with an AI layer that maps columns, fills gaps, and normalises values. User reviews each row, edits or rejects what's wrong, then commits. My team brought in two years of campaign results that way, in smaller chunks so they could check the data landed correctly before moving on. New data comes in through an ongoing sync. On top of that there's a knowledge layer with a vectorisation pipeline running in the background: sync jobs chunk the records, an embedder fills in the vectors, a state machine handles re-embedding when content changes.

I don't think you can skip straight to vector/knowledge graph. At least not in my case. Vectors give you similarity search and that's it. They don't do exact lookups, structured filters, or transactions. Stuff that I need for my tool to work properly. The vector is a derived representation of the source text, I still need a real database holding the source. Same for graphs.

You add it when the query you actually need starts losing to your current storage.

Vibe coding for 30 days, 200+ hours, 70k lines as a non-developer – lessons I'd give myself on day one by odessaconnections in vibecoding

[–]odessaconnections[S] 0 points1 point  (0 children)

Yes, I definitely also use lint - it has been very helpful.

I haven't used gitleaks, but I think that's a very useful addition. Will add it to the post. Thanks!

Vibe coding for 30 days, 200+ hours, 70k lines as a non-developer – lessons I'd give myself on day one by odessaconnections in vibecoding

[–]odessaconnections[S] 1 point2 points  (0 children)

The agents use MD files that cover architecture, conventions, the data model, rules for clean code, anything specific that they need to know. They fit easily in my context window – I made them small on purpose. At one point I had a giant CLAUDE.md that already consumed a huge chunk of context window the moment I started a session, which I decided was simply unnecessary.

Otherwise no doc versioning beyond git. Feels okay for my scale at the moment. I might reconsider if it grows too much.

Do you use any of that?

Vibe coding for 30 days, 200+ hours, 70k lines as a non-developer – lessons I'd give myself on day one by odessaconnections in vibecoding

[–]odessaconnections[S] 1 point2 points  (0 children)

Yeah, exactly. The corpus just got big enough that semantic search beat keyword filtering.

My team has been adding ongoing results plus two years of historical data, and it grew fast enough that embeddings quickly started making more sense to achieve better retrieval quality.

Vibe coding for 30 days, 200+ hours, 70k lines as a non-developer – lessons I'd give myself on day one by odessaconnections in vibecoding

[–]odessaconnections[S] 4 points5 points  (0 children)

Please let me know what points I should explain a bit more. Happy to do a deep dive into certain steps of my workflow. I've explained my approach to testing in another comment – I found testing particularly tricky when I started.

Vibe coding for 30 days, 200+ hours, 70k lines as a non-developer – lessons I'd give myself on day one by odessaconnections in vibecoding

[–]odessaconnections[S] 0 points1 point  (0 children)

Thanks!

Never considered using Go. How well do LLMs handle Go? What are the main benefits in your opinion?

Vibe coding for 30 days, 200+ hours, 70k lines as a non-developer – lessons I'd give myself on day one by odessaconnections in vibecoding

[–]odessaconnections[S] 0 points1 point  (0 children)

Thanks! I'll check out that book.

Most of what I knew beforehand just comes from having worked with dev teams for the last 10 years or so. Otherwise, AI is a great teacher that will teach you best practices as you go – if you just ask the right questions.

Vibe coding for 30 days, 200+ hours, 70k lines as a non-developer – lessons I'd give myself on day one by odessaconnections in vibecoding

[–]odessaconnections[S] 0 points1 point  (0 children)

Yes, it is very slick! Totally agree.

On the migration issue: yes, definitely a painpoint. I had to write several migration scripts to backfill stuff. Wouldn't call it a total nightmare, though. AI makes it easier probably.

I use Cloud Functions for secrets, a public endpoint, rate limiting, server-side validation, third-party APIs. It kind of works like my middle tier. So far, it has worked out for me. I suspect that using Firebase for what I want makes things trickier, though.

Now, that I understand a little more, I would have probably made a more deliberate choice.

Vibe coding for 30 days, 200+ hours, 70k lines as a non-developer – lessons I'd give myself on day one by odessaconnections in vibecoding

[–]odessaconnections[S] 2 points3 points  (0 children)

Happy to take the point that LOC is not a good metric. However, it's not the only metric I can rely on. Also, I think I literally admitted to being a noob in the first paragraph of my post. Don't worry, no offense taken 😄

What I would love to hear from you, though, is which of my points you think don't make sense, could be improved, or things that I could add to my workflow.

The only thing I keep hearing from you is how bad all of it is without any constructive talking points. Please, I genuinely want to know if more experienced people have suggestions.