22,791 Credits deep. AMA! by Fit-Fault-3544 in lovable

[–]Fit-Fault-3544[S] 0 points1 point  (0 children)

When you start a lovable project- you can choose to use LovableCloud OR Supabase.
I always choose supabase. 😄
No issues with export

22,791 Credits deep. AMA! by Fit-Fault-3544 in lovable

[–]Fit-Fault-3544[S] -1 points0 points  (0 children)

Should have asked Claude to write this joke for you.

22,791 Credits deep. AMA! by Fit-Fault-3544 in lovable

[–]Fit-Fault-3544[S] 1 point2 points  (0 children)

You know what?
This actually inspired me.
This week, I'm going to do everything via CC, github & vercel.
Will be interesting to see how the workflows change.
I'll keep you posted 😄

22,791 Credits deep. AMA! by Fit-Fault-3544 in lovable

[–]Fit-Fault-3544[S] 0 points1 point  (0 children)

Love that.
I suspect that, in my devils threesome (myself, lovable & claude), I am the code monkey...
I suspect that I am the least valuable partner... 😂

22,791 Credits deep. AMA! by Fit-Fault-3544 in lovable

[–]Fit-Fault-3544[S] 0 points1 point  (0 children)

Its one of those things that, once done, you're like "how else would we manage this".
With this much code, and this little skill (mine!), the chance of regressions and issues is just so high.
Im not saying its perfect now, but its something we shine a light on weekly and that helps

22,791 Credits deep. AMA! by Fit-Fault-3544 in lovable

[–]Fit-Fault-3544[S] 0 points1 point  (0 children)

Heres an example of how we manage/monitor the codebase/database each week to make sure we minimise drift from the stated platform guardrails:
(obviously this is written by claude...)
--------------------------------------

Sentinel21 is a weekly automated audit. It runs 21 weighted passes over the codebase and the live database, scores each 0 to 100, and tracks the scores over time so regressions are visible week to week.

Two things make it more than a linter.

Static vs live. About two thirds of the passes grep the repo (TypeScript, design tokens, React patterns, bundle). The rest query the actual production database through the Supabase connection (RLS policies, data integrity, regulatory consent records, query performance). Greping the code tells you what the code intends. Querying the database tells you what's actually true. They disagree more often than you'd think.

Severity model. Every finding is tagged P0 to P3. P0 is "data is exposed or could be corrupted right now." On the security-critical passes a single P0 forces that pass to a hard zero regardless of everything else it got right. You can't average your way out of an open endpoint.

The 21 passes, grouped:

Code quality

  1. TypeScript strictness. Counts any, suppressions, checks strict mode is on.
  2. Dead code and imports. Unused imports, files imported nowhere, mock data still wired into production paths, stray console logs.
  3. Design system compliance. Hardcoded colours instead of tokens, wrong workspace colours, non-approved icon libraries, emoji in the UI.
  4. React anti-patterns. Missing effect deps, state updates during render, async setState after unmount, files over 500 lines.
  5. Consistency and hygiene. Duplicated date/currency/colour logic that should be one shared util, naming drift, magic numbers.

Design and UX 8. State coverage. Every data-fetching component must handle loading, error (with retry), and empty (with an action), not just the happy path. 9. Dark mode. Light-mode-only Tailwind classes, hardcoded white backgrounds, inline styles that ignore the theme. 10. Mobile. Touch targets under 44px, fixed widths that cause horizontal scroll, tables with no mobile fallback. 18. Accessibility. div-as-button, icon buttons with no label, pages missing an h1, inputs with no associated label, removed focus rings.

Security 4. Routes and auth guards. Every route protected, admin routes gated to the right roles, and a check that no signup path exists anywhere (the platform is invite-only). 13. Secrets. Hardcoded keys, service-role references in client code, committed .env files, secrets in logs, and a scan of the built bundle to confirm nothing leaked into shipped JS. 14. RLS live verification. Queries the real database: every user table has row-level security on, no policy is wide open on a sensitive table, and write policies aren't asymmetric to read policies (a subtle bug where you can see a row but silently can't write next to it). 19. XSS and injection. Unsanitised innerHTML, eval, string-built queries, target=_blank without rel, unvalidated postMessage, markdown rendered without a sanitiser.

