How I Coded an Attendance App in 3 Weeks for My Friend Jacques (and Saved 6 Months Thanks to Claude)

Or: The True Story of a Side Project Born Over Ramen

You know what's hard about side projects? Finding an idea. No, wait. Finding a good idea. Actually, that's not it either. The hardest part is finding an idea that will actually be useful to someone.

Me? I have Jacques, Claude and Codex.

The Story Begins with a Bowl of Ramen

October 23, 2025, 5 PM. We're sitting at our usual spot, two steaming bowls of ramen in front of us. Jacques, my long-time friend and volleyball coach, says between bites:

"I'd really love to have attendance stats for my team. Like, see who comes regularly to practice, who skips, all that. The existing apps are either paid at 5-10€/month, or they're bloated with 150 options I don't need."

I put down my chopsticks. I was just finishing up LaQuiza.com, my quiz app, and I was looking for what to do next. The timing was perfect.

"You know what, Jacques? I could develop that for you. I was actually looking for a new project after LaQuiza."

"Seriously? You'd do that?"

"Absolutely. I need a new side project and at least this one will actually be useful to someone. You give me your honest feedback and we're good?"

"Deal!"

5:50 PM. First commit on GitHub. The FaireLappel.app adventure had just begun.

The Truth About Side Projects (Spoiler: I'll Never Use This App)

Let's be honest for a second. I'm not a coach. I don't have a team to manage. I'll probably never take attendance in my life. This app? I'll never use it.

And that's exactly why the project works.

I had almost finished LaQuiza.com, my quiz app, but I needed to step back. Sometimes the best way to move forward on a project is to pause it and do something else. Starting a new side project would let me come back to LaQuiza with fresh ideas and a new perspective.

But Jacques? Jacques really needs this app. He takes attendance 3 times a week. He struggles with his crappy Excel sheet. He loses 15 minutes every practice.

Jacques is my user zero. My initial inspiration. He gave me the real need, and that was enough to guide me.

And believe me, having a real concrete need to solve, even without constant feedback, changes absolutely everything.

The Magic Duo: Claude Code + Codex (aka How I Saved 6 Months)

Alright, let's talk tech. How do you go from a ramen discussion to a functional app in 3 weeks?

Two words: Claude Code.

Actually no, four words: Claude Code and Codex.

Let me explain my incredible workflow.

Vibe Coding with Claude

Imagine: instead of spending 2 hours searching for the right chart library, 3 hours debugging an OAuth integration, 4 hours setting up i18n... I do this:

Me to Claude: "I need an attendance system with organizations, groups, participants. Secure auth with PocketBase. Mobile-first interface in Flutter. Go."

Claude: generates 500 lines of clean code, modular architecture, best practices included

Me: tests "Perfect, now I'm adding visual stats."

Claude: boom, complete charts component with recharts

This is what I call "vibe coding". You vibe with the AI, you describe what you want, it generates. No more memorizing APIs, searching on StackOverflow, debugging syntax errors for 3 hours.

The Current Sweet Spot (November 2025)

Let's be clear: vibe coding today is perfect for side projects. We're in a golden period where LLMs generate code good enough for personal projects, MVPs, apps to help friends.

But let's not kid ourselves. For an app in production with millions of users? A senior developer is still essential. Why? Because:

  • Large-scale architecture: Claude generates good code, but doesn't see problems that will appear at 100k users
  • Fine optimizations: -45% API requests, I saw that, not Claude
  • Complex bug diagnosis: When it crashes in prod at 3 AM, your experience is what counts
  • Code evolution: Maintaining and evolving a codebase over 2-3 years requires a big-picture view

In 6 months to a year, LLMs will probably produce even better architectures. But even then, a senior dev will be crucial to supervise, challenge choices, propose optimizations the AI doesn't see.

For FaireLappel.app? The combo is perfect: a simple app, a clear need, a real user. Vibe coding shines in this context.

Codex Enters the Scene (The Perfect Duo)

But wait, it gets even better.

October 23, 8:22 PM. After my first intense coding session with Claude, I throw the entire codebase at Codex (based on OpenAI's ChatGPT). Mission: complete code review.

And then, magic:

Codex: "Warning, your soft-delete system has a flaw. If someone deletes a session then recreates it with the same name, the stats will merge. Here's the fix..."

October 24, I fix it. Claude generates, Codex validates. It's the perfect duo.

Claude = The senior developer who codes at the speed of light Codex = The architect who reviews and detects edge cases

Result? Code that's not only generated quickly, but also robust, optimized, and without those nasty bugs you discover 6 months later in prod.

The Killer Numbers

Quick calculation of what LLMs saved me:

WITHOUT LLM (realistic estimate):

  • Project setup + CI/CD: 2 weeks
  • Auth + basic structure: 3 weeks
  • CRUD organizations/groups: 2 weeks
  • Sessions and attendance: 3 weeks
  • Stats and charts: 2 weeks
  • PDF/CSV exports: 1 week
  • i18n: 1 week
  • Multi-user collaboration: 3 weeks
  • Floor plans: 3 weeks
  • Debug, refactoring, optimizations: 4 weeks Total: 24 weeks = 6 months

WITH LLM (reality):

  • All of that: 3 weeks

But careful, it's not just about speed. Look at my time distribution:

  • Before LLM: 70% implementation/debug, 20% research, 10% thinking
  • With LLM: 60% thinking about features, 30% testing and validation, 10% adjustments

I went from "how do I code this" to "what would actually be useful". Game changer.

The Insane Timeline: 40 Commits in 48h

Day 1-2 (October 23-24): The Explosion

  • 5:50 PM: First commit
  • 48 hours later: 40 commits
  • Functional MVP with auth, organizations, groups, sessions
  • The app can already handle attendance
  • I think: "This already works better than the 10€/month apps"

Week 1 (end of October): The Foundations

  • Complete CI/CD (GitHub Actions → Firebase Hosting)
  • Batch API optimization (from N requests to just 1)
  • Mobile-first responsive interface
  • October 29-30: 17 commits in a row (exports, stats, massive refactoring following Codex recommendations)

November 1: Adaptive Vocabulary

  • I realize the app can serve teachers too
  • Adaptive vocabulary system
  • Coaches see: team/practice/player
  • Teachers see: class/lesson/student
  • Complete French/English i18n in 2 hours flat

November 2: Anticipating Collaboration

  • I know Jacques has coach colleagues
  • Multi-user collaboration system
  • Magic invitation links
  • Ready for when they want to use it

The Reddit Inspiration That Changes Everything

November 6, 10 PM. I'm scrolling Reddit, as usual. I stumble upon /r/teachers.

A teacher shares their system for optimizing attendance: they drew a plan of their classroom on paper, with each student's seat. They take visual attendance in 30 seconds.

💡 The lightbulb moment.

The app isn't just for sports coaches. It could serve teachers, trainers, association leaders...

I realize the need is universal. Everyone takes attendance somewhere.

November 8: Interactive Floor Plans

Following my Reddit discovery, I dive into implementation. If teachers do this on paper, why not digitize it?

Me to Claude: "Interactive floor plan. Grid to position participants. Teacher and coach view. Visual marking of present/absent. Go."

2h15 later:

  • Complete floor plan editor
  • Customizable grids
  • Click-to-position participants
  • Color-coded present/absent marking
  • Automatic position saving

I know this will appeal to teachers AND coaches. The app becomes truly universal.

Development Guided by a Real Need

The app was built around Jacques' initial need. No useless features, no over-engineering. Just pure utility.

Soft-Delete Mode (Thanks Codex)

October 24, Codex detects: "Potential problem: if a user deletes a session by mistake, all attendance data is lost."

Solution: Soft-delete everywhere. "Deleted" sessions are just hidden, recoverable for 30 days.

November 15: Real-world test: recovering a mistakenly deleted session in 2 clicks. The system works perfectly!

(Thanks Codex for catching this risk)

The -45% Optimization (Anticipating Scale)

November 10:

  • I see in the logs: 11 API requests per page
  • That's too much, it'll lag with multiple users
  • Claude + me: Refactoring, caching, grouped requests
  • Result: 6 requests instead of 11 (-45%)
  • The app is now instant even with multiple simultaneous users

The SEO Trick (Or: Why I Bought 2 Domains)

November 3: I realize the Flutter app (SPA) on fairelappel.app is invisible to Google. People searching for "attendance app" find nothing.

Two-step solution:

  1. Create fairelappel.com: static showcase site, SEO optimized, all keywords
  2. The app stays on fairelappel.app: for users

November 4: Fix robots.txt, sitemap, meta tags

November 5: The app finally appears in Google results. 2 seconds to find it!

The Tech Stack (For the Curious)

Economy First

From the start, I had a clear constraint: make a free app without going broke. No AWS at 100€/month, no cloud services that explode with usage. I wanted an economical stack that stays viable even if Jacques invites the entire volleyball federation.

  • Frontend: Flutter Web (Dart) - for mobile-first
  • Backend: PocketBase (Go) - backend as a service, zero config
  • Backend Hosting: PocketHost.io - 5€/month per instance (the only cost)
  • Frontend Hosting: Firebase Hosting - free up to 10GB/month
  • CI/CD: GitHub Actions - free for public repos
  • Domains:
    • fairelappel.app (application)
    • fairelappel.com (SEO/showcase)

Total monthly cost: 5€

Yes, you read that right. The complete app runs for 5€/month thanks to PocketHost.io. That's the price of a kebab, and it allows me to offer a free app without ads or tracking to Jacques and his colleagues.

Why these choices?

  • Flutter: Single web/mobile codebase (future)
  • PocketBase: Auth, database, realtime, all included, self-hostable
  • PocketHost: Managed PocketBase hosting, auto backup, SSL included
  • Firebase: Free hosting, global CDN, auto SSL
  • GitHub Actions: Free CI/CD, integrated, simple

The idea: stay under 10€/month even if the app grows. So far, mission accomplished.

The Final Numbers

  • 72 commits in 3 weeks
  • 210 files created/modified
  • ~419k lines (including build)
  • 5 active users (including coaches and teachers)
  • 104 hours/year saved per user (2h/week)
  • 0 critical bugs in production (thanks Codex)
  • 6 API requests per page (vs 11 initially)
  • 2 seconds to find the app on Google

What I Learned (The Real Lessons)

1. A Real Need > 1000 Ideas

Jacques gave me the initial need, and that was enough. A concrete problem to solve is worth more than imaginary features.

Having identified a real problem (losing 15 minutes taking attendance) with a real audience (coaches, teachers), that's gold.

2. LLMs Are Multipliers, Not Replacements

Claude and Codex didn't replace me. They multiplied my capabilities by 10.

I still think about features. I still test. I still make decisions.

But now, between idea and implementation, there's 30 minutes instead of 3 days.

And most importantly: it's my dev experience that lets me see when generated code needs optimization, when architecture will cause problems later, when a pattern is a bad idea. LLMs accelerate, but the developer drives.

3. Ship Fast, Iterate Quickly

CI/CD from day 1. Push = deployed to prod.

A bug discovered? Fix deployed in 15 minutes.

A new idea? Online in 30 minutes.

This ultra-rapid deployment capability, that's what makes the difference.

4. Simple Features Are the Most Powerful

No AI. No blockchain. No NFTs. No machine learning.

Just:

  • Create groups
  • Mark present/absent
  • View stats
  • Export data

That's it. And it's exactly what people need.

The Final Message

For Jacques: Thanks for the initial idea. Without that concrete need, this project wouldn't exist.

For you devs: You all have a Jacques in your life. That friend struggling with something. That colleague wasting time on a repetitive task. That parent fighting with technology.

Listen to them. Identify the real need. Code the solution. Use Claude, Codex, all the tools at your disposal.

The best side project isn't the one that'll get 1M users. It's the one that solves a real problem, even for 5 people.

For potential users: The app is free, no ads, no tracking. If you take attendance regularly (sports, school, association), try it. And if it saves you time, let me know!


Links:

  • 🚀 The application: fairelappel.app
  • 🌐 The website (for SEO): fairelappel.com
  • 💻 The code: GitHub (open source soon, once I've cleaned up comments like "// Jacques wants this")

P.S. for devs: Yes, 419k lines is a lot. But it's Flutter with all builds included. The actual code is ~15k lines. Don't judge me.

P.P.S. for Jacques: If you're reading this, remind me we should get ramen this week. I have an idea for matches...

P.P.P.S. for teachers from /r/teachers: Thanks for the inspiration. The floor plans were your idea. 🙏