DEV Community

My ERP with Claude Code Series' Articles

Back to Michel Faure 's Series
How much are 91,000 lines produced with Claude Code actually worth?
Cover image for How much are 91,000 lines produced with Claude Code actually worth?

How much are 91,000 lines produced with Claude Code actually worth?

Comments
6 min read
Supabase RLS in production: four traps that silence your queries
Cover image for Supabase RLS in production: four traps that silence your queries

Supabase RLS in production: four traps that silence your queries

1
Comments
6 min read
4 incidents, 4 rules: how my CLAUDE.md wrote itself
Cover image for 4 incidents, 4 rules: how my CLAUDE.md wrote itself

4 incidents, 4 rules: how my CLAUDE.md wrote itself

Comments
7 min read
I added 20 lines of code to stop my ERP from lying to me
Cover image for I added 20 lines of code to stop my ERP from lying to me

I added 20 lines of code to stop my ERP from lying to me

Comments
8 min read
28% glue code, a CI rule to keep it from growing
Cover image for 28% glue code, a CI rule to keep it from growing

28% glue code, a CI rule to keep it from growing

Comments
7 min read
Four-dimension valuation: my method
Cover image for Four-dimension valuation: my method

Four-dimension valuation: my method

Comments
9 min read
Memory code audit: the anti-drift discipline
Cover image for Memory code audit: the anti-drift discipline

Memory code audit: the anti-drift discipline

Comments
7 min read
29 days, a 91k-line ERP, zero developers
Cover image for 29 days, a 91k-line ERP, zero developers

29 days, a 91k-line ERP, zero developers

Comments
5 min read
When a memorized rule fits your bug too well: a meta-trap of agent workflows
Cover image for When a memorized rule fits your bug too well: a meta-trap of agent workflows

When a memorized rule fits your bug too well: a meta-trap of agent workflows

Comments
5 min read
Modeling 1 enrollment = N seats: when a table name lies
Cover image for Modeling 1 enrollment = N seats: when a table name lies

Modeling 1 enrollment = N seats: when a table name lies

Comments
6 min read
Live, Snapshot, Cache: the three-way decision before storing a derived value
Cover image for Live, Snapshot, Cache: the three-way decision before storing a derived value

Live, Snapshot, Cache: the three-way decision before storing a derived value

Comments
5 min read
29 Zapier + Make automations replaced in four weeks
Cover image for 29 Zapier + Make automations replaced in four weeks

29 Zapier + Make automations replaced in four weeks

Comments
7 min read
54 ADRs in 35 days: why I write the decision before the first line of code
Cover image for 54 ADRs in 35 days: why I write the decision before the first line of code

54 ADRs in 35 days: why I write the decision before the first line of code

Comments
4 min read
Why your Sentry events never reach your serverless functions
Cover image for Why your Sentry events never reach your serverless functions

Why your Sentry events never reach your serverless functions

Comments
4 min read
Six days, six seconds: a CI test against semantic-layer drift on an AI agent
Cover image for Six days, six seconds: a CI test against semantic-layer drift on an AI agent

Six days, six seconds: a CI test against semantic-layer drift on an AI agent

Comments
7 min read
Pourquoi tes mutations Supabase mentent sur leurs erreurs
Cover image for Pourquoi tes mutations Supabase mentent sur leurs erreurs

Pourquoi tes mutations Supabase mentent sur leurs erreurs

Comments
3 min read
Why your Supabase mutations lie about their errors
Cover image for Why your Supabase mutations lie about their errors

Why your Supabase mutations lie about their errors

Comments 3
2 min read
Fifteen lines of Proxy to keep an SDK from breaking my CI
Cover image for Fifteen lines of Proxy to keep an SDK from breaking my CI

Fifteen lines of Proxy to keep an SDK from breaking my CI

Comments
5 min read
The SaaS config you can't `git diff`: a 30-second audit before every `update`
Cover image for The SaaS config you can't `git diff`: a 30-second audit before every `update`

The SaaS config you can't `git diff`: a 30-second audit before every `update`

Comments
2 min read
La config SaaS que tu ne peux pas `git diff` : un audit de 30 secondes avant tout `update`
Cover image for La config SaaS que tu ne peux pas `git diff` : un audit de 30 secondes avant tout `update`