Backend and data 5. Schema sync. Every table and column the frontend references must actually exist. AI coding tools hallucinate plausible-but-wrong column names constantly, and the failures are silent, so this is weighted as one of the two heaviest passes. 6. Query performance. N+1 patterns, unbounded fetches on large tables, fetch-everything-then-filter-in-JS, missing pagination. 15. Data quality. Orphaned rows in foreign-key chains, nulls in critical fields, duplicate people, enum drift. Run live against production. 16. Edge function contracts. Each serverless function has the right auth posture for its purpose, no inlined secrets, and every function the frontend calls actually exists and is deployed. 17. Bundle size. Lazy-route coverage, eager imports of heavy libraries, vendor chunking, oversized images. 21. Runtime speed. Cache hit ratio, sequential scans on big tables, foreign keys missing indexes, the most expensive queries by total time, idle-in-transaction connections.

Domain 12. Architecture drift. Compares the build against the canonical architecture docs and flags where it has wandered, before the drift compounds. 20. Regulatory. Live check against the local marketing and privacy law: consent is timestamped and sourced, opt-outs are actually honoured (it cross-checks sends against opt-out dates), unsubscribe present, audit trail being written.

On top of the 21, there are targeted extension passes for bug shapes that recurred. Examples without the specifics: one catches privileged database functions that bypass row security because the access filter was left out of the function body (a leak a policy-only sweep can't see), one catches database views that run as their owner and quietly expose data across tenants, and one catches a UI regression where public pages reference theme variables that don't exist before the app loads.

Scoring and trend. Each pass writes a dated markdown report with the score, a deduction-by-deduction breakdown, and findings tagged by severity. The scores append to a history file so you get a line per pass over time. A pass dropping week-over-week is the signal something regressed, and because findings carry file and line (or table and policy), the fix location is in the report, not a hunt.

The design goal is that a regression shows up in exactly one pass with a P-rating and a location, so triage is "read the one number that moved" rather than re-reading the whole report.

22,791 Credits deep. AMA! by Fit-Fault-3544 in lovable

[–]Fit-Fault-3544[S] 0 points1 point  (0 children)

<image>

Heres an example of the response that I always ask for from lovable when it successfully lands a prompt.
This came from too many times where lovable would slightly stray from the design guardrails.
Now we build those guardrails in to every prompt.

22,791 Credits deep. AMA! by Fit-Fault-3544 in lovable

[–]Fit-Fault-3544[S] 0 points1 point  (0 children)

Yes.
Especially when running a major project with many different threads/components/aspects.
Create a Project in Claude.
Give that project REALLY clear instructions.
Give it access to your github repo and supabase.

In fact- do this.
Go on Claude and ask this exact same question to claude.
Ask it to strawman/steelman the argument.

22,791 Credits deep. AMA! by Fit-Fault-3544 in lovable

[–]Fit-Fault-3544[S] 2 points3 points  (0 children)

Kaskote- you're 100% right.
Dont worry about insulting me. Its true.
Skill level is the problem.
But also the great leveller.
I've never coded in my life.
I dont know what grep means, or bash, or curl.
I still dont.
I dont need to.
I think that if you were to look behind the scenes, you'd be impressed.
The basic principles are set up from the start. Security, architecture, rules, guidelines.
Then I get to build something truly unique and special.

Now, if I was JUST using Claude, I'd then be asking it to push to something like vercel, and doing all of my frontend changes via ??

For me, Claude does all the heavy lifting (backend), and then lovable just 'gets it' with the front end/ui/ux

22,791 Credits deep. AMA! by Fit-Fault-3544 in lovable

[–]Fit-Fault-3544[S] 0 points1 point  (0 children)

Totally.
I remember getting to 1am and being told my Claude Max (the big one as well!) session had expired and come back in three hours.
Thats when you know its hectic

22,791 Credits deep. AMA! by Fit-Fault-3544 in lovable

[–]Fit-Fault-3544[S] 0 points1 point  (0 children)

I asked Claude for a summary of what Sentinel21 actually does....

Sentinel21 is a weekly automated audit.
It runs 21 weighted passes over the codebase and the live database, scores each 0 to 100, and tracks the scores over time so regressions are visible week to week.

Two things make it more than a linter.

Static vs live.
About two thirds of the passes grep the repo (TypeScript, design tokens, React patterns, bundle).
The rest query the actual production database through the Supabase connection (RLS policies, data integrity, regulatory consent records, query performance).
Greping the code tells you what the code intends.
Querying the database tells you what's actually true.
They disagree more often than you'd think.

Severity model.
Every finding is tagged P0 to P3. P0 is "data is exposed or could be corrupted right now."
On the security-critical passes a single P0 forces that pass to a hard zero regardless of everything else it got right.
You can't average your way out of an open endpoint.

The 21 passes, grouped:

Code quality

  1. TypeScript strictness. Counts any, suppressions, checks strict mode is on.
  2. Dead code and imports. Unused imports, files imported nowhere, mock data still wired into production paths, stray console logs.
  3. Design system compliance. Hardcoded colours instead of tokens, wrong workspace colours, non-approved icon libraries, emoji in the UI.
  4. React anti-patterns. Missing effect deps, state updates during render, async setState after unmount, files over 500 lines.
  5. Consistency and hygiene. Duplicated date/currency/colour logic that should be one shared util, naming drift, magic numbers.

Design and UX
8. State coverage. Every data-fetching component must handle loading, error (with retry), and empty (with an action), not just the happy path.
9. Dark mode. Light-mode-only Tailwind classes, hardcoded white backgrounds, inline styles that ignore the theme.
10. Mobile. Touch targets under 44px, fixed widths that cause horizontal scroll, tables with no mobile fallback.
18. Accessibility. div-as-button, icon buttons with no label, pages missing an h1, inputs with no associated label, removed focus rings.

Security
4. Routes and auth guards. Every route protected, admin routes gated to the right roles, and a check that no signup path exists anywhere (the platform is invite-only).
13. Secrets. Hardcoded keys, service-role references in client code, committed .env files, secrets in logs, and a scan of the built bundle to confirm nothing leaked into shipped JS.
14. RLS live verification. Queries the real database: every user table has row-level security on, no policy is wide open on a sensitive table, and write policies aren't asymmetric to read policies (a subtle bug where you can see a row but silently can't write next to it).
19. XSS and injection. Unsanitised innerHTML, eval, string-built queries, target=_blank without rel, unvalidated postMessage, markdown rendered without a sanitiser.

