# julien-quinodoz/42_common_core architecture

> Architecture diagram of the GitHub repository julien-quinodoz/42_common_core, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-14). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/julien-quinodoz/42_common_core
- Repository: https://github.com/julien-quinodoz/42_common_core

## Overview

This repository is a portfolio of independent 42 Common Core projects, not one integrated application. Its user-to-result flows are project-specific: examples include parsing shell input before command execution, validating a game map before launching a graphical game, and accepting HTTP clients in WebServ. The graph preserves the README’s major project areas and the indexed core modules, while grouping related exercises to keep the portfolio legible. Many implementation files were not sampled, so unsourced internal call relationships are omitted; the broad project descriptions come from the README.

Main entry points: [`MiniShell/srcs/main/main.c`](https://github.com/julien-quinodoz/42_common_core/blob/main/MiniShell/srcs/main/main.c) (Minishell), [`WebServ/network_layer/inc/ServerManager.hpp`](https://github.com/julien-quinodoz/42_common_core/blob/main/WebServ/network_layer/inc/ServerManager.hpp) (HTTP server), [`Cpp/CPP_00/ex00/megaphone.cpp`](https://github.com/julien-quinodoz/42_common_core/blob/main/Cpp/CPP_00/ex00/megaphone.cpp) (Console exercises), [`Cpp/CPP_02/ex00/inc/Fixed.hpp`](https://github.com/julien-quinodoz/42_common_core/blob/main/Cpp/CPP_02/ex00/inc/Fixed.hpp) (Fixed-point arithmetic)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_cpp["C++ Modules"]
  node_cpp00["Console exercises<br/>[megaphone.cpp]"]
  node_cpp02["Fixed-point arithmetic<br/>[Fixed.hpp]"]
  node_cpp03["Trap inheritance<br/>[ClapTrap.hpp]"]
  node_cpp04["Animal polymorphism<br/>[Animal.hpp]"]
  node_cpp05["Forms and grades<br/>[Bureaucrat.hpp]"]
  node_cpp05forms["Abstract forms<br/>[AForm.hpp]"]
  node_cpp06["Scalar conversion"]
  node_cpp07["Templates and arrays<br/>[whatever.hpp]"]
  node_cpp08["Containers<br/>[easyfind.hpp]"]
  node_cpp09btc["Bitcoin exchange"]
  node_cpp09rpn["Reverse Polish notation<br/>[RPN.cpp]"]
  node_cpp09sort["Merge-insertion sort<br/>[PmergeMe.hpp]"]
end

subgraph group_interactive["Interactive Projects"]
  node_cub3d["Raycasting game<br/>[cub3d.c]"]
  node_so_long["2D game<br/>[main.c]"]
end

subgraph group_systems["Systems Projects"]
  node_shell["Minishell<br/>[main.c]"]
  node_shellparse["Shell parsing<br/>[lexer.c]"]
  node_shellexec["Command execution"]
  node_philosophers["Philosopher simulation<br/>[main.c]"]
  node_minitalk["Signal messaging<br/>[server.c]"]
end

subgraph group_algorithms["Algorithms and Utilities"]
  node_pushswap["Two-stack sorting<br/>[main.c]"]
  node_getnextline["Line reader<br/>[get_next_line.c]"]
end

subgraph group_web["Web Server"]
  node_webserv["HTTP server<br/>[ServerManager.hpp]"]
  node_webconfig["Server configuration<br/>[ConfigParser.hpp]"]
  node_webcgi["CGI handling<br/>[CgiHandler.cpp]"]
end

node_actor(("Learner / user"))

node_actor -.->|"uses exercises"| node_cpp00
node_actor -.->|"uses exercises"| node_cpp02
node_actor -.->|"uses exercises"| node_cpp03
node_actor -.->|"uses exercises"| node_cpp04
node_actor -.->|"uses exercises"| node_cpp05
node_actor -.->|"uses exercises"| node_cpp05forms
node_actor -.->|"uses exercises"| node_cpp06
node_actor -.->|"uses exercises"| node_cpp07
node_actor -.->|"uses exercises"| node_cpp08
node_actor -.->|"uses exercises"| node_cpp09btc
node_actor -.->|"uses exercises"| node_cpp09rpn
node_actor -.->|"uses exercises"| node_cpp09sort
node_actor -.->|"runs shell"| node_shell
node_shell -->|"parses input"| node_shellparse
node_shell -.->|"executes commands"| node_shellexec
node_actor -.->|"runs simulation"| node_philosophers
node_actor -.->|"exchanges signals"| node_minitalk
node_actor -->|"sorts values"| node_pushswap
node_actor -.->|"reads lines"| node_getnextline
node_actor -.->|"plays game"| node_cub3d
node_actor -->|"plays game"| node_so_long
node_actor -.->|"sends HTTP"| node_webserv
node_webserv -->|"loads configuration"| node_webconfig
node_webserv -.->|"handles CGI"| node_webcgi

click node_cpp00 "https://github.com/julien-quinodoz/42_common_core/blob/main/Cpp/CPP_00/ex00/megaphone.cpp"
click node_cpp02 "https://github.com/julien-quinodoz/42_common_core/blob/main/Cpp/CPP_02/ex00/inc/Fixed.hpp"
click node_cpp03 "https://github.com/julien-quinodoz/42_common_core/blob/main/Cpp/CPP_03/ex00/inc/ClapTrap.hpp"
click node_cpp04 "https://github.com/julien-quinodoz/42_common_core/blob/main/Cpp/CPP_04/ex00/inc/Animal.hpp"
click node_cpp05 "https://github.com/julien-quinodoz/42_common_core/blob/main/Cpp/CPP_05/ex00/inc/Bureaucrat.hpp"
click node_cpp05forms "https://github.com/julien-quinodoz/42_common_core/blob/main/Cpp/CPP_05/ex02/inc/AForm.hpp"
click node_cpp06 "https://github.com/julien-quinodoz/42_common_core/blob/main/Cpp/CPP_06/CPP_06/ex00/src/ScalarConverter.cpp"
click node_cpp07 "https://github.com/julien-quinodoz/42_common_core/blob/main/Cpp/CPP_07/ex00/inc/whatever.hpp"
click node_cpp08 "https://github.com/julien-quinodoz/42_common_core/blob/main/Cpp/CPP_08/ex00/inc/easyfind.hpp"
click node_cpp09btc "https://github.com/julien-quinodoz/42_common_core/blob/main/Cpp/CPP_09/ex00/src/BitcoinExchange.cpp"
click node_cpp09rpn "https://github.com/julien-quinodoz/42_common_core/blob/main/Cpp/CPP_09/ex01/src/RPN.cpp"
click node_cpp09sort "https://github.com/julien-quinodoz/42_common_core/blob/main/Cpp/CPP_09/ex02/inc/PmergeMe.hpp"
click node_shell "https://github.com/julien-quinodoz/42_common_core/blob/main/MiniShell/srcs/main/main.c"
click node_shellparse "https://github.com/julien-quinodoz/42_common_core/blob/main/MiniShell/srcs/parsing/lexer.c"
click node_shellexec "https://github.com/julien-quinodoz/42_common_core/blob/main/MiniShell/srcs/exec/command_processor.c"
click node_philosophers "https://github.com/julien-quinodoz/42_common_core/blob/main/Philosophers/main.c"
click node_minitalk "https://github.com/julien-quinodoz/42_common_core/blob/main/Minitalk/server.c"
click node_pushswap "https://github.com/julien-quinodoz/42_common_core/blob/main/Push_Swap/main.c"
click node_getnextline "https://github.com/julien-quinodoz/42_common_core/blob/main/Get-next-line/get_next_line.c"
click node_cub3d "https://github.com/julien-quinodoz/42_common_core/blob/main/Cub3D/CUB3D_Final_linux/src/cub3d.c"
click node_so_long "https://github.com/julien-quinodoz/42_common_core/blob/main/So_long/main.c"
click node_webserv "https://github.com/julien-quinodoz/42_common_core/blob/main/WebServ/network_layer/inc/ServerManager.hpp"
click node_webconfig "https://github.com/julien-quinodoz/42_common_core/blob/main/WebServ/http_integration/inc/ConfigParser.hpp"
click node_webcgi "https://github.com/julien-quinodoz/42_common_core/blob/main/WebServ/http_integration/src/CgiHandler.cpp"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_cpp00,node_cpp02,node_cpp03,node_cpp04,node_cpp05,node_cpp05forms,node_cpp06,node_cpp07,node_cpp08,node_cpp09btc,node_cpp09rpn,node_cpp09sort,node_actor toneBlue
class node_cub3d,node_so_long toneAmber
class node_shell,node_shellparse,node_shellexec,node_philosophers,node_minitalk toneMint
class node_pushswap,node_getnextline toneRose
class node_webserv,node_webconfig,node_webcgi toneIndigo
```

## Components

### C++ Modules

- [Console exercises](https://github.com/julien-quinodoz/42_common_core/blob/main/Cpp/CPP_00/ex00/megaphone.cpp): `Cpp/CPP_00/ex00/megaphone.cpp`
- [Fixed-point arithmetic](https://github.com/julien-quinodoz/42_common_core/blob/main/Cpp/CPP_02/ex00/inc/Fixed.hpp): `Cpp/CPP_02/ex00/inc/Fixed.hpp`
- [Trap inheritance](https://github.com/julien-quinodoz/42_common_core/blob/main/Cpp/CPP_03/ex00/inc/ClapTrap.hpp): `Cpp/CPP_03/ex00/inc/ClapTrap.hpp`
- [Animal polymorphism](https://github.com/julien-quinodoz/42_common_core/blob/main/Cpp/CPP_04/ex00/inc/Animal.hpp): `Cpp/CPP_04/ex00/inc/Animal.hpp`
- [Forms and grades](https://github.com/julien-quinodoz/42_common_core/blob/main/Cpp/CPP_05/ex00/inc/Bureaucrat.hpp): `Cpp/CPP_05/ex00/inc/Bureaucrat.hpp`
- [Abstract forms](https://github.com/julien-quinodoz/42_common_core/blob/main/Cpp/CPP_05/ex02/inc/AForm.hpp): `Cpp/CPP_05/ex02/inc/AForm.hpp`
- [Scalar conversion](https://github.com/julien-quinodoz/42_common_core/blob/main/Cpp/CPP_06/CPP_06/ex00/src/ScalarConverter.cpp): `Cpp/CPP_06/CPP_06/ex00/src/ScalarConverter.cpp`
- [Templates and arrays](https://github.com/julien-quinodoz/42_common_core/blob/main/Cpp/CPP_07/ex00/inc/whatever.hpp): `Cpp/CPP_07/ex00/inc/whatever.hpp`
- [Containers](https://github.com/julien-quinodoz/42_common_core/blob/main/Cpp/CPP_08/ex00/inc/easyfind.hpp): `Cpp/CPP_08/ex00/inc/easyfind.hpp`
- [Bitcoin exchange](https://github.com/julien-quinodoz/42_common_core/blob/main/Cpp/CPP_09/ex00/src/BitcoinExchange.cpp): `Cpp/CPP_09/ex00/src/BitcoinExchange.cpp`
- [Reverse Polish notation](https://github.com/julien-quinodoz/42_common_core/blob/main/Cpp/CPP_09/ex01/src/RPN.cpp): `Cpp/CPP_09/ex01/src/RPN.cpp`
- [Merge-insertion sort](https://github.com/julien-quinodoz/42_common_core/blob/main/Cpp/CPP_09/ex02/inc/PmergeMe.hpp): `Cpp/CPP_09/ex02/inc/PmergeMe.hpp`

### Interactive Projects

- [Raycasting game](https://github.com/julien-quinodoz/42_common_core/blob/main/Cub3D/CUB3D_Final_linux/src/cub3d.c): `Cub3D/CUB3D_Final_linux/src/cub3d.c`
- [2D game](https://github.com/julien-quinodoz/42_common_core/blob/main/So_long/main.c): `So_long/main.c`

### Systems Projects

- [Minishell](https://github.com/julien-quinodoz/42_common_core/blob/main/MiniShell/srcs/main/main.c): `MiniShell/srcs/main/main.c`
- [Shell parsing](https://github.com/julien-quinodoz/42_common_core/blob/main/MiniShell/srcs/parsing/lexer.c): `MiniShell/srcs/parsing/lexer.c`
- [Command execution](https://github.com/julien-quinodoz/42_common_core/blob/main/MiniShell/srcs/exec/command_processor.c): `MiniShell/srcs/exec/command_processor.c`
- [Philosopher simulation](https://github.com/julien-quinodoz/42_common_core/blob/main/Philosophers/main.c): `Philosophers/main.c`
- [Signal messaging](https://github.com/julien-quinodoz/42_common_core/blob/main/Minitalk/server.c): `Minitalk/server.c`

### Algorithms and Utilities

- [Two-stack sorting](https://github.com/julien-quinodoz/42_common_core/blob/main/Push_Swap/main.c): `Push_Swap/main.c`
- [Line reader](https://github.com/julien-quinodoz/42_common_core/blob/main/Get-next-line/get_next_line.c): `Get-next-line/get_next_line.c`

### Web Server

- [HTTP server](https://github.com/julien-quinodoz/42_common_core/blob/main/WebServ/network_layer/inc/ServerManager.hpp): `WebServ/network_layer/inc/ServerManager.hpp`
- [Server configuration](https://github.com/julien-quinodoz/42_common_core/blob/main/WebServ/http_integration/inc/ConfigParser.hpp): `WebServ/http_integration/inc/ConfigParser.hpp`
- [CGI handling](https://github.com/julien-quinodoz/42_common_core/blob/main/WebServ/http_integration/src/CgiHandler.cpp): `WebServ/http_integration/src/CgiHandler.cpp`

### Other components

- **Learner / user**

## Connections

- Learner / user → Console exercises: uses exercises (evidence: `README.md`)
- Learner / user → Fixed-point arithmetic: uses exercises (evidence: `README.md`)
- Learner / user → Trap inheritance: uses exercises (evidence: `README.md`)
- Learner / user → Animal polymorphism: uses exercises (evidence: `README.md`)
- Learner / user → Forms and grades: uses exercises (evidence: `README.md`)
- Learner / user → Abstract forms: uses exercises (evidence: `README.md`)
- Learner / user → Scalar conversion: uses exercises (evidence: `README.md`)
- Learner / user → Templates and arrays: uses exercises (evidence: `README.md`)
- Learner / user → Containers: uses exercises (evidence: `README.md`)
- Learner / user → Bitcoin exchange: uses exercises (evidence: `README.md`)
- Learner / user → Reverse Polish notation: uses exercises (evidence: `README.md`)
- Learner / user → Merge-insertion sort: uses exercises (evidence: `README.md`)
- Learner / user → Minishell: runs shell (evidence: `README.md`)
- Minishell → Shell parsing: parses input (evidence: `MiniShell/srcs/main/main.c`)
- Minishell → Command execution: executes commands
- Learner / user → Philosopher simulation: runs simulation (evidence: `README.md`)
- Learner / user → Signal messaging: exchanges signals (evidence: `README.md`)
- Learner / user → Two-stack sorting: sorts values (evidence: `Push_Swap/main.c`)
- Learner / user → Line reader: reads lines (evidence: `README.md`)
- Learner / user → Raycasting game: plays game (evidence: `README.md`)
- Learner / user → 2D game: plays game (evidence: `So_long/main.c`)
- Learner / user → HTTP server: sends HTTP (evidence: `README.md`)
- HTTP server → Server configuration: loads configuration (evidence: `WebServ/network_layer/inc/ServerManager.hpp`)
- HTTP server → CGI handling: handles CGI