La config SaaS que tu ne peux pas `git diff` : un audit de 30 secondes avant tout `update`

Comments
3 min read
Five silent failure modes I codified after 35 effective days of solo ERP coding
Cover image for Five silent failure modes I codified after 35 effective days of solo ERP coding

Five silent failure modes I codified after 35 effective days of solo ERP coding

Comments
6 min read
Why your DB audit always finds more than your inventory says
Cover image for Why your DB audit always finds more than your inventory says

Why your DB audit always finds more than your inventory says

Comments 4
3 min read
Pourquoi ton audit DB trouve toujours plus que ton inventaire ne disait
Cover image for Pourquoi ton audit DB trouve toujours plus que ton inventaire ne disait

Pourquoi ton audit DB trouve toujours plus que ton inventaire ne disait

Comments
3 min read
The 1-day-thrown-away rule: read the code before letting your AI write new code
Cover image for The 1-day-thrown-away rule: read the code before letting your AI write new code

The 1-day-thrown-away rule: read the code before letting your AI write new code

Comments
2 min read
La règle du jour-jeté-à-la-poubelle : lis le code avant de laisser ton IA en écrire
Cover image for La règle du jour-jeté-à-la-poubelle : lis le code avant de laisser ton IA en écrire

La règle du jour-jeté-à-la-poubelle : lis le code avant de laisser ton IA en écrire

Comments
3 min read
Make Claude Code disagree with you: a 14-rule counterpart toolkit (install in 1 command)
Cover image for Make Claude Code disagree with you: a 14-rule counterpart toolkit (install in 1 command)

Make Claude Code disagree with you: a 14-rule counterpart toolkit (install in 1 command)

Comments
6 min read
Forcez Claude Code à vous contredire : 14 règles, install en 1 commande
Cover image for Forcez Claude Code à vous contredire : 14 règles, install en 1 commande

Forcez Claude Code à vous contredire : 14 règles, install en 1 commande

Comments
7 min read
Why your Supabase query stops at exactly 1000 rows (and never tells you)
Cover image for Why your Supabase query stops at exactly 1000 rows (and never tells you)

Why your Supabase query stops at exactly 1000 rows (and never tells you)

Comments
2 min read
Pourquoi ta requête Supabase s'arrête à exactement 1000 lignes (et ne te le dit jamais)
Cover image for Pourquoi ta requête Supabase s'arrête à exactement 1000 lignes (et ne te le dit jamais)

Pourquoi ta requête Supabase s'arrête à exactement 1000 lignes (et ne te le dit jamais)

Comments
3 min read
Why 'green build' without the raw output has zero evidentiary value
Cover image for Why 'green build' without the raw output has zero evidentiary value

Why 'green build' without the raw output has zero evidentiary value

Comments
5 min read
Three weeks after I said CLAUDE.md writes itself, it added 4 more rules without me
Cover image for Three weeks after I said CLAUDE.md writes itself, it added 4 more rules without me

Three weeks after I said CLAUDE.md writes itself, it added 4 more rules without me

Comments
7 min read
Two AI reviews agreeing is not two reviews: how I learned to test claims before adopting them
Cover image for Two AI reviews agreeing is not two reviews: how I learned to test claims before adopting them

Two AI reviews agreeing is not two reviews: how I learned to test claims before adopting them

Comments
5 min read
Deux IA d'accord = une source : la règle qui m'a évité un pipeline bâti sur du vide
Cover image for Deux IA d'accord = une source : la règle qui m'a évité un pipeline bâti sur du vide

Deux IA d'accord = une source : la règle qui m'a évité un pipeline bâti sur du vide

Comments
6 min read
Quick Win Card #01 — Your backlog.md lied to you (a 30-second cure)
Cover image for Quick Win Card #01 — Your backlog.md lied to you (a 30-second cure)

Quick Win Card #01 — Your backlog.md lied to you (a 30-second cure)

Comments
3 min read
Why your AI shouldn't decide alone: the 3-options pattern
Cover image for Why your AI shouldn't decide alone: the 3-options pattern

Why your AI shouldn't decide alone: the 3-options pattern