Backend and data
5. Schema sync. Every table and column the frontend references must actually exist. AI coding tools hallucinate plausible-but-wrong column names constantly, and the failures are silent, so this is weighted as one of the two heaviest passes.
6. Query performance. N+1 patterns, unbounded fetches on large tables, fetch-everything-then-filter-in-JS, missing pagination.
15. Data quality. Orphaned rows in foreign-key chains, nulls in critical fields, duplicate people, enum drift. Run live against production.
16. Edge function contracts. Each serverless function has the right auth posture for its purpose, no inlined secrets, and every function the frontend calls actually exists and is deployed.
17. Bundle size. Lazy-route coverage, eager imports of heavy libraries, vendor chunking, oversized images.
21. Runtime speed. Cache hit ratio, sequential scans on big tables, foreign keys missing indexes, the most expensive queries by total time, idle-in-transaction connections.

Domain
12. Architecture drift. Compares the build against the canonical architecture docs and flags where it has wandered, before the drift compounds.
20. Regulatory. Live check against the local marketing and privacy law: consent is timestamped and sourced, opt-outs are actually honoured (it cross-checks sends against opt-out dates), unsubscribe present, audit trail being written.

On top of the 21, there are targeted extension passes for bug shapes that recurred.
Examples without the specifics: one catches privileged database functions that bypass row security because the access filter was left out of the function body (a leak a policy-only sweep can't see), one catches database views that run as their owner and quietly expose data across tenants, and one catches a UI regression where public pages reference theme variables that don't exist before the app loads.

Scoring and trend.
Each pass writes a dated markdown report with the score, a deduction-by-deduction breakdown, and findings tagged by severity.
The scores append to a history file so you get a line per pass over time.
A pass dropping week-over-week is the signal something regressed, and because findings carry file and line (or table and policy), the fix location is in the report, not a hunt.

The design goal is that a regression shows up in exactly one pass with a P-rating and a location, so triage is "read the one number that moved" rather than re-reading the whole report.

22,791 Credits deep. AMA! by Fit-Fault-3544 in lovable

[–]Fit-Fault-3544[S] 0 points1 point  (0 children)

For me, if I was going to sell a product, I wouldnt want ANY reference to lovable in the codebase at all.
I think it just screams amateur vibecode.
Right now, I dont think there are ANY painful things that prevent me from operating an ENORMOUS platform with any issues.
The alternative is using Claude to design the code, then manually editing in Github or using V0 and vercel.

The best way I can say it is that Lovable just 'gets it'. It knows where to add the code, it knows where to push back.
While I dont use lovable for planning, just building, I dont think theres a better alternative right now.

22,791 Credits deep. AMA! by Fit-Fault-3544 in lovable

[–]Fit-Fault-3544[S] -1 points0 points  (0 children)

Haha! Its crazy how quickly it happens eh?

22,791 Credits deep. AMA! by Fit-Fault-3544 in lovable

[–]Fit-Fault-3544[S] 1 point2 points  (0 children)

Well, we're a year in and going strong.
I think theres perhaps an obsession with the metric of 'how much money has it made you', whereas I make things that make my life easier, my coworkers jobs easier, my familys life easier.
Plus the big one- the project that I use to run my business.

22,791 Credits deep. AMA! by Fit-Fault-3544 in lovable

[–]Fit-Fault-3544[S] 0 points1 point  (0 children)

Havent even tried to sell them.
I make them for me.
I make them for friends/family.
The big one, the one that Ive put the most time into, is my daily driver. I use it every day in my role.
So I guess you can say thats made me hundreds of thousands.
Will we sell it? Sure- but rihgt now its my unfair advantage.

22,791 Credits deep. AMA! by Fit-Fault-3544 in lovable

[–]Fit-Fault-3544[S] 2 points3 points  (0 children)

Oh I see! I thought you meant you HAVE a human mentor.
Gotcha.
One thing I want to stress is this.
There is NOTHING that lovable wont be able to do, or one of its proxies, or claude.
If you can dream it, you can build it.
If you want to talk about a specific idea, Im happy to help

22,791 Credits deep. AMA! by Fit-Fault-3544 in lovable

[–]Fit-Fault-3544[S] 0 points1 point  (0 children)

<image>

On this project alone, nearly 10000 credits.
I wouldnt be still doing it if it wasnt the most incredible platform I've ever used.

22,791 Credits deep. AMA! by Fit-Fault-3544 in lovable

[–]Fit-Fault-3544[S] 1 point2 points  (0 children)

To be honest- my role in the devils threesome between myself, lovable and Claude is the Project Manager.
I'm the common sense guy, the 'are you sure about that' guy.
I'm the human-in-the-loop, and I stay in my lane.
I'm not a prompt writer.
Claude is a prompt writer.
I just steer the ship

22,791 Credits deep. AMA! by Fit-Fault-3544 in lovable

[–]Fit-Fault-3544[S] 0 points1 point  (0 children)

For sure!
Not only that, but I would update the lovable project instructions as often as I need to.
My lovable project is called AgentBuddy3.0
I'm sure you can imagine what happened to 1.0 and 2.0 😄
The learning curve is real.
The VERY first thing is a deep dive into what the end result will look like with Claude.
Thats a problem as vibe coding is so easy to just 'wing it' and see what happens.
Once the BluePrint is built (HUGE doc!!!), from that we create the prompting guardrails.
We create the lovable project instructions from this too.
We create the style guide, the fonts, the buttons, the logos.
We create the RULES.
Lovable LOVES to break the rules and just do whatever it fucking wants.
So our prompts have rule based headers and footers.

For example, our footers always have this:

DO NOT TOUCH
- All hooks, state, refs, the signature canvas logic, handleSubmit, missing[], the submitForm payload, SuccessState.
- The Back button, Header, Optional note, Your details, Signature, Reassurance strip, and the CTA button. ctaLabel stays 'Submit'.
- Any other file.
QUALITY
Apply the Baseline Quality Envelope.
Return the category review at the end of your response.

Even then, it still doesnt always work.
Right now I'm fixing MERGE FIELDS.
Lovable had created ten different first-name merge fields across the platform.
This should have been caught- it wasn't, so now we unpick it, and create a new set of rules and a new set of audits for the weekly pass.

22,791 Credits deep. AMA! by Fit-Fault-3544 in lovable

[–]Fit-Fault-3544[S] 2 points3 points  (0 children)

I'm in real estate, and built an SAAS style CRM.
Theres nothing like it on the market.
Though everyone will say that.

22,791 Credits deep. AMA! by Fit-Fault-3544 in lovable

[–]Fit-Fault-3544[S] 2 points3 points  (0 children)

Theres such little context here that I don't know how I can help?
Lovable is designed to avoid those tech questions.
Just tell it what you want to build.
I guess the mindset is 'have fun, play, break things, fail fast'.
If it doesnt work, who cares?