Skip to content
Back to projects

Competition2025

Nuit de l'Info 2025

National one-night development competition. Main subject: "How can schools stand up to Big Tech?". 3 challenges completed: Chrome security extension, AI chatbot, and frustrating ergonomics game.

Duration
December 2025 (1 night)
Team
Golem Gang team, 7 students
My role
Developer: participation in all 3 challenges
TechnologiesTypeScriptHTML/CSSChrome Extension (Manifest V3)DeepSeek APIGitHub Pages
Nuit de l'Info 2025

Context

The Nuit de l'Info is an annual national competition that brings together computer science students from all over France for an entire night. The goal is to have students work together on IT challenges around current topics, using modern technologies.

The 2025 edition focused on the topic: "How can schools stand up to Big Tech?", inviting us to reflect on responsible digital and schools' digital independence. Alongside the main challenge, we participated in 3 related challenges proposed by event partners.

Our "Golem Gang" team consisted of 7 students. We organized quickly to deliver an interactive website and 3 complementary challenges in a single night. The site is developed in TypeScript and deployed on GitHub Pages.

Objectives

  1. 01Main challenge: Develop an interactive site about responsible digital with digital footprint simulator, knowledge quiz, and badge system
  2. 02"La Ligue des Extensions" challenge: Create SafeLinks, an open source Chrome extension (Manifest V3) that detects link safety before clicking
  3. 03"Simplifier pour mieux vivre" challenge: Design the Password Game, a deliberately frustrating input field with absurd rules, an aesthetic but deliberately complicated button to use
  4. 04Chatbot challenge "Chat'bruti": Develop a funny and unnecessarily philosophical AI chatbot, integrated into the site

Technical approach

The main site is developed in TypeScript and deployed on GitHub Pages. It offers an interactive platform about responsible digital with several modules:

  • Digital footprint simulator: Calculation of the user's digital impact with a badge system to unlock.
  • Knowledge quiz: Test on responsible digital and cybersecurity.
  • Password Game: A deliberately frustrating ergonomics game where the user must create a password following increasingly absurd rules, the button is aesthetic but deliberately complicated to use.

For the extension challenge, we developed SafeLinks, a Chrome Manifest V3 extension that analyzes link safety before the user clicks. The code is open source on GitHub.

For the chatbot challenge, we created Chat'bruti, an AI chatbot accessible via a button in the bottom right of the site, designed to be funny and unnecessarily philosophical in its responses.

Architecture

Multi-component project developed in one night:

  • Main site: TypeScript, HTML/CSS, deployed on GitHub Pages, interactive modules (simulator, quiz, Password Game)
  • SafeLinks Chrome Extension: Manifest V3, link safety detection
  • Chat'bruti Chatbot: AI integrated into the site, humorous and philosophical personality
  • Hosting: GitHub Pages

Skills developed

Development Under Pressure

Ability to produce quality code in very limited time (one night), make quick technical decisions, and deliver 3 complementary challenges in parallel.

Intensive Teamwork

Efficient coordination within a 7-person team, quick task distribution across 3 simultaneous challenges, constant communication and quick conflict resolution.

Chrome Extension (Manifest V3)

Development of an open source Chrome extension with the new Manifest V3 format for link safety detection.

Code highlights

SafeLinks Chrome extension: link safety analysis
typescript
1// SafeLinks - Chrome Extension Manifest V3
2// content-script.ts - Analyse des liens sur la page
3
4interface LinkAnalysis {
5  url: string;
6  isHTTPS: boolean;
7  domain: string;
8  isSuspicious: boolean;
9  reasons: string[];
10}
11
12function analyzeLinkSafety(url: string): LinkAnalysis {
13  const parsed = new URL(url);
14  const reasons: string[] = [];
15
16  // 1. Verifier HTTPS
17  const isHTTPS = parsed.protocol === 'https:';
18  if (!isHTTPS) reasons.push('Connection non securisee (HTTP)');
19
20  // 2. Detecter domaines suspects
21  const suspiciousPatterns = [
22    /\d{4,}/,           // IP-like domains
23    /-{2,}/,             // Multiple hyphens
24    /\.(xyz|tk|ml|ga)$/, // TLDs suspects
25    /login|signin|verify|secure/i  // Phishing keywords
26  ];
27
28  const isSuspicious = suspiciousPatterns.some(p => p.test(parsed.hostname));
29  if (isSuspicious) reasons.push('Domaine suspect detecte');
30
31  // 3. Verifier longueur URL excessive
32  if (url.length > 200) reasons.push('URL anormalement longue');
33
34  return {
35    url, isHTTPS, domain: parsed.hostname,
36    isSuspicious: !isHTTPS || isSuspicious,
37    reasons
38  };
39}
40
41// Injecter indicateurs visuels sur tous les liens
42document.querySelectorAll('a[href]').forEach(link => {
43  const analysis = analyzeLinkSafety(link.getAttribute('href')!);
44  if (analysis.isSuspicious) {
45    link.style.outline = '2px solid red';
46    link.title = 'SafeLinks: ' + analysis.reasons.join(', ');
47  }
48});

This Chrome extension (Manifest V3) analyzes link safety on every visited page. The content script inspects all links: HTTPS verification, suspicious domain detection (phishing patterns, dubious TLDs, IP-like), and abnormally long URLs. Dangerous links are highlighted in red with an explanatory tooltip.

Results & outcomes

The site and all 3 challenges were delivered functional by the end of the night:

  • Main site deployed on GitHub Pages with the digital footprint simulator, quiz, and badge system
  • SafeLinks: functional Chrome extension detecting link safety, open source code published on GitHub
  • Password Game: deliberately frustrating ergonomics game with an aesthetic but complicated button, the reverse ergonomics challenge is successful
  • Chat'bruti: humorous AI chatbot integrated into the site, accessible in the bottom right

This experience taught me the value of rapid prototyping and prioritizing essential features (MVP) when time is limited.

Reflection & learnings

The Nuit de l'Info 2025 was a unique experience that taught me a lot about project management under extreme conditions. In just one night, you need to identify priorities, efficiently distribute tasks among 7 people, and focus on a functional MVP for each challenge.

The specificity of this edition was the diversity of challenges: going from a Chrome extension to an AI chatbot to a frustrating ergonomics game requires great technical adaptability. It's this versatility and ability to deliver quickly that make this competition valuable.

Links

Next projectBackup Application