Comments
3 min read
A day in the life of `/challenger`: 4 bugs, 4 hypotheses falsified before the fix
Cover image for A day in the life of `/challenger`: 4 bugs, 4 hypotheses falsified before the fix

A day in the life of `/challenger`: 4 bugs, 4 hypotheses falsified before the fix

Comments
6 min read
Une journée avec `/challenger` : 4 bugs, 4 hypothèses réfutées avant le fix
Cover image for Une journée avec `/challenger` : 4 bugs, 4 hypothèses réfutées avant le fix

Une journée avec `/challenger` : 4 bugs, 4 hypothèses réfutées avant le fix

Comments
7 min read
Quick Win Card #02 — Your row count lies after 30 minutes (the hook that refuses stale bulk DELETE)
Cover image for Quick Win Card #02 — Your row count lies after 30 minutes (the hook that refuses stale bulk DELETE)

Quick Win Card #02 — Your row count lies after 30 minutes (the hook that refuses stale bulk DELETE)

Comments
3 min read
One line in CLAUDE.md that breaks Claude's over-engineering reflex
Cover image for One line in CLAUDE.md that breaks Claude's over-engineering reflex

One line in CLAUDE.md that breaks Claude's over-engineering reflex

Comments
3 min read
Why your bulk DELETE on Supabase is wrong before you run it (count drift in 30 min)
Cover image for Why your bulk DELETE on Supabase is wrong before you run it (count drift in 30 min)

Why your bulk DELETE on Supabase is wrong before you run it (count drift in 30 min)

1
Comments
3 min read
Pourquoi ton DELETE bulk sur Supabase est faux avant même de tourner (drift en 30 min)
Cover image for Pourquoi ton DELETE bulk sur Supabase est faux avant même de tourner (drift en 30 min)

Pourquoi ton DELETE bulk sur Supabase est faux avant même de tourner (drift en 30 min)

1
Comments
3 min read
Why your sub-agent doesn't load the same memory as you (and how it commits to main behind your back)
Cover image for Why your sub-agent doesn't load the same memory as you (and how it commits to main behind your back)

Why your sub-agent doesn't load the same memory as you (and how it commits to main behind your back)

Comments
3 min read
After 5 commits without you, your agent has left the loop: the meta-hook idea
Cover image for After 5 commits without you, your agent has left the loop: the meta-hook idea

After 5 commits without you, your agent has left the loop: the meta-hook idea

Comments 1
3 min read
When a user reports 1 bug, there are always more (the grep that broke my assumptions)
Cover image for When a user reports 1 bug, there are always more (the grep that broke my assumptions)

When a user reports 1 bug, there are always more (the grep that broke my assumptions)

Comments
3 min read
The 4-test protocol that isolated a 9 ms Stripe SDK crash on Next 16
Cover image for The 4-test protocol that isolated a 9 ms Stripe SDK crash on Next 16

The 4-test protocol that isolated a 9 ms Stripe SDK crash on Next 16

Comments
6 min read
Quick Win Card #03 — Your sub-agent never read your MEMORY.md (the 5-line brief header that fixes it)
Cover image for Quick Win Card #03 — Your sub-agent never read your MEMORY.md (the 5-line brief header that fixes it)

Quick Win Card #03 — Your sub-agent never read your MEMORY.md (the 5-line brief header that fixes it)

Comments 3
4 min read
Quick Win Card #04 — The 15-line contract test that unlocks fearless schema refactors
Cover image for Quick Win Card #04 — The 15-line contract test that unlocks fearless schema refactors

Quick Win Card #04 — The 15-line contract test that unlocks fearless schema refactors

Comments
4 min read
Why I stopped reading my own backlog.md (and what I read instead)
Cover image for Why I stopped reading my own backlog.md (and what I read instead)

Why I stopped reading my own backlog.md (and what I read instead)

Comments
3 min read
60 days with Claude Code on a production ERP: the honest balance (no hype, raw numbers)
Cover image for 60 days with Claude Code on a production ERP: the honest balance (no hype, raw numbers)

60 days with Claude Code on a production ERP: the honest balance (no hype, raw numbers)

