# schooloffreelancing/linux-freelancing-training architecture

> Architecture diagram of the GitHub repository schooloffreelancing/linux-freelancing-training, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-06-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/schooloffreelancing/linux-freelancing-training
- Repository: https://github.com/schooloffreelancing/linux-freelancing-training

## Overview

1. **Project type**
   - This repository is a **static, multi-page marketing website** for a Linux freelancing training program.
   - There is **no application backend, database, or server-side business logic** in the repo; the site is rendered from HTML plus shared CSS/JS assets.

2. **Primary entry points**
   - Each top-level HTML file is a separate site page: `index.html`, `about.html`, `blog.html`, `contact.html`, `enrollment.html`, `support.html`, `testimonials.html`, and `training.html`.
   - The architecture is page-oriented rather than component/service-oriented: users navigate between standalone documents.

3. **Presentation layer**
   - `css/style.css` is the main shared stylesheet and likely defines the site-wide layout, typography, responsive behavior, and branding.
   - `images/` holds the visual assets used across pages.

4. **Client-side behavior**
   - `js/main.js` is the only JavaScript file and likely provides shared UI behavior such as navigation interactions, form handling enhancements, or small effects.
   - Since there is no JS framework or build system visible, this appears to be plain browser-side scripting.

5. **Content structure**
   - The site content is centered on a single offering: “Freelancing on Linux” training.
   - The pages break the content into audience-facing sections such as program overview, testimonials, support/contact, enrollment, and blog-style informational content.

6. **External content and workflow links**
   - A major part of the information flow leaves the repo and points to external services:
     - Google Docs for the 90-session training pipeline
     - Google Forms for training sign-up
     - Payment links via PayPal and bKash, plus Wise
     - Social/contact channels like WhatsApp, Telegram, LinkedIn, Facebook, Instagram, Threads, and YouTube
   - These are **outbound integrations only**; the site itself does not host those workflows.

7. **SEO and discoverability**
   - `robots.txt` and `sitemap.xml` indicate the site is meant to be indexed and discovered by search engines.
   - This suggests a public-facing marketing/info site rather than a private app.

8. **Server/hosting boundary**
   - `.htaccess` implies the site is intended to run on an Apache-compatible host, likely for URL handling, redirects, caching, or access rules.
   - Any routing behavior is server-level static-host behavior, not an internal app router.

9. **Operational metadata**
   - `.github/ISSUE_TEMPLATE/*` and `.github/FUNDING.yml` are repository-management artifacts, not runtime features.
   - The README includes a CircleCI badge, but no CI configuration is visible in the tree, so CI should be treated as external or omitted from the runtime architecture.

10. **Key architecture boundaries for a diagram**
   - **Browser** loads one of the HTML pages.
   - Pages pull shared assets from **CSS, JS, and images**.
   - User actions mostly lead to **external services** for enrollment, payment, and communication.
   - There is no persistent in-repo data store; the site is essentially a **content delivery and conversion layer** around third-party platforms.

