Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
350 commits
Select commit Hold shift + click to select a range
eb5d2b7
fix: apply Docker host-level forwarding and NAT bypass rules dynamica…
Derssa Jun 18, 2026
b501ded
fix: force host NAT bypass rules to the top of POSTROUTING using dele…
Derssa Jun 18, 2026
5b08d4a
fix: normalize port string ALL casing in networkService and networkPr…
Derssa Jun 18, 2026
9f8210b
fix: resolve routing table bypass, host NAT order, and DNS resolution…
Derssa Jun 18, 2026
cb72b96
Merge pull request #9 from Derssa/dev
Derssa Jun 18, 2026
a25d159
feat: add environment variable configuration via dotenv
Derssa Jun 19, 2026
3613221
feat: configure Jest testing suite and write automated unit & integra…
Derssa Jun 19, 2026
bad9e15
feat: setup GitHub Actions CI/CD workflows and Pull Request templates
Derssa Jun 19, 2026
c9ceae1
feat: enable custom DOCKER_SOCKET override via environment variables
Derssa Jun 19, 2026
26b8d06
fix: resolve empty catch block eslint errors across backend domain files
Derssa Jun 19, 2026
ca5d357
fix: resolve all ESLint warnings for unused variables and catch param…
Derssa Jun 19, 2026
ffec30c
Merge pull request #10 from Derssa/dev
Derssa Jun 19, 2026
4a1fb46
chore: remove empty docker-compose.yml and set CI to trigger on push …
Derssa Jun 19, 2026
cd6323d
chore: restore pull_request trigger to CI workflow to match industry …
Derssa Jun 19, 2026
5e4f70b
Merge pull request #11 from Derssa/dev
Derssa Jun 19, 2026
3055fb1
feat: implement visual & functional NAT Gateway node with dynamic pri…
Derssa Jun 19, 2026
3c94a8e
feat: separate NAT gateway node styling into dedicated NatNode component
Derssa Jun 19, 2026
117464b
feat: customize NAT and Ubuntu container creation titles and default …
Derssa Jun 19, 2026
91f7e68
fix: run NAT containers with Privileged mode and sysctl ip_forward en…
Derssa Jun 19, 2026
66776ee
fix: reconnect NAT gateway container to private subnet if IP mismatch…
Derssa Jun 19, 2026
9c2d196
fix: dynamically resolve user containerName from Docker list in docke…
Derssa Jun 19, 2026
9772c92
feat: replace NAT terminal with managed cloud details panel & student…
Derssa Jun 19, 2026
60430dc
fix: replace raw markdown double asterisks in NatGatewayModal with HT…
Derssa Jun 19, 2026
712dc91
feat: default SG rules to ALL and replace routing targets with dropdo…
Derssa Jun 19, 2026
377ed35
feat: enforce zero-trust inbound deny all on NAT and remove input han…
Derssa Jun 19, 2026
d63dd39
fix: restrict NAT forwarding and client internet access globally if I…
Derssa Jun 19, 2026
ba35350
fix: resolve NAT connection conflicts and route VPC local CIDR
Derssa Jun 19, 2026
a98acc6
fix: resolve failed to set gateway file exists conflict on NAT connec…
Derssa Jun 19, 2026
cd88551
feat: add save changes loader and disable close modal during saving i…
Derssa Jun 19, 2026
a5db138
feat: update traffic simulator to check for routing table local route…
Derssa Jun 19, 2026
11d9aa8
Merge pull request #12 from Derssa/dev
Derssa Jun 19, 2026
722399a
feat: Add Application Load Balancer node type with targets and algori…
Derssa Jun 19, 2026
601e9e5
fix: Add source/target handle IDs and Nginx fallback upstream to prev…
Derssa Jun 19, 2026
1c99473
fix: Override entrypoint and command to dynamically generate nginx.co…
Derssa Jun 19, 2026
def1709
feat: Write default valid nginx.conf during Dockerfile build and reve…
Derssa Jun 19, 2026
339827b
chore: Clean up temporary Dockerfile.nginx after successful image bui…
Derssa Jun 19, 2026
5f5ed71
style: Use theme color variables for LoadBalancerModal title and clos…
Derssa Jun 19, 2026
2433907
feat: Implement load balancer target port routing and simulated Publi…
Derssa Jun 19, 2026
fe953b6
fix: Keep loadbalancer and public subnet ubuntu nodes connected to ak…
Derssa Jun 19, 2026
dca07fd
fix: Prioritize custom subnet IPs in ipMap resolution for correct sec…
Derssa Jun 19, 2026
c81c022
feat: implement load balancer custom target ports, public subnet ubun…
Derssa Jun 19, 2026
2c9a91e
feat: restrict host port mappings only to load balancers and servers …
Derssa Jun 19, 2026
d2a63e9
feat: prevent local host port mapping for NAT gateway nodes
Derssa Jun 20, 2026
d762a58
Merge pull request #13 from Derssa/dev
Derssa Jun 20, 2026
1ec0a56
feat(backend): add commitContainer, asgController, asgService, and dy…
Derssa Jun 20, 2026
ebb38ea
feat(frontend): implement ASG node, ASG configuration modal, and path…
Derssa Jun 20, 2026
ef7d258
fix(canvas): support ASG subnet dropping, replace drag-and-drop templ…
Derssa Jun 20, 2026
34c45cd
style(frontend): format ASG simulation live grid as flex wrap with 4 …
Derssa Jun 20, 2026
b8a46a6
feat(frontend): shorten replica card name text, add automated traffic…
Derssa Jun 20, 2026
a7244e5
feat(frontend): accelerate scaling simulation checking frequency to 1…
Derssa Jun 20, 2026
20c2f4c
fix(simulation): auto-scale down and kill instances on simulation sto…
Derssa Jun 20, 2026
6c26af2
fix(frontend): avoid mixing shorthand border property with borderBott…
Derssa Jun 20, 2026
0b91509
feat(frontend): simulate realistic CPU load as a function of requests…
Derssa Jun 20, 2026
ed3510a
fix(simulation): restrict automatic scaling-in from dropping below us…
Derssa Jun 20, 2026
03f8c8b
fix(frontend): display VPC subnet 10.x.x.x IP address for parent temp…
Derssa Jun 20, 2026
403bd8f
feat: resolve ASG IP resolution, combine Save & Deploy, and fix failu…
Derssa Jun 20, 2026
e0e522b
feat(network): strip path prefix in load balancer path-based routing …
Derssa Jun 20, 2026
f8bd05d
feat(asg): inherit SG rules from template node and remove ASG connect…
Derssa Jun 20, 2026
bbcc260
fix(network): ignore route deletion error inside container when route…
Derssa Jun 20, 2026
342aab5
fix(network): resolve security groups correctly for dynamic ASG repli…
Derssa Jun 20, 2026
01aa3c3
feat(network): route ASG LB targets directly to parent template conta…
Derssa Jun 20, 2026
38338f2
feat(frontend): exclude dynamic ASG replica instances from load balan…
Derssa Jun 20, 2026
323edd2
feat: prevent template node deletion if used by active ASG, disable t…
Derssa Jun 20, 2026
3f7cb49
fix(lint): resolve no-useless-assignment lint errors in frontend and …
Derssa Jun 20, 2026
4ee9b9a
Merge pull request #14 from Derssa/dev
Derssa Jun 20, 2026
66575ee
Create LICENSE
Derssa Jun 20, 2026
3aec703
Create CODEOWNERS
Derssa Jun 21, 2026
fca3f8e
Merge pull request #15 from Derssa/dev
Derssa Jun 21, 2026
49cda20
docs: align README.md with implemented project features
Derssa Jun 21, 2026
b7c207a
Merge branch 'main' into youssef/updating-README
Derssa Jun 21, 2026
059e6ed
Merge pull request #16 from Derssa/youssef/updating-README
Derssa Jun 21, 2026
5dc89d6
Commit 1: Remove MySQL nodes, configurations, initializers, routes, a…
Derssa Jun 21, 2026
5ad40e6
Fix: resolve TypeScript compiler error with typeStr assignment in con…
Derssa Jun 21, 2026
0c81f78
Optimize: clean up package lists and APT cache in MongoDB image build…
Derssa Jun 21, 2026
ed74aeb
Commit 2: Replace brand logos with functional icons and apply slate/c…
Derssa Jun 21, 2026
7d15daa
Fix: add iproute2 package installation to MongoDB custom image for co…
Derssa Jun 21, 2026
163e74d
Commit 2.1: Add NoSqlNode component representing MongoDB container on…
Derssa Jun 21, 2026
bbc18cd
Commit 3 & 4: Implement SQL and NoSQL database modals with Details & …
Derssa Jun 21, 2026
3334065
fix(frontend): map sql node type to PostgresNode and support sql cont…
Derssa Jun 21, 2026
19fdc29
fix(backend): restore mongod ENTRYPOINT and CMD when committing custo…
Derssa Jun 21, 2026
949251d
chore(backend): bump lightweight custom MongoDB image tag to v2 to fo…
Derssa Jun 21, 2026
cdbac71
chore(backend): revert lightweight custom MongoDB tag back to v1
Derssa Jun 21, 2026
07bc988
style(frontend): rename Ubuntu Server node to Server and change its i…
Derssa Jun 21, 2026
4c893ab
feat(backend): implement automated seeder for Postgres and MongoDB ex…
Derssa Jun 21, 2026
1b9a293
feat(frontend): upgrade SQL simulation with table partitioning, anima…
Derssa Jun 21, 2026
ed6b33c
feat(frontend): upgrade NoSQL simulation with replica sets, query par…
Derssa Jun 21, 2026
a6b7604
feat(frontend): implement automatic failover, high-visibility connect…
Derssa Jun 21, 2026
4b2e186
feat(frontend): implement client round-trip read request flows and pa…
Derssa Jun 21, 2026
46d5c7a
fix(frontend): resolve lingering green replication dots and fix missi…
Derssa Jun 21, 2026
5371ac8
feat(frontend): implement visual partition sub-table badges under Pos…
Derssa Jun 21, 2026
a955d21
feat(frontend): simulate vertical limits scaling client-side and add …
Derssa Jun 21, 2026
01b68d7
feat: simulate database vertical resource limit changes offline with …
Derssa Jun 21, 2026
4ce202b
fix(lint): resolve useless assignments lint errors in database modals
Derssa Jun 21, 2026
b0dd397
fix(lint): resolve no-useless-assignment and preserve-caught-error in…
Derssa Jun 21, 2026
bf4d4c7
Merge pull request #17 from Derssa/dev
Derssa Jun 21, 2026
36167a7
feat: show loading spinner overlay on project card when deleting a pr…
Derssa Jun 22, 2026
108d1da
feat: render logo in circular container with white background to stan…
Derssa Jun 22, 2026
562410c
feat: use the logo as browser tab favicon and update window page title
Derssa Jun 22, 2026
4b34c63
feat: replace favicon with circular white background image
Derssa Jun 22, 2026
50dffd0
feat: construct pixel-perfect centered circular favicon with fully tr…
Derssa Jun 22, 2026
88ad7f6
chore: change default ports to 23232 for frontend and 23233 for backend
Derssa Jun 22, 2026
3c082e4
chore: update default backend port to 23233 in env examples
Derssa Jun 22, 2026
5be0a35
fix: replace hardcoded Socket.io port in TerminalModal with global AP…
Derssa Jun 22, 2026
376bfb6
feat: implement CLI supervisor bin/cli.js for one-command installatio…
Derssa Jun 22, 2026
138eec3
fix(cli): replace open dependency with native exec to resolve CJS/ESM…
Derssa Jun 22, 2026
8e74666
feat: implement dynamic port resolution and rename project to Torollo
Derssa Jun 22, 2026
ca99966
fix(cli): implement dual loopback interface check in port scanner
Derssa Jun 22, 2026
5af6908
fix(cli): resolve port collision and cannot GET / bugs on startup
Derssa Jun 22, 2026
9aeb2cf
Merge pull request #18 from Derssa/dev
Derssa Jun 22, 2026
720765f
feat(cli): prepare for npx distribution with serve and hoisted backen…
Derssa Jun 23, 2026
1585321
chore: add .npmignores and bump version to 1.0.1 for npm publish
Derssa Jun 23, 2026
0d844c9
feat(ui): make app version badge dynamic based on root package.json
Derssa Jun 23, 2026
4d73678
fix(frontend): force local API base to 23233 in development mode to b…
Derssa Jun 23, 2026
f94c4e3
refactor(frontend): implement BaseNode template for all service nodes…
Derssa Jun 23, 2026
f00d1ff
fix(frontend): restore one line of basic info (IP/Port) as subtitle o…
Derssa Jun 23, 2026
4b56501
style(frontend): format BaseNode subtitle as a styles.details rectang…
Derssa Jun 23, 2026
390446b
changing version number
Derssa Jun 23, 2026
9cca9fb
fix(frontend): update simulator logic to correctly handle ICMP protoc…
Derssa Jun 23, 2026
70df4e4
fix(backend): persist docker subnets and move projects db to global t…
Derssa Jun 23, 2026
b7cf70c
chore(cli): replace concurrently with native spawn to fix Ctrl+C log …
Derssa Jun 23, 2026
8ade858
fix(cli): remove unused concurrently import
Derssa Jun 23, 2026
b50eae2
fix(cli): resolve spawn EINVAL on Windows by invoking serve directly …
Derssa Jun 23, 2026
decb9b1
chore: bump version to 1.0.3
Derssa Jun 23, 2026
c52e178
fix(network): prevent iptables race conditions by queuing applyPolicy…
Derssa Jun 23, 2026
2710f3e
chore: explicitly add README.md to package.json files array
Derssa Jun 23, 2026
f5fd60a
chore: bump version to 1.0.4 for fresh NPM publish
Derssa Jun 23, 2026
0b201fe
docs: update supported nodes list and add coming soon section to README
Derssa Jun 23, 2026
e73cf72
docs: comprehensively rewrite README with detailed features and reord…
Derssa Jun 23, 2026
907cf44
Merge branch 'main' of https://github.com/Derssa/akal into dev
Derssa Jun 23, 2026
9413334
Merge pull request #19 from Derssa/dev
Derssa Jun 23, 2026
950dc8b
Update README.md
Derssa Jun 23, 2026
82a7d30
chore: add keywords and repo metadata to package.json for better npm …
Derssa Jun 23, 2026
a6984f6
Merge branch 'main' of https://github.com/Derssa/torollo into dev
Derssa Jun 23, 2026
cf70d22
chore: bump version to 1.0.6 to publish updated README image
Derssa Jun 23, 2026
064446f
fix(docs): convert HTML img tag to Markdown syntax for NPM renderer c…
Derssa Jun 23, 2026
c7fd872
fix(docs): append #.png to GitHub image URL to bypass NPM camo extens…
Derssa Jun 23, 2026
b074684
chore: embed image locally in npm package to guarantee display
Derssa Jun 23, 2026
f29fe21
fix(docs): use absolute raw github URL for README image to bypass NPM…
Derssa Jun 23, 2026
fbf8d25
fix(docs): revert to relative image path for private repository support
Derssa Jun 23, 2026
64f597b
fix(docs): use absolute unpkg URL for README image to bypass GitHub b…
Derssa Jun 23, 2026
1ffa084
Merge pull request #20 from Derssa/dev
Derssa Jun 23, 2026
228b6e1
chore: setup react-i18next infrastructure with FR default
Derssa Jun 24, 2026
54ff26b
feat(i18n): extract hardcoded UI strings into FR and EN json dictiona…
Derssa Jun 24, 2026
535d06b
feat(i18n): replace static UI text with translation hooks and add lan…
Derssa Jun 24, 2026
123ebcc
feat(i18n): update translation dictionaries for en and fr
Derssa Jun 24, 2026
a1dc707
feat(i18n): translate VPC, Subnet, and Security Group modals
Derssa Jun 24, 2026
66ed473
feat(i18n): translate Postgres and NoSQL database modals
Derssa Jun 24, 2026
cf1099e
feat(i18n): translate Load Balancer, ASG, and NAT Gateway modals
Derssa Jun 24, 2026
5924440
feat(i18n): translate Terminal components and cheat sheet
Derssa Jun 24, 2026
1055ac2
feat(i18n): translate Projects list page and add confirm delete message
Derssa Jun 24, 2026
93cf1b5
docs: add dynamic NPM version badge and tech stack section to README
Derssa Jun 24, 2026
1cf7870
chore(release): bump version to 1.0.13
Derssa Jun 24, 2026
2071b12
Merge pull request #21 from Derssa/dev
Derssa Jun 24, 2026
f077494
chore: fix security vulnerabilities in backend dependencies via npm a…
Derssa Jun 24, 2026
b51a333
chore: override js-yaml version to completely clear npm audit warnings
Derssa Jun 24, 2026
96ef706
docs: customize version badge label in README
Derssa Jun 24, 2026
67b84ae
chore(release): bump version to 1.0.14
Derssa Jun 24, 2026
9faf2d4
Merge pull request #22 from Derssa/dev
Derssa Jun 24, 2026
9f4c41b
docs: use static Node.js version badge in README
Derssa Jun 24, 2026
e3d3272
docs: use static Node.js version badge in README (#23)
Derssa Jun 24, 2026
bff9fb4
feat: restrict node naming to max 10 chars, letters, numbers, and hyp…
Derssa Jun 25, 2026
22a0487
chore: replace cli emojis with professional text markers
Derssa Jun 25, 2026
a76226b
docs: replace emojis with professional text brackets in README
Derssa Jun 25, 2026
2658de4
feat: increase node name max length to 20 and gracefully truncate tex…
Derssa Jun 25, 2026
2e69fee
feat: add loading state to node creation modal
Derssa Jun 25, 2026
4e8afb5
feat: close load balancer modal automatically on successful save
Derssa Jun 25, 2026
4cd6b49
fix: delay closing creation modal until async creation finishes to sh…
Derssa Jun 25, 2026
21dbe7f
feat: add spinning loading icon to modal submit button
Derssa Jun 25, 2026
43d4191
feat: add spinning loading icon to node deletion modal
Derssa Jun 25, 2026
02cd0d4
1.0.15
Derssa Jun 25, 2026
8d475e0
Merge pull request #24 from Derssa/dev
Derssa Jun 25, 2026
f2d34e4
feat: add ansi colors and deploy emoji to CLI
Derssa Jun 25, 2026
a72436f
docs: clean up heading formatting in README
Derssa Jun 25, 2026
d618d1d
fix: cascade delete security group rules and truncate UI for long sou…
Derssa Jun 25, 2026
55af760
chore(release): bump version to 1.0.16
Derssa Jun 25, 2026
42c6a83
Merge pull request #25 from Derssa/dev
Derssa Jun 25, 2026
3aafb44
fix(network): resolve vpcCidr dynamically to handle shifted Docker su…
Derssa Jun 26, 2026
e47d11d
feat(cli): verify Docker daemon is running rather than just installed
Derssa Jun 26, 2026
fd3cdba
chore(release): 1.0.17
Derssa Jun 26, 2026
97eedb3
Merge pull request #26 from Derssa/dev
Derssa Jun 26, 2026
ee26673
Create CODE_OF_CONDUCT.md
Derssa Jun 27, 2026
04bceb2
Create CONTRIBUTING.md
Derssa Jun 27, 2026
fa1eb01
Create SECURITY.md
Derssa Jun 27, 2026
95b92be
Update issue templates
Derssa Jun 27, 2026
09a0550
Merge pull request #29 from Derssa/Derssa-patch-1
Derssa Jun 27, 2026
6fd64b5
Update README.md
Derssa Jun 29, 2026
133fccd
Update README.md
Derssa Jun 29, 2026
c16d847
feat: make English default language and add GitHub issue templates & …
Derssa Jun 29, 2026
2b4c568
fix: prevent horizontal scroll in VPC simulator modal by truncating l…
Derssa Jun 29, 2026
6fbe044
chore: release version 1.0.18
Derssa Jun 29, 2026
c1334c9
Merge pull request #32 from Derssa/dev
Derssa Jun 29, 2026
b4ade97
Feat/redis node (#34)
OthmaneZ05 Jun 30, 2026
f3e01ba
docs: update README to include Redis under supported nodes
Derssa Jun 30, 2026
987f014
1.1.0
Derssa Jun 30, 2026
412b490
Polished PR/issues templates, and ci.yml (#35)
OthmaneZ05 Jun 30, 2026
7ea69de
Fix/redis iptables (#39)
Derssa Jun 30, 2026
ccf534e
feat: add /health readiness probe (#37)
OthmaneZ05 Jun 30, 2026
e1df486
docs: guide on how to add a node
OthmaneZ05 Jul 3, 2026
3609081
Update CODEOWNERS
Derssa Jul 3, 2026
972157b
Merge pull request #41 from Derssa/othmane/docs
OthmaneZ05 Jul 3, 2026
af1d3a0
feat: add rename support for canvas nodes (#42)
NureniJamiu Jul 6, 2026
d36f220
style: truncate node titles to 6ch to prevent header overflow
Derssa Jul 6, 2026
fd5c72e
style: reduce gap inside title container to 4px
Derssa Jul 6, 2026
34845e0
fix(backend): resolve unused projectId variable lint warning
Derssa Jul 6, 2026
e8ba3ac
1.1.2
Derssa Jul 6, 2026
fe07069
feat: add static marketing website (landing + pricing)
OthmaneZ05 Jul 6, 2026
724cd97
Added CLA
OthmaneZ05 Jul 7, 2026
0d0469f
fix(ci): store CLA signatures on a dedicated branch (#47)
OthmaneZ05 Jul 8, 2026
6f4d5c2
extract container layer into ContainerProvider with declarative node-…
OthmaneZ05 Jul 9, 2026
fd43d9f
1.1.3
Derssa Jul 9, 2026
7160b18
feat: add RabbitMQ message broker node type with security policy enfo…
NureniJamiu Jul 9, 2026
bb093a7
fix: resolve React Flow drag event typing build errors
NureniJamiu Jul 9, 2026
4760852
fix: resolve explicit-any lint warnings in CanvasPage
NureniJamiu Jul 9, 2026
87830f0
Othmane/frontend test safety (#48)
OthmaneZ05 Jul 9, 2026
aced3fd
1.1.4
Derssa Jul 9, 2026
2e3e01d
Othmane/h3 docker error surfacing (#50)
OthmaneZ05 Jul 10, 2026
533ece2
1.1.5
Derssa Jul 10, 2026
677e1e3
Othmane/canvas position id keying (#51)
OthmaneZ05 Jul 11, 2026
c944bc9
test: document and verify iptables/iproute2 requirement in node image…
OthmaneZ05 Jul 11, 2026
80c0b8c
feat: add project name uniqueness validation and inline modal errors
Derssa Jul 11, 2026
2c2f67a
feat: persist shifted CIDRs and cleanup orphaned networks
Derssa Jul 11, 2026
2ae73cc
fix: resolve 172.x IP flash and sync shifted CIDRs to Canvas UI
Derssa Jul 11, 2026
0923aee
fix: skip orphaned network cleanup when projects.json is unreadable
OthmaneZ05 Jul 13, 2026
d4e37d1
fix: persist shifted CIDRs as a correction patch to avoid clobbering …
OthmaneZ05 Jul 13, 2026
fcbf7f5
fix: derive new subnet CIDR and local route from shifted VPC CIDR
OthmaneZ05 Jul 13, 2026
e1502f1
fix: surface failed network config save responses
OthmaneZ05 Jul 13, 2026
bff4720
Merge pull request #53 from Derssa/feature/cidr-persistence-and-valid…
OthmaneZ05 Jul 13, 2026
ff70cbd
1.1.6
Derssa Jul 13, 2026
ff1200a
v1 roadmap format (#54)
OthmaneZ05 Jul 14, 2026
3ccfeb4
refactor(frontend): split the CanvasPage god component (#55)
OthmaneZ05 Jul 14, 2026
9a49d1e
refactor(frontend): deduplicate the Postgres/NoSql/Redis inspector mo…
OthmaneZ05 Jul 14, 2026
d361eb4
refactor(backend): split dockerNetworkProvider into focused modules (…
OthmaneZ05 Jul 14, 2026
ee0055a
feat(learning): validator execution engine and learning API (#58)
OthmaneZ05 Jul 14, 2026
8b344b8
Merge upstream/main and resolve conflicts with rabbitmq node feature
NureniJamiu Jul 14, 2026
8fff0d2
fix: resolve explicit-any lint warning in InputModal
NureniJamiu Jul 14, 2026
c056c82
feat(learning): the 8 base validators for the roadmap engine (#59)
OthmaneZ05 Jul 15, 2026
6102a6b
test(learning): integration tests for the validation engine against r…
OthmaneZ05 Jul 15, 2026
fc1b6ca
feat(learning): roadmap player side panel (#61)
OthmaneZ05 Jul 15, 2026
e3c4b01
Feat/http validator and links (#62)
Derssa Jul 15, 2026
10f2137
docs: document http_get_contains validator and public localhost UI li…
Derssa Jul 15, 2026
1db7d63
1.2.0
Derssa Jul 15, 2026
dd3f63a
docs: add Interactive Roadmaps & Learning Paths section to README.md
Derssa Jul 15, 2026
8c49468
feat(learning): pedagogical validation feedback with pass/fail/error …
OthmaneZ05 Jul 15, 2026
eee8181
Merge remote-tracking branch 'upstream/main' into feat/add-rabbitmq-node
NureniJamiu Jul 16, 2026
2824698
fix: resolve explicit-any lint warning in RoadmapPlayer
NureniJamiu Jul 16, 2026
6227ddc
fix: add iptables fallback build for RabbitMQ image and fix security …
NureniJamiu Jul 16, 2026
a365fcd
fix: make image requirements robust and silence iptables cleanup errors
NureniJamiu Jul 16, 2026
34920f1
test: fix docker network provider mock assertions and integrate custo…
NureniJamiu Jul 16, 2026
050680e
test: fix frontend test environment issues on Node.js v25+ by disabli…
NureniJamiu Jul 16, 2026
b131ef2
fix: guard --no-webstorage execArgv behind Node 25+ version check
NureniJamiu Jul 16, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
* @derssa @othmaneZ05
45 changes: 45 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
---
name: Bug report
about: Create a report to help us improve
title: "[BUG]"
labels: bug
assignees: Derssa

---

**Describe the bug**

<!--
A clear and concise description of what the bug is.
-->

**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Create a node '....'
3. Run command '....'
4. See error

**Expected behavior**
A clear and concise description of what you expected to happen.

**Logs**
<!--
Paste relevant terminal output or stack traces here.
-->

**Screenshots**
<!--
If applicable, add screenshots to help explain your problem.
-->

**Environment (please complete the following information):**
- OS: [e.g. Windows 11, Ubuntu 22.04]
- Node.js Version [e.g. v18.20.0]
- Docker Version [e.g. 4.25.0]
- Browser [e.g. Chrome, Firefox]

**Additional context**
<!--
Add any other context about the problem here (e.g., terminal error logs).
-->
20 changes: 20 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
---
name: Feature request
about: Suggest an idea for this project
title: "[FEATURE]"
labels: enhancement
assignees: Derssa

---

**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

**Describe the solution you'd like**
A clear and concise description of what you want to happen.

**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.

**Additional context**
Add any other context or screenshots about the feature request here.
30 changes: 30 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
## Summary of Changes

<!--
Provide a brief summary of what this PR introduces and the problem it solves.
-->

## Types of Changes

- [ ] New feature / node type addition
- [ ] Bug fix (non-breaking change resolving an issue)
- [ ] Refactoring / structural cleanup
- [ ] Documentation update

## Verification & Testing
### Automated Checks
- [ ] Run `npm run lint` successfully with no errors
- [ ] Run `npm run build` successfully with no compilation errors
- [ ] Run `npm test` successfully (all tests pass)

### Manual Verification

<!--
Describe how you tested this change locally (e.g. "Simulated network config, ran ping node-2 from terminal modal").
-->

## Checklist

- [ ] My code follows the repository's code style and lint standards
- [ ] I have updated the documentation or instructions if necessary
- [ ] All unit and integration tests are passing
66 changes: 66 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
name: CI

on:
push:
branches: [ main, dev ]
pull_request:
branches: [ main, dev ]

jobs:
build-and-test:
runs-on: ubuntu-latest
defaults:
run:
working-directory: backend

steps:
- name: Checkout Code
uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
cache-dependency-path: backend/package-lock.json

- name: Install Dependencies
run: npm ci

- name: Run Linter
run: npm run lint

- name: Compile Code
run: npm run build

- name: Run Tests
run: npm test

frontend-build-and-test:
runs-on: ubuntu-latest
defaults:
run:
working-directory: frontend

steps:
- name: Checkout Code
uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
cache-dependency-path: frontend/package-lock.json

- name: Install Dependencies
run: npm ci

- name: Run Linter
run: npm run lint

- name: Compile Code
run: npm run build

- name: Run Tests
run: npm test
55 changes: 55 additions & 0 deletions .github/workflows/integration.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
# Runs the backend's *.itest.ts suites against a real Docker daemon:
# - node image requirements (iptables/iproute2 — docs/adding-a-node.md#required-tooling-inside-every-node-image)
# - the learning engine's 8 validators, pass and fail, against real containers (V-4)
#
# This pulls real images from Docker Hub, so it only runs when something that
# affects them changes. Image pushes to Docker Hub happen outside this repo and
# can't trigger CI — use "Run workflow" (workflow_dispatch) after publishing one.
name: Integration

on:
push:
branches: [ main, dev ]
paths:
- 'backend/src/infrastructure/docker/nodeTypes.ts'
- 'backend/src/infrastructure/docker/imageRequirements.itest.ts'
- 'backend/src/modules/learning/**'
- 'backend/jest.integration.config.js'
- 'backend/package.json'
- 'backend/package-lock.json'
- '.github/workflows/integration.yml'
pull_request:
branches: [ main, dev ]
paths:
- 'backend/src/infrastructure/docker/nodeTypes.ts'
- 'backend/src/infrastructure/docker/imageRequirements.itest.ts'
- 'backend/src/modules/learning/**'
- 'backend/jest.integration.config.js'
- 'backend/package.json'
- 'backend/package-lock.json'
- '.github/workflows/integration.yml'
workflow_dispatch:

jobs:
backend-integration-tests:
runs-on: ubuntu-latest
defaults:
run:
working-directory: backend

steps:
- name: Checkout Code
uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
cache-dependency-path: backend/package-lock.json

- name: Install Dependencies
run: npm ci

- name: Run Integration Tests
run: npm run test:integration
13 changes: 13 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
node_modules/
.env
dist/
build/
.DS_Store
*.log
env.js
/frontend/public/env.js
/frontend/dist/env.js

# Rapport d'audit local (ne pas publier)
doc/
CLAUDE.md
6 changes: 6 additions & 0 deletions .npmignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
node_modules/
.env
build/
.DS_Store
*.log
env.js
43 changes: 43 additions & 0 deletions CLA.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
# Torollo Individual Contributor License Agreement

Thank you for your interest in contributing to Torollo (the "Project"). This Contributor License Agreement ("Agreement") documents the rights granted by contributors to the Project maintainers. This Agreement is for your protection as a Contributor as well as the protection of the Project and its users; it does not change your rights to use your own Contributions for any other purpose.

By commenting "I have read the CLA Document and I hereby sign the CLA" on a pull request, you accept and agree to the following terms and conditions for your present and future Contributions submitted to the Project.

## 1. Definitions

**"You"** (or **"Your"**) means the copyright owner or legal entity authorized by the copyright owner that is entering into this Agreement with the Project.

**"Contribution"** means any original work of authorship, including any modifications or additions to an existing work, that is intentionally submitted by You to the Project for inclusion in, or documentation of, the Project. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Project or its maintainers, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Project for the purpose of discussing and improving the Project, but excluding communication that is conspicuously marked or otherwise designated in writing by You as "Not a Contribution."

## 2. Grant of Copyright License

Subject to the terms and conditions of this Agreement, You hereby grant to the Project maintainers and to recipients of software distributed by the Project a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, sublicense, and distribute Your Contributions and such derivative works.

## 3. Grant of Patent License

Subject to the terms and conditions of this Agreement, You hereby grant to the Project maintainers and to recipients of software distributed by the Project a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer Your Contributions, where such license applies only to those patent claims licensable by You that are necessarily infringed by Your Contribution(s) alone or by combination of Your Contribution(s) with the Project to which such Contribution(s) was submitted. If any entity institutes patent litigation against You or any other entity (including a cross-claim or counterclaim in a lawsuit) alleging that Your Contribution, or the Project to which You have contributed, constitutes direct or contributory patent infringement, then any patent licenses granted to that entity under this Agreement for that Contribution or Project shall terminate as of the date such litigation is filed.

## 4. Your Representations

You represent that:

1. You are legally entitled to grant the above licenses. If your employer(s) has rights to intellectual property that you create that includes your Contributions, you represent that you have received permission to make Contributions on behalf of that employer, that your employer has waived such rights for your Contributions to the Project, or that your employer has executed a separate corporate CLA with the Project.
2. Each of Your Contributions is Your original creation (see section 5 for submissions on behalf of others).
3. Your Contribution submissions include complete details of any third-party license or other restriction (including, but not limited to, related patents and trademarks) of which You are personally aware and which are associated with any part of Your Contributions.

## 5. Third-Party Works

Should You wish to submit work that is not Your original creation, You may submit it to the Project separately from any Contribution, identifying the complete details of its source and of any license or other restriction (including, but not limited to, related patents, trademarks, and license agreements) of which You are personally aware, and conspicuously marking the work as "Submitted on behalf of a third party: [named here]".

## 6. Support and Warranty Disclaimer

You are not expected to provide support for Your Contributions, except to the extent You desire to provide support. You may provide support for free, for a fee, or not at all. Unless required by applicable law or agreed to in writing, You provide Your Contributions on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE.

## 7. Notification

You agree to notify the Project maintainers of any facts or circumstances of which You become aware that would make these representations inaccurate in any respect.

---

*This Agreement is based on the Apache Software Foundation Individual Contributor License Agreement V2.2.*
Loading
Loading