Comments
10 min read
What 74 ADRs in 70 days actually buy a solo dev (no hire, no clients, just the file)
Cover image for What 74 ADRs in 70 days actually buy a solo dev (no hire, no clients, just the file)

What 74 ADRs in 70 days actually buy a solo dev (no hire, no clients, just the file)

Comments
5 min read
3 Supabase security incidents, one shared root cause: SECURITY DEFINER inherits EXECUTE TO PUBLIC
Cover image for 3 Supabase security incidents, one shared root cause: SECURITY DEFINER inherits EXECUTE TO PUBLIC

3 Supabase security incidents, one shared root cause: SECURITY DEFINER inherits EXECUTE TO PUBLIC

Comments
6 min read
The 12 tools I use to pilot Claude Code in production: kept, dropped, contested
Cover image for The 12 tools I use to pilot Claude Code in production: kept, dropped, contested

The 12 tools I use to pilot Claude Code in production: kept, dropped, contested

Comments
6 min read
Live, Snapshot, Cache: revisiting the 3-way decision after 60 days of running it
Cover image for Live, Snapshot, Cache: revisiting the 3-way decision after 60 days of running it

Live, Snapshot, Cache: revisiting the 3-way decision after 60 days of running it

1
Comments
6 min read
60 jours avec Claude Code sur un ERP en production : le bilan honnête, sans hype, chiffres bruts
Cover image for 60 jours avec Claude Code sur un ERP en production : le bilan honnête, sans hype, chiffres bruts

60 jours avec Claude Code sur un ERP en production : le bilan honnête, sans hype, chiffres bruts

Comments
12 min read
Why your agent over-engineers your simplest request (and the 3 prompts that stop it)
Cover image for Why your agent over-engineers your simplest request (and the 3 prompts that stop it)

Why your agent over-engineers your simplest request (and the 3 prompts that stop it)

Comments
3 min read
The PostgREST query that silently ORDER BY ctid: a Supabase week, distilled
Cover image for The PostgREST query that silently ORDER BY ctid: a Supabase week, distilled

The PostgREST query that silently ORDER BY ctid: a Supabase week, distilled

Comments
6 min read
RLS recursion infinite loop: why I gave up policies and bet everything on a JWT custom claims hook
Cover image for RLS recursion infinite loop: why I gave up policies and bet everything on a JWT custom claims hook

RLS recursion infinite loop: why I gave up policies and bet everything on a JWT custom claims hook

Comments 2
5 min read
The Counterpart Doctrine: a seven-axis spec for working with an AI coding agent
Cover image for The Counterpart Doctrine: a seven-axis spec for working with an AI coding agent

The Counterpart Doctrine: a seven-axis spec for working with an AI coding agent

Comments
7 min read
3 incidents Supabase, une seule racine : SECURITY DEFINER hérite de EXECUTE TO PUBLIC
Cover image for 3 incidents Supabase, une seule racine : SECURITY DEFINER hérite de EXECUTE TO PUBLIC

3 incidents Supabase, une seule racine : SECURITY DEFINER hérite de EXECUTE TO PUBLIC

Comments
7 min read
La requête PostgREST qui trie en silence par `ctid` : une semaine Supabase, distillée
Cover image for La requête PostgREST qui trie en silence par `ctid` : une semaine Supabase, distillée

La requête PostgREST qui trie en silence par `ctid` : une semaine Supabase, distillée

Comments
7 min read
When `await mutation()` lies: the `{ error }` destructuring that saves your weekend
Cover image for When `await mutation()` lies: the `{ error }` destructuring that saves your weekend

When `await mutation()` lies: the `{ error }` destructuring that saves your weekend

2
Comments 2
5 min read
Quand `await mutation()` ment : le destructure `{ error }` qui sauve ton week-end
Cover image for Quand `await mutation()` ment : le destructure `{ error }` qui sauve ton week-end

Quand `await mutation()` ment : le destructure `{ error }` qui sauve ton week-end

Comments
6 min read
Les 12 outils que j'utilise pour piloter Claude Code en production : gardés, jetés, contestés
Cover image for Les 12 outils que j'utilise pour piloter Claude Code en production : gardés, jetés, contestés

Les 12 outils que j'utilise pour piloter Claude Code en production : gardés, jetés, contestés

Comments
7 min read