Main entry points: [`sitemap.xml`](https://github.com/schooloffreelancing/linux-freelancing-training/blob/main/sitemap.xml) (Sitemap), [`css/style.css`](https://github.com/schooloffreelancing/linux-freelancing-training/blob/main/css/style.css) (Site CSS), [`js/main.js`](https://github.com/schooloffreelancing/linux-freelancing-training/blob/main/js/main.js) (Site JS), [`contact.html`](https://github.com/schooloffreelancing/linux-freelancing-training/blob/main/contact.html) (Contact)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Client Site"]
  node_style["Site CSS<br/>stylesheet<br/>[style.css]"]
  node_mainjs["Site JS<br/>browser script<br/>[main.js]"]
  node_images[("Images<br/>asset library")]
end

subgraph group_content["Content Pages"]
  node_index["Home<br/>html page<br/>[index.html]"]
  node_about["About<br/>html page<br/>[about.html]"]
  node_training["Training<br/>html page<br/>[training.html]"]
  node_blog["Blog<br/>html page<br/>[blog.html]"]
  node_testimonials["Testimonials<br/>html page<br/>[testimonials.html]"]
  node_support["Support<br/>html page<br/>[support.html]"]
  node_contact["Contact<br/>html page<br/>[contact.html]"]
  node_enrollment["Enrollment<br/>html page<br/>[enrollment.html]"]
end

subgraph group_external["Outbound Services"]
  node_docs["Google Docs<br/>external content"]
  node_forms["Google Forms<br/>external form"]
  node_payments(("Payments"))
  node_social(("Social Links<br/>external contact"))
end

subgraph group_ops["Repo Ops"]
  node_htaccess["Apache Rules<br/>server config<br/>[.htaccess]"]
  node_robots["Robots<br/>seo file<br/>[robots.txt]"]
  node_sitemap["Sitemap<br/>seo file<br/>[sitemap.xml]"]
  node_readme["README<br/>repo docs<br/>[README.md]"]
end

node_index -->|"uses"| node_style
node_about -->|"uses"| node_style
node_training -->|"uses"| node_style
node_blog -->|"uses"| node_style
node_testimonials -->|"uses"| node_style
node_support -->|"uses"| node_style
node_contact -->|"uses"| node_style
node_enrollment -->|"uses"| node_style
node_index -->|"uses"| node_mainjs
node_about -->|"uses"| node_mainjs
node_training -->|"uses"| node_mainjs
node_blog -->|"uses"| node_mainjs
node_testimonials -->|"uses"| node_mainjs
node_support -->|"uses"| node_mainjs
node_contact -->|"uses"| node_mainjs
node_enrollment -->|"uses"| node_mainjs
node_index -->|"loads"| node_images
node_training -->|"loads"| node_images
node_contact -->|"links"| node_forms
node_enrollment -->|"links"| node_forms
node_enrollment -->|"links"| node_payments
node_contact -->|"links"| node_social
node_support -->|"references"| node_docs
node_htaccess -->|"serves"| node_index
node_robots -->|"supports"| node_sitemap
node_sitemap -->|"lists"| node_index
node_sitemap -->|"lists"| node_about
node_sitemap -->|"lists"| node_training
node_sitemap -->|"lists"| node_blog
node_sitemap -->|"lists"| node_contact
node_sitemap -->|"lists"| node_enrollment

click node_index "https://github.com/schooloffreelancing/linux-freelancing-training/blob/main/index.html"
click node_about "https://github.com/schooloffreelancing/linux-freelancing-training/blob/main/about.html"
click node_training "https://github.com/schooloffreelancing/linux-freelancing-training/blob/main/training.html"
click node_blog "https://github.com/schooloffreelancing/linux-freelancing-training/blob/main/blog.html"
click node_testimonials "https://github.com/schooloffreelancing/linux-freelancing-training/blob/main/testimonials.html"
click node_support "https://github.com/schooloffreelancing/linux-freelancing-training/blob/main/support.html"
click node_contact "https://github.com/schooloffreelancing/linux-freelancing-training/blob/main/contact.html"
click node_enrollment "https://github.com/schooloffreelancing/linux-freelancing-training/blob/main/enrollment.html"
click node_style "https://github.com/schooloffreelancing/linux-freelancing-training/blob/main/css/style.css"
click node_mainjs "https://github.com/schooloffreelancing/linux-freelancing-training/blob/main/js/main.js"
click node_images "https://github.com/schooloffreelancing/linux-freelancing-training/tree/main/images"
click node_htaccess "https://github.com/schooloffreelancing/linux-freelancing-training/blob/main/.htaccess"
click node_robots "https://github.com/schooloffreelancing/linux-freelancing-training/blob/main/robots.txt"
click node_sitemap "https://github.com/schooloffreelancing/linux-freelancing-training/blob/main/sitemap.xml"
click node_readme "https://github.com/schooloffreelancing/linux-freelancing-training/blob/main/README.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_style,node_mainjs,node_images toneBlue
class node_index,node_about,node_training,node_blog,node_testimonials,node_support,node_contact,node_enrollment toneAmber
class node_docs,node_forms,node_payments,node_social toneMint
class node_htaccess,node_robots,node_sitemap,node_readme toneRose
```

## Components

### Client Site

Static marketing pages and shared browser assets.

- [Site CSS](https://github.com/schooloffreelancing/linux-freelancing-training/blob/main/css/style.css): stylesheet · Shared layout, typography, branding, and responsiveness. · `css/style.css`
- [Site JS](https://github.com/schooloffreelancing/linux-freelancing-training/blob/main/js/main.js): browser script · Shared client-side interactions and enhancements. · `js/main.js`
- [Images](https://github.com/schooloffreelancing/linux-freelancing-training/tree/main/images): asset library · Shared visual assets used by the pages. · `images`

### Content Pages

Standalone site pages that present the training offer.

- [Home](https://github.com/schooloffreelancing/linux-freelancing-training/blob/main/index.html): html page · Landing page and primary entry point. · `index.html`
- [About](https://github.com/schooloffreelancing/linux-freelancing-training/blob/main/about.html): html page · Background and organization information. · `about.html`
- [Training](https://github.com/schooloffreelancing/linux-freelancing-training/blob/main/training.html): html page · Program overview and curriculum details. · `training.html`
- [Blog](https://github.com/schooloffreelancing/linux-freelancing-training/blob/main/blog.html): html page · Informational and article-style content. · `blog.html`
- [Testimonials](https://github.com/schooloffreelancing/linux-freelancing-training/blob/main/testimonials.html): html page · Learner stories and social proof. · `testimonials.html`
- [Support](https://github.com/schooloffreelancing/linux-freelancing-training/blob/main/support.html): html page · Help and assistance page. · `support.html`
- [Contact](https://github.com/schooloffreelancing/linux-freelancing-training/blob/main/contact.html): html page · Communication and inquiry page. · `contact.html`
- [Enrollment](https://github.com/schooloffreelancing/linux-freelancing-training/blob/main/enrollment.html): html page · Signup and conversion page. · `enrollment.html`

### Outbound Services

Third-party destinations for signup, payment, and communication.

- **Google Docs**: external content · Outbound training pipeline and session documentation.
- **Google Forms**: external form · Outbound sign-up and enrollment form.
- **Payments**: external payments · PayPal, bKash, and Wise payment destinations.
- **Social Links**: external contact · WhatsApp, Telegram, LinkedIn, Facebook, Instagram, Threads, and YouTube.

### Repo Ops

Repository metadata and search-engine facing files.

- [Apache Rules](https://github.com/schooloffreelancing/linux-freelancing-training/blob/main/.htaccess): server config · Static-host routing and access rules. · `.htaccess`
- [Robots](https://github.com/schooloffreelancing/linux-freelancing-training/blob/main/robots.txt): seo file · Crawler guidance for search engines. · `robots.txt`
- [Sitemap](https://github.com/schooloffreelancing/linux-freelancing-training/blob/main/sitemap.xml): seo file · Public index of site pages for discovery. · `sitemap.xml`
- [README](https://github.com/schooloffreelancing/linux-freelancing-training/blob/main/README.md): repo docs · Repository overview and project notes. · `README.md`

## Connections

- Home → Site CSS: uses · All pages share the main stylesheet.
- About → Site CSS: uses · All pages share the main stylesheet.
- Training → Site CSS: uses · All pages share the main stylesheet.
- Blog → Site CSS: uses · All pages share the main stylesheet.
- Testimonials → Site CSS: uses · All pages share the main stylesheet.
- Support → Site CSS: uses · All pages share the main stylesheet.
- Contact → Site CSS: uses · All pages share the main stylesheet.
- Enrollment → Site CSS: uses · All pages share the main stylesheet.
- Home → Site JS: uses · Shared browser behavior is centralized in one script.
- About → Site JS: uses · Shared browser behavior is centralized in one script.
- Training → Site JS: uses · Shared browser behavior is centralized in one script.
- Blog → Site JS: uses · Shared browser behavior is centralized in one script.
- Testimonials → Site JS: uses · Shared browser behavior is centralized in one script.
- Support → Site JS: uses · Shared browser behavior is centralized in one script.
- Contact → Site JS: uses · Shared browser behavior is centralized in one script.
- Enrollment → Site JS: uses · Shared browser behavior is centralized in one script.
- Home → Images: loads · Pages draw from the shared image asset set.
- Training → Images: loads · Pages draw from the shared image asset set.
- Contact → Google Forms: links · Enrollment and inquiries can leave the site via forms.
- Enrollment → Google Forms: links · Enrollment and inquiries can leave the site via forms.
- Enrollment → Payments: links · Conversion flows point to external payment providers.
- Contact → Social Links: links · Contact options are routed to external communication channels.
- Support → Google Docs: references · Support and training information points to external documentation.
- Apache Rules → Home: serves · Apache rules govern how the static site is delivered.
- Robots → Sitemap: supports · SEO files work together for discovery and crawling.
- Sitemap → Home: lists · Sitemap enumerates public pages.
- Sitemap → About: lists · Sitemap enumerates public pages.
- Sitemap → Training: lists · Sitemap enumerates public pages.
- Sitemap → Blog: lists · Sitemap enumerates public pages.
- Sitemap → Contact: lists · Sitemap enumerates public pages.
- Sitemap → Enrollment: lists · Sitemap enumerates public pages.
