Central hub for the InfoTech.io educational platform. This repository contains the main landing page, the module registry (modules.json), and the GitHub Actions workflows required to build and deploy the entire platform.
This repository is the "Hub" in our "Hub and Spoke" architecture.
content/: Contains the static HTML, CSS, and JavaScript for the main landing page (infotecha.ru).modules.json: A central registry of all available educational modules. This file is the single source of truth for the platform's course catalog..github/workflows/: Contains the GitHub Actions that automate the entire platform:deploy-hub.yml: Deploys the main landing page when its content changes.module-updated.yml: Listens for webhooks from module repositories and updates themodules.jsonregistry.build-module.yml: The core workflow that checks out a module's content, combines it with thehugo-basetemplate, builds the static site, and deploys it to its subdomain.
- A course author pushes an update to a content repository (e.g.,
mod_linux_base). - A webhook fires a
repository_dispatchevent to thisinfotecharepository. - The
module-updated.ymlworkflow runs, updates the timestamp for the changed module inmodules.json, and commits the change. - The
build-module.ymlworkflow is then triggered. - It builds the module's static site using the
hugo-basetemplate. - The final static site is deployed to the production server under the correct subdomain (e.g.,
linux-base.infotecha.ru).
While the main platform is deployed via CI/CD, you can test the landing page locally.
# Serve the content directory on a local server
python3 -m http.server 8000 --directory ./contentThen open http://localhost:8000 in your browser. Note that the modules.json file will be loaded from the root of the repository.