Learn to code · no videos, nothing to install

Learn to code by coding, right in your browser.

No videos, nothing to install. A real project runs in your browser: you write the code, the preview updates, and the tests tick off your goals.

Try an exercise, no account needed The first chapter of every track is free with an account.
MenuController.php index.html.twig
// Bruna wants a menu at the /menu address
#[Route('/menu', name: 'app_menu')]
public function index(): Response
{
    return $this->render('menu/index.html.twig', [
        'tavern'       => 'The Drunken Dragon Tavern',
        'dishOfTheDay' => 'Wild boar stew',
    ]);
}▌
localhost/menu The Drunken Dragon Tavern Dish of the day Wild boar stew House mead3 gp
Goals The menu is reachable The dish of the day is displayed Prices are in gold pieces 2 / 3 passed+ 100 XP

Code on the left, the page on the right: change a line, the preview reloads, the tests re-run.

No videos

You don't watch someone code: you code. Every concept is learned by writing it, in an editor with autocompletion, next to a live preview.

Nothing to install

A real project runs in your browser. No Docker, no language to install, no environment to fix before you write the first line.

No toy exercises

Each track builds a single project, chapter after chapter: pages, database, forms, security, API, tests. Nothing disposable.

How it works

A short loop: instructions, code, preview, check.

  1. Read the instructions

    A concrete need, set by a character in the track: a menu, a booking, a staff roster.

  2. Write the code

    In an editor with autocompletion and syntax highlighting, on the files of a real project. The official documentation is one click away.

  3. Watch the preview

    Your page reloads with every change. Errors show up, and with an account, the mentor explains them (in French for now).

  4. Pass the goals

    Automated tests check each goal. Stuck? Step-by-step hints, never the solution up front.

The common thread

Every track follows a common thread. The first: a tavern.

No catalogue of unrelated examples. In the Symfony track, Bruna has just taken over the Drunken Dragon Tavern and has never had a website. The menu, the bookings, the staff, the guestbook: every chapter meets a real need of the inn.

The code from the first exercise is still used in the last chapter. You learn the way developers actually work: on a project that grows, gets reread and keeps evolving.

Tracks

A first track is available. More are coming.

Comfortable with PHP and OOP? Learn Symfony by building, chapter after chapter, the website of the Drunken Dragon tavern.

12 chapters · 74 exercises · about 47 h €79.00 €49.00 incl. VAT, lifetime access Founder price, 99 seats left Buy First chapter free
  1. 01 First steps at the tavern free · 8 ex. · ≈ 3 h
    ControllerRouteTwigRoute parameter404
  2. 02 The cellar and the pantry 6 ex. · ≈ 2 h 45 min
    EntityMappingDoctrineRepositoryDependency injection
  3. 03 The tavern's scrolls 6 ex. · ≈ 2 h 45 min
    FormsFormTypeEntityTypeCSRFValidator
  4. 04 The keys to the tavern 6 ex. · ≈ 3 h 30 min
    Firewallform_loginaccess_controlUserInterfaceEntity provider
  5. 05 Magic scrolls 6 ex. · ≈ 4 h 30 min
    JSON API$this->json()Serializer#[Groups]#[Groups] on a method
  6. 06 Never again! 6 ex. · ≈ 4 h
    WebTestCasecreateClient()submitFormAssertionsTest database
  7. 07 The messenger raven 6 ex. · ≈ 3 h 30 min
    MessengerMessage#[AsMessageHandler]MessageBusInterfaceTransport
  8. 08 Back to the cellar 6 ex. · ≈ 4 h 45 min
    Migrationsdoctrine:migrations:diffdoctrine:migrations:migrateup() and down()Data migration
  9. 09 The tavern's inner workings 6 ex. · ≈ 3 h 30 min
    Kernel eventskernel.request#[AsEventListener]RequestEventClockInterface
  10. 10 The life of a reservation 6 ex. · ≈ 4 h 30 min
    MailerMailerInterfaceEmailMAILER_DSNassertEmailCount
  11. 11 The boss's orders 6 ex. · ≈ 4 h
    Console command#[AsCommand]SymfonyStyle#[Option]Exit codes
  12. 12 The big night 6 ex. · ≈ 6 h 15 min
    ModelingEntities and relationsValidationMigrationsController and templates

