# rootuser-geetanshaditya/nyx architecture

> Architecture diagram of the GitHub repository rootuser-geetanshaditya/nyx, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/rootuser-geetanshaditya/nyx
- Repository: https://github.com/rootuser-geetanshaditya/nyx

## Overview

This repository is a cybersecurity portfolio website and a Python generator that builds its HTML pages from Markdown content and templates. The principal workflow is: the author adds blog posts or CTF writeups, the generator parses them and creates listing cards and detail pages, then writes the site pages and sitemap for visitors. The site also includes profile, services, and contact pages. The source excerpt supports the generator’s main content flow; some page-specific wiring is inferred only where documented by the file tree.

Main entry points: [`main.py`](https://github.com/rootuser-geetanshaditya/nyx/blob/main/main.py) (Page rendering), [`blogs.html`](https://github.com/rootuser-geetanshaditya/nyx/blob/main/blogs.html) (Blog listing), [`writeups.html`](https://github.com/rootuser-geetanshaditya/nyx/blob/main/writeups.html) (Writeup listing), [`Blog`](https://github.com/rootuser-geetanshaditya/nyx/tree/main/Blog) (Blog Markdown)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_content["Portfolio content"]
  node_blog_md["Blog Markdown"]
  node_writeup_md["Writeup Markdown"]
end

subgraph group_generator["Site generation"]
  node_generator_entry["Generator entry<br/>[main.py]"]
  node_content_discovery["Content discovery<br/>[main.py]"]
  node_markdown_parser["Markdown parsing<br/>[main.py]"]
  node_card_rendering["Card rendering<br/>[main.py]"]
  node_detail_rendering["Detail rendering<br/>[main.py]"]
  node_page_rendering["Page rendering<br/>[main.py]"]
  node_sitemap_generation["Sitemap generation<br/>[main.py]"]
end

subgraph group_site["Published site"]
  node_base_template["Base template<br/>[base.html]"]
  node_page_templates["Page templates"]
  node_blog_listing["Blog listing<br/>[blogs.html]"]
  node_writeup_listing["Writeup listing<br/>[writeups.html]"]
  node_generated_details["Generated details"]
  node_static_pages["Profile and services<br/>[index.html]"]
  node_contact_page["Contact page<br/>[contact.html]"]
  node_sitemap["Sitemap<br/>[sitemap.xml]"]
  node_stylesheet["Stylesheet<br/>[style.css]"]
end

node_author(("Author"))
node_visitor(("Site visitor"))

node_author -->|"creates posts"| node_blog_md
node_author -->|"creates writeups"| node_writeup_md
node_generator_entry -->|"runs"| node_content_discovery
node_content_discovery -->|"scans"| node_blog_md
node_content_discovery -->|"scans"| node_writeup_md
node_content_discovery -->|"parses files"| node_markdown_parser
node_markdown_parser -->|"provides content"| node_card_rendering
node_generator_entry -->|"generates pages"| node_page_rendering
node_page_rendering -->|"loads"| node_base_template
node_page_rendering -->|"loads"| node_page_templates
node_page_rendering -->|"renders listings"| node_card_rendering
node_page_rendering -->|"renders details"| node_detail_rendering
node_page_rendering -->|"writes"| node_blog_listing
node_page_rendering -->|"writes"| node_writeup_listing
node_page_rendering -->|"writes"| node_generated_details
node_page_rendering -->|"writes"| node_static_pages
node_page_rendering -->|"writes"| node_contact_page
node_generator_entry -->|"generates sitemap"| node_sitemap_generation
node_sitemap_generation -->|"writes"| node_sitemap
node_visitor -->|"views"| node_blog_listing
node_visitor -->|"views"| node_writeup_listing
node_visitor -->|"views"| node_generated_details
node_visitor -->|"views"| node_static_pages
node_visitor -->|"views"| node_contact_page
node_blog_listing -->|"uses styles"| node_stylesheet
node_writeup_listing -->|"uses styles"| node_stylesheet

click node_blog_md "https://github.com/rootuser-geetanshaditya/nyx/tree/main/Blog"
click node_writeup_md "https://github.com/rootuser-geetanshaditya/nyx/tree/main/Writeups"
click node_generator_entry "https://github.com/rootuser-geetanshaditya/nyx/blob/main/main.py"
click node_content_discovery "https://github.com/rootuser-geetanshaditya/nyx/blob/main/main.py"
click node_markdown_parser "https://github.com/rootuser-geetanshaditya/nyx/blob/main/main.py"
click node_card_rendering "https://github.com/rootuser-geetanshaditya/nyx/blob/main/main.py"
click node_detail_rendering "https://github.com/rootuser-geetanshaditya/nyx/blob/main/main.py"
click node_page_rendering "https://github.com/rootuser-geetanshaditya/nyx/blob/main/main.py"
click node_sitemap_generation "https://github.com/rootuser-geetanshaditya/nyx/blob/main/main.py"
click node_base_template "https://github.com/rootuser-geetanshaditya/nyx/blob/main/templates/base.html"
click node_page_templates "https://github.com/rootuser-geetanshaditya/nyx/tree/main/templates"
click node_blog_listing "https://github.com/rootuser-geetanshaditya/nyx/blob/main/blogs.html"
click node_writeup_listing "https://github.com/rootuser-geetanshaditya/nyx/blob/main/writeups.html"
click node_generated_details "https://github.com/rootuser-geetanshaditya/nyx/tree/main/Blog"
click node_static_pages "https://github.com/rootuser-geetanshaditya/nyx/blob/main/index.html"
click node_contact_page "https://github.com/rootuser-geetanshaditya/nyx/blob/main/contact.html"
click node_sitemap "https://github.com/rootuser-geetanshaditya/nyx/blob/main/sitemap.xml"
click node_stylesheet "https://github.com/rootuser-geetanshaditya/nyx/blob/main/assets/style.css"

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_blog_md,node_writeup_md toneBlue
class node_generator_entry,node_content_discovery,node_markdown_parser,node_card_rendering,node_detail_rendering,node_page_rendering,node_sitemap_generation toneAmber
class node_base_template,node_page_templates,node_blog_listing,node_writeup_listing,node_generated_details,node_static_pages,node_contact_page,node_sitemap,node_stylesheet toneMint
class node_author,node_visitor toneIndigo
```

## Components

### Portfolio content

- [Blog Markdown](https://github.com/rootuser-geetanshaditya/nyx/tree/main/Blog): `Blog`
- [Writeup Markdown](https://github.com/rootuser-geetanshaditya/nyx/tree/main/Writeups): `Writeups`

### Site generation

- [Generator entry](https://github.com/rootuser-geetanshaditya/nyx/blob/main/main.py): `main.py`
- [Content discovery](https://github.com/rootuser-geetanshaditya/nyx/blob/main/main.py): `main.py`
- [Markdown parsing](https://github.com/rootuser-geetanshaditya/nyx/blob/main/main.py): `main.py`
- [Card rendering](https://github.com/rootuser-geetanshaditya/nyx/blob/main/main.py): `main.py`
- [Detail rendering](https://github.com/rootuser-geetanshaditya/nyx/blob/main/main.py): `main.py`
- [Page rendering](https://github.com/rootuser-geetanshaditya/nyx/blob/main/main.py): `main.py`
- [Sitemap generation](https://github.com/rootuser-geetanshaditya/nyx/blob/main/main.py): `main.py`

### Published site

- [Base template](https://github.com/rootuser-geetanshaditya/nyx/blob/main/templates/base.html): `templates/base.html`
- [Page templates](https://github.com/rootuser-geetanshaditya/nyx/tree/main/templates): `templates`
- [Blog listing](https://github.com/rootuser-geetanshaditya/nyx/blob/main/blogs.html): `blogs.html`
- [Writeup listing](https://github.com/rootuser-geetanshaditya/nyx/blob/main/writeups.html): `writeups.html`
- [Generated details](https://github.com/rootuser-geetanshaditya/nyx/tree/main/Blog): `Blog`
- [Profile and services](https://github.com/rootuser-geetanshaditya/nyx/blob/main/index.html): `index.html`
- [Contact page](https://github.com/rootuser-geetanshaditya/nyx/blob/main/contact.html): `contact.html`
- [Sitemap](https://github.com/rootuser-geetanshaditya/nyx/blob/main/sitemap.xml): `sitemap.xml`
- [Stylesheet](https://github.com/rootuser-geetanshaditya/nyx/blob/main/assets/style.css): `assets/style.css`

### Other components

- **Author**
- **Site visitor**

## Connections

- Author → Blog Markdown: creates posts
- Author → Writeup Markdown: creates writeups
- Generator entry → Content discovery: runs
- Content discovery → Blog Markdown: scans
- Content discovery → Writeup Markdown: scans
- Content discovery → Markdown parsing: parses files
- Markdown parsing → Card rendering: provides content
- Generator entry → Page rendering: generates pages
- Page rendering → Base template: loads
- Page rendering → Page templates: loads
- Page rendering → Card rendering: renders listings
- Page rendering → Detail rendering: renders details
- Page rendering → Blog listing: writes
- Page rendering → Writeup listing: writes
- Page rendering → Generated details: writes
- Page rendering → Profile and services: writes
- Page rendering → Contact page: writes
- Generator entry → Sitemap generation: generates sitemap
- Sitemap generation → Sitemap: writes
- Site visitor → Blog listing: views
- Site visitor → Writeup listing: views
- Site visitor → Generated details: views
- Site visitor → Profile and services: views
- Site visitor → Contact page: views
- Blog listing → Stylesheet: uses styles
- Writeup listing → Stylesheet: uses styles
