# princephantom-cm/portswigger-lab-tracker architecture

> Architecture diagram of the GitHub repository princephantom-cm/portswigger-lab-tracker, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-06-17). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/princephantom-cm/portswigger-lab-tracker
- Repository: https://github.com/princephantom-cm/portswigger-lab-tracker

## Overview

1. **Repository purpose**
   - This is a **personal progress tracker and knowledge base** for PortSwigger Web Academy labs, not a traditional application with backend services.
   - The architecture is content-first: one public tracker page plus topic writeups documenting lessons learned.

2. **Primary presentation surface**
   - `index.html` is the core user-facing artifact.
   - It is likely the static tracker page used by the GitHub Pages live site, showing overall lab progress and topic prioritization.

3. **Documentation surface**
   - `README.md` acts as the repository landing page and high-level status summary.
   - It communicates current completion count, topic priorities, and links to writeups and external profiles.

4. **Knowledge base subsystem**
   - The `writeups/` directory holds topic-specific notes.
   - `writeups/access-control.md` is the first concrete example and represents a pattern the repo is expected to grow with: one markdown document per topic.

5. **Content flow**
   - The author studies PortSwigger labs externally, then updates the tracker and adds writeups in this repo.
   - The resulting flow is: lab completion and learning → markdown notes / tracker updates → static publication.

6. **Hosting and delivery**
   - The live tracker is published on **GitHub Pages**.
   - That means the repository is served as a static site: no database, no API, no server-side rendering layer visible in this repo.

7. **External dependencies**
   - The main external source of truth is **PortSwigger Web Academy**, which provides the labs being tracked.
   - **LinkedIn** is used as a social distribution channel for weekly progress updates, but it is not part of the application architecture.

8. **Data model**
   - The main “data” in the repo is editorial rather than transactional: completion counts, topic ordering, and written summaries.
   - There is no evidence of user accounts, authentication, or dynamically generated state inside the repo.

9. **Functional boundaries**
   - **Tracker boundary:** progress visualization and lab prioritization.
   - **Writeup boundary:** explanatory notes and real-world relevance mapping.
   - **Metadata boundary:** README content and outbound links for navigation and context.

10. **Operational characteristics**
   - This repo is lightweight and static, with no build system or runtime services shown in the provided tree.
   - Changes are likely manual edits to HTML/Markdown followed by redeployment through GitHub Pages.

11. **What an architecture diagram should show**
   - A single static content repository feeding a GitHub Pages site.
   - Separate content lanes for `index.html` tracker content and `writeups/*.md` learning notes.
   - External inputs from PortSwigger labs and outbound sharing to LinkedIn.

12. **Overall shape**
   - The architecture is best described as a **static documentation site with a progress dashboard**, maintained by one author and published directly from GitHub.

Main entry points: [`index.html`](https://github.com/princephantom-cm/portswigger-lab-tracker/blob/main/index.html) (Tracker page), [`writeups`](https://github.com/princephantom-cm/portswigger-lab-tracker/tree/main/writeups) (Writeups), [`README.md`](https://github.com/princephantom-cm/portswigger-lab-tracker/blob/main/README.md) (README.md), [`writeups/access-control.md`](https://github.com/princephantom-cm/portswigger-lab-tracker/blob/main/writeups/access-control.md) (Access control)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_repo["Repository"]
  node_readme["README.md<br/>landing doc<br/>[README.md]"]
  node_tracker["Tracker page<br/>static dashboard<br/>[index.html]"]
  node_notes["Writeups<br/>knowledge base"]
  node_access["Access control<br/>topic note<br/>[access-control.md]"]
  node_editing(("Manual updates<br/>editorial workflow"))
end

subgraph group_external["External"]
  node_pages["GitHub Pages<br/>static hosting"]
  node_portswigger["PortSwigger Labs<br/>source academy"]
  node_linkedin(("LinkedIn<br/>sharing channel"))
end

node_portswigger -->|"study material"| node_editing
node_editing -->|"update"| node_tracker
node_editing -->|"add notes"| node_notes
node_notes -->|"contains"| node_access
node_readme -->|"summarizes"| node_tracker
node_readme -->|"links"| node_notes
node_tracker -->|"published via"| node_pages
node_notes -->|"published via"| node_pages
node_readme -->|"published via"| node_pages
node_tracker -.->|"shared as updates"| node_linkedin

click node_readme "https://github.com/princephantom-cm/portswigger-lab-tracker/blob/main/README.md"
click node_tracker "https://github.com/princephantom-cm/portswigger-lab-tracker/blob/main/index.html"
click node_notes "https://github.com/princephantom-cm/portswigger-lab-tracker/tree/main/writeups"
click node_access "https://github.com/princephantom-cm/portswigger-lab-tracker/blob/main/writeups/access-control.md"

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_readme,node_tracker,node_notes,node_access,node_editing toneBlue
class node_pages,node_portswigger,node_linkedin toneAmber
```

## Components

### Repository

Static content maintained in the repo and published as a GitHub Pages site.

- [README.md](https://github.com/princephantom-cm/portswigger-lab-tracker/blob/main/README.md): landing doc · Repository overview, current progress, priorities, and outbound context. · `README.md`
- [Tracker page](https://github.com/princephantom-cm/portswigger-lab-tracker/blob/main/index.html): static dashboard · Primary public progress view showing lab completion and topic prioritization. · `index.html`
- [Writeups](https://github.com/princephantom-cm/portswigger-lab-tracker/tree/main/writeups): knowledge base · Topic-by-topic markdown notes capturing lessons learned from labs. · `writeups`
- [Access control](https://github.com/princephantom-cm/portswigger-lab-tracker/blob/main/writeups/access-control.md): topic note · First concrete writeup example for one lab area and a template for future notes. · `writeups/access-control.md`
- **Manual updates**: editorial workflow · Human-driven editing of HTML and Markdown after studying labs externally.

### External

Outside services and sources that feed or receive the content.

- **GitHub Pages**: static hosting · Publishes the repository as a static site with no server-side runtime.
- **PortSwigger Labs**: source academy · External source of truth for labs, challenges, and study material.
- **LinkedIn**: sharing channel · Outward-facing channel for progress updates and weekly summaries.

## Connections

- PortSwigger Labs → Manual updates: study material · Labs are studied externally before content is updated.
- Manual updates → Tracker page: update · Manual edits refresh the progress dashboard and topic priorities.
- Manual updates → Writeups: add notes · Manual edits add or expand topic writeups in Markdown.
- Writeups → Access control: contains · The writeups directory contains topic-specific documents such as access control.
- README.md → Tracker page: summarizes · README provides the public landing summary for the tracker site.
- README.md → Writeups: links · README points readers toward the writeup collection.
- Tracker page → GitHub Pages: published via · The tracker page is served as static content on GitHub Pages.
- Writeups → GitHub Pages: published via · Writeups are also delivered as static repository content.
- README.md → GitHub Pages: published via · The repository landing page is part of the static site surface.
- Tracker page → LinkedIn: shared as updates · Progress snapshots are distributed externally through LinkedIn posts.