In the works

  • Sécuriser une application Symfony Coming soon

    Vous avez fait le parcours Symfony ? Apprenez à sécuriser une application réelle en réparant, faille après faille, la boutique en ligne de la Brasserie Lacombe, piratée la veille de votre arrivée.

  • Laravel pour les devs PHP Coming soon

    Vous maîtrisez PHP et la POO ? Apprenez Laravel en construisant, chapitre après chapitre, le site qui ramènera Plok, extraterrestre égaré, sur sa planète.

  • Docker pour les devs PHP Coming soon

    Votre application PHP marche sur votre machine ? Apprenez Docker en l'embarquant, conteneur après conteneur, du premier docker run jusqu'à la mise en production, sur les quais de la criée de Port-Bigorneau.

  • Nuxt pour les devs Vue Coming soon

    Vous connaissez Vue ? Apprenez ce que Nuxt y ajoute (pages, rendu serveur, partie serveur) en passant sur Nuxt le site du refuge du Pic Tordu, à 2 350 mètres, où le réseau passe mal.

A summary sheet at the end of every chapter, as a web page and a PDF. At the end of the track, the full booklet: your own notes, written as you learned.

AI in its proper place

It helps you. It doesn't code for you.

A model that writes the solution teaches you nothing. Here, AI steps in only where a good mentor would, whatever the track. Hints are open to everyone; code review and explanations come with a signed-in account.

Step-by-step hints.A lead, then a direction, then a snippet. You decide how far to go.

A code review.Once the tests pass, a look at what could be more idiomatic.

Errors explained.An exception turned into its likely cause, without handing you the fix.

Who it's for

To learn to code, you have to code.

Working developer

You're adding a string to your bow, with good practices from the start rather than in code review. Today: going from PHP to Symfony.

Computer science student

You've covered the theory in class. What's missing is practice on a real project, the kind expected in an internship or an apprenticeship.

Team or school

You train several people and want to follow their progress: an invitation link, the tracks of your choice, a progress dashboard. Our offer for schools and companies.

Who's behind it

A developer, not a mass-market course platform.

Built by Arnaud Pointet, a freelance developer (Forelse, Bordeaux), who writes every exercise the way he would have wanted to learn. The platform's engine is open source (AGPL): its code is public, to read or to run yourself.

Ready to start?

The first chapter of every track is free. Create your account: your progress follows you.

Frequently asked questions

Does it really run in the browser?

Yes. The track's language and framework run in WebAssembly, in a browser tab. Nothing is sent to a server to run your code.

Which tracks?

Today: Symfony for PHP developers. The tracks are in French for now. In the works: Sécuriser une application Symfony, Laravel pour les devs PHP, Docker pour les devs PHP and Nuxt pour les devs Vue.

How much does it cost?

The first chapter of every track is free: you just need an account. The full track is a one-time purchase, with the price shown including VAT, lifetime access and updates: no subscription. A school or a company can also open access for a whole group; contact us for a quote.

What happens if I get stuck on an exercise?

You ask for a hint, then a second, more precise one. With an account, the full solution is available, but it won't earn you the exercise's XP.

How is it different from video tutorials?

You don't watch anything: you write all the code yourself, on a project that grows exercise after exercise. The time you spend is practice time.

Is it up to date?

Each track targets the current versions (Symfony 8 and PHP 8.4 for the first one), and the exercises are checked automatically with every engine update.

Can I host it myself?

Yes, eventually: the engine is licensed under the AGPL and its code will be published at launch. The tracks are the paid content: that's what you buy.