Skip to content

Small apps, built with AI, built to last.

BreizhVibe is my set of vibe-coding skills and tools for web development for associations, festivals, clubs and small businesses
 wavedevsimpl is my basic specification for quick and reliable app prototyping.

Methodology

- start simple with wavedevsimpl skill
- keep track of modifications via code tracking tool,
- keep history of prompts and detailed answers in md. Prompts name should follow rule : YMD-AIprovider-n.md

See the appsCase study: Youl VatRead the skill

0
framework, Composer, npm or build step
1
folder to upload by FTP. Changing host means copying it
1
SQLite file holds the whole database

What we’ve already built

Real tools, coded with Claude, each on the stack that suits it.

Youl Vat

Live

“Good will” in Breton.

Volunteer scheduling for festive events, first built for the Fest-noz Vras Kalanna in Quimper. The public reads the planning, volunteers sign up for a free slot, organisers run the whole day from it.

  • Public planning, readable on any phone
  • Sign-up without an account, full slots refused
  • Overlap warnings and balanced workloads
  • Day-of check-in, CSV and JSON export
  • Trilingual: brezhoneg, français, English

PHP 8, SQLite, wavedevsimpl

View on GitHubRead the case study

Youl Vat

Stokekstra

Prototype

Inventory in your pocket.

A mobile app for stock spread over several sites, warehouses and shops. Everything fits in one grid: products as rows, locations as columns, quantities where they meet.

  • Product × location grid with totals
  • Move stock between sites with a tap, or drag and drop
  • Works offline, data stays on the phone
  • File import and export
  • Demo data and one-tap reset

React Native, Expo, Zustand, MMKV

View on GitHubRead the article

Stokekstra

WaveSupaCrud

Open source

The admin Supabase was missing.

An admin interface for Supabase databases, free plan included: browse, filter and edit your tables, and back up your data. Essential when you code with AI.

  • Tables, filters and pagination
  • “Glass” theme, light and dark
  • Backup from the menu
  • Vanilla JavaScript, no runtime framework
  • Tailwind CSS compiled once, nothing to build in production

JavaScript, Tailwind, Supabase

View on GitHubRead the article

WaveSupaCrud

SkridCMS

In the works

“Skrid” means writing in Breton.

A simple website editor: write and update the pages of a small site yourself, then host it like everything else. One folder, any PHP host.

PHP 8, no database, wavedevsimpl

Read the case study

Skrid editing a page of wave.bzh: every editable text outlined, the Skrid bar at the bottom.

Case study: Youl Vat for the Fest-noz Vras Kalanna

Kalanna is the big New Year’s Eve fest-noz in Quimper: one night in the Pavillon of the Parc des Expositions, dancing from 8 pm to 4 am, with a bar and crêpes all night. It runs on volunteers, and Youl Vat was written to place them.

5
days to staff, from setting up on 29 December to clearing out on 2 January
24
stands and jobs: bar, crêpes, entrance, set-up…
56
shifts in the first planning, several of them past midnight
3
languages: brezhoneg, français, English

The volunteer rota used to live in a Google Sheet. Youl Vat replaces it with one address, youlvat.kalanna.bzh: anyone can read the planning on a phone, volunteers sign up for a free shift without creating an account, and the organisers run the whole event from the same screens, down to checking people in on the night.

It began as a prototype built in a conversation with Claude. The team liked the interface, so it stayed; only the data layer changed, ported to PHP and SQLite so the tool runs on any cheap shared host and moves by copying one folder. The code is open on GitHub.

How the data flows

  1. In the browser

    • Planning, index.php: public, reloads the whole event every 15 seconds.
    • Sign-up, inscription.php: first name, name, phone and e-mail, no account.
    • Organisers: one shared password, then every screen becomes editable.
  2. One door: api.php

    • GET action=all: the whole event in one JSON answer.
    • POST signup: public, with a CSRF token, a hidden trap field and 20 sign-ups an hour per device.
    • POST create · update · delete: organisers only, on a whitelist of tables and columns.
    • For the public a volunteer is “Marie D.”, phone and e-mail masked: full details never leave the server.
  3. One file: SQLite

    • data/regie.sqlite, closed to the web.
    • events → stands → shifts → assignments ← volunteers, with cascading deletes.
    • WAL journal, a 5-second wait, and the write lock taken first.
    • export.php: CSV for the spreadsheet, full JSON for backups or a change of host.

Two volunteers, one last place

Two people press “Sign up” for the last free place at the same second. The first request takes the write lock and inserts only if the shift still has room; the second waits a millisecond or two, finds it full and gets a clear answer instead of a double booking. The rule is written in the SQL itself, so no path through the PHP code can get around it.

Made for a night of fest-noz

  • A shift that starts before 6 am belongs to the night before: 00:00–05:00 on 31 December is New Year’s night.
  • Overlaps are flagged, and candidates are sorted by hours already planned, to share the load.
  • Check-in on the night: planned, present or absent.
  • Leads for each stand sign up on their own page.
  • A permanent link for every shift, stand and volunteer, to send by text message.

The code on GitHubSchema and concurrency notesThe Kalanna planningFest-noz Vras Kalanna

Vibe coding, with guardrails

Vibe coding is fast, but left alone an AI happily reaches for frameworks, cloud services and build pipelines that break in three years. For web tools, the wavedevsimpl skill is the packaged set of instructions Claude follows on every project, so each app comes out the same simple, durable shape.

  1. 1

    Describe the need

    A festival’s volunteer rota, a stock list, a website to edit. Plain words, real constraints, who’s public and who’s admin.

  2. 2

    Claude builds it

    With the wavedevsimpl skill loaded: same layout, same libraries, same security rules, and decisions recorded in the project’s CLAUDE.md.

  3. 3

    Test on a copy

    Never on the real database. Public pages checked at 375 px wide, export working before go-live.

  4. 4

    Upload one folder

    FTP it to any shared PHP host. The database creates itself on first launch. Nothing to install.

PHP 8 + SQLite + vanilla HTML, CSS and JS

Boring on purpose. PHP runs on every cheap host, SQLite turns the database into a file, and no dependency means nothing to update.

PHP first, JavaScript second
Pages are rendered by PHP; JavaScript is only a small add-on for filtering, confirmations or a rich-text editor. One language to read, so the people who maintain the tool can open a file and understand it.
Cheapest possible hosting
Any shared PHP host. Nothing to install server-side.
Change host painlessly
The database is a file. Migrating is copying the folder.
Maintained for years
No npm install, no build that breaks. Fine for non-specialists.
No external service
No Firebase or Supabase quotas, paused free tiers or changing terms.

Rules every app follows

  • SQLite in WAL mode, foreign keys on, busy timeout set on every connection.
  • Zero-install schema: created on first run, migrated automatically when it changes.
  • Business rules where concurrency matters live in SQL, not in PHP.
  • One JSON API with whitelisted tables and columns; private fields stripped for visitors.
  • Shared admin password, CSRF token on every POST, everything escaped.
  • Mobile first, relative paths everywhere, and a CSV/JSON export before go-live.

When it’s the wrong tool

BreizhVibe says so honestly and proposes something else when a project needs:

  • several servers behind a load balancer
  • dozens of concurrent writes per second
  • real per-user accounts with fine roles
  • a real-time collaborative interface

Go further

The wavedevsimpl skillTutorial: optimise your imagesAll the code on GitHub

A tool for your association or business?

Describe it in plain words: who uses it, what they need to do, what must stay private. I will tell you if BreizhVibe is the right fit.

Write to me on LinkedIn