42 Beirut · Lebanon

HassanAlMoughabat

Software engineering student. I write C and C++ at the systems level, and build full-stack apps in TypeScript, Java and Go.

Project map. Libft at the center, 42 curriculum projects on rings around it, and my own projects on the outer ring.

42 core

42 is peer-graded and has no teachers. Every project is built from a subject PDF, has to pass the Norm, and gets defended line by line in front of other students. These start at libc and end with ft_transcendence, a full web platform built as a team.

Mosaic SaaS · ft_transcendence · team of 2 · tech lead

A multi-tenant SaaS platform for car-rental companies, live at mosaics.live. Each company gets its own workspace to run its fleet, branches, staff and counter. Customers book from every company on one shared marketplace, with an optional paid membership. Platform admins approve companies and customers before either can transact.

The hard part: one account model and one JWT scheme serving three kinds of user, a Postgres exclusion constraint that makes double-booking impossible at the database level, and bookings that update live over WebSockets. Stripe payments, Google and 42 sign-in, and English, French and Arabic (with right-to-left layout).

  • Spring Boot
  • Java 21
  • PostgreSQL
  • React
  • WebSockets
  • Stripe
  • Docker
  • Cloud Run
mosaics.live ↗

Minishell C

A bash-like Unix shell: a prompt, a tokenizer, $VAR expansion, pipes, < > >> redirections, heredocs, and the builtins echo cd pwd export unset env exit.

The hard part: matching bash's behavior on quoting, exit codes and signals (Ctrl-C, Ctrl-D, Ctrl-\) across child processes without leaking a single file descriptor.

  • fork / execve
  • pipes
  • signals
  • readline
MiniShell ↗

Philosophers C

The Dining Philosophers problem with one POSIX thread per philosopher and a mutex per fork, plus a monitor thread that detects death to the millisecond.

The hard part: no deadlocks, no data races, and no starvation, at any philosopher count.

  • pthreads
  • mutexes
  • timing
Philosophers_Project ↗

CPP Module 09 C++98

Three STL exercises: a Bitcoin price lookup built on std::map, a Reverse Polish Notation calculator on std::stack, and PmergeMe, an implementation of Ford-Johnson merge-insertion sort.

The hard part: keeping Ford-Johnson's comparison count under the theoretical bound, using Jacobsthal insertion order. There's a full write-up in the repo.

  • STL
  • algorithms
  • C++98
CPP09 ↗

cub3D C · in progress

A Wolfenstein-style raycaster built on MiniLibX. It turns a 2D map file into a first-person 3D view you can walk through.

  • raycasting
  • MiniLibX
  • graphics
Repository coming soon

ft_printf C

printf rebuilt from scratch with variadic arguments: %c %s %p %d %i %u %x %X %%.

  • stdarg
  • formatting
FT_printf ↗

get_next_line C

Reads a file descriptor one line at a time, using a static buffer that works with any BUFFER_SIZE, and never leaks memory.

  • file I/O
  • static state
  • memory
Get_Next_Line ↗

Libft C

The first 42 project: my own versions of libc's string, memory and conversion functions (split, itoa, memmove and more). Every later C project here builds on it.

  • libc
  • static library
LibFT ↗

Own projects

Built outside the curriculum: web apps, tools and an AI pipeline, using the stacks that companies actually ship on.

Cerebro TypeScript · full-stack

A mind-mapping app with an interactive canvas where you create and connect nodes, and attach notes and tasks to them. It can also suggest new ideas with AI.

Stack: React and ReactFlow on the front end, an Express API, and PostgreSQL through Drizzle ORM, all sharing one typed schema.

  • React
  • ReactFlow
  • Express
  • PostgreSQL
  • Drizzle
  • OpenAI
Cerebro ↗

Masroof مصروف · web + Android

A USD / LBP expense tracker built for Lebanon. It tracks spending across several wallets and saves that day's exchange rate with every transaction, in English and Arabic.

Stack: React 19 with TanStack on the web, a NestJS + Prisma + PostgreSQL API, and Capacitor to ship the same frontend as an Android app.

  • React
  • TanStack
  • NestJS
  • Prisma
  • PostgreSQL
  • Capacitor
Private repository

Sahtak Beldene TypeScript · in progress

A healthcare platform connecting patients, doctors and clinics. Patients find doctors, book appointments, and see their visits and prescriptions. Doctors manage their schedules, and clinics manage their doctors and consultation fees.

Stack: React and TypeScript with Zustand, React Hook Form and Zod, built mobile-first and shipped to iOS and Android with Capacitor.

  • React
  • TypeScript
  • Zustand
  • Zod
  • Capacitor
sahtak_bel_dene-frontend ↗

ArcVault triage Python · n8n · LLM

An AI intake pipeline. It reads raw customer messages, then classifies, enriches, routes and escalates each one as a structured JSON record.

Design choice: the LLM only classifies. Routing and escalation run as plain code, so every decision can be audited and tested.

  • n8n
  • LLM
  • Python
  • JSON mode
Arc-Vault-Assessment ↗

LaserCraft TypeScript

An e-commerce storefront for custom laser-cut products. Upload a PNG, and the page turns it into a silhouette you can position on the product.

  • React
  • Fabric.js
  • Tailwind
  • shadcn/ui
Laset_Cutt ↗

WiFi File Transfer Go

One Go binary with the web UI embedded. Run it and it prints its LAN address. Any phone or laptop on the network can then upload files, download them, grab a folder as a zip, or paste text.

  • Go
  • net/http
  • go:embed
  • vanilla JS
File_transfer ↗

42 Cyber Piscine Python

A two-week security bootcamp: an SQL injection scanner (Vaccine), a TOTP generator (ft_otp), a Tor hidden service (ft_onion), reverse engineering, and malware analysis exercises.

  • security
  • Python
  • Tor
  • TOTP
cybersecurity-pisicne-projects ↗