Your first work experience, before your first job.

Each lab drops you into a real company case. You solve it yourself, on a real server, and you come away with what theory never gives you: confidence.

  • A real business case
  • Ready in minutes, nothing to install
  • A skill to talk through in interviews
Create an account

Your first lab is free.

Labs (52)

Pick your next challenge. Every lab is built by practitioners, from missions they carry out in companies across Africa.

  • GeneralPath: AWS for developers: serverless APIs, containers and security

    Containers on AWS: Docker, Amazon ECR and ECS Fargate

    Sawa Express is opening its Douala - Yaoundé line. Serge, a freelance developer, wrote the service that computes the rates: a small Python web server that runs perfectly on his laptop. But Serge has gone back to Bafoussam, and Patrick's app needs this service online, all the time. You put it in a container, as it is, without rewriting it. From AWS CloudShell, you build the image with Docker, publish it to a private Amazon ECR repository, and run it on Amazon ECS with AWS Fargate, with no server to manage. Along the way, you hit the two failures every developer meets when moving to containers: a service that responds on the laptop but not in the container, and a task that runs but that nobody can reach. Then the fuel price goes up: you change it with a new task revision, deployed with no downtime, without touching the code. The third lab of the AWS path for developers, which prepares you for the AWS Certified Developer - Associate certification (DVA-C02).

    • No reviews yet
    • Intermediate
    • 2 h
    • 2,000 credits
  • GeneralPath: AWS for developers: serverless APIs, containers and security

    Securing an API: Amazon Cognito, JWT authorization, Secrets Manager and KMS

    A Sawa Express competitor posts a screenshot: a customer's name, phone number and address, read from the parcels API. Anyone can read any parcel, and even mark it delivered. And the SMS provider's key is written in the code. Patrick wants everything locked down before Monday. You create the customer and rider accounts in Amazon Cognito, and protect every API route with an API Gateway JWT authorizer: without a valid token, nothing gets through. In the function, you restrict status changes to riders, by reading their group in the token. Then you store the SMS key in AWS Secrets Manager, encrypted with an AWS KMS key, and find out the two permissions needed to read it: one on the secret, the other on the key. Finally, you open the API to the office's web dashboard, and to it alone, with CORS. The fourth lab of the AWS path for developers, which prepares you for the AWS Certified Developer - Associate certification (DVA-C02).

    • No reviews yet
    • Advanced
    • 2 h
    • 2,500 credits
  • BeginnerIn FrenchPath: Docker : de la première image à la production

    Docker : conteneuriser une application et la mettre en ligne

    Jeudi soir, Radio Akwa à Douala. L'animateur lance son sondage de la semaine à l'antenne, et le standard tombe en vingt minutes : trois cents appels pour départager deux plats. À la fin de l'émission, il n'a aucun chiffre à annoncer. Il dit « c'est serré », et il passe à la musique. Il ne vous demande pas une application. Il demande une adresse à donner à l'antenne, que les auditeurs tapent sur leur téléphone. Vous n'avez jamais lancé un conteneur. Vous allez en lancer un, échouer à le joindre, comprendre pourquoi, ouvrir le port qu'il faut, découvrir dans les journaux qu'il lui manque une seconde machine, brancher les deux sur un réseau, puis remplacer la question par la vôtre : d'abord sans rien reconstruire, ensuite en construisant votre première image. À la fin de la séance, vous envoyez l'adresse à deux ou trois personnes que vous connaissez, et vous regardez le compteur de votes monter pendant qu'elles cliquent. C'est la seule façon honnête de vérifier qu'une application est en ligne.

    • No reviews yet
    • Beginner
    • 1 h 30 min
    • 500 credits
    • First lab free
  • BeginnerIn FrenchPath: Docker : de la première image à la production

    Docker : volumes et persistance des données d'une application

    Lundi matin, Radio Akwa à Douala. Trente auditeurs ont voté au sondage d'Ernest, et Samuel, le technicien, doit passer Redis à sa nouvelle version. Il applique la bonne méthode : on ne modifie pas un conteneur, on le remplace. Les trente votes disparaissent. Vous allez comprendre où ils étaient, donner des volumes nommés à Redis puis à PostgreSQL, et découvrir qu'un volume ne garde que ce que l'application a vraiment écrit sur le disque. Vous monterez la chaîne complète du sondage, file d'attente, worker, base et page de résultats, en diagnostiquant un conteneur qui tourne sans travailler et une base qui s'arrête aussitôt lancée. À la fin, Ernest a une page de résultats qui bouge en direct pendant que vos proches votent, une base qui survit à la suppression de son conteneur, et une sauvegarde rangée.

    • No reviews yet
    • Beginner
    • 1 h 30 min
    • 500 credits
    • First lab free
  • BeginnerIn FrenchPath: Docker : de la première image à la production

    Docker Compose : lancer une application multi-conteneurs

    Mercredi, Radio Akwa à Douala. Deux cents votes pour la demi-finale, et la page des résultats à l'antenne. Mais Samuel, le technicien, part en congé, et c'est lui qui relance le sondage : un script de cinq commandes à taper dans le bon ordre, avec le mot de passe de la base écrit en clair. Vous allez le remplacer par un fichier compose.yaml et une seule commande. En chemin, vous rencontrerez les deux pannes classiques d'une première mise sous Compose : le port déjà pris, puis une base vide, alors que les deux cents votes dorment intacts dans un volume que plus personne n'utilise. Vous sortirez le mot de passe dans un fichier .env et ordonnerez le démarrage sur la santé réelle de la base. À la fin, Ernest relance tout le sondage lui-même, en une commande, sans rien perdre.

    • No reviews yet
    • Beginner
    • 1 h 30 min
    • 500 credits
    • First lab free
  • GeneralIn FrenchPath: Docker : de la première image à la production

    Docker en production : restaurer, redémarrer, Nginx en frontal

    Vendredi matin, Radio Akwa à Douala. La finale a rapporté plus de mille votes, puis une coupure de courant a tout arrêté vers trois heures. Au matin, plus rien ne répond, et Junior, le neveu d'Ernest, a voulu réparer : il a supprimé la base et son volume, puis ajouté une limite de mémoire trouvée sur un forum. Vous allez restaurer la base à partir de la sauvegarde de mercredi, dans le bon ordre, et regarder en face ce qu'elle ne contient pas. Vous diagnostiquerez un worker tué sans un mot (code 137), trouverez le gigaoctet de journaux que docker system df ne montre pas, et rendrez la pile autonome face à la prochaine coupure. Pour finir, Nginx prend la place de tous les ports : le vote et les résultats sur une seule adresse, celle qu'on imprime sur une affiche. Une page qui s'affiche vide vous apprendra à lire le journal d'un reverse proxy.

    • No reviews yet
    • Intermediate
    • 1 h 40 min
    • 750 credits
    • First lab free
  • BeginnerIn FrenchPath: Sécurité web : trouver et corriger les failles du Top 10 OWASP

    Sécurité web avec nginx : fermer les fuites d'informations

    Abidjan, jeudi soir. Akwaba Market, la boutique en ligne de pagnes wax et d'artisanat de Madame Koné, à Treichville, ouvre samedi. Hier soir, un client développeur a prévenu en privé : une adresse de produit cassée affiche une page pleine de code avec le mot de passe de la base de données, un dossier de sauvegardes ouvert à tous livre les noms et les téléphones des clients, et le site annonce son logiciel et sa version à qui veut l'entendre. Vous regardez d'abord la boutique comme un inconnu la voit, avec curl et les outils de développement du navigateur, et vous notez ce qu'elle laisse échapper. Puis vous fermez les fuites une à une, par la configuration : nginx cesse d'annoncer sa version et retire l'en-tête de l'application ; le mode DEBUG passe à false, et la trace des erreurs part au journal, retrouvable par une référence ; le mot de passe divulgué est changé dans la base et dans l'application, dans le bon ordre, et le fichier qui le garde n'est plus lisible par tous ; les sauvegardes des clients quittent la racine du site, et nginx refuse désormais tout fichier caché, dépôt git compris. Vous vérifiez chaque correction comme un visiteur, vous lisez dans le journal les robots qui ont déjà frappé à la porte, et vous rédigez l'état de la surface d'attaque, avant et après. Premier atelier de la série sécurité web, sur la catégorie A02:2025 du Top 10 de l'OWASP : la mauvaise configuration. Tout se passe sur votre propre sandbox, une boutique fictive qui vous appartient le temps du lab.

    • No reviews yet
    • Beginner
    • 1 h 15 min
    • 500 credits
    • First lab free
  • BeginnerIn FrenchPath: Sécurité web : trouver et corriger les failles du Top 10 OWASP

    Sécurité web : comptes par défaut et stockage des mots de passe

    Abidjan, lundi matin. Akwaba Market a ouvert samedi, et cette nuit, plus de sept cents tentatives de connexion ont visé son espace gérante, venues d'une douzaine d'adresses. Didier, le client développeur, a prévenu : le manuel du logiciel de la boutique, en téléchargement libre, donne les identifiants installés par défaut. Vous allez lire l'attaque dans les journaux et vérifier, comme un inconnu, que le mot de passe du manuel ouvre bien la boutique. Vous découvrirez pourquoi des empreintes MD5 sans sel ne protègent rien, fermerez le compte générique, renouvellerez en PBKDF2 les mots de passe que Madame Koné et Fatou partageaient, et ferez ralentir par nginx les essais répétés. Une consigne de Madame Koné vous guide : personne d'autre qu'elle et Fatou ne doit entrer, et Fatou ne doit jamais être bloquée.

    • No reviews yet
    • Beginner
    • 1 h 20 min
    • 750 credits
    • First lab free
  • GeneralIn FrenchPath: Sécurité web : trouver et corriger les failles du Top 10 OWASP

    Sécurité web : contrôle d'accès et la facture du voisin

    Abidjan, mardi matin. Akwaba Market tourne depuis le week-end, et une cliente vient d'écrire à Madame Koné : hier soir, son fils regardait sa facture, a changé un chiffre dans l'adresse, et a vu celle d'un autre client, avec son nom, son téléphone et son adresse. Vous allez reproduire le problème sur des comptes de test, remonter à la ligne de code qui en est la cause (l'application sert une facture sans vérifier à qui elle appartient), corriger côté serveur, puis vérifier que chaque client ne voit plus que ses factures, que l'équipe les voit toujours toutes, et lire dans les journaux l'étendue de l'incident. C'est la faille la plus répandue des applications web, celle qu'un développeur débutant écrit sans y penser : confondre « être connecté » avec « avoir le droit de voir ceci ».

    • No reviews yet
    • Intermediate
    • 1 h 20 min
    • 1,000 credits
    • First lab free
  • GeneralIn FrenchPath: Sécurité web : trouver et corriger les failles du Top 10 OWASP

    Sécurité web : l'avis qui s'exécute et l'échappement

    Abidjan, mercredi matin. Les clients d'Akwaba Market laissent des avis sous les fiches produits. Depuis hier soir, la fiche du « Sac en pagne et cuir » affiche en titre « BOUTIQUE FERMÉE », et un avis renvoie vers un site concurrent. Personne n'a touché au code de la boutique. Vous allez lire ce que le serveur envoie vraiment au navigateur, remonter à la ligne qui insère le texte des avis sans précaution, ajouter l'échappement à l'affichage, poser une politique de sécurité du contenu (CSP) dans nginx en seconde barrière, puis masquer les deux avis en cause sans en supprimer aucun. C'est l'injection dans une page web (cross-site scripting), l'une des failles les plus répandues, et l'erreur classique d'un développeur qui affiche une saisie sans la traiter.

    • No reviews yet
    • Intermediate
    • 1 h 20 min
    • 1,000 credits
    • First lab free
  • BeginnerPath: AWS Cloud Practitioner: IAM, S3, EC2, DynamoDB, Lambda hands-on

    AWS IAM: users, groups and policies

    Baobab Market sells the work of forty Senegalese craftspeople online. The company has just moved to AWS, and the whole team signs in with the same account, the founder's, whose password circulates in the WhatsApp group. That account can do anything, including shutting the company down on AWS with one click. She asks you to put things in order: one identity per person, each with only what they need. This lab opens the preparation path for the AWS Certified Cloud Practitioner certification. It covers cloud concepts and above all security, the heaviest domain of the exam. You start with the map of AWS: Regions, Availability Zones, and why IAM is a global service. Then you find out who you are in the account, and what AWS protects versus what remains yours in the shared responsibility model. You learn to read an IAM policy and predict AWS's decision: explicit deny, allow, implicit deny. You organize the team into groups by job, create users capped by a permissions boundary, and trigger denials on purpose to learn to read an AccessDenied message. You then write your own policy, following the principle of least privilege, and prove in the policy simulator that everyone has what they need and nothing more. Everything happens in the real AWS console, opened in your browser, with no credit card and no account to create. The guide is illustrated with screenshots of the console, and the lab ends with a ten-question practice exam in the style of the certification.

    • No reviews yet
    • Beginner
    • 2 h 30 min
    • 1,000 credits
    • First lab free
  • BeginnerPath: AWS Cloud Practitioner: IAM, S3, EC2, DynamoDB, Lambda hands-on

    Amazon S3: versioning, archiving and static website hosting

    At Baobab Market, the suppliers' invoices sit in a mailbox and on a USB stick. The accountant deleted one by mistake last month, and the tax authorities can ask for any of them for ten years. The showcase website costs 15,000 CFA francs a month with a provider, for three pages that never change. Both find their answer in Amazon S3, AWS's object storage. This second lab of the preparation path for the AWS Certified Cloud Practitioner certification first has you tell apart object storage, disk and file share, then create a private, encrypted, versioned bucket for the invoices. You trigger a deletion, watch S3 place a marker instead of erasing, and get the invoice back. You then choose storage classes, from Standard to Glacier Deep Archive, and write the lifecycle rule that archives the invoices on its own. You share an invoice with the statutory auditor through a presigned URL, valid for ten minutes, without opening anything. Then you publish Baobab Market's website straight from S3: static website hosting, an error page, and the two steps that make a bucket public, lifting Block Public Access and writing a bucket policy. Along the way you understand why a website returns 403 Forbidden, and why a poorly watched public bucket is the leading cause of data leaks on AWS. Everything happens in the real AWS console, opened in your browser. The guide is illustrated with screenshots of the console, names every button, explains what the exam expects from each chapter, and ends with a ten-question practice exam.

    • No reviews yet
    • Beginner
    • 2 h 30 min
    • 1,000 credits
    • First lab free