diff --git a/.github/workflows/build-deploy-moonweb.yml b/.github/workflows/build-deploy-moonweb.yml new file mode 100644 index 0000000..043b0b3 --- /dev/null +++ b/.github/workflows/build-deploy-moonweb.yml @@ -0,0 +1,195 @@ +name: Build & Deploy moonweb.org + +on: + push: + branches: [main] + paths-ignore: + - 'stefankoelle/**' + - '.github/workflows/deploy-stefankoelle.yml' + pull_request: + branches: [main] + paths-ignore: + - 'stefankoelle/**' + - '.github/workflows/deploy-stefankoelle.yml' + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +env: + NODE_VERSION: "22" + +jobs: + build: + name: Build ${{ matrix.site }} + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + site: [hub, infra, smarthome, code, retro] + steps: + - uses: actions/checkout@v7 + + - uses: actions/setup-node@v7 + with: + node-version: ${{ env.NODE_VERSION }} + cache: "npm" + + - name: Install dependencies + run: npm ci + + - name: Build ${{ matrix.site }} + run: npm run build:${{ matrix.site }} + + - name: Validate build output + run: | + if [ ! -d "dist/${{ matrix.site }}" ]; then + echo "Error: dist/${{ matrix.site }} not found" + exit 1 + fi + if [ -z "$(ls -A dist/${{ matrix.site }} 2>/dev/null)" ]; then + echo "Error: dist/${{ matrix.site }} is empty" + exit 1 + fi + echo "Build output:" + find dist/${{ matrix.site }} -type f | head -20 + + - name: Upload build artifact + uses: actions/upload-artifact@v7 + with: + name: dist-${{ matrix.site }} + path: dist/${{ matrix.site }} + retention-days: 7 + + build-timecapsule: + name: Build timecapsule + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v7 + + - uses: actions/setup-node@v7 + with: + node-version: ${{ env.NODE_VERSION }} + + - name: Install timecapsule dependencies + run: cd timecapsule && npm ci + + - name: Build timecapsule + run: npm run build:timecapsule + + - name: Validate build output + run: | + if [ ! -d "dist/timecapsule" ]; then + echo "Error: dist/timecapsule not found" + exit 1 + fi + if [ -z "$(ls -A dist/timecapsule 2>/dev/null)" ]; then + echo "Error: dist/timecapsule is empty" + exit 1 + fi + echo "Build output:" + find dist/timecapsule -type f | head -20 + + - name: Upload build artifact + uses: actions/upload-artifact@v7 + with: + name: dist-timecapsule + path: dist/timecapsule + retention-days: 7 + + merge: + name: Merge all sites + needs: [build, build-timecapsule] + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v7 + + - name: Download all artifacts + uses: actions/download-artifact@v8 + with: + path: artifacts/ + + - name: Merge into dist/ + run: | + mkdir -p dist + + # Hub becomes root + cp -r artifacts/dist-hub/* dist/ + + # Subdirectories + for site in infra smarthome code retro timecapsule; do + if [ -d "artifacts/dist-$site" ]; then + cp -r "artifacts/dist-$site" "dist/$site" + fi + done + + # Copy shared CSS to root (accessible from all subdirectories) + cp shared/base.css dist/shared-base.css + cp shared/favicon/hub.svg dist/favicon.svg + + echo "Final structure:" + find dist -maxdepth 2 -type f | sort | head -40 + echo "..." + echo "Total files:" + find dist -type f | wc -l + + - name: Upload merged artifact + uses: actions/upload-artifact@v7 + with: + name: dist-moonweb-merged + path: dist/ + retention-days: 7 + + deploy: + name: Deploy to IONOS + needs: merge + runs-on: ubuntu-latest + if: github.ref == 'refs/heads/main' && github.event_name == 'push' + steps: + - name: Download merged artifact + uses: actions/download-artifact@v8 + with: + name: dist-moonweb-merged + path: dist/ + + - name: Deploy via SFTP + uses: wlixcc/SFTP-Deploy-Action@v1.2.6 + with: + local_path: './dist/*' + server: ${{ secrets.IONOS_SFTP_HOST }} + username: ${{ secrets.IONOS_SFTP_USER }} + password: ${{ secrets.IONOS_SFTP_PASSWORD }} + remote_path: '/websites/moonweb/' + port: 22 + sftp_only: true + + summary: + name: Deploy Summary + needs: deploy + runs-on: ubuntu-latest + if: always() + steps: + - name: Print deployment summary + run: | + echo "## Deployment Summary" >> $GITHUB_STEP_SUMMARY + echo "" >> $GITHUB_STEP_SUMMARY + if [ "${{ needs.deploy.result }}" = "success" ]; then + echo "moonweb.org deployed successfully!" >> $GITHUB_STEP_SUMMARY + else + echo "Deployment failed. Check the deploy jobs for details." >> $GITHUB_STEP_SUMMARY + fi + echo "" >> $GITHUB_STEP_SUMMARY + echo "### Sites" >> $GITHUB_STEP_SUMMARY + echo "| Site | URL |" >> $GITHUB_STEP_SUMMARY + echo "|------|-----|" >> $GITHUB_STEP_SUMMARY + echo "| hub | https://www.moonweb.org/ |" >> $GITHUB_STEP_SUMMARY + echo "| infra | https://www.moonweb.org/infra/ |" >> $GITHUB_STEP_SUMMARY + echo "| smarthome | https://www.moonweb.org/smarthome/ |" >> $GITHUB_STEP_SUMMARY + echo "| code | https://www.moonweb.org/code/ |" >> $GITHUB_STEP_SUMMARY + echo "| retro | https://www.moonweb.org/retro/ |" >> $GITHUB_STEP_SUMMARY + echo "| timecapsule | https://www.moonweb.org/timecapsule/ |" >> $GITHUB_STEP_SUMMARY + +# Required repo secrets: +# IONOS_SFTP_HOST — IONOS SFTP server hostname +# IONOS_SFTP_USER — IONOS SFTP username +# IONOS_SFTP_PASSWORD — IONOS SFTP password diff --git a/.github/workflows/build-deploy.yml b/.github/workflows/build-deploy.yml deleted file mode 100644 index 59232bd..0000000 --- a/.github/workflows/build-deploy.yml +++ /dev/null @@ -1,139 +0,0 @@ -name: Build & Deploy moonweb-site - -on: - push: - branches: [main] - paths-ignore: - - 'stefankoelle/**' - - '.github/workflows/deploy-stefankoelle.yml' - pull_request: - branches: [main] - paths-ignore: - - 'stefankoelle/**' - - '.github/workflows/deploy-stefankoelle.yml' - -# Cancel in-progress runs for the same branch -concurrency: - group: ${{ github.workflow }}-${{ github.ref }} - cancel-in-progress: true - -env: - NODE_VERSION: "22" - -jobs: - build: - name: Build ${{ matrix.site }} - runs-on: ubuntu-latest - strategy: - fail-fast: false - matrix: - site: [hub, infra, smarthome, code, retro] - steps: - - uses: actions/checkout@v7 - - - uses: actions/setup-node@v7 - with: - node-version: ${{ env.NODE_VERSION }} - cache: "npm" - - - name: Install dependencies - run: npm ci - - - name: Build ${{ matrix.site }} - run: npm run build:${{ matrix.site }} - - - name: Validate build output - run: | - if [ ! -d "dist/${{ matrix.site }}" ]; then - echo "Error: dist/${{ matrix.site }} not found" - exit 1 - fi - if [ -z "$(ls -A dist/${{ matrix.site }} 2>/dev/null)" ]; then - echo "Error: dist/${{ matrix.site }} is empty" - exit 1 - fi - echo "Build output:" - find dist/${{ matrix.site }} -type f | head -20 - - - name: Upload build artifact - uses: actions/upload-artifact@v7 - with: - name: dist-${{ matrix.site }} - path: dist/${{ matrix.site }} - retention-days: 7 - - deploy: - name: Deploy ${{ matrix.site }} - needs: build - runs-on: ubuntu-latest - if: github.ref == 'refs/heads/main' && github.event_name == 'push' - strategy: - fail-fast: false - matrix: - include: - - site: hub - cf_project: moonweb-hub - - site: infra - cf_project: moonweb-infra - - site: smarthome - cf_project: moonweb-smarthome - - site: code - cf_project: moonweb-code - - site: retro - cf_project: moonweb-retro - steps: - - name: Download build artifact - uses: actions/download-artifact@v8 - with: - name: dist-${{ matrix.site }} - path: dist/${{ matrix.site }} - - - name: Create wrangler.toml for Worker - run: | - echo 'name = "${{ matrix.cf_project }}"' > wrangler.toml - echo 'compatibility_date = "2024-01-01"' >> wrangler.toml - echo '' >> wrangler.toml - echo '[assets]' >> wrangler.toml - echo 'directory = "./dist/${{ matrix.site }}"' >> wrangler.toml - echo 'not_found_handling = "404-page"' >> wrangler.toml - - - name: Deploy to Cloudflare Workers - uses: cloudflare/wrangler-action@v4 - with: - apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }} - accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} - command: deploy - - summary: - name: Deploy Summary - needs: deploy - runs-on: ubuntu-latest - if: always() - steps: - - name: Print deployment summary - run: | - echo "## Deployment Summary" >> $GITHUB_STEP_SUMMARY - echo "" >> $GITHUB_STEP_SUMMARY - if [ "${{ needs.deploy.result }}" = "success" ]; then - echo "✅ All sites deployed successfully!" >> $GITHUB_STEP_SUMMARY - else - echo "❌ Deployment failed. Check the deploy jobs for details." >> $GITHUB_STEP_SUMMARY - fi - echo "" >> $GITHUB_STEP_SUMMARY - echo "### Sites" >> $GITHUB_STEP_SUMMARY - echo "| Site | URL |" >> $GITHUB_STEP_SUMMARY - echo "|------|-----|" >> $GITHUB_STEP_SUMMARY - echo "| hub | https://hub.moonweb.org |" >> $GITHUB_STEP_SUMMARY - echo "| infra | https://infra.moonweb.org |" >> $GITHUB_STEP_SUMMARY - echo "| smarthome | https://smarthome.moonweb.org |" >> $GITHUB_STEP_SUMMARY - echo "| code | https://code.moonweb.org |" >> $GITHUB_STEP_SUMMARY - echo "| retro | https://retro.moonweb.org |" >> $GITHUB_STEP_SUMMARY - -# Required repo secrets: -# CLOUDFLARE_API_TOKEN — Cloudflare API token with Workers:Edit permission -# CLOUDFLARE_ACCOUNT_ID — Cloudflare account ID -# -# Required one-time setup (see PLAN.md Phase 2): -# Create Cloudflare Workers and bind custom domains. -# DNS is already on Cloudflare (SPEC.md §4.6). -# diff --git a/AGENTS.md b/AGENTS.md index f0ddc14..ec71fc6 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -1,18 +1,19 @@ # AGENTS.md — moonweb-site -## Projektübersicht +## Projektuebersicht -Monorepo für 5 statische Websites unter moonweb.org + stefankoelle.de, basierend auf Eleventy (11ty). +Monorepo fuer 6 statische Websites unter www.moonweb.org + stefankoelle.de, basierend auf Eleventy (11ty). -### Websites (Cloudflare Pages) +### Websites (IONOS SFTP) -| Site | Domain | Zweck | Status | -|------|--------|-------|--------| -| hub | hub.moonweb.org | Zentrale Indexseite, verlinkt alles | Fertig | -| infra | infra.moonweb.org | Infrastruktur-Übersicht (Proxmox, Synology, Netzwerk) | Übersicht + 3 Detailseiten | -| smarthome | smarthome.moonweb.org | Smart Home Projekte und Dashboards | Übersicht + 6 Detailseiten | -| code | code.moonweb.org | GitHub-Projekte (aggregiert via .moonweb.yml) | Fertig (14 Repos) | -| retro | retro.moonweb.org | Physische Retro-Hardware | Nur Übersicht (WIP) | +| Site | URL | Zweck | Status | +|------|-----|-------|--------| +| hub | www.moonweb.org/ | Zentrale Indexseite, verlinkt alles | Fertig | +| infra | www.moonweb.org/infra/ | Infrastruktur-Uebersicht (Proxmox, Synology, Netzwerk) | Uebersicht + 8 Detailseiten | +| smarthome | www.moonweb.org/smarthome/ | Smart Home Projekte und Dashboards | Uebersicht + 9 Detailseiten | +| code | www.moonweb.org/code/ | GitHub-Projekte (aggregiert via .moonweb.yml) | Fertig | +| retro | www.moonweb.org/retro/ | Physische Retro-Hardware | Uebersicht + 13 Detailseiten | +| timecapsule | www.moonweb.org/timecapsule/ | 2000er Internet-Zeitkapsel (altes Design) | Fertig | ### Externe Sites (SFTP-Deployment) @@ -22,19 +23,23 @@ Monorepo für 5 statische Websites unter moonweb.org + stefankoelle.de, basieren ### Andere Sites (nicht im Monorepo) -- www.moonweb.org — 2000er Internet-Zeitkapsel - 28k8.moonweb.org — 90er BBS/Scene-Archiv +- buildbroken.moonweb.org — .NET Open Space Blog Archiv ## Dateistruktur ``` moonweb-site/ ├── hub/ # Eleventy-Config + index.njk -├── infra/ # Eleventy-Config + index.njk + 3 Subseiten -├── smarthome/ # Eleventy-Config + index.njk + 6 Subseiten +├── infra/ # Eleventy-Config + index.njk + 8 Subseiten +├── smarthome/ # Eleventy-Config + index.njk + 9 Subseiten ├── code/ # Eleventy-Config + index.njk │ └── _data/repos.json -├── retro/ # Eleventy-Config + index.njk +├── retro/ # Eleventy-Config + index.njk + 13 Subseiten +├── timecapsule/ # Eleventy 2.x (eigene Config) +│ ├── eleventy.config.js +│ ├── package.json +│ └── src/ # 2001er Retro-Content ├── stefankoelle/ # Eleventy-Config + Onepager │ ├── eleventy.config.js │ ├── _includes/ @@ -52,10 +57,11 @@ moonweb-site/ │ ├── base.css │ └── theme-*.css ├── scripts/ -│ └── github-aggregator/ +│ ├── github-aggregator/ +│ └── merge-moonweb.sh # Merge-Skript fuer Deployment ├── .github/workflows/ -│ ├── build-deploy.yml # CI/CD: Cloudflare Pages (5 Sites) -│ └── deploy-stefankoelle.yml # CI/CD: IONOS SFTP (stefankoelle.de) +│ ├── build-deploy-moonweb.yml # CI/CD: IONOS SFTP (www.moonweb.org) +│ └── deploy-stefankoelle.yml # CI/CD: IONOS SFTP (stefankoelle.de) ├── DESIGN.md ├── SPEC.md ├── PLAN.md @@ -66,10 +72,11 @@ moonweb-site/ ## Technischer Stack -- **SSG:** Eleventy (11ty) v3.1.6 +- **SSG:** Eleventy (11ty) v3.1.6 (hub, infra, smarthome, code, retro) +- **SSG:** Eleventy v2.0.1 (timecapsule - retro 2001 Design) - **Templates:** Nunjucks (.njk) - **CSS:** Variables-basiert mit Accent-Farben pro Site -- **Deploy (moonweb):** Cloudflare Pages (5 separate Projects) +- **Deploy (moonweb):** IONOS SFTP - **Deploy (stefankoelle):** IONOS SFTP - **CI/CD:** GitHub Actions (2 Workflows) @@ -77,32 +84,54 @@ moonweb-site/ ```bash npm install -npm run prebuild # Pre-Build Tasks (CV PDF generieren) -npm run dev:hub # localhost:8081 -npm run dev:infra # localhost:8082 -npm run dev:smarthome # localhost:8083 -npm run dev:code # localhost:8084 -npm run dev:retro # localhost:8085 -npm run dev:stefankoelle # localhost:8086 -npm run build # Alle Sites bauen +cd timecapsule && npm install # Timecapsule Dependencies +npm run prebuild # Pre-Build Tasks (CV PDF generieren) +npm run dev:hub # localhost:8081 +npm run dev:infra # localhost:8082 +npm run dev:smarthome # localhost:8083 +npm run dev:code # localhost:8084 +npm run dev:retro # localhost:8085 +npm run dev:stefankoelle # localhost:8086 +npm run dev:timecapsule # localhost:8087 +npm run build # Alle Sites bauen +npm run build:moonweb # Nur moonweb Sites (ohne stefankoelle) +npm run merge:moonweb # Sites mergen fuer Deployment ``` ## Design-Prinzipien 1. **Header konsistent** — Identischer Site-Switcher auf allen Home-Sites -2. **Content flexibel** — Detailseiten dürfen eigenes Layout haben +2. **Content flexibel** — Detailseiten duerfen eigenes Layout haben 3. **Accent-Farben:** hub=#3b6ea5, infra=#99333A, smarthome=#1f8a8a, code=#3E5098, retro=#8a6d3b 4. **Englisch** — Alle Sites komplett auf Englisch 5. **Keine Analytics** — Keine Tracking-Tools -6. **Sensible Daten** — Infra-Content wird manuell redigiert (keine IPs, Keys, Passwörter) +6. **Sensible Daten** — Infra-Content wird manuell redigiert (keine IPs, Keys, Passwoerter) + +## URL-Struktur + +Alle Sites sind unter `www.moonweb.org` als Subverzeichnisse erreichbar: +- `www.moonweb.org/` — Hub (Root) +- `www.moonweb.org/infra/` — Infra +- `www.moonweb.org/smarthome/` — Smarthome +- `www.moonweb.org/code/` — Code +- `www.moonweb.org/retro/` — Retro +- `www.moonweb.org/timecapsule/` — Timecapsule (2001 Design) +- `www.moonweb.org/impressum/` — Impressum + +Cloudflare Redirects leiten alte Subdomains weiter: +- `hub.moonweb.org/*` → `www.moonweb.org/*` +- `infra.moonweb.org/*` → `www.moonweb.org/infra/*` +- `smarthome.moonweb.org/*` → `www.moonweb.org/smarthome/*` +- `code.moonweb.org/*` → `www.moonweb.org/code/*` +- `retro.moonweb.org/*` → `www.moonweb.org/retro/*` ## stefankoelle.de - Eigene Eleventy-Config (nicht shared base.njk) - Eigenes CSS-Design (nicht moonweb design system) - Onepager mit Anchor-Links (bleibt so) -- Deploy via SFTP auf IONOS `/deploy/stefankoelle/` -- CV-Partial zentral pflegbar (einmal aendern → Web + PDF aktualisieren) +- Deploy via SFTP auf IONOS `/websites/stefankoelle/` +- CV-Partial zentral pflegbar (einmal aendern -> Web + PDF aktualisieren) - LED Matrix als eigene Seite unter stefankoelle.de/ledmatrix/ ### CV PDF Generierung @@ -116,7 +145,7 @@ npm run prebuild # Alle Pre-Build Tasks (inkl. CV PDF) Dateien: - `stefankoelle/pdf/cv-style.css` — WeasyPrint-Stylesheet (A4, Typografie) -- `stefankoelle/pdf/build-pdf.sh` — Shell-Skript für PDF-Generierung +- `stefankoelle/pdf/build-pdf.sh` — Shell-Skript fuer PDF-Generierung - `stefankoelle/cv-print.njk` — Standalone HTML-Template (nur CV-Content) - `stefankoelle/pdf/cv.pdf` — Generiertes PDF (Output) @@ -124,21 +153,22 @@ Wichtig: Das PDF wird via Eleventy-Passthrough ins Build-Output kopiert (`dist/s ### CSS Cache-Busting -CSS-Dateien werden als Passthrough kopiert (kein Hash im Dateinamen). Bei CSS-Änderungen muss der Query-String in der `?v=N` Inkludierung erhöht werden: +CSS-Dateien werden als Passthrough kopiert (kein Hash im Dateinamen). Bei CSS-Aenderungen muss der Query-String in der `?v=N` Inkludierung erhoeht werden: - `stefankoelle/index.njk`: `` - `stefankoelle/ledmatrix/index.njk`: `` -Bei jeder CSS-Anpassung `?v=N` um 1 erhöhen, sonst cached der Browser die alte Datei. +Bei jeder CSS-Anpassung `?v=N` um 1 erhoehen, sonst cached der Browser die alte Datei. ## CI/CD -### Cloudflare Pages (moonweb) -`.github/workflows/build-deploy.yml` baut hub, infra, smarthome, code, retro. +### IONOS SFTP (www.moonweb.org) +`.github/workflows/build-deploy-moonweb.yml` baut alle moonweb Sites (hub, infra, smarthome, code, retro, timecapsule) und deployed per SFTP. Benötigte Secrets: -- `CLOUDFLARE_API_TOKEN` -- `CLOUDFLARE_ACCOUNT_ID` +- `IONOS_SFTP_HOST` +- `IONOS_SFTP_USER` +- `IONOS_SFTP_PASSWORD` ### IONOS SFTP (stefankoelle.de) `.github/workflows/deploy-stefankoelle.yml` baut stefankoelle.de und deployed per SFTP. @@ -150,9 +180,11 @@ Benötigte Secrets: ## Offene Punkte -- retro/ ist bewusst rudimentär gehalten +- retro/ ist bewusst rudimentaer gehalten - Querverlinkungen stefankoelle.de <-> smarthome (zukuenftig) - Ledmatrix ggf. nach smarthome verschieben (when ready) +- Cloudflare Redirects einrichten (nach Deploy) +- Google Search Console: Neue Property www.moonweb.org ## GitHub Aggregator @@ -191,10 +223,10 @@ python3 -m venv .venv ## Text / Stil -- Keine Em-Dashes (—) verwenden, stattdessen umformulieren (Komma, Satzzeichen, neu formulieren) +- Keine Em-Dashes verwenden, stattdessen umformulieren (Komma, Satzzeichen, neu formulieren) ## Python / pip -- Niemals `pip install` direkt ausführen +- Niemals `pip install` direkt ausfuehren - Immer ein virtuelles Umfeld (`.venv`) anlegen und darin arbeiten - `python3 -m venv .venv` im Projektverzeichnis diff --git a/README.md b/README.md index d513416..16260cb 100755 --- a/README.md +++ b/README.md @@ -1,88 +1,67 @@ -# 🌙 moonweb-site +# moonweb-site -Monorepo for the **moonweb.org** homelab — five static sites built with [Eleventy](https://www.11ty.dev/), deployed to [Cloudflare Pages](https://pages.cloudflare.com/). +Monorepo for the **moonweb.org** homelab — six static sites built with [Eleventy](https://www.11ty.dev/), deployed to [IONOS SFTP](https://www.ionos.de/). ``` -hub.moonweb.org → 🏠 Central index & gateway -infra.moonweb.org → 🏗️ Infrastructure overview (Proxmox, Synology, Docker) -smarthome.moonweb.org → 🏡 Smart home projects & dashboards -code.moonweb.org → 💻 Curated GitHub project catalog -retro.moonweb.org → 🕹️ Physical retro hardware collection -stefankoelle.de → 👤 CV, career, personal site (LED Matrix docs) +www.moonweb.org/ -> Central index & gateway +www.moonweb.org/infra/ -> Infrastructure overview (Proxmox, Synology, Docker) +www.moonweb.org/smarthome/ -> Smart home projects & dashboards +www.moonweb.org/code/ -> Curated GitHub project catalog +www.moonweb.org/retro/ -> Physical retro hardware collection +www.moonweb.org/timecapsule/ -> 2000s internet time capsule (retro design) +stefankoelle.de -> CV, career, personal site (LED Matrix docs) ``` -> **Other sites** (not in this monorepo): [www.moonweb.org](https://www.moonweb.org) (2000s time capsule), [28k8.moonweb.org](https://28k8.moonweb.org) (90s BBS archive). +> **Other sites** (not in this monorepo): [28k8.moonweb.org](https://28k8.moonweb.org) (90s BBS archive), [buildbroken.moonweb.org](https://buildbroken.moonweb.org) (.NET Open Space blog). --- -## 📐 Architecture +## Architecture ``` -┌─────────────────────────────────────────────────────────────┐ -│ GitHub Actions CI │ -│ ┌───────────┐ ┌────────────┐ ┌─────────────┐ ┌─────────┐ │ -│ │ build:hub │ │build:infra │ │ build:smart │ │ build:… │ │ -│ └─────┬─────┘ └─────┬──────┘ └──────┬──────┘ └────┬────┘ │ -│ │ │ │ │ │ -│ ▼ ▼ ▼ ▼ │ -│ dist/hub/ dist/infra/ dist/smarthome/ dist/…/ │ -└────────┬───────────────────────────────────────────┬────────┘ - │ │ - ▼ ▼ -┌──────────────────┐ ┌─────────────────┐ -│ Cloudflare Pages │ │ IONOS SFTP │ -│ (5 sites) │ │ (stefankoelle) │ -└────────┬─────────┘ └────────┬────────┘ - ▼ ▼ - hub / infra / ... stefankoelle.de ++-------------------------------------------------------------------+ +| GitHub Actions CI | +| +-----------+ +------------+ +-------------+ +---------+ +------+ | +| | build:hub | |build:infra | | build:smart | | build:... | | build:timecapsule | | +| +-----+-----+ +-----+------+ +------+------+ +----+----+ +----+----+ +--------+ | +| | | | | | | | +| v v v v v v | +| dist/hub/ dist/infra/ dist/smarthome/ dist/.../ dist/timecapsule/ | ++--------+---------------------------------------------------+--------------------+ + | | + v v ++------------------+ +------------------+ +| IONOS SFTP | | IONOS SFTP | +| (www.moonweb.org)| | (stefankoelle.de)| ++--------+---------+ +--------+---------+ + v v + www.moonweb.org/* stefankoelle.de ``` --- -## 🛠️ Tech Stack +## Tech Stack | Layer | Technology | Why | |-------|-----------|-----| -| **SSG** | [Eleventy 3.1.6](https://www.11ty.dev/) | Markdown/YAML-first, minimal JS, `_data` folders map directly to aggregator output, low maintenance for 5 sites | +| **SSG** | [Eleventy 3.1.6](https://www.11ty.dev/) | Markdown/YAML-first, minimal JS, `_data` folders map directly to aggregator output | +| **SSG (timecapsule)** | [Eleventy 2.0.1](https://www.11ty.dev/) | Legacy 2001 design, CommonJS config | | **Templates** | [Nunjucks](https://mozilla.github.io/nunjucks/) | Shared `base.njk` layout with site-switcher header, `card-grid.njk` for index pages | -| **Styling** | Custom CSS (variables-based) | `base.css` for shared layout, `theme-*.css` per domain accent color, no build step needed | +| **Styling** | Custom CSS (variables-based) | `base.css` for shared layout, `theme-*.css` per domain accent color | | **Fonts** | [Lobster](https://fonts.google.com/specimen/Lobster) (Google Fonts) | Distinctive heading font across all sites | -| **CI/CD** | [GitHub Actions](https://github.com/features/actions) | Matrix build for all 5 sites, artifact upload, parallel deploy | -| **Deploy** | [Cloudflare Workers](https://workers.cloudflare.com/) | Static asset hosting via `wrangler pages deploy`, one worker per site | -| **DNS** | Cloudflare | Already managing DNS — zero additional setup for Pages custom domains | +| **CI/CD** | [GitHub Actions](https://github.com/features/actions) | Matrix build for all sites, artifact upload, merge step, parallel deploy | +| **Deploy** | IONOS SFTP | Static hosting via SFTP upload | +| **DNS** | Cloudflare | DNS management + redirects from old subdomains | | **GitHub Catalog** | Python aggregator | Reads `.moonweb.yml` from each repo, outputs `repos.json` | -| **Runtime** | Fully static | No server-side code, no containers, no database — pure HTML/CSS/JS | +| **Runtime** | Fully static | No server-side code, no containers, no database | --- -## 🎨 Design System - -### Header-consistent, content-flexible - -- **Header is identical** across all home-section sites: site-switcher (hub · infra · smarthome · code · retro · cv), domain accent color, Lobster title font. -- **Index pages** use a shared card-grid layout with grouped sections. -- **Detail pages** keep the same header but use a freer layout below it (e.g., pin tables, API docs, photos in free arrangement). - -### Accent colors - -| Domain | Color | Hex | -|--------|-------|-----| -| hub | Neutral blue | `#3b6ea5` | -| infra | Grey-blue | `#99333A` | -| smarthome | Teal | `#1f8a8a` | -| code | Violet | `#3E5098` | -| retro | Warm brown | `#8a6d3b` | - -### Emojis - -Each card on index pages has an emoji for visual navigation — consistent across hub, infra, smarthome, code, and retro. - ---- - -## 🚀 Local Development +## Local Development ```bash npm install # install Eleventy + deps +cd timecapsule && npm install # timecapsule has own deps (Eleventy 2.x) npm run dev:hub # http://localhost:8081 npm run dev:infra # http://localhost:8082 @@ -90,8 +69,9 @@ npm run dev:smarthome # http://localhost:8083 npm run dev:code # http://localhost:8084 npm run dev:retro # http://localhost:8085 npm run dev:stefankoelle # http://localhost:8086 +npm run dev:timecapsule # http://localhost:8087 -npm run dev # all 6 in parallel +npm run dev # all 7 in parallel ``` Each site has its own minimal Eleventy config (`/eleventy.config.js`). Live reload is built in. @@ -100,83 +80,96 @@ Each site has its own minimal Eleventy config (`/eleventy.config.js`). Liv ```bash npm run prebuild # pre-build tasks (CV PDF) -npm run build # builds all 5 → dist// +npm run build # builds all sites +npm run build:moonweb # builds moonweb sites only (excludes stefankoelle) npm run build:hub # build single site +npm run merge:moonweb # merge all moonweb sites into dist/ for deployment ``` --- -## 📦 Project Structure +## Project Structure ``` moonweb-site/ -├── hub/ # 🏠 Central index & gateway -├── infra/ # 🏗️ Infra overview + 3 detail pages +├── hub/ # Central index & gateway +├── infra/ # Infra overview + 8 detail pages │ ├── backup-strategy/ │ ├── monitoring/ -│ └── dev-environment/ -├── smarthome/ # 🏡 Smart home overview + 6 detail pages +│ ├── dev-environment/ +│ └── ... +├── smarthome/ # Smart home overview + 9 detail pages │ ├── homematic-mqtt/ │ ├── tasmota-energy/ -│ ├── balkonpi/ -│ ├── airplay-audio/ -│ ├── octoprint/ -│ └── tubearchivist/ -├── code/ # 💻 GitHub catalog +│ └── ... +├── code/ # GitHub catalog │ └── _data/repos.json # populated by the aggregator -├── retro/ # 🕹️ Retro hardware (WIP) -├── stefankoelle/ # 👤 CV, career, personal site +├── retro/ # Retro hardware + 13 detail pages +├── timecapsule/ # 2000s retro design (Eleventy 2.x) +│ ├── eleventy.config.js +│ ├── package.json +│ └── src/ +├── stefankoelle/ # CV, career, personal site │ ├── eleventy.config.js │ ├── index.njk # Onepager (CV, Projects, Languages) │ ├── cv-print.njk # CV-only for PDF generation │ ├── ledmatrix/ # LED Matrix WebServer documentation │ └── assets/ # CSS, JS, images, favicons -├── shared/ # 🔧 Shared components +├── shared/ # Shared components │ ├── _includes/ │ │ ├── base.njk # base layout (header, site-switcher, footer) │ │ └── card-grid.njk # card-grid template with emoji support │ ├── base.css # shared CSS (layout, cards, typography) │ └── theme-*.css # accent colors per domain ├── scripts/ -│ └── github-aggregator/ # 🐍 Python: reads .moonweb.yml → repos.json -│ ├── aggregate.py -│ ├── example.moonweb.yml -│ └── README.md +│ ├── github-aggregator/ # Python: reads .moonweb.yml -> repos.json +│ └── merge-moonweb.sh # Merge script for deployment ├── .github/workflows/ -│ └── build-deploy.yml # ⚙️ CI/CD: build + deploy to Cloudflare -├── DESIGN.md # 📋 Initial concept (German) -├── SPEC.md # 📋 Full specification (English, 159 lines) -├── PLAN.md # 📋 Implementation plan -├── TODO.md # 📋 Open items & workflow +│ ├── build-deploy-moonweb.yml # CI/CD: build + deploy to IONOS SFTP +│ └── deploy-stefankoelle.yml # CI/CD: stefankoelle.de to IONOS SFTP +├── DESIGN.md # Initial concept +├── SPEC.md # Full specification +├── PLAN.md # Implementation plan +├── TODO.md # Open items & workflow └── package.json # npm scripts for dev/build ``` --- -## 🔄 CI/CD Pipeline +## CI/CD Pipeline -### Cloudflare Pages (moonweb sites) +### IONOS SFTP (www.moonweb.org) -Defined in `.github/workflows/build-deploy.yml`: +Defined in `.github/workflows/build-deploy-moonweb.yml`: ``` push to main - │ - ├── Build (matrix: hub, infra, smarthome, code, retro) - │ ├── checkout → setup-node (22) → npm ci - │ ├── npm run build: - │ ├── validate dist// exists & non-empty - │ └── upload artifact (7-day retention) - │ - └── Deploy (matrix: 5 Cloudflare Workers) - ├── download artifact - ├── generate wrangler.toml - └── wrangler pages deploy + | + +-- Build (matrix: hub, infra, smarthome, code, retro) + | +-- checkout -> setup-node (22) -> npm ci + | +-- npm run build: + | +-- validate dist// exists & non-empty + | +-- upload artifact (7-day retention) + | + +-- Build timecapsule + | +-- cd timecapsule && npm ci + | +-- npm run build:timecapsule + | +-- upload artifact + | + +-- Merge + | +-- download all artifacts + | +-- merge into dist/ (hub=root, others=subdirs) + | +-- upload merged artifact + | + +-- Deploy + +-- download merged artifact + +-- SFTP upload to IONOS /websites/moonweb/ ``` **Required secrets:** -- `CLOUDFLARE_API_TOKEN` — Workers:Edit permission -- `CLOUDFLARE_ACCOUNT_ID` — Cloudflare account ID +- `IONOS_SFTP_HOST` +- `IONOS_SFTP_USER` +- `IONOS_SFTP_PASSWORD` ### IONOS SFTP (stefankoelle.de) @@ -184,12 +177,12 @@ Defined in `.github/workflows/deploy-stefankoelle.yml`: ``` push to main (paths: stefankoelle/**) - │ - ├── Build stefankoelle - │ └── npm run build:stefankoelle - │ - └── Deploy via SFTP - └── lftp mirror → IONOS /deploy/stefankoelle/ + | + +-- Build stefankoelle + | +-- npm run build:stefankoelle + | + +-- Deploy via SFTP + +-- SFTP upload to IONOS /websites/stefankoelle/ ``` **Required secrets:** @@ -199,7 +192,30 @@ push to main (paths: stefankoelle/**) --- -## 🐍 GitHub Aggregator (code.moonweb.org) +## URL Structure + +All moonweb.org sites are accessible under `www.moonweb.org` as subdirectories: + +| URL | Content | +|-----|---------| +| `www.moonweb.org/` | Hub (root) | +| `www.moonweb.org/infra/` | Infrastructure | +| `www.moonweb.org/smarthome/` | Smart Home | +| `www.moonweb.org/code/` | Code catalog | +| `www.moonweb.org/retro/` | Retro hardware | +| `www.moonweb.org/timecapsule/` | 2000s time capsule | +| `www.moonweb.org/impressum/` | Legal notice | + +Cloudflare redirects forward old subdomains: +- `hub.moonweb.org/*` -> `www.moonweb.org/*` +- `infra.moonweb.org/*` -> `www.moonweb.org/infra/*` +- `smarthome.moonweb.org/*` -> `www.moonweb.org/smarthome/*` +- `code.moonweb.org/*` -> `www.moonweb.org/code/*` +- `retro.moonweb.org/*` -> `www.moonweb.org/retro/*` + +--- + +## GitHub Aggregator (www.moonweb.org/code/) `scripts/github-aggregator/aggregate.py` automatically builds the project catalog: @@ -214,7 +230,7 @@ push to main (paths: stefankoelle/**) ```yaml title: "MVG Departures" category: code # code | smarthome | infra -subcategory: "Web Apps" # drives grouping on code.moonweb.org +subcategory: "Web Apps" # drives grouping on www.moonweb.org/code/ status: active stack: [Python, FastAPI] hosted_on: "Docker Host Debian (PVE)" @@ -229,42 +245,41 @@ export GITHUB_TOKEN=ghp_xxx python scripts/github-aggregator/aggregate.py ``` -> **Deliberately manual** — no scheduled CI job. The catalog is refreshed on demand, not on every push. - --- -## 📏 Content Rules +## Content Rules | Site | Detail pages? | Rule | |------|--------------|------| -| smarthome | ✅ Yes | When enough content exists — no placeholder cards | -| infra | ⚠️ Rarely | Deliberately shallow — sensitive data (IPs, keys, passwords) stripped | -| code | ❌ Never | Overview cards + GitHub links only — no README duplication | -| retro | 🔨 Minimal | Still WIP — honest minimal overview, no over-investment | +| smarthome | Yes | When enough content exists - no placeholder cards | +| infra | Rarely | Deliberately shallow - sensitive data (IPs, keys, passwords) stripped | +| code | Never | Overview cards + GitHub links only - no README duplication | +| retro | Minimal | Honest minimal overview, no over-investment | +| timecapsule | Static | 1:1 migration of original 2001 design, no changes | **Infra redaction rule:** Architecture-level only (Proxmox, Synology, Docker, VLAN concept). No concrete IPs, WireGuard keys, passwords, internal hostnames. --- -## 🌍 Language +## Language -All five sites are written **entirely in English**. German source documents are translated once during migration (AI-assisted). New content is authored in English from the start. +All moonweb sites are written **entirely in English**. The timecapsule uses the original 2001 English content. --- -## 📚 Documentation +## Documentation | File | Purpose | |------|---------| -| `DESIGN.md` | Initial concept and design decisions (German) | -| `SPEC.md` | Complete specification — what gets built (English) | +| `DESIGN.md` | Initial concept and design decisions | +| `SPEC.md` | Complete specification - what gets built | | `PLAN.md` | Phased implementation plan | | `TODO.md` | Open items, workflow, and current status | -| `README.md` | This file — project overview for GitHub | +| `README.md` | This file - project overview for GitHub | --- -## 📄 License +## License [![CC BY-NC-SA 4.0](https://img.shields.io/badge/License-CC%20BY--NC--SA%204.0-lightgrey.svg)](https://creativecommons.org/licenses/by-nc-sa/4.0/) diff --git a/TODO.md b/TODO.md index 49f8433..95ae694 100644 --- a/TODO.md +++ b/TODO.md @@ -1,76 +1,84 @@ -# TODO — moonweb-site Offene Items +# TODO: Consolidation zu www.moonweb.org -Stand: 2026-08-14 +## Uebersicht -## Aktueller Status +Alle moonweb.org Sites (hub, infra, smarthome, code, retro, timecapsule) unter `www.moonweb.org` als Subverzeichnisse vereinen. Deployment von Cloudflare Pages zu IONOS SFTP migrieren. -| Phase | Status | Bemerkung | -|-------|--------|-----------| -| Phase 0 — Repo & Tooling | ✅ fertig | Eleventy 3.1.6, CI/CD, .gitignore erweitert | -| Phase 1 — Content | ✅ fertig | hub, code, infra, smarthome komplett, retro bewusst rudimentär | -| Phase 2 — CI/CD | ✅ fertig | build-deploy.yml mit Caching + Validation + Summary | -| Phase 3 — Launch | ✅ fertig | Cloudflare Pages live, Smoke-Test bestanden | -| Phase 4 — Deferred | ⏸️ zurückgestellt | 28k8, Analytics | -| Phase 5 — stefankoelle.de | ✅ fertig | Ins Monorepo migriert, Eleventy-Build, SFTP-Deployment | +**URL-Struktur nach Migration:** +| URL | Inhalt | +|-----|--------| +| `www.moonweb.org/` | Hub (neue Root) | +| `www.moonweb.org/infra/` | Infra | +| `www.moonweb.org/smarthome/` | Smarthome | +| `www.moonweb.org/code/` | Code | +| `www.moonweb.org/retro/` | Retro | +| `www.moonweb.org/timecapsule/` | Altes www (2001-Retro) | +| `stefankoelle.de/` | CV (bleibt separat) | -## Offene Items +--- -### P4 — Deferred (nicht dringend) +## Phase 1: Timecapsule in Monorepo integrieren -- [ ] 28k8.moonweb.org Zukunft klären -- [ ] Perplexity-Rückkanal -- [ ] Apex-Domain Redirect (moonweb.org → hub.moonweb.org) -- [ ] PDF-Build fuer CV (WeasyPrint, lokal testen) -- [ ] Querverlinkungen stefankoelle.de <-> smarthome -- [ ] Ledmatrix ggf. nach smarthome verschieben -- [ ] **Dotnet Home-Automation-Projekt beschreiben** — Interne .NET Core Software für Kommunikation auf buttons.html und InfluxDB. Code muss erst aufgeraeumt und nach GitHub publiziert werden, dann Beschreibung auf stefankoelle.de und ggf. smarthome ergänzen. +- [x] 1.1 Dateien aus ../moonweb-www/src/ nach timecapsule/src/ kopieren +- [x] 1.2 timecapsule/eleventy.config.js erstellen (Eleventy 2.x) +- [x] 1.3 timecapsule/package.json erstellen (eigene Dependencies) +- [x] 1.4 timecapsule/src/_data/site.json anpassen (Domain mit /timecapsule/) +- [x] 1.5 Alle internen Pfade mit /timecapsule/ prefixieren +- [x] 1.6 Passthrough Copy in eleventy.config.js anpassen +- [x] 1.7 Build-Output pruefen (dist/timecapsule/) -### Offene Entscheidungen +## Phase 2: Eleventy-Configs aller Sites anpassen -- [ ] **stefankoelle.de SFTP: `delete_remote_files`?** — Derzeit werden beim Deploy nur Dateien hochgeloaden, alte bleiben liegen. Mit `delete_remote_files: true` waere jeder Deploy ein sauberes Image (alles weg + neu). Kurzer Ausfall moeglich. Entscheidung offen. +- [x] 2.1 hub/eleventy.config.js: site.url auf www.moonweb.org +- [x] 2.2 infra/eleventy.config.js: site.url auf www.moonweb.org +- [x] 2.3 smarthome/eleventy.config.js: site.url auf www.moonweb.org +- [x] 2.4 code/eleventy.config.js: site.url auf www.moonweb.org +- [x] 2.5 retro/eleventy.config.js: site.url auf www.moonweb.org +- [x] 2.6 shared/_includes/base.njk anpassen +- [x] 2.7 hub/index.njk: Card-Hrefs relativieren +- [x] 2.8 hub/impressum.njk: Domain-Liste aktualisieren -## Schon erledigt (Stand 2026-08-14) +## Phase 3: Build-System anpassen -### stefankoelle.de Migration (2026-08-14) -- [x] Eleventy-Config + package.json erweitert -- [x] Onepager-Layout mit Anchor-Links beibehalten -- [x] CV-Partial (zentral fuer Web + PDF) -- [x] CSS ausgelagert + modernisiert (Custom Properties, box-sizing) -- [x] Assets in assets/ verschoben -- [x] Ledmatrix als eigene Seite integriert -- [x] Alte Dateien geloescht (index.html, browserconfig.xml, sitemap.txt) -- [x] Deployment-Workflow fuer IONOS SFTP -- [x] Cloudflare-Workflow um stefankoelle erweitert (paths-ignore) +- [x] 3.1 package.json: Neue Scripts fuer timecapsule + merge +- [x] 3.2 scripts/merge-moonweb.sh erstellen +- [x] 3.3 Lokal Build testen (alle Sites) -### Vorherige Erledigungen (Stand 2026-08-13) -- [x] Impressum angelegt + Footer-Link auf allen Sites -- [x] Favicons (SVG mit Emojis) pro Subdomain — `shared/favicon/*.svg`, per Passthrough Copy -- [x] Meta descriptions auf allen 33 Seiten -- [x] CSS @import-Kette bereinigt (kein Render-Blocking mehr) -- [x] .gitignore erweitert (.env*, Zertifikate, Swap-Files) -- [x] Placeholder-Cards `"#"` bereinigt — keine mehr vorhanden -- [x] README.md überarbeitet (Emojis, Architektur, Tech-Stack, CI/CD) -- [x] Lizenz hinzugefügt (CC BY-NC-SA 4.0) -- [x] Content-Review — alle Seiten geprüft, alles passt -- [x] Cloudflare Pages Projects erstellt (moonweb-hub, -infra, -smarthome, -code, -retro) -- [x] DNS & Custom Domains gebunden -- [x] Secrets konfiguriert (CLOUDFLARE_API_TOKEN, CLOUDFLARE_ACCOUNT_ID) -- [x] Smoke-Test Cross-Linking — alles funktioniert auf live +## Phase 4: Deployment umstellen -## Workflow für neue Contexts +- [x] 4.1 Neuen Workflow .github/workflows/build-deploy-moonweb.yml erstellen +- [x] 4.2 Alten Workflow .github/workflows/build-deploy.yml entfernen +- [ ] 4.3 Alten deploy-moonweb.yml in moonweb-www deaktivieren -Wenn du einen neuen Context öffnest, lies diese Datei und prüfe: -1. Welche P4-Items sind relevant? → Nur wenn angefordert +## Phase 5: Cloudflare Redirects (manuell nach Deploy) -## Definition of done +- [ ] 5.1 Redirect-Regeln einrichten: -Alle 5 Sites live auf Cloudflare Pages: -- ✅ hub.moonweb.org — verlinkt alles (+ stefankoelle.de extern) -- ✅ code.moonweb.org — GitHub-Katalog via Aggregator -- ✅ smarthome.moonweb.org — Smart Home Übersicht + Detailseiten -- ✅ infra.moonweb.org — Infra-Übersicht (redigiert) -- ✅ retro.moonweb.org — Ehrliche minimale Übersicht (WIP) +| Quell-Domain | Ziel-URL | Type | +|-------------|----------|------| +| `hub.moonweb.org/*` | `https://www.moonweb.org/$1` | 301 | +| `infra.moonweb.org/*` | `https://www.moonweb.org/infra/$1` | 301 | +| `smarthome.moonweb.org/*` | `https://www.moonweb.org/smarthome/$1` | 301 | +| `code.moonweb.org/*` | `https://www.moonweb.org/code/$1` | 301 | +| `retro.moonweb.org/*` | `https://www.moonweb.org/retro/$1` | 301 | -stefankoelle.de live auf IONOS (SFTP-Deployment): -- ✅ stefankoelle.de — Onepager mit CV, Projects, Languages, Impressum -- ✅ stefankoelle.de/ledmatrix/ — LED Matrix WebServer Dokumentation +## Phase 6: SEO + +- [ ] 6.1 Google Search Console: Neue Property www.moonweb.org +- [ ] 6.2 Sitemap submiten + +## Phase 7: Cleanup + +- [ ] 7.1 moonweb-www Repository archivieren +- [ ] 7.2 Cloudflare Pages Projects loeschen (nach Redirect-Test) + +--- + +## Abgeschlossen + +Alle Code-Aenderungen sind fertig. Nächste Schritte: +1. Commit auf feature/consolidate-www Branch +2. Push und PR erstellen +3. Deployen +4. Cloudflare Redirects einrichten +5. Google Search Console aktualisieren diff --git a/code/eleventy.config.js b/code/eleventy.config.js index ae9fb63..8b6d6a1 100644 --- a/code/eleventy.config.js +++ b/code/eleventy.config.js @@ -1,5 +1,5 @@ module.exports = function (eleventyConfig) { - eleventyConfig.addGlobalData("site", { url: "https://code.moonweb.org" }); + eleventyConfig.addGlobalData("site", { url: "https://www.moonweb.org" }); eleventyConfig.addFilter("date", (d) => d.toISOString()); eleventyConfig.addPassthroughCopy({ "shared/theme-code.css": "theme.css" }); eleventyConfig.addPassthroughCopy({ "shared/base.css": "shared-base.css" }); diff --git a/hub/eleventy.config.js b/hub/eleventy.config.js index 73d8732..99a5a20 100644 --- a/hub/eleventy.config.js +++ b/hub/eleventy.config.js @@ -1,5 +1,5 @@ module.exports = function (eleventyConfig) { - eleventyConfig.addGlobalData("site", { url: "https://hub.moonweb.org" }); + eleventyConfig.addGlobalData("site", { url: "https://www.moonweb.org" }); eleventyConfig.addFilter("date", (d) => d.toISOString()); eleventyConfig.addPassthroughCopy({ "shared/theme-hub.css": "theme.css" }); eleventyConfig.addPassthroughCopy({ "shared/base.css": "shared-base.css" }); diff --git a/hub/impressum.njk b/hub/impressum.njk index 11a95c2..7ef4836 100644 --- a/hub/impressum.njk +++ b/hub/impressum.njk @@ -19,7 +19,7 @@ layout: base.njk

- Scope of this legal notice: This legal notice and the privacy policy below apply to the following websites, all operated by Stefan Kölle: hub.moonweb.org, smarthome.moonweb.org, infra.moonweb.org, code.moonweb.org, retro.moonweb.org, buildbroken.moonweb.org, 28k8.moonweb.org, www.moonweb.org, and stefankoelle.de. All of these sites are part of the same personal project network and are covered jointly by this single document. + Scope of this legal notice: This legal notice and the privacy policy below apply to the following websites, all operated by Stefan Kölle: www.moonweb.org (including /infra/, /smarthome/, /code/, /retro/, /timecapsule/), buildbroken.moonweb.org, 28k8.moonweb.org, and stefankoelle.de. All of these sites are part of the same personal project network and are covered jointly by this single document.

@@ -41,7 +41,7 @@ layout: base.njk

2. Purpose of these Websites

- The moonweb.org subdomains (hub, smarthome, infra, code, retro) document my private home-lab, home-automation and retro-computing hobby projects. buildbroken.moonweb.org is an archive of a blog I created with friends in our spare time. 28k8.moonweb.org is a homage to the 90s era. www.moonweb.org is an archived version of my original website from 2001. stefankoelle.de presents my professional CV and background as the same person. All are part of one personal project network and share this legal notice and privacy policy. + The moonweb.org websites (hub, smarthome, infra, code, retro, timecapsule) document my private home-lab, home-automation and retro-computing hobby projects. buildbroken.moonweb.org is an archive of a blog I created with friends in our spare time. 28k8.moonweb.org is a homage to the 90s era. stefankoelle.de presents my professional CV and background as the same person. All are part of one personal project network and share this legal notice and privacy policy.

3. Hosting

@@ -49,19 +49,17 @@ layout: base.njk Two different hosting providers are used within this network:

-

a) moonweb.org subdomains (hub, smarthome, infra, code, retro, buildbroken) — Cloudflare Pages

-

- Hosted via Cloudflare Pages, operated by Cloudflare, Inc., 101 Townsend St, San Francisco, CA 94107, USA. Cloudflare processes connection-level data (e.g. your IP address, request headers) as part of its content delivery and DDoS/security systems. This is governed by Cloudflare's Data Processing Addendum, which incorporates the EU Standard Contractual Clauses (2021) as a safeguard for the transfer of data to the USA. See cloudflare.com/privacypolicy. -

- -

b) www.moonweb.org and stefankoelle.de — IONOS SE

+

a) www.moonweb.org (hub, smarthome, infra, code, retro, timecapsule) — IONOS SE

Hosted on web space provided by IONOS SE, Elgendorfer Str. 57, 56410 Montabaur, Germany, acting as a processor under Art. 28 GDPR (Data Processing Agreement in place).

+

b) stefankoelle.de, buildbroken.moonweb.org, 28k8.moonweb.org — IONOS SE

- Legal basis for both: Art. 6(1)(f) GDPR (legitimate interest in reliable, secure delivery of the websites). -

+ Hosted on web space provided by IONOS SE, Elgendorfer Str. 57, 56410 Montabaur, Germany, acting as a processor under Art. 28 GDPR (Data Processing Agreement in place). + + +

Legal basis for both: Art. 6(1)(f) GDPR (legitimate interest in reliable, secure delivery of the websites).

4. No Tracking, No Cookies, No Analytics (current state)

diff --git a/hub/index.njk b/hub/index.njk index 75291b4..f484fc4 100644 --- a/hub/index.njk +++ b/hub/index.njk @@ -9,19 +9,19 @@ sections: cards: - title: "infra" summary: "Stack overview: Proxmox, Synology, network, backups, and how I work." - href: "https://infra.moonweb.org" + href: "/infra/" emoji: "🏗️" - title: "smarthome" summary: "What's actually running on the homelab, and why." - href: "https://smarthome.moonweb.org" + href: "/smarthome/" emoji: "🏠" - title: "code" summary: "Curated catalog of my GitHub projects." - href: "https://code.moonweb.org" + href: "/code/" emoji: "💻" - title: "retro" summary: "Physical retro hardware collection." - href: "https://retro.moonweb.org" + href: "/retro/" emoji: "🕹️" - heading: "About me" cards: @@ -37,7 +37,7 @@ sections: emoji: "💾" - title: "www.moonweb.org" summary: "The 2000s internet projects, networking and engineering." - href: "https://www.moonweb.org" + href: "/timecapsule/" emoji: "🌐" - title: "inseco.de" summary: "Internet services & consulting for gastronomy and clubs, Peak 2003–2008. Custom PHP/CMS." @@ -63,7 +63,7 @@ sections:

What this site is about

moonweb is a collection of personal projects that have grown over the past 25 years. What started as a single 486 running a BBS in the mid-90s has turned into a full homelab with Proxmox, Docker, smart home automation, and a growing collection of retro hardware. The name "moonweb" comes from the original domain moonweb.org, which has been online since 2000.

-

Each section of this site documents a different part of the setup. The infrastructure section covers the Proxmox cluster, Synology NAS, Docker containers, networking, and backup strategies. The smart home section shows what automation projects are running, from Tasmota energy monitoring to MQTT sensors and AirPlay audio. The code section lists the public GitHub projects that power these setups, and the retro section documents the hardware collection.

+

Each section of this site documents a different part of the setup. The infrastructure section covers the Proxmox cluster, Synology NAS, Docker containers, networking, and backup strategies. The smart home section shows what automation projects are running, from Tasmota energy monitoring to MQTT sensors and AirPlay audio. The code section lists the public GitHub projects that power these setups, and the retro section documents the hardware collection.

What I do professionally

I work as a Senior Software Developer & Architect at TENHIL GmbH (formerly stellenanzeigen.de), where I build and maintain microservices on .NET Core and Kubernetes. My day job involves designing cloud-native architectures, building APIs, and migrating legacy applications to modern stacks. I've been working with .NET since the early 2000s and have used everything from ASP Classic to the latest .NET 8 features.

diff --git a/infra/eleventy.config.js b/infra/eleventy.config.js index 3338af4..56d2baa 100644 --- a/infra/eleventy.config.js +++ b/infra/eleventy.config.js @@ -1,5 +1,5 @@ module.exports = function (eleventyConfig) { - eleventyConfig.addGlobalData("site", { url: "https://infra.moonweb.org" }); + eleventyConfig.addGlobalData("site", { url: "https://www.moonweb.org" }); eleventyConfig.addFilter("date", (d) => d.toISOString()); eleventyConfig.addPassthroughCopy({ "shared/theme-infra.css": "theme.css" }); eleventyConfig.addPassthroughCopy({ "shared/base.css": "shared-base.css" }); diff --git a/package.json b/package.json index d23157d..2699bcc 100644 --- a/package.json +++ b/package.json @@ -1,8 +1,8 @@ { "name": "moonweb-site", - "version": "0.2.0", + "version": "0.3.0", "private": true, - "description": "Monorepo for hub/infra/smarthome/code/retro (Eleventy, static, deployed to Cloudflare Pages)", + "description": "Monorepo for hub/infra/smarthome/code/retro/timecapsule (Eleventy, static, deployed to IONOS SFTP)", "scripts": { "dev:hub": "npx @11ty/eleventy --config=hub/eleventy.config.js --serve --port=8081", "dev:infra": "npx @11ty/eleventy --config=infra/eleventy.config.js --serve --port=8082", @@ -10,14 +10,18 @@ "dev:code": "npx @11ty/eleventy --config=code/eleventy.config.js --serve --port=8084", "dev:retro": "npx @11ty/eleventy --config=retro/eleventy.config.js --serve --port=8085", "dev:stefankoelle": "npx @11ty/eleventy --config=stefankoelle/eleventy.config.js --serve --port=8086", - "dev": "npm run dev:hub & npm run dev:infra & npm run dev:smarthome & npm run dev:code & npm run dev:retro & npm run dev:stefankoelle", + "dev:timecapsule": "cd timecapsule && npx @11ty/eleventy --serve --port=8087", + "dev": "npm run dev:hub & npm run dev:infra & npm run dev:smarthome & npm run dev:code & npm run dev:retro & npm run dev:stefankoelle & npm run dev:timecapsule", "build:hub": "npx @11ty/eleventy --config=hub/eleventy.config.js", "build:infra": "npx @11ty/eleventy --config=infra/eleventy.config.js", "build:smarthome": "npx @11ty/eleventy --config=smarthome/eleventy.config.js", "build:code": "npx @11ty/eleventy --config=code/eleventy.config.js", "build:retro": "npx @11ty/eleventy --config=retro/eleventy.config.js", "build:stefankoelle": "npx @11ty/eleventy --config=stefankoelle/eleventy.config.js", - "build": "npm run build:hub && npm run build:infra && npm run build:smarthome && npm run build:code && npm run build:retro && npm run build:stefankoelle", + "build:timecapsule": "cd timecapsule && npx @11ty/eleventy && mkdir -p ../../dist/timecapsule && cp -r _site/timecapsule/* ../../dist/timecapsule/", + "build": "npm run build:hub && npm run build:infra && npm run build:smarthome && npm run build:code && npm run build:retro && npm run build:timecapsule && npm run build:stefankoelle", + "build:moonweb": "npm run build:hub && npm run build:infra && npm run build:smarthome && npm run build:code && npm run build:retro && npm run build:timecapsule", + "merge:moonweb": "bash scripts/merge-moonweb.sh", "pdf:cv": "bash stefankoelle/pdf/build-pdf.sh", "prebuild": "bash prebuild.sh" }, diff --git a/retro/eleventy.config.js b/retro/eleventy.config.js index 729f1d4..0812a61 100644 --- a/retro/eleventy.config.js +++ b/retro/eleventy.config.js @@ -1,5 +1,5 @@ module.exports = function (eleventyConfig) { - eleventyConfig.addGlobalData("site", { url: "https://retro.moonweb.org" }); + eleventyConfig.addGlobalData("site", { url: "https://www.moonweb.org" }); eleventyConfig.addFilter("date", (d) => d.toISOString()); eleventyConfig.addPassthroughCopy({ "shared/theme-retro.css": "theme.css" }); eleventyConfig.addPassthroughCopy({ "shared/base.css": "shared-base.css" }); diff --git a/scripts/merge-moonweb.sh b/scripts/merge-moonweb.sh new file mode 100755 index 0000000..d2b50f8 --- /dev/null +++ b/scripts/merge-moonweb.sh @@ -0,0 +1,49 @@ +#!/bin/bash +set -e + +echo "Merging moonweb sites for deployment..." + +# Clean previous merge +rm -rf dist/root + +# Hub becomes root +echo " hub → dist/ (root)" +cp -r dist/hub dist/root +rm -rf dist/hub + +# Copy timecapsule from its build output +if [ -d "timecapsule/_site/timecapsule" ]; then + echo " timecapsule → dist/root/timecapsule/" + cp -r timecapsule/_site/timecapsule dist/root/timecapsule +else + echo " WARNING: timecapsule/_site/timecapsule not found, skipping" +fi + +# Subdirectories +for site in infra smarthome code retro; do + if [ -d "dist/$site" ]; then + echo " $site → dist/root/$site/" + cp -r "dist/$site" "dist/root/$site" + else + echo " WARNING: dist/$site not found, skipping" + fi +done + +# Copy CSS to root (accessible from all subdirectories) +echo " Copying shared CSS to root..." +cp shared/base.css dist/root/shared-base.css +cp shared/favicon/hub.svg dist/root/favicon.svg + +# Theme CSS files are already copied during build as theme.css +# The root theme is hub's theme +if [ -f "dist/root/theme.css" ]; then + echo " Root theme.css already in place" +fi + +echo "" +echo "Merge complete. Final structure:" +find dist/root -maxdepth 2 -type f | sort | head -50 +echo "..." +echo "" +echo "Total files:" +find dist/root -type f | wc -l diff --git a/shared/_includes/base.njk b/shared/_includes/base.njk index 6227245..fe0d6fd 100644 --- a/shared/_includes/base.njk +++ b/shared/_includes/base.njk @@ -17,7 +17,6 @@ {% if ogImage %}{% endif %} - @@ -45,8 +44,8 @@ "@context": "https://schema.org", "@type": "Person", "name": "Stefan Koelle", - "url": "https://hub.moonweb.org", - "image": "https://hub.moonweb.org/stefan-koelle-foto.jpg", + "url": "https://www.moonweb.org", + "image": "https://www.moonweb.org/stefan-koelle-foto.jpg", "jobTitle": "Senior Software Developer & Architect", "address": { "@type": "PostalAddress", @@ -69,11 +68,11 @@ {{ section }}.moonweb.org @@ -84,8 +83,8 @@ diff --git a/smarthome/eleventy.config.js b/smarthome/eleventy.config.js index 2f0091a..a08e52c 100644 --- a/smarthome/eleventy.config.js +++ b/smarthome/eleventy.config.js @@ -1,5 +1,5 @@ module.exports = function (eleventyConfig) { - eleventyConfig.addGlobalData("site", { url: "https://smarthome.moonweb.org" }); + eleventyConfig.addGlobalData("site", { url: "https://www.moonweb.org" }); eleventyConfig.addFilter("date", (d) => d.toISOString()); eleventyConfig.addPassthroughCopy({ "shared/theme-smarthome.css": "theme.css" }); eleventyConfig.addPassthroughCopy({ "shared/base.css": "shared-base.css" }); diff --git a/stefankoelle/_includes/base.njk b/stefankoelle/_includes/base.njk index 8066117..08110bd 100644 --- a/stefankoelle/_includes/base.njk +++ b/stefankoelle/_includes/base.njk @@ -26,11 +26,11 @@ {{ siteTitle | default(section + ".moonweb.org") }} @@ -41,8 +41,8 @@ diff --git a/stefankoelle/_includes/stefankoelle.njk b/stefankoelle/_includes/stefankoelle.njk index 28e71b8..bffe07a 100644 --- a/stefankoelle/_includes/stefankoelle.njk +++ b/stefankoelle/_includes/stefankoelle.njk @@ -43,7 +43,7 @@ "url": "{{ site.url }}", "jobTitle": "Software Developer", "sameAs": [ - "https://hub.moonweb.org", + "https://www.moonweb.org/", "https://www.linkedin.com/in/stefankoelle/", "https://github.com/skoelle", "https://www.xing.com/profile/Stefan_Koelle" diff --git a/stefankoelle/index.njk b/stefankoelle/index.njk index 4475a8c..c713766 100644 --- a/stefankoelle/index.njk +++ b/stefankoelle/index.njk @@ -25,30 +25,30 @@ layout: stefankoelle.njk

moonweb.org (since 2020)

My personal corner on the internet, documenting the homelab, smart home setups, infrastructure experiments, retro hardware, and the code that ties it all together. Everything runs on a homelab that has been evolving since the mid-90s.

    -
  • hub.moonweb.org: Overview of all sites and projects.
  • -
  • infra.moonweb.org: Proxmox cluster, Synology NAS, Docker containers, networking, and backup strategies.
  • -
  • smarthome.moonweb.org: Home Assistant, MQTT sensors, AirPlay audio, energy monitoring, and ESP32 dashboards.
  • -
  • code.moonweb.org: Curated catalog of public GitHub projects, sorted by topic.
  • -
  • retro.moonweb.org: Atari ST, Amiga, DOS, MiSTer FPGA, and the retro computing corner.
  • +
  • hub.moonweb.org: Overview of all sites and projects.
  • +
  • infra.moonweb.org: Proxmox cluster, Synology NAS, Docker containers, networking, and backup strategies.
  • +
  • smarthome.moonweb.org: Home Assistant, MQTT sensors, AirPlay audio, energy monitoring, and ESP32 dashboards.
  • +
  • code.moonweb.org: Curated catalog of public GitHub projects, sorted by topic.
  • +
  • retro.moonweb.org: Atari ST, Amiga, DOS, MiSTer FPGA, and the retro computing corner.

Home Network Projects (2025-2026)

    -
  • Docker Host (Proxmox PVE)
    Virtualized Docker host with Debian 12.2 running containerized services including Portainer, Prometheus, Grafana, Gitea, monitoring exporters, and more. Full architecture documented on infra.moonweb.org.
  • +
  • Docker Host (Proxmox PVE)
    Virtualized Docker host with Debian 12.2 running containerized services including Portainer, Prometheus, Grafana, Gitea, monitoring exporters, and more. Full architecture documented on infra.moonweb.org.
  • InfluxDB Time-Series Integration
    Deployed InfluxDB 2.x for sensor data collection from Tasmota smart plugs and HomematicIP thermostats, replacing older MySQL-based storage with modern time-series architecture.
  • LED Matrix ESP32 InfluxDB Integration
    Data persistence layer for LED Matrix ESP32 sensor systems (DHT22 temperature/humidity) with InfluxDB 2.x backend. Automated collection at 60-second intervals for historical trend analysis.
  • -
  • Air Quality Dashboard
    Dynamic HTML5 dashboard consuming real-time sensor data from InfluxDB via Flux query API. Displays temperature and humidity across all network locations, accessible via nginx reverse proxy. See also smarthome.moonweb.org.
  • -
  • Tasmota Energy Monitoring
    Smart plug energy tracking with 8 Tasmota-enabled devices, integrating MQTT data collection and visualization. See also smarthome.moonweb.org.
  • -
  • Network Hardware & Monitoring
    Four Zyxel GS1200-8HP managed switches in the server room, living room, and study, plus a Multi-WAN OpenWrt router for failover and VLAN segmentation. All switches feed into Prometheus monitoring via SNMP exporters, and IoT devices are isolated in VLAN 189.
  • +
  • Air Quality Dashboard
    Dynamic HTML5 dashboard consuming real-time sensor data from InfluxDB via Flux query API. Displays temperature and humidity across all network locations, accessible via nginx reverse proxy. See also smarthome.moonweb.org.
  • +
  • Tasmota Energy Monitoring
    Smart plug energy tracking with 8 Tasmota-enabled devices, integrating MQTT data collection and visualization. See also smarthome.moonweb.org.
  • +
  • Network Hardware & Monitoring
    Four Zyxel GS1200-8HP managed switches in the server room, living room, and study, plus a Multi-WAN OpenWrt router for failover and VLAN segmentation. All switches feed into Prometheus monitoring via SNMP exporters, and IoT devices are isolated in VLAN 189.

Retro Computing (2022/2023)

-

Upgrade of old Atari Mega 4 (2021)

+

Upgrade of old Atari Mega 4 (2021)

-

Kids RFID MP3 Player (2018)

+

Kids RFID MP3 Player (2018)

  • Interactive audio playback system utilizing RFID technology.
  • Powered by an Arduino Nano for compact and efficient operation.
  • @@ -146,7 +146,7 @@ layout: stefankoelle.njk

    AI-Assisted Development

    I've fully embraced the AI-assisted development paradigm since early 2025. At work, I've taught Claude Code a workflow for handling Jira stories end-to-end: it evaluates requirements, provides feedback to the PO, and creates a detailed implementation plan. From there, it's mostly about supervising the plan while the code generation runs largely autonomously. For code review, we use a second AI (e.g., Codex) as a quality gate to catch issues that might slip through. In migration projects, I define the exact plan upfront and Claude Code executes it with increasing independence. The output gain is massive, delivering in a fraction of the time.

    -

    Privately, I work with OpenCode paired with OpenCode Zen, Merge Gateway, and OpenRouter, mostly for Python-based home lab and automation projects. See my GitHub projects for examples and the Dev VM setup for the infrastructure behind this workflow.

    +

    Privately, I work with OpenCode paired with OpenCode Zen, Merge Gateway, and OpenRouter, mostly for Python-based home lab and automation projects. See my GitHub projects for examples and the Dev VM setup for the infrastructure behind this workflow.

    .NET Core

      @@ -243,5 +243,5 @@ layout: stefankoelle.njk

      Stefan Kölle
      Neumarkter Str. 86c
      81673 München

      Phone/Fax: +49-(89)-20006547
      E-Mail: [email protected]

      Responsible for content according to § 18 (2) MStV: Stefan Kölle, address as above.

      -

      Full legal notice & privacy policy for this website and the moonweb.org network: hub.moonweb.org/impressum +

      Full legal notice & privacy policy for this website and the moonweb.org network: hub.moonweb.org/impressum diff --git a/stefankoelle/ledmatrix/index.njk b/stefankoelle/ledmatrix/index.njk index 523f3cd..fdbce63 100644 --- a/stefankoelle/ledmatrix/index.njk +++ b/stefankoelle/ledmatrix/index.njk @@ -134,14 +134,14 @@ description: "WiFi-controlled LED display solution with REST API, DHT22 sensor,

      📊

      Sensor Readings

      -

      Live temperature and humidity from the on-board DHT22 sensor, stored in InfluxDB via MQTT

      +

      Live temperature and humidity from the on-board DHT22 sensor, stored in InfluxDB via MQTT

      🔔

      Status Messages

      -

      Notifications like "washing machine done" triggered via MQTT and Tasmota energy monitoring

      +

      Notifications like "washing machine done" triggered via MQTT and Tasmota energy monitoring

      @@ -575,7 +575,7 @@ ESP32 will be restarted (with display shutdown)
      diff --git a/timecapsule/_site/404/index.html b/timecapsule/_site/404/index.html new file mode 100644 index 0000000..45e79b7 --- /dev/null +++ b/timecapsule/_site/404/index.html @@ -0,0 +1,69 @@ + + + + + +moonweb.org - Page Not Found + + + + + + + + + + + + + + +
      + +
      + + + +
      +
      + +

      Page Not Found

      + +

      The page you are looking for does not exist on moonweb.org.

      + +

      It may have been moved, renamed, or removed.

      + +

      Go to the beginning

      + +
      +
      +
      +
      + +
      +
      + + diff --git a/timecapsule/_site/acoustics/index.html b/timecapsule/_site/acoustics/index.html new file mode 100644 index 0000000..126ef55 --- /dev/null +++ b/timecapsule/_site/acoustics/index.html @@ -0,0 +1,254 @@ + + + + + + + + + + + + + + + +moonweb.org - The acoustics + + + + + + + +
      + +
      +acoustics + + +
      +
      + + + +
      +
      + +

      The acoustics

      + +

      Music has always been a significant part of my life. Since 1995, I have been mixing on turntables. I also tried composing my own songs, but they never turned out very well.

      +

      Music on Computers

      +

      My first attempt at making music was on the computer. I never enjoyed live playing, so I sought a better way to create music. That's when I discovered MOD-Trackers. There are some nice MOD files, but they are very computer-based and don't sound like real music.

      +

      + + + +
      MOD-file examples (can be played on Winamp)

      Computer music examples from 1993:
      +... wizard.mod (46kB)
      +... run_away.mod (43kB)

      +

      Electronic techno-steps from 1994:
      +... lit_rave.mod (57kB)
      +... nxt_rave.mod (33kB)

      +
      +

      +

      Live Synthesizer Music

      +

      Later on, we tried to perform some live music. There are two tapes with live music that I will digitize very soon. One tape is a live recording from the S.O.N.A.X meets Genital Angriff session in our party room (screenshot follows), and the other is a solo tape from Genital Angriff.

      +

      + + + +
      Live Sessions

      vapeur live session (1992)
      +... album on soundcloud

      +
      +

      +

      Live Turntable Mixing

      +

      I started mixing later in life and never aspired to be a star DJ. I really enjoyed mixing at private parties and smaller events. In the 'DJ examples' box, you can find the latest afro-cosmic-double-mix with my DJ friend Marc le Nain, a live recording at the Private Lounge Party V.

      +

      + + + +
      DJ Examples

      Biggest events:
      +... All Areas Party Prince Garden
      +... 2nd place in DJ competition

      +

      Live mix:
      +... afro cosmic double mix on mix-cloud

      +
      +

      + + +
      +
      + +
      +
      + +
      +
      + + diff --git a/timecapsule/_site/background/index.html b/timecapsule/_site/background/index.html new file mode 100644 index 0000000..d8d0a93 --- /dev/null +++ b/timecapsule/_site/background/index.html @@ -0,0 +1,270 @@ + + + + + + + + + + + + + + + +moonweb.org - The background + + + + + + + +
      + +
      +background + + +
      +
      + + + +
      +
      + +

      The background

      + +

      Here is a list of key milestones in my IT learning journey.

      +

      The Key Dates

      +

      + + + +
      Key Dates

      1988
      +First computer (Atari ST)

      +

      1990
      +First computer program (Bowling)

      +

      1991
      +First complete computer game (Atom Oh No!)

      +

      1992
      +First Intel computer (80486)

      +

      1994
      +First computer modem

      +

      1996
      +Own computer mailbox and Fidonet access

      +

      1997
      +First computer network (10Mbit thin-ethernet)

      +

      1997-99
      +Trainee at IXOS SOFTWARE AG

      +

      1998
      +First internet webpage (www.moonweb.org)

      +

      1999-00
      +Web Engineer at IXOS SOFTWARE AG

      +

      2000
      +Microsoft certified for:

      +
        +
      • Windows NT 4.0 Workstation, Server
      • +
      • Internet Information Server 4.0
      • +
      +
      +

      +

      The Work at IXOS SOFTWARE AG

      +

      I started to work at IXOS SOFTWARE AG as an intern during my studies and worked on different projects.

      +
        +
      • +

        Jetform integration into IXOS ARCHIVE on an R/3 environment

        +
      • +
      • +

        Mobile internet computing test for IXOS Mobile/3

        +
      • +
      • +

        IXtrain sysadmin while studying

        +
      • +
      • +

        Digital timestamp client/server application in Java

        +
      • +
      • +

        Porting the Perl/CGI version of the IXOS Jukeman website to ASP/SQL on the IIS

        +
      • +
      +

      After I stopped my studies, I started to work at IXOS SOFTWARE AG as a Web Engineer. My job was to build up a logical environment for all scripts and to enable persons with no HTML experience to publish content on the www.ixos.com webpage. This was done for press releases, event database, and later for job offers. I also integrated the index server search engine on the webpage, including PDF indexing. If you have further questions about this, just email me.

      + + +
      +
      + +
      +
      + +
      +
      + + diff --git a/timecapsule/_site/beginning/index.html b/timecapsule/_site/beginning/index.html new file mode 100644 index 0000000..1861f86 --- /dev/null +++ b/timecapsule/_site/beginning/index.html @@ -0,0 +1,12 @@ + + + + + + +Redirecting to / + + +

      Redirecting to /

      + + diff --git a/timecapsule/_site/beginning/news.html b/timecapsule/_site/beginning/news.html new file mode 100644 index 0000000..488c318 --- /dev/null +++ b/timecapsule/_site/beginning/news.html @@ -0,0 +1,247 @@ + + + + + + + + + + + + + + + +moonweb.org - The news + + + + + + + +
      + +
      +beginning + + +
      +
      + + + +
      +
      + +

      The news

      + +

      This relaunch of moonweb.org is mostly a design update. In the following months, I will update one section per month.
      +Keep an eye on the following dates:

      +

      + + + +
      The dates of section updates

      06/2001 - The projects
      +07/2001 - The products
      +08/2001 - The acoustics

      +
      +

      +
      +

      The design relaunch (1.5.2001)

      +

      Many people ask me about the reason for moonweb.org. During my studies, I started to think more globally. I already had
      +some contacts through Fidonet, but serious networking and communication started with the internet. The first step was to build up
      +an internet brand, and I started with the first planets.org webpages. I quickly realized an internet brand has to have
      +its own domain. As everyone can expect, planets.org was already taken, and after sleepless nights, moonweb.org
      +became the domain of the moment.

      +

      So why have I relaunched the design of this domain?
      +Sure, there has not been much activity in the last two years on moonweb.org, but the main reason to update this page was
      +to collect all the projects and products we created over the past 10 years and document them on this webpage.

      +

      Are there still some active projects or new products?
      +Yes, and I hope there are still more to come. Stay tuned.
      +More about the upcoming projects and products in the next months.

      +

      Stefan

      + + +
      +
      + + + +
      +
      + +
      +
      + + diff --git a/timecapsule/_site/beginning/report.html b/timecapsule/_site/beginning/report.html new file mode 100644 index 0000000..a9b317c --- /dev/null +++ b/timecapsule/_site/beginning/report.html @@ -0,0 +1,242 @@ + + + + + + + + + + + + + + + +moonweb.org - The monthly report + + + + + + + +
      + +
      +beginning + + +
      +
      + + + +
      +
      + +

      The monthly report

      + +

      This month marks the relaunch. For more information about the relaunch, please visit the news page.

      +

      The Design Relaunch (1.5.2001)

      +

      Soon after the first release of the old moonweb.org design, I started thinking about a new design—a simple, clean, and smooth version. After a year of brainstorming, I developed the first version of the new design and aimed to publish it by the new millennium in 2000. However, I discovered numerous small issues I didn't like. Nearly another year later, I finished the design. Here is a timeline with the key relaunch steps:

      +

      + + + +
      Timeline

      05/1998 - Release of old moonweb.org design
      +12/1998 - Idea of new moonweb.org design
      +12/1999 - First design prototype
      +05/2000 - Last content change on old design
      +01/2001 - Content prototype
      +03/2001 - Completed new design of moonweb.org
      +05/2001 - Design relaunch of moonweb.org

      +
      +

      +

      Meanwhile, I also tried to develop the INSECO Webpages, but they are still in early development. More information about this will be announced in the coming months with a detailed plan of the steps to publish the INSECO Webpages.

      +

      The content on moonweb.org will be released in three steps as described on the news page. This is due to the large amount of information that needs to be added to these sections. This time, I will describe everything that has been developed over the last 13 years.

      +

      For any comments, please write me an email. Thanks.

      +

      Stefan

      + + +
      +
      + + + +
      +
      + +
      +
      + + diff --git a/timecapsule/_site/beginning/sitemap.html b/timecapsule/_site/beginning/sitemap.html new file mode 100644 index 0000000..0ce1713 --- /dev/null +++ b/timecapsule/_site/beginning/sitemap.html @@ -0,0 +1,354 @@ + + + + + + + + + + + + + + + +moonweb.org - The sitemap + + + + + + + +
      + +
      +beginning + + +
      +
      + + + +
      +
      + +

      The sitemap

      + +

      Listed below is the sitemap of moonweb.org.

      +

      The Projects

      +

      The main purpose of moonweb.org is to build up knowledge through continuous learning by doing. You can find all finished, ongoing, and upcoming projects below.

      +
        +
      • Atari development
      • +
      • Amiga development
      • +
      • PC/Intel development
      • +
      • Fidonet/BBS
      • +
      • Network/Internet
      • +
      • Web development
      • +
      +
      + + + + + + +
      +The Projects +
      +
      +

      The Products

      +

      After 13 years of development, we have released several products during different projects.

      +
        +
      • SkyLINE Shareware Development
      • +
      • PHOBIA
      • +
      • ESPRIT (Tr@nceMission, P.C.C)
      • +
      • ASC (The Force, HCC)
      • +
      • Olympic Arts / TropicDREAMS
      • +
      +
      + + + + + + +
      +The Products +
      +
      +

      The Acoustics

      +

      Live music and DJ mixes recorded over the past 10 years. Also, some rare tracks from studioMARS.

      +
        +
      • Live music
      • +
      • Live mixing
      • +
      • studioMARS
      • +
      +
      + + + + + + +
      +The Acoustics +
      +
      +

      The Location

      +

      General information about our current operations and our locations.

      +
        +
      • Branch offices
      • +
      • Environments
      • +
      • Teams
      • +
      +
      + + + + + + +
      +The Location +
      +
      +

      The Background

      +

      Information about myself, the creator of moonweb.org, and the beginnings of the moonweb.org network.

      +
        +
      • Personal
      • +
      • Knowledge
      • +
      • Timeline
      • +
      +
      + + + + + + +
      +The Background +
      +
      +

      The Partners

      +

      All our partners, supporters, and guests.

      +
        +
      • Partners
      • +
      • Supporters
      • +
      • Guests
      • +
      +
      + + + + + + +
      +The Partners +
      +
      +

      The Contact

      +

      Different ways to get in contact with us.

      +
        +
      • Phone
      • +
      • Fax
      • +
      • Email
      • +
      +
      + + + + + + +
      +The Contact +
      +
      + + +
      +
      + + + +
      +
      + +
      +
      + + diff --git a/timecapsule/_site/contact/index.html b/timecapsule/_site/contact/index.html new file mode 100644 index 0000000..6b5dff8 --- /dev/null +++ b/timecapsule/_site/contact/index.html @@ -0,0 +1,233 @@ + + + + + + + + + + + + + + + +moonweb.org - The contact + + + + + + + +
      + +
      +contact + + +
      +
      + + + +
      +
      + +

      The contact

      + +

      For general information, please use this contact information.

      +

      + + + +
      Contact

      phone: +49.89.20006547
      +email: info@moonweb.org

      +
      +

      +

      Please report technical problems with this webserver to the webmaster.

      +

      + + + +
      Webmaster

      email: webmaster@moonweb.org

      +
      +

      + + +
      +
      + +
      +
      + +
      +
      + + diff --git a/timecapsule/_site/hardware.html b/timecapsule/_site/hardware.html new file mode 100644 index 0000000..1861f86 --- /dev/null +++ b/timecapsule/_site/hardware.html @@ -0,0 +1,12 @@ + + + + + + +Redirecting to / + + +

      Redirecting to /

      + + diff --git a/timecapsule/_site/index.html b/timecapsule/_site/index.html new file mode 100644 index 0000000..19c989f --- /dev/null +++ b/timecapsule/_site/index.html @@ -0,0 +1,235 @@ + + + + + + + + + + + + + + + +moonweb.org - The beginning + + + + + + + +
      + +
      +beginning + + +
      +
      + + + +
      +
      + +

      The beginning

      + +

      Welcome to the new moonweb.org website. After 2 years of part-time development, it is finally here.

      +

      The Idea

      +

      Thank you for visiting our page. The idea behind moonweb.org is to build IT knowledge and to learn from each other.
      +Since computer education in schools or colleges here in Germany isn't very comprehensive and often misses out on interesting aspects relevant to business life, we built up our IT knowledge through self-study.

      +

      The Website

      +

      This page mostly describes my life, the products I have developed, and the projects I have been part of.
      +You can also find some general information about the person who played a major role in my IT learning process, Matthias. Together, we took our first steps in computer programming in 1988 on an Atari STFM 1040, a great machine.

      +

      The Person

      +

      Since there is no advertising on my homepage, you probably know who I am, so I will skip the standard description of myself. If you want to know more about me, write me an email.
      +I dislike personal websites and often wonder if anyone would actually use this page. I stopped worrying about it :) and remember the main reason I started this website: to document all the information about my projects so I would never forget anything. That's all.

      +

      The Future

      +

      ... stay tuned

      +

      Stefan

      + + +
      +
      + + + +
      +
      + +
      +
      + + diff --git a/timecapsule/_site/index2.html b/timecapsule/_site/index2.html new file mode 100644 index 0000000..1861f86 --- /dev/null +++ b/timecapsule/_site/index2.html @@ -0,0 +1,12 @@ + + + + + + +Redirecting to / + + +

      Redirecting to /

      + + diff --git a/timecapsule/_site/index3.html b/timecapsule/_site/index3.html new file mode 100644 index 0000000..1861f86 --- /dev/null +++ b/timecapsule/_site/index3.html @@ -0,0 +1,12 @@ + + + + + + +Redirecting to / + + +

      Redirecting to /

      + + diff --git a/timecapsule/_site/infos.html b/timecapsule/_site/infos.html new file mode 100644 index 0000000..1861f86 --- /dev/null +++ b/timecapsule/_site/infos.html @@ -0,0 +1,12 @@ + + + + + + +Redirecting to / + + +

      Redirecting to /

      + + diff --git a/timecapsule/_site/legal-notice/index.html b/timecapsule/_site/legal-notice/index.html new file mode 100644 index 0000000..c3567a9 --- /dev/null +++ b/timecapsule/_site/legal-notice/index.html @@ -0,0 +1,224 @@ + + + + + + + + + + + + + + + +moonweb.org - Legal Notice + + + + + + + +
      + +
      +contact + + +
      +
      + + + +
      +
      + +

      Legal Notice

      + +

      Legal Notice (Impressum, § 5 DDG)

      +

      Stefan Kölle
      +Neumarkter Str. 86c
      +81673 München

      +

      Phone/Fax: +49-(89)-20006547
      +E-Mail: webmaster@moonweb.org

      +

      Responsible for content according to § 18 (2) MStV: Stefan Kölle, address as above.

      +

      Full legal notice & privacy policy for this website and the moonweb.org network: /impressum

      + + +
      +
      + +
      +
      + +
      +
      + + diff --git a/timecapsule/_site/links.html b/timecapsule/_site/links.html new file mode 100644 index 0000000..1861f86 --- /dev/null +++ b/timecapsule/_site/links.html @@ -0,0 +1,12 @@ + + + + + + +Redirecting to / + + +

      Redirecting to /

      + + diff --git a/timecapsule/_site/location/index.html b/timecapsule/_site/location/index.html new file mode 100644 index 0000000..b266edb --- /dev/null +++ b/timecapsule/_site/location/index.html @@ -0,0 +1,241 @@ + + + + + + + + + + + + + + + +moonweb.org - The location + + + + + + + +
      + +
      +location + + +
      +
      + + + +
      +
      + +

      The location

      + +

      moonweb.org was located in Augsburg, Germany. The location was connected to two additional locations: one in the same house via a 10 Mbit thin-Ethernet cable, and another to the Springfield.net network via a demand dial RAS connection. The next step was to build a much wider network with the new network project 'VPN demand dial connection'.

      +

      The Main Environment

      +

      There were some old servers which did not run very fast, so don't expect too much. The main server, the internet access, and the two client hubs (10 Mbit and 100 Mbit) were connected with a SOHO switch.

      +

      + + + +
      Hardware

      XS
      +smoothwall firewall

      +

      IO
      +The main server for all internal services

      +

      KALLISTO
      +Red Hat Linux Server

      +

      PANDORA
      +The multimedia workstation with 3 monitors and high-quality speakers

      +

      GANYMED
      +The guest computer

      +

      PHOBOS
      +Linux Server with Postfix/Apache

      +

      DIONE
      +The classic 486 with DOS

      +
      +

      +

      The Network

      +

      A network plan can be found here: network plan

      + + +
      +
      + +
      +
      + +
      +
      + + diff --git a/timecapsule/_site/network/index.html b/timecapsule/_site/network/index.html new file mode 100644 index 0000000..26c2aef --- /dev/null +++ b/timecapsule/_site/network/index.html @@ -0,0 +1,219 @@ + + + + + + + + + + + + + + + +moonweb.org - The network + + + + + + + +
      + +
      +network + + +
      +
      + + + +
      +
      + +

      The network

      + +

      Here is the moonweb.org network plan:

      +

      Detailed network plan of the moonweb.org network

      +

      The moonweb.org network in Augsburg, Germany, connected to two other locations via a 10 Mbit thin-Ethernet cable and a demand dial RAS connection. Plans included expanding with a VPN demand dial connection. The network had older servers, modest performance, and used a SOHO switch to connect the main server, internet access, and client hubs. The setup featured various servers and workstations, including a Smoothwall firewall and a classic 486 with DOS.

      + + +
      +
      + +
      +
      + +
      +
      + + diff --git a/timecapsule/_site/new.html b/timecapsule/_site/new.html new file mode 100644 index 0000000..1861f86 --- /dev/null +++ b/timecapsule/_site/new.html @@ -0,0 +1,12 @@ + + + + + + +Redirecting to / + + +

      Redirecting to /

      + + diff --git a/timecapsule/_site/partners/index.html b/timecapsule/_site/partners/index.html new file mode 100644 index 0000000..fc8e720 --- /dev/null +++ b/timecapsule/_site/partners/index.html @@ -0,0 +1,241 @@ + + + + + + + + + + + + + + + +moonweb.org - The partners + + + + + + + +
      + +
      +partners + + +
      +
      + + + +
      +
      + +

      The partners

      + +

      I want to thank some people who helped me during the last 13 years (1988-2001).

      +

      Matthias
      +For the best time ever while brainstorming about games, demos, and enhancements of all the tools we developed. And of course, I have to thank you for leading me to the Atari ST and not to the Amiga :) and for the help on all the projects.

      +

      The Elite, M.C.A., and of course the equinox website
      +For the inspiration in demo coding.

      +

      Milkrun
      +For the help with graphical coding.

      +

      Helmut Kalb
      +For the interesting projects at IXOS SOFTWARE AG.

      +

      Miltos
      +For the great help while learning ASP :)

      +

      Christian Beckmann
      +For the help with the network projects and for the hardware supply :)

      +

      Thomas Hoeger
      +For the nice time at IXtrain as a sysadmin.

      +

      Hary and Thomas
      +For the help with electronics.

      +

      Ulrich, Sirius-BBS Sysop, and Mash
      +For the great Fidonet time and for some help with the Fidonet projects.

      +

      Raphael
      +For some help with programming and network stuff.

      +

      Marco
      +For the nice cosmic sounds.

      +

      Juergen and Brainstorm-Radio
      +For the help with the Fidonet and internet projects.

      + + +
      +
      + +
      +
      + +
      +
      + + diff --git a/timecapsule/_site/products/index.html b/timecapsule/_site/products/index.html new file mode 100644 index 0000000..ac31470 --- /dev/null +++ b/timecapsule/_site/products/index.html @@ -0,0 +1,301 @@ + + + + + + + + + + + + + + + +moonweb.org - The products + + + + + + + +
      + +
      +products + + +
      +
      + + + +
      +
      + +

      The products

      + +

      Over the years of development projects, some products have been released. This section is grouped by project and also listed separately by product title. The projects started in 1988 on our first computers, which were Atari STFM 1040s. You can find more detailed information in the projects section.

      +

      The Atari ST Products

      +

      On our first project, we quickly learned to code some simple programs. Matthias mainly focused on medium resolution programming and Stefan on high resolution. As 12-year-olds, the type of software we wanted to code was games, although we also coded some nice tools.

      +
        +
      • +

        International Kegeln and Bowling (1990)
        +Our first release ever. Idea from Matthias (Olympic Arts) and first graphical coding project. The result was a complete Bowling game as a second version of "International Kegeln" simply called Bowling. It was complete, but never playable.

        +
      • +
      • +

        Runner (1991)
        +An all-round helper tool including a database, memo, system overview, and a game. Main idea from CPK and some help from Stefan on the built-in Hangman game.

        +
      • +
      • +

        Atom Oh No! (1991)
        +The second game release on the Atari ST completely coded by Stefan under the pseudonym "Tropic DREAMs". The idea came from the game Atomix on the Amiga, ported to the Atari ST high resolution 640x400 including a level maker and 10 demo levels.

        +
      • +
      • +

        TOP Tools (1992)
        +Some small tools and a game coded by Stefan under the pseudonym "Tropic DREAMs". All-round tool like Runner, a simple strategic game, and an archive tool for the Atari ST magazine TOS.

        +
      • +
      +

      + + + +
      The software group pseudonyms

      Olympic Arts
      +mainly Matthias, his brother, and sometimes Stefan

      +

      Tropic DREAMs
      +mainly Stefan

      +
      +

      +

      The PC Games

      +

      In about 1992, Matthias and I bought a 486 Intel personal computer and quickly learned to develop on this processor. Our main language was Turbo Pascal with more and more inline assembler from Stefan. The first type of software we wanted to develop was games.

      +
        +
      • +

        Glücksrad (1993)
        +The first PC software release in 1993. Code by Stefan, graphics from Matthias, and PC-Speaker sound sampled from the 'Wheel of Fortune' show on Sat1. The idea, of course, comes from 'Wheel of Fortune'. Recommended computer: 486 with DOS. ... download (400kB)

        +
      • +
      • +

        Tetris (1994)
        +Fully playable two-player Tetris competition preview. Complete coding and graphics by Stefan. Never finished a release version, but this version is very playable. Released under 'SkyLINE Production'. Recommended computer: 486 with DOS. Now available as DOSBox version for Windows and modern systems.
        +... download DOSBOX Version

        +
      • +
      +

      + + + +
      The software group pseudonyms

      Tr@nceMISSION
      +mainly Stefan, the goal was to build games and demos on the PC, but there was only one game release and some small demos and intros
      +Tr@nceMission Website with Sourcecode

      +

      SkyLINE Productions
      +mainly Stefan, the goal was to build serious applications on the PC. SkyLINE existed from 1993 until 1995 and released about 15 tools and demos
      +SkyLINE Production Releases

      +

      PHOB!A
      +was a short-lived PC demo group in 1994. It released the Phobia Welcome Intro, coded in Turbo Pascal with inline assembler, using palette tricks for animation and a custom font.
      +PHOB!A Website with Sourcecode

      +
      +

      +

      The PC Intros and Demos

      +

      Matthias and I always looked at the famous PC demos and thought about the way to code them. Several small demo releases deserve mention.

      +
        +
      • +

        phobia-intro (1994)
        +The best intro ever coded by me (Stefan). Some parts are faked, but it looks really good. I will try to make a screenshot soon and put the source and the executable into an archive for download. Meanwhile, you can read about the PHOBIA and the demo group story. Sorry, the links on this page do not work. ... read more

        +
      • +
      • +

        Copperintro (1995)
        +A really interesting demo with more than 100 colors in text mode done with Amiga copper-like effects. Only works on an old 486 PC. Perhaps it will run under Pentium, too. Just test it. ... download (10kB)

        +
      • +
      +

      The PC Tools

      +
        +
      • +

        DOSMENU II (1994)
        +The only boot selector that could change config.sys and autoexec.bat parameters while booting. There has never been a tool like this. It might be useful for you. A must for a DOS machine.
        +... download (170kB)
        +... free reg-key by email

        +
      • +
      • +

        misc Tools (1995)
        +SkyLINE released even more tools, especially the XLIBUNIT for Turbo Pascal for direct VGA functions. I will release the source code as public freeware, not sure if anyone would need it. Mostly assembler code, maybe just for fun to read through :)
        +... X Lib Unit on Github

        +
      • +
      + + +
      +
      + +
      +
      + +
      +
      + + diff --git a/timecapsule/_site/projects.html b/timecapsule/_site/projects.html new file mode 100644 index 0000000..1861f86 --- /dev/null +++ b/timecapsule/_site/projects.html @@ -0,0 +1,12 @@ + + + + + + +Redirecting to / + + +

      Redirecting to /

      + + diff --git a/timecapsule/_site/projects/index.html b/timecapsule/_site/projects/index.html new file mode 100644 index 0000000..e6dff41 --- /dev/null +++ b/timecapsule/_site/projects/index.html @@ -0,0 +1,341 @@ + + + + + + + + + + + + + + + +moonweb.org - The projects + + + + + + + +
      + +
      +projects + + +
      +
      + + + +
      +
      + +

      The projects

      + +

      The main goal of moonweb.org projects is to build up IT knowledge. Over the past 13 years, through a continuous learning process, I have gained extensive experience in various areas of IT.

      +

      Computer Programming Projects

      +

      Over the years, several products have been released through various development projects. These projects began in 1988 on our first computers, the Atari STFM 1040. More detailed information can be found in the projects section.

      +

      The Atari ST Products
      +Our first project involved coding simple programs. Matthias focused on medium resolution programming, while Stefan worked on high resolution. As 12-year-olds, we primarily coded games but also developed some useful tools.

      +
        +
      • +

        International Kegeln and Bowling (1990): Our first release, a complete but barely playable bowling game.

        +
      • +
      • +

        Runner (1991): An all-round helper tool with a database, memo, system overview, and a game.

        +
      • +
      • +

        Atom Oh No! (1991): A game inspired by Atomix on the Amiga, including a level maker and 10 demo levels.

        +
      • +
      • +

        TOP Tools (1992): Small tools and a game, including a strategic game and an archive tool for the Atari ST magazine TOS.

        +
      • +
      +

      The PC Games
      +In 1992, we started developing on a 486 Intel personal computer using Turbo Pascal and inline assembler. Our initial focus was on game development.

      +
        +
      • +

        Glücksrad (1993): A 'Wheel of Fortune' inspired game with graphics and PC-Speaker sound.

        +
      • +
      • +

        Tetris (1994): A two-player Tetris competition preview, very playable but never finished.

        +
      • +
      +

      The PC Intros and Demos
      +We were inspired by famous PC demos and released some small demo projects.

      +
        +
      • +

        phobia-intro (1994): A visually impressive intro.

        +
      • +
      • +

        Copperintro (1995): A demo with more than 100 colors in text mode, using Amiga copper-like effects.

        +
      • +
      +

      The PC Tools
      +We also developed several tools for DOS.

      +
        +
      • +

        DOSMENU II (1994): A boot selector that could change config.sys and autoexec.bat parameters while booting.

        +
      • +
      • +

        misc Tools (1995): Various tools, including XLIBUNIT for Turbo Pascal with direct VGA functions.

        +
      • +
      +

      Mailbox/BBS/Fidonet Projects

      +
        +
      • +

        BBS and Fidonet node (dates approximately 1994 - 2000)

        +
      • +
      • +

        Node in Augsburg with uplink directly to the NC in Munich

        +
      • +
      • +

        Operated on an OS/2 machine

        +
      • +
      • +

        2x ISDN, 1x MODEM

        +
      • +
      • +

        Approximately 20 subnodes and points

        +
      • +
      • +

        Bavaria HUB/HOST for various Alt-Nets

        +
      • +
      +

      Networking Projects

      +
        +
      • +

        Home network with various Linux servers and Windows NT 4.0

        +
      • +
      • +

        pfSense firewall predecessor

        +
      • +
      • +

        FreeBSD server with Apache/Sendmail/Perl scripts

        +
      • +
      • +

        NT 4.0 file server

        +
      • +
      • +

        Windows 98 and Windows 2000 hosts

        +
      • +
      • +

        Better information at /timecapsule/network/

        +
      • +
      +

      Practical Projects at IXOS SOFTWARE AG

      +
        +
      • +

        Redesigned the Jukeman website (in ASP classic and MSSQL)

        +
      • +
      • +

        Prepared rooms for R/3 training sessions

        +
      • +
      • +

        Worked in the innovation department

        +
      • +
      • +

        Developed blockchain technology for contract signing in Java

        +
      • +
      • +

        Created an R/3 module for Jetforms form editor in ABAP and C++

        +
      • +
      +

      Music Projects

      +

      Music has always been a significant part of my life. Since 1995, I have been mixing on turntables and composing my own songs, although they were never quite professional.

      +

      The Music on Computers
      +I started by composing music on the computer using MOD-Trackers. While these tracks were very computer-based, they didn't sound like real music.

      +
        +
      • +

        Examples from 1993: wizard.mod (46kB), run_away.mod (43kB)

        +
      • +
      • +

        Electronic techno-steps from 1994: lit_rave.mod (55kB), nxt_rave.mod (32kB)

        +
      • +
      +

      The Live Synthesizer Music
      +We later experimented with live music, resulting in two tapes of live recordings, including a session from S.O.N.A.X meets Genital Angriff and a solo tape from Genital Angriff.

      +

      The Live Turntable Mixing
      +I started mixing live at private and smaller parties. Some notable events include the 'all areas party prince garden' and winning 2nd place in a DJ competition. You can find a live recording of the afro-cosmic-double-mix with my DJ friend Marc Le Nain from Private Lounge Party V.

      + + +
      +
      + +
      +
      + +
      +
      + + diff --git a/timecapsule/_site/start.html b/timecapsule/_site/start.html new file mode 100644 index 0000000..1861f86 --- /dev/null +++ b/timecapsule/_site/start.html @@ -0,0 +1,12 @@ + + + + + + +Redirecting to / + + +

      Redirecting to /

      + + diff --git a/timecapsule/_site/stefan/index.html b/timecapsule/_site/stefan/index.html new file mode 100644 index 0000000..8df5aca --- /dev/null +++ b/timecapsule/_site/stefan/index.html @@ -0,0 +1,228 @@ + + + + + + + + + + + + + + + +moonweb.org - The person + + + + + + + +
      + +
      +stefan + + +
      +
      + + + +
      +
      + +

      The person

      + +

      Stefan Koelle Munich
      +Stefan Kölle
      +Neumarkter Str. 86c
      +81673 München
      +Germany

      +

      phone: +49-89-20006547
      +email: stefan.koelle@moonweb.org

      +

      Favourite radio station: FM4
      +Favourite internet radio: Soma FM
      +Favourite electronic band: Autechre

      +

      Links

      +

      More background information about myself

      + + +
      +
      + +
      +
      + +
      +
      + + diff --git a/timecapsule/_site/timecapsule/.htaccess b/timecapsule/_site/timecapsule/.htaccess new file mode 100644 index 0000000..49c7193 --- /dev/null +++ b/timecapsule/_site/timecapsule/.htaccess @@ -0,0 +1,3 @@ +RewriteEngine On +RewriteBase / +ErrorDocument 404 /404/index.html diff --git a/timecapsule/_site/timecapsule/acoustics/index.html b/timecapsule/_site/timecapsule/acoustics/index.html new file mode 100644 index 0000000..d0e0ea4 --- /dev/null +++ b/timecapsule/_site/timecapsule/acoustics/index.html @@ -0,0 +1,254 @@ + + + + + + + + + + + + + + + +moonweb.org - The acoustics + + + + + + + +
      + +
      +acoustics + + +
      +
      + + + +
      +
      + +

      The acoustics

      + +

      Music has always been a significant part of my life. Since 1995, I have been mixing on turntables. I also tried composing my own songs, but they never turned out very well.

      +

      Music on Computers

      +

      My first attempt at making music was on the computer. I never enjoyed live playing, so I sought a better way to create music. That's when I discovered MOD-Trackers. There are some nice MOD files, but they are very computer-based and don't sound like real music.

      +

      + + + +
      MOD-file examples (can be played on Winamp)

      Computer music examples from 1993:
      +... wizard.mod (46kB)
      +... run_away.mod (43kB)

      +

      Electronic techno-steps from 1994:
      +... lit_rave.mod (57kB)
      +... nxt_rave.mod (33kB)

      +
      +

      +

      Live Synthesizer Music

      +

      Later on, we tried to perform some live music. There are two tapes with live music that I will digitize very soon. One tape is a live recording from the S.O.N.A.X meets Genital Angriff session in our party room (screenshot follows), and the other is a solo tape from Genital Angriff.

      +

      + + + +
      Live Sessions

      vapeur live session (1992)
      +... album on soundcloud

      +
      +

      +

      Live Turntable Mixing

      +

      I started mixing later in life and never aspired to be a star DJ. I really enjoyed mixing at private parties and smaller events. In the 'DJ examples' box, you can find the latest afro-cosmic-double-mix with my DJ friend Marc le Nain, a live recording at the Private Lounge Party V.

      +

      + + + +
      DJ Examples

      Biggest events:
      +... All Areas Party Prince Garden
      +... 2nd place in DJ competition

      +

      Live mix:
      +... afro cosmic double mix on mix-cloud

      +
      +

      + + +
      +
      + +
      +
      + +
      +
      + + diff --git a/timecapsule/_site/timecapsule/assets/archive/banner/moonback_finish.gif b/timecapsule/_site/timecapsule/assets/archive/banner/moonback_finish.gif new file mode 100755 index 0000000..87e8917 Binary files /dev/null and b/timecapsule/_site/timecapsule/assets/archive/banner/moonback_finish.gif differ diff --git a/timecapsule/_site/timecapsule/assets/archive/banner/moonweb_banner_ani.gif b/timecapsule/_site/timecapsule/assets/archive/banner/moonweb_banner_ani.gif new file mode 100755 index 0000000..6621284 Binary files /dev/null and b/timecapsule/_site/timecapsule/assets/archive/banner/moonweb_banner_ani.gif differ diff --git a/timecapsule/_site/timecapsule/assets/archive/banner/moonweb_banner_static.gif b/timecapsule/_site/timecapsule/assets/archive/banner/moonweb_banner_static.gif new file mode 100755 index 0000000..69ec33e Binary files /dev/null and b/timecapsule/_site/timecapsule/assets/archive/banner/moonweb_banner_static.gif differ diff --git a/timecapsule/_site/timecapsule/assets/archive/banner/moonweb_newdesign5.gif b/timecapsule/_site/timecapsule/assets/archive/banner/moonweb_newdesign5.gif new file mode 100755 index 0000000..2629260 Binary files /dev/null and b/timecapsule/_site/timecapsule/assets/archive/banner/moonweb_newdesign5.gif differ diff --git a/timecapsule/_site/timecapsule/assets/archive/fuckoff.jpg b/timecapsule/_site/timecapsule/assets/archive/fuckoff.jpg new file mode 100755 index 0000000..0e13208 Binary files /dev/null and b/timecapsule/_site/timecapsule/assets/archive/fuckoff.jpg differ diff --git a/timecapsule/_site/timecapsule/assets/archive/splash-pre.gif b/timecapsule/_site/timecapsule/assets/archive/splash-pre.gif new file mode 100755 index 0000000..c2596a1 Binary files /dev/null and b/timecapsule/_site/timecapsule/assets/archive/splash-pre.gif differ diff --git a/timecapsule/_site/timecapsule/assets/archive/splash.gif b/timecapsule/_site/timecapsule/assets/archive/splash.gif new file mode 100755 index 0000000..9b0087c Binary files /dev/null and b/timecapsule/_site/timecapsule/assets/archive/splash.gif differ diff --git a/timecapsule/_site/timecapsule/assets/content/network.jpg b/timecapsule/_site/timecapsule/assets/content/network.jpg new file mode 100755 index 0000000..ed0dd49 Binary files /dev/null and b/timecapsule/_site/timecapsule/assets/content/network.jpg differ diff --git a/timecapsule/_site/timecapsule/assets/content/stefan-koelle.jpg b/timecapsule/_site/timecapsule/assets/content/stefan-koelle.jpg new file mode 100755 index 0000000..33b174d Binary files /dev/null and b/timecapsule/_site/timecapsule/assets/content/stefan-koelle.jpg differ diff --git a/timecapsule/_site/timecapsule/assets/css/moonweb.css b/timecapsule/_site/timecapsule/assets/css/moonweb.css new file mode 100644 index 0000000..4e28894 --- /dev/null +++ b/timecapsule/_site/timecapsule/assets/css/moonweb.css @@ -0,0 +1,315 @@ +body { + font-family: Verdana, Arial, sans-serif; + font-size:9pt; + background-color:#FFFFFF; + color:#000000; + margin: 0px; + } +input { + font-family: Verdana, Arial, sans-serif; + font-size:9pt; + width:300px; + BORDER-WIDTH: 1px; + BORDER-STYLE: solid; + BORDER-COLOR: #666666; + BACKGROUND-COLOR: #EEEEEE; + COLOR: #000000; + } +.inputbutton { + font-family: Verdana, Arial, sans-serif; + font-size:9pt; + width:120px; + BORDER-WIDTH: 1px; + BORDER-STYLE: solid; + BORDER-COLOR: #666666; + BACKGROUND-COLOR: #DDDDDD; + COLOR: #000000; + } +textarea { + font-family: Verdana, Arial, sans-serif; + font-size:9pt; + width:450px; + height:150px; + BORDER-WIDTH: 1px; + BORDER-STYLE: solid; + BORDER-COLOR: #666666; + BACKGROUND-COLOR: #EEEEEE; + COLOR: #000000; + } +hr { color:#AA2233; height:1; } +h1 { font-family:Impact,sans-serif,Arial; font-size:14pt; font-weight:normal; background-color:#DDDDDD; color:#555544; } +h2 { font-family: Verdana, Arial, sans-serif; font-weight:bold; font-size:9pt; background-color:#EEEEEE; color:#990033;} +h3 { font-family:Impact,Verdana,Arial; font-size:12pt; font-weight:bold; padding-left:50px; color:#990033; } +p { font-family: Verdana, Arial, sans-serif; font-size:9pt;} +br { font-family: Verdana, Arial, sans-serif; font-size:9pt;} +p.red { font-family: Verdana, Arial, sans-serif; font-size:9pt; color:#990033;} +p.footer { font-family: Verdana, Arial, sans-serif; font-size:8pt; text-align:center; alignment:center; } +br.footer { font-family: Verdana, Arial, sans-serif; font-size:9pt; text-align:center; alignment:center; } +p.pt8 { font-family:Verdana, Arial, sans-serif; font-size:9pt;} +th { font-family: Verdana, Arial, sans-serif; font-size:9pt;} +td { font-family: Verdana, Arial, sans-serif; font-size:9pt;} +ul { font-family: Verdana, Arial, sans-serif; list-style-image:url(/assets/images/item.gif); font-size:9pt;} +a:link { font-weight:bold; background-color:#FFFFFF; color:#334444; } +a:visited { font-weight:bold; background-color:#FFFFFF; color:#334444; } +a:active { font-weight:bold; background-color:#DDDDDD; color:#334444; } +a:hover { font-weight:bold; background-color:#BBCCEE; color:#334444; } +a.quicknav { font-weight:normal; text-decoration:none; background-color:#DDDDDD; width:85px; padding-right:5px; font-family: sans-serif, Arial, sans-serif; font-size:8pt; color:#AA2233; } +a.quicknav:visited { font-weight:normal; text-decoration:none; background-color:#DDDDDD; width:85px; padding-right:5px; font-family: sans-serif, Arial, sans-serif; font-size:8pt; color:#AA2233; } +a.quicknav:active { font-weight:normal; text-decoration:none; background-color:#DDDDDD; width:85px; padding-right:5px; font-family: sans-serif, Arial, sans-serif; font-size:8pt; color:#AA2233; } +a.quicknav:hover { font-weight:normal; text-decoration:none; background-color:#CCCCCC; width:85px; padding-right:5px; font-family: sans-serif, Arial, sans-serif; font-size:8pt; color:#AA2233; } +strong { color:#BBCCEE; background-color:#334444; font-weight:normal;} + +/* Mobile Header: nur auf Mobile sichtbar */ +.mobile-header { + display: none; +} + +.mobile-footer-quicknav { + display: none; +} + +/* ======================================== + MOBILE LAYOUT (Responsive) + ======================================== */ + +/* Navigation Toggle (nur im Mobile sichtbar) */ +.nav-toggle-button { + display: none; + background-color: #555544; + color: #CCAA66; + padding: 8px 12px; + cursor: pointer; + font-weight: bold; + border: none; + width: 100%; + text-align: left; +} +.nav-toggle-button:hover { + background-color: #444433; +} + +/* Mobile Breakpoint: 768px */ +@media (max-width: 768px) { + /* Mobile Header: Logo oben skaliert, darunter Seite + Navigation */ + .mobile-header { + display: block !important; + padding: 0 0 8px 0; + } + .mobile-logo { + display: block; + width: calc(100% - 40px); + max-width: 400px; + height: auto; + margin: 20px auto 0 auto; + border: 1px solid #000; + } + .mobile-nav-row { + display: flex !important; + align-items: flex-start; + padding: 20px; + } + .mobile-nav-row .mobile-pageimage { + flex-shrink: 0 !important; + width: 108px !important; + height: 120px !important; + object-fit: cover !important; + object-position: top !important; + border: 1px solid #000; + } + .mobile-header .nav-toggle { + flex: 1; + padding: 0 0 0 8px; + margin: 0; + } + .mobile-header .nav-toggle-button { + display: none !important; + } + .mobile-header .nav-table { + width: auto !important; + display: inline !important; + } + .mobile-header .nav-table > tbody, + .mobile-header .nav-table > tbody > tr { + display: inline !important; + } + .mobile-header .nav-table > tbody > tr > td { + display: inline !important; + width: auto !important; + text-align: left; + } + .mobile-header .nav-spacer { + display: inline !important; + width: 8px !important; + height: auto !important; + } + .mobile-header a.menu-item { + display: inline !important; + width: auto !important; + height: auto !important; + padding: 0 4px !important; + text-indent: 0 !important; + overflow: visible !important; + text-align: left; + background-image: none !important; + background-color: transparent; + color: #334444; + margin: 0; + font-weight: bold; + font-size: 14px; + } + .mobile-header a.menu-item:hover, + .mobile-header a.menu-item.active { + background-color: #BBCCEE; + } + + /* Layout-Tabellen auf Block umschalten */ + table.layout-main { + display: block !important; + width: 100% !important; + height: auto !important; + } + table.layout-main > tbody, + table.layout-main > tbody > tr { + display: block !important; + } + table.layout-main > tbody > tr > td { + display: block !important; + width: 100% !important; + padding: 0 !important; + } + + /* Linke Sidebar ausblenden */ + td.sidebar-left, + td.sidebar-left * { + display: none !important; + } + + /* Content-Bereich: Volle Breite */ + td.content-area { + width: 100% !important; + padding: 8px !important; + } + td.content-area table { + width: 100% !important; + padding: 8px !important; + } + td.content-area table td { + padding: 2px 10px !important; + } + + /* Rechte Sidebar ausblenden */ + td.sidebar-right, + td.sidebar-right * { + display: none !important; + } + + /* Footer: Volle Breite */ + td[colspan="2"] table { + width: 100% !important; + } + + /* Quicknav ueber Footer */ + .mobile-footer-quicknav { + display: block !important; + padding: 12px 20px; + text-align: center; + } + .mobile-footer-quicknav a.quicknav { + font-size: 14px; + margin: 0 4px; + } + + /* Typografie anpassen */ + body { + font-size: 14px !important; + line-height: 1.4; + } + h1 { + font-size: 18pt !important; + padding: 8px; + margin: 0; + } + h2 { + font-size: 11pt !important; + } + h3 { + font-size: 14pt !important; + padding-left: 10px !important; + } + p { + font-size: 14px !important; + } + + /* Formulare: Volle Breite */ + input[type="text"], + input[type="email"], + input[type="submit"], + textarea { + width: 100% !important; + max-width: 100% !important; + box-sizing: border-box; + } + + /* Tabellen in Inhalten: Volle Breite */ + td.content-area table { + display: table !important; + width: 100% !important; + } + + /* Quicknav: Kompakte horizontale Leiste */ + .quicknav-table { + width: 100% !important; + } + .quicknav-table td { + display: inline-block !important; + width: auto !important; + height: auto !important; + padding: 2px 4px !important; + } + .quicknav-table img { + display: none !important; + } + + /* Pseudonym-Box: Volle Breite */ + .pseudonym-box { + width: 100% !important; + max-width: 350px; + } + p[align="right"] { + text-align: center !important; + } + + /* Bilder: Responsiv */ + img { + max-width: 100% !important; + height: auto !important; + } + img.mobile-pageimage { + height: 120px !important; + max-height: 120px !important; + } + + /* Background: komplett aus */ + body { + background-image: none !important; + } + body::before { + display: none !important; + } +} + +/* Kleinere Breakpoint: 480px */ +@media (max-width: 480px) { + body { + font-size: 13px !important; + } + h1 { + font-size: 16pt !important; + } + td.content-area { + padding: 4px !important; + } + td.content-area table { + padding: 4px !important; + } +} diff --git a/timecapsule/_site/timecapsule/assets/css/nav-replacement.css b/timecapsule/_site/timecapsule/assets/css/nav-replacement.css new file mode 100644 index 0000000..6e74bef --- /dev/null +++ b/timecapsule/_site/timecapsule/assets/css/nav-replacement.css @@ -0,0 +1,104 @@ +/* Ersetzt den Bild-Hover-Tausch aus menu.js OHNE Javascript. */ + +/* Fix: inline in table cells with explicit height creates 2px baseline gap */ +table.quicknav-table img { display: block; } + +a.menu-item { + display: inline-block; + width: 76px; + height: 15px; + background-repeat: no-repeat; + text-indent: -9999px; + overflow: hidden; +} + + +a.menu-beginning { + background-image: url("/timecapsule/assets/menu/beginning.gif"); +} +a.menu-beginning:hover { + background-image: url("/timecapsule/assets/menu/beginning_h.gif"); +} +a.menu-beginning.active { + background-image: url("/timecapsule/assets/menu/beginning_a.gif"); +} + +a.menu-projects { + background-image: url("/timecapsule/assets/menu/projects.gif"); +} +a.menu-projects:hover { + background-image: url("/timecapsule/assets/menu/projects_h.gif"); +} +a.menu-projects.active { + background-image: url("/timecapsule/assets/menu/projects_a.gif"); +} + +a.menu-products { + background-image: url("/timecapsule/assets/menu/products.gif"); +} +a.menu-products:hover { + background-image: url("/timecapsule/assets/menu/products_h.gif"); +} +a.menu-products.active { + background-image: url("/timecapsule/assets/menu/products_a.gif"); +} + +a.menu-acoustics { + background-image: url("/timecapsule/assets/menu/acoustics.gif"); +} +a.menu-acoustics:hover { + background-image: url("/timecapsule/assets/menu/acoustics_h.gif"); +} +a.menu-acoustics.active { + background-image: url("/timecapsule/assets/menu/acoustics_a.gif"); +} + +a.menu-location { + background-image: url("/timecapsule/assets/menu/location.gif"); +} +a.menu-location:hover { + background-image: url("/timecapsule/assets/menu/location_h.gif"); +} +a.menu-location.active { + background-image: url("/timecapsule/assets/menu/location_a.gif"); +} + +a.menu-background { + background-image: url("/timecapsule/assets/menu/background.gif"); +} +a.menu-background:hover { + background-image: url("/timecapsule/assets/menu/background_h.gif"); +} +a.menu-background.active { + background-image: url("/timecapsule/assets/menu/background_a.gif"); +} + +a.menu-partners { + background-image: url("/timecapsule/assets/menu/partners.gif"); +} +a.menu-partners:hover { + background-image: url("/timecapsule/assets/menu/partners_h.gif"); +} +a.menu-partners.active { + background-image: url("/timecapsule/assets/menu/partners_a.gif"); +} + +a.menu-contact { + background-image: url("/timecapsule/assets/menu/contact.gif"); +} +a.menu-contact:hover { + background-image: url("/timecapsule/assets/menu/contact_h.gif"); +} +a.menu-contact.active { + background-image: url("/timecapsule/assets/menu/contact_a.gif"); +} + + +/* Mobile: Navigation als Text statt Bilder */ +@media (max-width: 768px) { + a.menu-item { + background-image: none !important; + text-indent: 0 !important; + overflow: visible !important; + } +} diff --git a/timecapsule/_site/timecapsule/assets/images/background.gif b/timecapsule/_site/timecapsule/assets/images/background.gif new file mode 100755 index 0000000..921e003 Binary files /dev/null and b/timecapsule/_site/timecapsule/assets/images/background.gif differ diff --git a/timecapsule/_site/timecapsule/assets/images/favicon.ico b/timecapsule/_site/timecapsule/assets/images/favicon.ico new file mode 100755 index 0000000..4cf9dbd Binary files /dev/null and b/timecapsule/_site/timecapsule/assets/images/favicon.ico differ diff --git a/timecapsule/_site/timecapsule/assets/images/item.gif b/timecapsule/_site/timecapsule/assets/images/item.gif new file mode 100755 index 0000000..b225a46 Binary files /dev/null and b/timecapsule/_site/timecapsule/assets/images/item.gif differ diff --git a/timecapsule/_site/timecapsule/assets/images/logo.gif b/timecapsule/_site/timecapsule/assets/images/logo.gif new file mode 100755 index 0000000..10a635c Binary files /dev/null and b/timecapsule/_site/timecapsule/assets/images/logo.gif differ diff --git a/timecapsule/_site/timecapsule/assets/images/logomobile.gif b/timecapsule/_site/timecapsule/assets/images/logomobile.gif new file mode 100755 index 0000000..69ec33e Binary files /dev/null and b/timecapsule/_site/timecapsule/assets/images/logomobile.gif differ diff --git a/timecapsule/_site/timecapsule/assets/images/pixel-white.gif b/timecapsule/_site/timecapsule/assets/images/pixel-white.gif new file mode 100755 index 0000000..350d4a3 Binary files /dev/null and b/timecapsule/_site/timecapsule/assets/images/pixel-white.gif differ diff --git a/timecapsule/_site/timecapsule/assets/images/quicknav-back.gif b/timecapsule/_site/timecapsule/assets/images/quicknav-back.gif new file mode 100755 index 0000000..cffd8b8 Binary files /dev/null and b/timecapsule/_site/timecapsule/assets/images/quicknav-back.gif differ diff --git a/timecapsule/_site/timecapsule/assets/images/quicknav-end.gif b/timecapsule/_site/timecapsule/assets/images/quicknav-end.gif new file mode 100755 index 0000000..43a9e14 Binary files /dev/null and b/timecapsule/_site/timecapsule/assets/images/quicknav-end.gif differ diff --git a/timecapsule/_site/timecapsule/assets/images/quicknav-top.gif b/timecapsule/_site/timecapsule/assets/images/quicknav-top.gif new file mode 100755 index 0000000..f102218 Binary files /dev/null and b/timecapsule/_site/timecapsule/assets/images/quicknav-top.gif differ diff --git a/timecapsule/_site/timecapsule/assets/images/redbottom.gif b/timecapsule/_site/timecapsule/assets/images/redbottom.gif new file mode 100755 index 0000000..7d0575b Binary files /dev/null and b/timecapsule/_site/timecapsule/assets/images/redbottom.gif differ diff --git a/timecapsule/_site/timecapsule/assets/images/redline.gif b/timecapsule/_site/timecapsule/assets/images/redline.gif new file mode 100755 index 0000000..2cd2eb9 Binary files /dev/null and b/timecapsule/_site/timecapsule/assets/images/redline.gif differ diff --git a/timecapsule/_site/timecapsule/assets/menu/acoustics.gif b/timecapsule/_site/timecapsule/assets/menu/acoustics.gif new file mode 100755 index 0000000..4890ea9 Binary files /dev/null and b/timecapsule/_site/timecapsule/assets/menu/acoustics.gif differ diff --git a/timecapsule/_site/timecapsule/assets/menu/acoustics_a.gif b/timecapsule/_site/timecapsule/assets/menu/acoustics_a.gif new file mode 100755 index 0000000..4491eca Binary files /dev/null and b/timecapsule/_site/timecapsule/assets/menu/acoustics_a.gif differ diff --git a/timecapsule/_site/timecapsule/assets/menu/acoustics_h.gif b/timecapsule/_site/timecapsule/assets/menu/acoustics_h.gif new file mode 100755 index 0000000..993046d Binary files /dev/null and b/timecapsule/_site/timecapsule/assets/menu/acoustics_h.gif differ diff --git a/timecapsule/_site/timecapsule/assets/menu/background.gif b/timecapsule/_site/timecapsule/assets/menu/background.gif new file mode 100755 index 0000000..9f52a88 Binary files /dev/null and b/timecapsule/_site/timecapsule/assets/menu/background.gif differ diff --git a/timecapsule/_site/timecapsule/assets/menu/background_a.gif b/timecapsule/_site/timecapsule/assets/menu/background_a.gif new file mode 100755 index 0000000..53edd78 Binary files /dev/null and b/timecapsule/_site/timecapsule/assets/menu/background_a.gif differ diff --git a/timecapsule/_site/timecapsule/assets/menu/background_h.gif b/timecapsule/_site/timecapsule/assets/menu/background_h.gif new file mode 100755 index 0000000..a72249f Binary files /dev/null and b/timecapsule/_site/timecapsule/assets/menu/background_h.gif differ diff --git a/timecapsule/_site/timecapsule/assets/menu/beginning.gif b/timecapsule/_site/timecapsule/assets/menu/beginning.gif new file mode 100755 index 0000000..21982d2 Binary files /dev/null and b/timecapsule/_site/timecapsule/assets/menu/beginning.gif differ diff --git a/timecapsule/_site/timecapsule/assets/menu/beginning_a.gif b/timecapsule/_site/timecapsule/assets/menu/beginning_a.gif new file mode 100755 index 0000000..44302de Binary files /dev/null and b/timecapsule/_site/timecapsule/assets/menu/beginning_a.gif differ diff --git a/timecapsule/_site/timecapsule/assets/menu/beginning_h.gif b/timecapsule/_site/timecapsule/assets/menu/beginning_h.gif new file mode 100755 index 0000000..fa07979 Binary files /dev/null and b/timecapsule/_site/timecapsule/assets/menu/beginning_h.gif differ diff --git a/timecapsule/_site/timecapsule/assets/menu/contact.gif b/timecapsule/_site/timecapsule/assets/menu/contact.gif new file mode 100755 index 0000000..0e155b2 Binary files /dev/null and b/timecapsule/_site/timecapsule/assets/menu/contact.gif differ diff --git a/timecapsule/_site/timecapsule/assets/menu/contact_a.gif b/timecapsule/_site/timecapsule/assets/menu/contact_a.gif new file mode 100755 index 0000000..011030e Binary files /dev/null and b/timecapsule/_site/timecapsule/assets/menu/contact_a.gif differ diff --git a/timecapsule/_site/timecapsule/assets/menu/contact_h.gif b/timecapsule/_site/timecapsule/assets/menu/contact_h.gif new file mode 100755 index 0000000..b82a73a Binary files /dev/null and b/timecapsule/_site/timecapsule/assets/menu/contact_h.gif differ diff --git a/timecapsule/_site/timecapsule/assets/menu/location.gif b/timecapsule/_site/timecapsule/assets/menu/location.gif new file mode 100755 index 0000000..608c4b1 Binary files /dev/null and b/timecapsule/_site/timecapsule/assets/menu/location.gif differ diff --git a/timecapsule/_site/timecapsule/assets/menu/location_a.gif b/timecapsule/_site/timecapsule/assets/menu/location_a.gif new file mode 100755 index 0000000..90cd5d9 Binary files /dev/null and b/timecapsule/_site/timecapsule/assets/menu/location_a.gif differ diff --git a/timecapsule/_site/timecapsule/assets/menu/location_h.gif b/timecapsule/_site/timecapsule/assets/menu/location_h.gif new file mode 100755 index 0000000..4233516 Binary files /dev/null and b/timecapsule/_site/timecapsule/assets/menu/location_h.gif differ diff --git a/timecapsule/_site/timecapsule/assets/menu/partners.gif b/timecapsule/_site/timecapsule/assets/menu/partners.gif new file mode 100755 index 0000000..c3671ae Binary files /dev/null and b/timecapsule/_site/timecapsule/assets/menu/partners.gif differ diff --git a/timecapsule/_site/timecapsule/assets/menu/partners_a.gif b/timecapsule/_site/timecapsule/assets/menu/partners_a.gif new file mode 100755 index 0000000..22896de Binary files /dev/null and b/timecapsule/_site/timecapsule/assets/menu/partners_a.gif differ diff --git a/timecapsule/_site/timecapsule/assets/menu/partners_h.gif b/timecapsule/_site/timecapsule/assets/menu/partners_h.gif new file mode 100755 index 0000000..82d787e Binary files /dev/null and b/timecapsule/_site/timecapsule/assets/menu/partners_h.gif differ diff --git a/timecapsule/_site/timecapsule/assets/menu/products.gif b/timecapsule/_site/timecapsule/assets/menu/products.gif new file mode 100755 index 0000000..84f30f0 Binary files /dev/null and b/timecapsule/_site/timecapsule/assets/menu/products.gif differ diff --git a/timecapsule/_site/timecapsule/assets/menu/products_a.gif b/timecapsule/_site/timecapsule/assets/menu/products_a.gif new file mode 100755 index 0000000..10e4473 Binary files /dev/null and b/timecapsule/_site/timecapsule/assets/menu/products_a.gif differ diff --git a/timecapsule/_site/timecapsule/assets/menu/products_h.gif b/timecapsule/_site/timecapsule/assets/menu/products_h.gif new file mode 100755 index 0000000..0ca497b Binary files /dev/null and b/timecapsule/_site/timecapsule/assets/menu/products_h.gif differ diff --git a/timecapsule/_site/timecapsule/assets/menu/projects.gif b/timecapsule/_site/timecapsule/assets/menu/projects.gif new file mode 100755 index 0000000..39cadda Binary files /dev/null and b/timecapsule/_site/timecapsule/assets/menu/projects.gif differ diff --git a/timecapsule/_site/timecapsule/assets/menu/projects_a.gif b/timecapsule/_site/timecapsule/assets/menu/projects_a.gif new file mode 100755 index 0000000..c7312cf Binary files /dev/null and b/timecapsule/_site/timecapsule/assets/menu/projects_a.gif differ diff --git a/timecapsule/_site/timecapsule/assets/menu/projects_h.gif b/timecapsule/_site/timecapsule/assets/menu/projects_h.gif new file mode 100755 index 0000000..9ce7882 Binary files /dev/null and b/timecapsule/_site/timecapsule/assets/menu/projects_h.gif differ diff --git a/timecapsule/_site/timecapsule/assets/pageImage/acoustics.jpg b/timecapsule/_site/timecapsule/assets/pageImage/acoustics.jpg new file mode 100755 index 0000000..a0338a4 Binary files /dev/null and b/timecapsule/_site/timecapsule/assets/pageImage/acoustics.jpg differ diff --git a/timecapsule/_site/timecapsule/assets/pageImage/background.jpg b/timecapsule/_site/timecapsule/assets/pageImage/background.jpg new file mode 100755 index 0000000..5ff26d2 Binary files /dev/null and b/timecapsule/_site/timecapsule/assets/pageImage/background.jpg differ diff --git a/timecapsule/_site/timecapsule/assets/pageImage/beginning.jpg b/timecapsule/_site/timecapsule/assets/pageImage/beginning.jpg new file mode 100755 index 0000000..9450002 Binary files /dev/null and b/timecapsule/_site/timecapsule/assets/pageImage/beginning.jpg differ diff --git a/timecapsule/_site/timecapsule/assets/pageImage/contact.jpg b/timecapsule/_site/timecapsule/assets/pageImage/contact.jpg new file mode 100755 index 0000000..fe66e8d Binary files /dev/null and b/timecapsule/_site/timecapsule/assets/pageImage/contact.jpg differ diff --git a/timecapsule/_site/timecapsule/assets/pageImage/location.jpg b/timecapsule/_site/timecapsule/assets/pageImage/location.jpg new file mode 100755 index 0000000..e7a73c4 Binary files /dev/null and b/timecapsule/_site/timecapsule/assets/pageImage/location.jpg differ diff --git a/timecapsule/_site/timecapsule/assets/pageImage/network.jpg b/timecapsule/_site/timecapsule/assets/pageImage/network.jpg new file mode 100755 index 0000000..c57a2b8 Binary files /dev/null and b/timecapsule/_site/timecapsule/assets/pageImage/network.jpg differ diff --git a/timecapsule/_site/timecapsule/assets/pageImage/partners.jpg b/timecapsule/_site/timecapsule/assets/pageImage/partners.jpg new file mode 100755 index 0000000..53b34f7 Binary files /dev/null and b/timecapsule/_site/timecapsule/assets/pageImage/partners.jpg differ diff --git a/timecapsule/_site/timecapsule/assets/pageImage/products.jpg b/timecapsule/_site/timecapsule/assets/pageImage/products.jpg new file mode 100755 index 0000000..a0b1ae7 Binary files /dev/null and b/timecapsule/_site/timecapsule/assets/pageImage/products.jpg differ diff --git a/timecapsule/_site/timecapsule/assets/pageImage/projects.jpg b/timecapsule/_site/timecapsule/assets/pageImage/projects.jpg new file mode 100755 index 0000000..c57a2b8 Binary files /dev/null and b/timecapsule/_site/timecapsule/assets/pageImage/projects.jpg differ diff --git a/timecapsule/_site/timecapsule/assets/pageImage/stefan.jpg b/timecapsule/_site/timecapsule/assets/pageImage/stefan.jpg new file mode 100755 index 0000000..fe66e8d Binary files /dev/null and b/timecapsule/_site/timecapsule/assets/pageImage/stefan.jpg differ diff --git a/timecapsule/_site/timecapsule/background/index.html b/timecapsule/_site/timecapsule/background/index.html new file mode 100644 index 0000000..22d3e4c --- /dev/null +++ b/timecapsule/_site/timecapsule/background/index.html @@ -0,0 +1,270 @@ + + + + + + + + + + + + + + + +moonweb.org - The background + + + + + + + +
      + +
      +background + + +
      +
      + + + +
      +
      + +

      The background

      + +

      Here is a list of key milestones in my IT learning journey.

      +

      The Key Dates

      +

      + + + +
      Key Dates

      1988
      +First computer (Atari ST)

      +

      1990
      +First computer program (Bowling)

      +

      1991
      +First complete computer game (Atom Oh No!)

      +

      1992
      +First Intel computer (80486)

      +

      1994
      +First computer modem

      +

      1996
      +Own computer mailbox and Fidonet access

      +

      1997
      +First computer network (10Mbit thin-ethernet)

      +

      1997-99
      +Trainee at IXOS SOFTWARE AG

      +

      1998
      +First internet webpage (www.moonweb.org)

      +

      1999-00
      +Web Engineer at IXOS SOFTWARE AG

      +

      2000
      +Microsoft certified for:

      +
        +
      • Windows NT 4.0 Workstation, Server
      • +
      • Internet Information Server 4.0
      • +
      +
      +

      +

      The Work at IXOS SOFTWARE AG

      +

      I started to work at IXOS SOFTWARE AG as an intern during my studies and worked on different projects.

      +
        +
      • +

        Jetform integration into IXOS ARCHIVE on an R/3 environment

        +
      • +
      • +

        Mobile internet computing test for IXOS Mobile/3

        +
      • +
      • +

        IXtrain sysadmin while studying

        +
      • +
      • +

        Digital timestamp client/server application in Java

        +
      • +
      • +

        Porting the Perl/CGI version of the IXOS Jukeman website to ASP/SQL on the IIS

        +
      • +
      +

      After I stopped my studies, I started to work at IXOS SOFTWARE AG as a Web Engineer. My job was to build up a logical environment for all scripts and to enable persons with no HTML experience to publish content on the www.ixos.com webpage. This was done for press releases, event database, and later for job offers. I also integrated the index server search engine on the webpage, including PDF indexing. If you have further questions about this, just email me.

      + + +
      +
      + +
      +
      + +
      +
      + + diff --git a/timecapsule/_site/timecapsule/beginning/index.html b/timecapsule/_site/timecapsule/beginning/index.html new file mode 100644 index 0000000..1861f86 --- /dev/null +++ b/timecapsule/_site/timecapsule/beginning/index.html @@ -0,0 +1,12 @@ + + + + + + +Redirecting to / + + +

      Redirecting to /

      + + diff --git a/timecapsule/_site/timecapsule/beginning/news.html b/timecapsule/_site/timecapsule/beginning/news.html new file mode 100644 index 0000000..0ba14fd --- /dev/null +++ b/timecapsule/_site/timecapsule/beginning/news.html @@ -0,0 +1,247 @@ + + + + + + + + + + + + + + + +moonweb.org - The news + + + + + + + +
      + +
      +beginning + + +
      +
      + + + +
      +
      + +

      The news

      + +

      This relaunch of moonweb.org is mostly a design update. In the following months, I will update one section per month.
      +Keep an eye on the following dates:

      +

      + + + +
      The dates of section updates

      06/2001 - The projects
      +07/2001 - The products
      +08/2001 - The acoustics

      +
      +

      +
      +

      The design relaunch (1.5.2001)

      +

      Many people ask me about the reason for moonweb.org. During my studies, I started to think more globally. I already had
      +some contacts through Fidonet, but serious networking and communication started with the internet. The first step was to build up
      +an internet brand, and I started with the first planets.org webpages. I quickly realized an internet brand has to have
      +its own domain. As everyone can expect, planets.org was already taken, and after sleepless nights, moonweb.org
      +became the domain of the moment.

      +

      So why have I relaunched the design of this domain?
      +Sure, there has not been much activity in the last two years on moonweb.org, but the main reason to update this page was
      +to collect all the projects and products we created over the past 10 years and document them on this webpage.

      +

      Are there still some active projects or new products?
      +Yes, and I hope there are still more to come. Stay tuned.
      +More about the upcoming projects and products in the next months.

      +

      Stefan

      + + +
      +
      + + + +
      +
      + +
      +
      + + diff --git a/timecapsule/_site/timecapsule/beginning/report.html b/timecapsule/_site/timecapsule/beginning/report.html new file mode 100644 index 0000000..9f50c70 --- /dev/null +++ b/timecapsule/_site/timecapsule/beginning/report.html @@ -0,0 +1,242 @@ + + + + + + + + + + + + + + + +moonweb.org - The monthly report + + + + + + + +
      + +
      +beginning + + +
      +
      + + + +
      +
      + +

      The monthly report

      + +

      This month marks the relaunch. For more information about the relaunch, please visit the news page.

      +

      The Design Relaunch (1.5.2001)

      +

      Soon after the first release of the old moonweb.org design, I started thinking about a new design—a simple, clean, and smooth version. After a year of brainstorming, I developed the first version of the new design and aimed to publish it by the new millennium in 2000. However, I discovered numerous small issues I didn't like. Nearly another year later, I finished the design. Here is a timeline with the key relaunch steps:

      +

      + + + +
      Timeline

      05/1998 - Release of old moonweb.org design
      +12/1998 - Idea of new moonweb.org design
      +12/1999 - First design prototype
      +05/2000 - Last content change on old design
      +01/2001 - Content prototype
      +03/2001 - Completed new design of moonweb.org
      +05/2001 - Design relaunch of moonweb.org

      +
      +

      +

      Meanwhile, I also tried to develop the INSECO Webpages, but they are still in early development. More information about this will be announced in the coming months with a detailed plan of the steps to publish the INSECO Webpages.

      +

      The content on moonweb.org will be released in three steps as described on the news page. This is due to the large amount of information that needs to be added to these sections. This time, I will describe everything that has been developed over the last 13 years.

      +

      For any comments, please write me an email. Thanks.

      +

      Stefan

      + + +
      +
      + + + +
      +
      + +
      +
      + + diff --git a/timecapsule/_site/timecapsule/beginning/sitemap.html b/timecapsule/_site/timecapsule/beginning/sitemap.html new file mode 100644 index 0000000..72deec6 --- /dev/null +++ b/timecapsule/_site/timecapsule/beginning/sitemap.html @@ -0,0 +1,354 @@ + + + + + + + + + + + + + + + +moonweb.org - The sitemap + + + + + + + +
      + +
      +beginning + + +
      +
      + + + +
      +
      + +

      The sitemap

      + +

      Listed below is the sitemap of moonweb.org.

      +

      The Projects

      +

      The main purpose of moonweb.org is to build up knowledge through continuous learning by doing. You can find all finished, ongoing, and upcoming projects below.

      +
        +
      • Atari development
      • +
      • Amiga development
      • +
      • PC/Intel development
      • +
      • Fidonet/BBS
      • +
      • Network/Internet
      • +
      • Web development
      • +
      +
      + + + + + + +
      +The Projects +
      +
      +

      The Products

      +

      After 13 years of development, we have released several products during different projects.

      +
        +
      • SkyLINE Shareware Development
      • +
      • PHOBIA
      • +
      • ESPRIT (Tr@nceMission, P.C.C)
      • +
      • ASC (The Force, HCC)
      • +
      • Olympic Arts / TropicDREAMS
      • +
      +
      + + + + + + +
      +The Products +
      +
      +

      The Acoustics

      +

      Live music and DJ mixes recorded over the past 10 years. Also, some rare tracks from studioMARS.

      +
        +
      • Live music
      • +
      • Live mixing
      • +
      • studioMARS
      • +
      +
      + + + + + + +
      +The Acoustics +
      +
      +

      The Location

      +

      General information about our current operations and our locations.

      +
        +
      • Branch offices
      • +
      • Environments
      • +
      • Teams
      • +
      +
      + + + + + + +
      +The Location +
      +
      +

      The Background

      +

      Information about myself, the creator of moonweb.org, and the beginnings of the moonweb.org network.

      +
        +
      • Personal
      • +
      • Knowledge
      • +
      • Timeline
      • +
      +
      + + + + + + +
      +The Background +
      +
      +

      The Partners

      +

      All our partners, supporters, and guests.

      +
        +
      • Partners
      • +
      • Supporters
      • +
      • Guests
      • +
      +
      + + + + + + +
      +The Partners +
      +
      +

      The Contact

      +

      Different ways to get in contact with us.

      +
        +
      • Phone
      • +
      • Fax
      • +
      • Email
      • +
      +
      + + + + + + +
      +The Contact +
      +
      + + +
      +
      + + + +
      +
      + +
      +
      + + diff --git a/timecapsule/_site/timecapsule/contact/index.html b/timecapsule/_site/timecapsule/contact/index.html new file mode 100644 index 0000000..4f643e7 --- /dev/null +++ b/timecapsule/_site/timecapsule/contact/index.html @@ -0,0 +1,233 @@ + + + + + + + + + + + + + + + +moonweb.org - The contact + + + + + + + +
      + +
      +contact + + +
      +
      + + + +
      +
      + +

      The contact

      + +

      For general information, please use this contact information.

      +

      + + + +
      Contact

      phone: +49.89.20006547
      +email: info@moonweb.org

      +
      +

      +

      Please report technical problems with this webserver to the webmaster.

      +

      + + + +
      Webmaster

      email: webmaster@moonweb.org

      +
      +

      + + +
      +
      + +
      +
      + +
      +
      + + diff --git a/timecapsule/_site/timecapsule/hardware.html b/timecapsule/_site/timecapsule/hardware.html new file mode 100644 index 0000000..1861f86 --- /dev/null +++ b/timecapsule/_site/timecapsule/hardware.html @@ -0,0 +1,12 @@ + + + + + + +Redirecting to / + + +

      Redirecting to /

      + + diff --git a/timecapsule/_site/timecapsule/index.html b/timecapsule/_site/timecapsule/index.html new file mode 100644 index 0000000..239506d --- /dev/null +++ b/timecapsule/_site/timecapsule/index.html @@ -0,0 +1,235 @@ + + + + + + + + + + + + + + + +moonweb.org - The beginning + + + + + + + +
      + +
      +beginning + + +
      +
      + + + +
      +
      + +

      The beginning

      + +

      Welcome to the new moonweb.org website. After 2 years of part-time development, it is finally here.

      +

      The Idea

      +

      Thank you for visiting our page. The idea behind moonweb.org is to build IT knowledge and to learn from each other.
      +Since computer education in schools or colleges here in Germany isn't very comprehensive and often misses out on interesting aspects relevant to business life, we built up our IT knowledge through self-study.

      +

      The Website

      +

      This page mostly describes my life, the products I have developed, and the projects I have been part of.
      +You can also find some general information about the person who played a major role in my IT learning process, Matthias. Together, we took our first steps in computer programming in 1988 on an Atari STFM 1040, a great machine.

      +

      The Person

      +

      Since there is no advertising on my homepage, you probably know who I am, so I will skip the standard description of myself. If you want to know more about me, write me an email.
      +I dislike personal websites and often wonder if anyone would actually use this page. I stopped worrying about it :) and remember the main reason I started this website: to document all the information about my projects so I would never forget anything. That's all.

      +

      The Future

      +

      ... stay tuned

      +

      Stefan

      + + +
      +
      + + + +
      +
      + +
      +
      + + diff --git a/timecapsule/_site/timecapsule/index2.html b/timecapsule/_site/timecapsule/index2.html new file mode 100644 index 0000000..1861f86 --- /dev/null +++ b/timecapsule/_site/timecapsule/index2.html @@ -0,0 +1,12 @@ + + + + + + +Redirecting to / + + +

      Redirecting to /

      + + diff --git a/timecapsule/_site/timecapsule/index3.html b/timecapsule/_site/timecapsule/index3.html new file mode 100644 index 0000000..1861f86 --- /dev/null +++ b/timecapsule/_site/timecapsule/index3.html @@ -0,0 +1,12 @@ + + + + + + +Redirecting to / + + +

      Redirecting to /

      + + diff --git a/timecapsule/_site/timecapsule/infos.html b/timecapsule/_site/timecapsule/infos.html new file mode 100644 index 0000000..1861f86 --- /dev/null +++ b/timecapsule/_site/timecapsule/infos.html @@ -0,0 +1,12 @@ + + + + + + +Redirecting to / + + +

      Redirecting to /

      + + diff --git a/timecapsule/_site/timecapsule/legal-notice/index.html b/timecapsule/_site/timecapsule/legal-notice/index.html new file mode 100644 index 0000000..4188eb4 --- /dev/null +++ b/timecapsule/_site/timecapsule/legal-notice/index.html @@ -0,0 +1,224 @@ + + + + + + + + + + + + + + + +moonweb.org - Legal Notice + + + + + + + +
      + +
      +contact + + +
      +
      + + + +
      +
      + +

      Legal Notice

      + +

      Legal Notice (Impressum, § 5 DDG)

      +

      Stefan Kölle
      +Neumarkter Str. 86c
      +81673 München

      +

      Phone/Fax: +49-(89)-20006547
      +E-Mail: webmaster@moonweb.org

      +

      Responsible for content according to § 18 (2) MStV: Stefan Kölle, address as above.

      +

      Full legal notice & privacy policy for this website and the moonweb.org network: /impressum

      + + +
      +
      + +
      +
      + +
      +
      + + diff --git a/timecapsule/_site/timecapsule/links.html b/timecapsule/_site/timecapsule/links.html new file mode 100644 index 0000000..1861f86 --- /dev/null +++ b/timecapsule/_site/timecapsule/links.html @@ -0,0 +1,12 @@ + + + + + + +Redirecting to / + + +

      Redirecting to /

      + + diff --git a/timecapsule/_site/timecapsule/location/index.html b/timecapsule/_site/timecapsule/location/index.html new file mode 100644 index 0000000..d106e77 --- /dev/null +++ b/timecapsule/_site/timecapsule/location/index.html @@ -0,0 +1,241 @@ + + + + + + + + + + + + + + + +moonweb.org - The location + + + + + + + +
      + +
      +location + + +
      +
      + + + +
      +
      + +

      The location

      + +

      moonweb.org was located in Augsburg, Germany. The location was connected to two additional locations: one in the same house via a 10 Mbit thin-Ethernet cable, and another to the Springfield.net network via a demand dial RAS connection. The next step was to build a much wider network with the new network project 'VPN demand dial connection'.

      +

      The Main Environment

      +

      There were some old servers which did not run very fast, so don't expect too much. The main server, the internet access, and the two client hubs (10 Mbit and 100 Mbit) were connected with a SOHO switch.

      +

      + + + +
      Hardware

      XS
      +smoothwall firewall

      +

      IO
      +The main server for all internal services

      +

      KALLISTO
      +Red Hat Linux Server

      +

      PANDORA
      +The multimedia workstation with 3 monitors and high-quality speakers

      +

      GANYMED
      +The guest computer

      +

      PHOBOS
      +Linux Server with Postfix/Apache

      +

      DIONE
      +The classic 486 with DOS

      +
      +

      +

      The Network

      +

      A network plan can be found here: network plan

      + + +
      +
      + +
      +
      + +
      +
      + + diff --git a/timecapsule/_site/timecapsule/network/index.html b/timecapsule/_site/timecapsule/network/index.html new file mode 100644 index 0000000..813f8d4 --- /dev/null +++ b/timecapsule/_site/timecapsule/network/index.html @@ -0,0 +1,219 @@ + + + + + + + + + + + + + + + +moonweb.org - The network + + + + + + + +
      + +
      +network + + +
      +
      + + + +
      +
      + +

      The network

      + +

      Here is the moonweb.org network plan:

      +

      Detailed network plan of the moonweb.org network

      +

      The moonweb.org network in Augsburg, Germany, connected to two other locations via a 10 Mbit thin-Ethernet cable and a demand dial RAS connection. Plans included expanding with a VPN demand dial connection. The network had older servers, modest performance, and used a SOHO switch to connect the main server, internet access, and client hubs. The setup featured various servers and workstations, including a Smoothwall firewall and a classic 486 with DOS.

      + + +
      +
      + +
      +
      + +
      +
      + + diff --git a/timecapsule/_site/timecapsule/new.html b/timecapsule/_site/timecapsule/new.html new file mode 100644 index 0000000..1861f86 --- /dev/null +++ b/timecapsule/_site/timecapsule/new.html @@ -0,0 +1,12 @@ + + + + + + +Redirecting to / + + +

      Redirecting to /

      + + diff --git a/timecapsule/_site/timecapsule/partners/index.html b/timecapsule/_site/timecapsule/partners/index.html new file mode 100644 index 0000000..6550894 --- /dev/null +++ b/timecapsule/_site/timecapsule/partners/index.html @@ -0,0 +1,241 @@ + + + + + + + + + + + + + + + +moonweb.org - The partners + + + + + + + +
      + +
      +partners + + +
      +
      + + + +
      +
      + +

      The partners

      + +

      I want to thank some people who helped me during the last 13 years (1988-2001).

      +

      Matthias
      +For the best time ever while brainstorming about games, demos, and enhancements of all the tools we developed. And of course, I have to thank you for leading me to the Atari ST and not to the Amiga :) and for the help on all the projects.

      +

      The Elite, M.C.A., and of course the equinox website
      +For the inspiration in demo coding.

      +

      Milkrun
      +For the help with graphical coding.

      +

      Helmut Kalb
      +For the interesting projects at IXOS SOFTWARE AG.

      +

      Miltos
      +For the great help while learning ASP :)

      +

      Christian Beckmann
      +For the help with the network projects and for the hardware supply :)

      +

      Thomas Hoeger
      +For the nice time at IXtrain as a sysadmin.

      +

      Hary and Thomas
      +For the help with electronics.

      +

      Ulrich, Sirius-BBS Sysop, and Mash
      +For the great Fidonet time and for some help with the Fidonet projects.

      +

      Raphael
      +For some help with programming and network stuff.

      +

      Marco
      +For the nice cosmic sounds.

      +

      Juergen and Brainstorm-Radio
      +For the help with the Fidonet and internet projects.

      + + +
      +
      + +
      +
      + +
      +
      + + diff --git a/timecapsule/_site/timecapsule/products/index.html b/timecapsule/_site/timecapsule/products/index.html new file mode 100644 index 0000000..f4d6347 --- /dev/null +++ b/timecapsule/_site/timecapsule/products/index.html @@ -0,0 +1,301 @@ + + + + + + + + + + + + + + + +moonweb.org - The products + + + + + + + +
      + +
      +products + + +
      +
      + + + +
      +
      + +

      The products

      + +

      Over the years of development projects, some products have been released. This section is grouped by project and also listed separately by product title. The projects started in 1988 on our first computers, which were Atari STFM 1040s. You can find more detailed information in the projects section.

      +

      The Atari ST Products

      +

      On our first project, we quickly learned to code some simple programs. Matthias mainly focused on medium resolution programming and Stefan on high resolution. As 12-year-olds, the type of software we wanted to code was games, although we also coded some nice tools.

      +
        +
      • +

        International Kegeln and Bowling (1990)
        +Our first release ever. Idea from Matthias (Olympic Arts) and first graphical coding project. The result was a complete Bowling game as a second version of "International Kegeln" simply called Bowling. It was complete, but never playable.

        +
      • +
      • +

        Runner (1991)
        +An all-round helper tool including a database, memo, system overview, and a game. Main idea from CPK and some help from Stefan on the built-in Hangman game.

        +
      • +
      • +

        Atom Oh No! (1991)
        +The second game release on the Atari ST completely coded by Stefan under the pseudonym "Tropic DREAMs". The idea came from the game Atomix on the Amiga, ported to the Atari ST high resolution 640x400 including a level maker and 10 demo levels.

        +
      • +
      • +

        TOP Tools (1992)
        +Some small tools and a game coded by Stefan under the pseudonym "Tropic DREAMs". All-round tool like Runner, a simple strategic game, and an archive tool for the Atari ST magazine TOS.

        +
      • +
      +

      + + + +
      The software group pseudonyms

      Olympic Arts
      +mainly Matthias, his brother, and sometimes Stefan

      +

      Tropic DREAMs
      +mainly Stefan

      +
      +

      +

      The PC Games

      +

      In about 1992, Matthias and I bought a 486 Intel personal computer and quickly learned to develop on this processor. Our main language was Turbo Pascal with more and more inline assembler from Stefan. The first type of software we wanted to develop was games.

      +
        +
      • +

        Glücksrad (1993)
        +The first PC software release in 1993. Code by Stefan, graphics from Matthias, and PC-Speaker sound sampled from the 'Wheel of Fortune' show on Sat1. The idea, of course, comes from 'Wheel of Fortune'. Recommended computer: 486 with DOS. ... download (400kB)

        +
      • +
      • +

        Tetris (1994)
        +Fully playable two-player Tetris competition preview. Complete coding and graphics by Stefan. Never finished a release version, but this version is very playable. Released under 'SkyLINE Production'. Recommended computer: 486 with DOS. Now available as DOSBox version for Windows and modern systems.
        +... download DOSBOX Version

        +
      • +
      +

      + + + +
      The software group pseudonyms

      Tr@nceMISSION
      +mainly Stefan, the goal was to build games and demos on the PC, but there was only one game release and some small demos and intros
      +Tr@nceMission Website with Sourcecode

      +

      SkyLINE Productions
      +mainly Stefan, the goal was to build serious applications on the PC. SkyLINE existed from 1993 until 1995 and released about 15 tools and demos
      +SkyLINE Production Releases

      +

      PHOB!A
      +was a short-lived PC demo group in 1994. It released the Phobia Welcome Intro, coded in Turbo Pascal with inline assembler, using palette tricks for animation and a custom font.
      +PHOB!A Website with Sourcecode

      +
      +

      +

      The PC Intros and Demos

      +

      Matthias and I always looked at the famous PC demos and thought about the way to code them. Several small demo releases deserve mention.

      +
        +
      • +

        phobia-intro (1994)
        +The best intro ever coded by me (Stefan). Some parts are faked, but it looks really good. I will try to make a screenshot soon and put the source and the executable into an archive for download. Meanwhile, you can read about the PHOBIA and the demo group story. Sorry, the links on this page do not work. ... read more

        +
      • +
      • +

        Copperintro (1995)
        +A really interesting demo with more than 100 colors in text mode done with Amiga copper-like effects. Only works on an old 486 PC. Perhaps it will run under Pentium, too. Just test it. ... download (10kB)

        +
      • +
      +

      The PC Tools

      +
        +
      • +

        DOSMENU II (1994)
        +The only boot selector that could change config.sys and autoexec.bat parameters while booting. There has never been a tool like this. It might be useful for you. A must for a DOS machine.
        +... download (170kB)
        +... free reg-key by email

        +
      • +
      • +

        misc Tools (1995)
        +SkyLINE released even more tools, especially the XLIBUNIT for Turbo Pascal for direct VGA functions. I will release the source code as public freeware, not sure if anyone would need it. Mostly assembler code, maybe just for fun to read through :)
        +... X Lib Unit on Github

        +
      • +
      + + +
      +
      + +
      +
      + +
      +
      + + diff --git a/timecapsule/_site/timecapsule/projects.html b/timecapsule/_site/timecapsule/projects.html new file mode 100644 index 0000000..1861f86 --- /dev/null +++ b/timecapsule/_site/timecapsule/projects.html @@ -0,0 +1,12 @@ + + + + + + +Redirecting to / + + +

      Redirecting to /

      + + diff --git a/timecapsule/_site/timecapsule/projects/index.html b/timecapsule/_site/timecapsule/projects/index.html new file mode 100644 index 0000000..b4980b8 --- /dev/null +++ b/timecapsule/_site/timecapsule/projects/index.html @@ -0,0 +1,341 @@ + + + + + + + + + + + + + + + +moonweb.org - The projects + + + + + + + +
      + +
      +projects + + +
      +
      + + + +
      +
      + +

      The projects

      + +

      The main goal of moonweb.org projects is to build up IT knowledge. Over the past 13 years, through a continuous learning process, I have gained extensive experience in various areas of IT.

      +

      Computer Programming Projects

      +

      Over the years, several products have been released through various development projects. These projects began in 1988 on our first computers, the Atari STFM 1040. More detailed information can be found in the projects section.

      +

      The Atari ST Products
      +Our first project involved coding simple programs. Matthias focused on medium resolution programming, while Stefan worked on high resolution. As 12-year-olds, we primarily coded games but also developed some useful tools.

      +
        +
      • +

        International Kegeln and Bowling (1990): Our first release, a complete but barely playable bowling game.

        +
      • +
      • +

        Runner (1991): An all-round helper tool with a database, memo, system overview, and a game.

        +
      • +
      • +

        Atom Oh No! (1991): A game inspired by Atomix on the Amiga, including a level maker and 10 demo levels.

        +
      • +
      • +

        TOP Tools (1992): Small tools and a game, including a strategic game and an archive tool for the Atari ST magazine TOS.

        +
      • +
      +

      The PC Games
      +In 1992, we started developing on a 486 Intel personal computer using Turbo Pascal and inline assembler. Our initial focus was on game development.

      +
        +
      • +

        Glücksrad (1993): A 'Wheel of Fortune' inspired game with graphics and PC-Speaker sound.

        +
      • +
      • +

        Tetris (1994): A two-player Tetris competition preview, very playable but never finished.

        +
      • +
      +

      The PC Intros and Demos
      +We were inspired by famous PC demos and released some small demo projects.

      +
        +
      • +

        phobia-intro (1994): A visually impressive intro.

        +
      • +
      • +

        Copperintro (1995): A demo with more than 100 colors in text mode, using Amiga copper-like effects.

        +
      • +
      +

      The PC Tools
      +We also developed several tools for DOS.

      +
        +
      • +

        DOSMENU II (1994): A boot selector that could change config.sys and autoexec.bat parameters while booting.

        +
      • +
      • +

        misc Tools (1995): Various tools, including XLIBUNIT for Turbo Pascal with direct VGA functions.

        +
      • +
      +

      Mailbox/BBS/Fidonet Projects

      +
        +
      • +

        BBS and Fidonet node (dates approximately 1994 - 2000)

        +
      • +
      • +

        Node in Augsburg with uplink directly to the NC in Munich

        +
      • +
      • +

        Operated on an OS/2 machine

        +
      • +
      • +

        2x ISDN, 1x MODEM

        +
      • +
      • +

        Approximately 20 subnodes and points

        +
      • +
      • +

        Bavaria HUB/HOST for various Alt-Nets

        +
      • +
      +

      Networking Projects

      +
        +
      • +

        Home network with various Linux servers and Windows NT 4.0

        +
      • +
      • +

        pfSense firewall predecessor

        +
      • +
      • +

        FreeBSD server with Apache/Sendmail/Perl scripts

        +
      • +
      • +

        NT 4.0 file server

        +
      • +
      • +

        Windows 98 and Windows 2000 hosts

        +
      • +
      • +

        Better information at /timecapsule/network/

        +
      • +
      +

      Practical Projects at IXOS SOFTWARE AG

      +
        +
      • +

        Redesigned the Jukeman website (in ASP classic and MSSQL)

        +
      • +
      • +

        Prepared rooms for R/3 training sessions

        +
      • +
      • +

        Worked in the innovation department

        +
      • +
      • +

        Developed blockchain technology for contract signing in Java

        +
      • +
      • +

        Created an R/3 module for Jetforms form editor in ABAP and C++

        +
      • +
      +

      Music Projects

      +

      Music has always been a significant part of my life. Since 1995, I have been mixing on turntables and composing my own songs, although they were never quite professional.

      +

      The Music on Computers
      +I started by composing music on the computer using MOD-Trackers. While these tracks were very computer-based, they didn't sound like real music.

      +
        +
      • +

        Examples from 1993: wizard.mod (46kB), run_away.mod (43kB)

        +
      • +
      • +

        Electronic techno-steps from 1994: lit_rave.mod (55kB), nxt_rave.mod (32kB)

        +
      • +
      +

      The Live Synthesizer Music
      +We later experimented with live music, resulting in two tapes of live recordings, including a session from S.O.N.A.X meets Genital Angriff and a solo tape from Genital Angriff.

      +

      The Live Turntable Mixing
      +I started mixing live at private and smaller parties. Some notable events include the 'all areas party prince garden' and winning 2nd place in a DJ competition. You can find a live recording of the afro-cosmic-double-mix with my DJ friend Marc Le Nain from Private Lounge Party V.

      + + +
      +
      + +
      +
      + +
      +
      + + diff --git a/timecapsule/_site/timecapsule/robots.txt b/timecapsule/_site/timecapsule/robots.txt new file mode 100644 index 0000000..b41388a --- /dev/null +++ b/timecapsule/_site/timecapsule/robots.txt @@ -0,0 +1,4 @@ +User-agent: * +Allow: / + +Sitemap: https://www.moonweb.org/timecapsule/sitemap.xml diff --git a/timecapsule/_site/timecapsule/sitemap.xml b/timecapsule/_site/timecapsule/sitemap.xml new file mode 100644 index 0000000..62d4c5a --- /dev/null +++ b/timecapsule/_site/timecapsule/sitemap.xml @@ -0,0 +1,59 @@ + + + + https://www.moonweb.org/timecapsule/timecapsule/projects/ + 2001-05-01 + + + https://www.moonweb.org/timecapsule/timecapsule/background/ + 2001-05-01 + + + https://www.moonweb.org/timecapsule/timecapsule/beginning/news.html + 2001-05-01 + + + https://www.moonweb.org/timecapsule/timecapsule/beginning/report.html + 2001-05-01 + + + https://www.moonweb.org/timecapsule/timecapsule/beginning/sitemap.html + 2001-05-01 + + + https://www.moonweb.org/timecapsule/timecapsule/contact/ + 2001-05-01 + + + https://www.moonweb.org/timecapsule/timecapsule/ + 2001-05-01 + + + https://www.moonweb.org/timecapsule/timecapsule/legal-notice/ + 2026-08-16 + + + https://www.moonweb.org/timecapsule/timecapsule/partners/ + 2001-05-01 + + + https://www.moonweb.org/timecapsule/timecapsule/acoustics/ + 2001-05-01 + + + https://www.moonweb.org/timecapsule/timecapsule/location/ + 2001-05-01 + + + https://www.moonweb.org/timecapsule/timecapsule/network/ + 2001-05-01 + + + https://www.moonweb.org/timecapsule/timecapsule/products/ + 2001-05-01 + + + https://www.moonweb.org/timecapsule/timecapsule/stefan/ + 2001-05-01 + + diff --git a/timecapsule/_site/timecapsule/start.html b/timecapsule/_site/timecapsule/start.html new file mode 100644 index 0000000..1861f86 --- /dev/null +++ b/timecapsule/_site/timecapsule/start.html @@ -0,0 +1,12 @@ + + + + + + +Redirecting to / + + +

      Redirecting to /

      + + diff --git a/timecapsule/_site/timecapsule/stefan/index.html b/timecapsule/_site/timecapsule/stefan/index.html new file mode 100644 index 0000000..ffa22f9 --- /dev/null +++ b/timecapsule/_site/timecapsule/stefan/index.html @@ -0,0 +1,228 @@ + + + + + + + + + + + + + + + +moonweb.org - The person + + + + + + + +
      + +
      +stefan + + +
      +
      + + + +
      +
      + +

      The person

      + +

      Stefan Koelle Munich
      +Stefan Kölle
      +Neumarkter Str. 86c
      +81673 München
      +Germany

      +

      phone: +49-89-20006547
      +email: stefan.koelle@moonweb.org

      +

      Favourite radio station: FM4
      +Favourite internet radio: Soma FM
      +Favourite electronic band: Autechre

      +

      Links

      +

      More background information about myself

      + + +
      +
      + +
      +
      + +
      +
      + + diff --git a/timecapsule/_site/timecapsule/users.html b/timecapsule/_site/timecapsule/users.html new file mode 100644 index 0000000..1861f86 --- /dev/null +++ b/timecapsule/_site/timecapsule/users.html @@ -0,0 +1,12 @@ + + + + + + +Redirecting to / + + +

      Redirecting to /

      + + diff --git a/timecapsule/_site/users.html b/timecapsule/_site/users.html new file mode 100644 index 0000000..1861f86 --- /dev/null +++ b/timecapsule/_site/users.html @@ -0,0 +1,12 @@ + + + + + + +Redirecting to / + + +

      Redirecting to /

      + + diff --git a/timecapsule/eleventy.config.js b/timecapsule/eleventy.config.js new file mode 100644 index 0000000..ad9ed76 --- /dev/null +++ b/timecapsule/eleventy.config.js @@ -0,0 +1,38 @@ +const markdownIt = require("markdown-it"); + +const md = new markdownIt({ html: true, breaks: true }); + +module.exports = function (eleventyConfig) { + eleventyConfig.addPassthroughCopy({ "src/assets": "/timecapsule/assets" }); + eleventyConfig.addPassthroughCopy({ "src/.htaccess": "/timecapsule/.htaccess" }); + + eleventyConfig.setLibrary("md", md); + + eleventyConfig.addFilter("toIsoDate", function(dateStr) { + var parts = String(dateStr).split("/"); + if (parts.length === 3) { + var m = parts[0].padStart(2, "0"); + var d = parts[1].padStart(2, "0"); + var y = parts[2].padStart(4, "0"); + return y + "-" + m + "-" + d; + } + return dateStr; + }); + + eleventyConfig.addPairedShortcode("pseudonymBox", function (content, title) { + const body = md.render(content || ""); + return `

      + + + +
      ${title}
      ${body}
      +

      `; + }); + + return { + dir: { input: "src", includes: "_includes", data: "_data", output: "_site" }, + markdownTemplateEngine: "njk", + htmlTemplateEngine: "njk", + dataTemplateEngine: "njk", + }; +}; diff --git a/timecapsule/package-lock.json b/timecapsule/package-lock.json new file mode 100644 index 0000000..0f9f2b1 --- /dev/null +++ b/timecapsule/package-lock.json @@ -0,0 +1,2505 @@ +{ + "name": "moonweb-timecapsule", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "moonweb-timecapsule", + "version": "1.0.0", + "dependencies": { + "@11ty/eleventy": "^2.0.1", + "markdown-it": "^14.1.0" + } + }, + "node_modules/@11ty/dependency-tree": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@11ty/dependency-tree/-/dependency-tree-2.0.1.tgz", + "integrity": "sha512-5R+DsT9LJ9tXiSQ4y+KLFppCkQyXhzAm1AIuBWE/sbU0hSXY5pkhoqQYEcPJQFg/nglL+wD55iv2j+7O96UAvg==", + "license": "MIT" + }, + "node_modules/@11ty/eleventy": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@11ty/eleventy/-/eleventy-2.0.1.tgz", + "integrity": "sha512-t8XVUbCJByhVEa1RzO0zS2QzbL3wPY8ot1yUw9noqiSHxJWUwv6jiwm1/MZDPTYtkZH2ZHvdQIRQ5/SjG9XmLw==", + "license": "MIT", + "dependencies": { + "@11ty/dependency-tree": "^2.0.1", + "@11ty/eleventy-dev-server": "^1.0.4", + "@11ty/eleventy-utils": "^1.0.1", + "@11ty/lodash-custom": "^4.17.21", + "@iarna/toml": "^2.2.5", + "@sindresorhus/slugify": "^1.1.2", + "bcp-47-normalize": "^1.1.1", + "chokidar": "^3.5.3", + "cross-spawn": "^7.0.3", + "debug": "^4.3.4", + "dependency-graph": "^0.11.0", + "ejs": "^3.1.9", + "fast-glob": "^3.2.12", + "graceful-fs": "^4.2.11", + "gray-matter": "^4.0.3", + "hamljs": "^0.6.2", + "handlebars": "^4.7.7", + "is-glob": "^4.0.3", + "iso-639-1": "^2.1.15", + "kleur": "^4.1.5", + "liquidjs": "^10.7.0", + "luxon": "^3.3.0", + "markdown-it": "^13.0.1", + "micromatch": "^4.0.5", + "minimist": "^1.2.8", + "moo": "^0.5.2", + "multimatch": "^5.0.0", + "mustache": "^4.2.0", + "normalize-path": "^3.0.0", + "nunjucks": "^3.2.3", + "path-to-regexp": "^6.2.1", + "please-upgrade-node": "^3.2.0", + "posthtml": "^0.16.6", + "posthtml-urls": "^1.0.0", + "pug": "^3.0.2", + "recursive-copy": "^2.0.14", + "semver": "^7.3.8", + "slugify": "^1.6.6" + }, + "bin": { + "eleventy": "cmd.js" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/11ty" + } + }, + "node_modules/@11ty/eleventy-dev-server": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@11ty/eleventy-dev-server/-/eleventy-dev-server-1.0.4.tgz", + "integrity": "sha512-qVBmV2G1KF/0o5B/3fITlrrDHy4bONUI2YuN3/WJ3BNw4NU1d/we8XhKrlgq13nNvHoBx5czYp3LZt8qRG53Fg==", + "license": "MIT", + "dependencies": { + "@11ty/eleventy-utils": "^1.0.1", + "chokidar": "^3.5.3", + "debug": "^4.3.4", + "dev-ip": "^1.0.1", + "finalhandler": "^1.2.0", + "mime": "^3.0.0", + "minimist": "^1.2.8", + "morphdom": "^2.7.0", + "please-upgrade-node": "^3.2.0", + "ssri": "^8.0.1", + "ws": "^8.13.0" + }, + "bin": { + "eleventy-dev-server": "cmd.js" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/11ty" + } + }, + "node_modules/@11ty/eleventy-utils": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@11ty/eleventy-utils/-/eleventy-utils-1.0.3.tgz", + "integrity": "sha512-nULO91om7vQw4Y/UBjM8i7nJ1xl+/nyK4rImZ41lFxiY2d+XUz7ChAj1CDYFjrLZeu0utAYJTZ45LlcHTkUG4g==", + "license": "MIT", + "dependencies": { + "normalize-path": "^3.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/11ty" + } + }, + "node_modules/@11ty/eleventy/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "license": "Python-2.0" + }, + "node_modules/@11ty/eleventy/node_modules/entities": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz", + "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/@11ty/eleventy/node_modules/linkify-it": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-4.0.1.tgz", + "integrity": "sha512-C7bfi1UZmoj8+PQx22XyeXCuBlokoyWQL5pWSP+EI6nzRylyThouddufc2c1NDIcP9k5agmN9fLpA7VNJfIiqw==", + "license": "MIT", + "dependencies": { + "uc.micro": "^1.0.1" + } + }, + "node_modules/@11ty/eleventy/node_modules/markdown-it": { + "version": "13.0.2", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-13.0.2.tgz", + "integrity": "sha512-FtwnEuuK+2yVU7goGn/MJ0WBZMM9ZPgU9spqlFs7/A/pDIUNSOQZhUgOqYCficIuR2QaFnrt8LHqBWsbTAoI5w==", + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1", + "entities": "~3.0.1", + "linkify-it": "^4.0.1", + "mdurl": "^1.0.1", + "uc.micro": "^1.0.5" + }, + "bin": { + "markdown-it": "bin/markdown-it.js" + } + }, + "node_modules/@11ty/eleventy/node_modules/mdurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", + "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==", + "license": "MIT" + }, + "node_modules/@11ty/eleventy/node_modules/uc.micro": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", + "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==", + "license": "MIT" + }, + "node_modules/@11ty/lodash-custom": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/@11ty/lodash-custom/-/lodash-custom-4.17.21.tgz", + "integrity": "sha512-Mqt6im1xpb1Ykn3nbcCovWXK3ggywRJa+IXIdoz4wIIK+cvozADH63lexcuPpGS/gJ6/m2JxyyXDyupkMr5DHw==", + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/11ty" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.29.7.tgz", + "integrity": "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz", + "integrity": "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.8.tgz", + "integrity": "sha512-E8lTAYNB1KW+FH+VGJuZM1ioAx2E6oVlvQFRrf5P8ZZmsiJXYAD9vTFV7yyEURNzgh1dFqMZuO6tUwcARbqFCA==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.29.8" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/types": { + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.8.tgz", + "integrity": "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==", + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.29.7", + "@babel/helper-validator-identifier": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@iarna/toml": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz", + "integrity": "sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==", + "license": "ISC" + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@sindresorhus/slugify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@sindresorhus/slugify/-/slugify-1.1.2.tgz", + "integrity": "sha512-V9nR/W0Xd9TSGXpZ4iFUcFGhuOJtZX82Fzxj1YISlbSgKvIiNa7eLEZrT0vAraPOt++KHauIVNYgGRgjc13dXA==", + "license": "MIT", + "dependencies": { + "@sindresorhus/transliterate": "^0.1.1", + "escape-string-regexp": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@sindresorhus/transliterate": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@sindresorhus/transliterate/-/transliterate-0.1.2.tgz", + "integrity": "sha512-5/kmIOY9FF32nicXH+5yLNTX4NJ4atl7jRgqAJuIn/iyDFXBktOKDxCvyGE/EzmF4ngSUvjXxQUQlQiZ5lfw+w==", + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^2.0.0", + "lodash.deburr": "^4.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@sindresorhus/transliterate/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@types/minimatch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", + "license": "MIT" + }, + "node_modules/a-sync-waterfall": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/a-sync-waterfall/-/a-sync-waterfall-1.0.1.tgz", + "integrity": "sha512-RYTOHHdWipFUliRFMCS4X2Yn2X8M87V/OpSqWzKKOGhzqyUxzyVmhHDH9sAvG+ZuQf/TAOFsLCpMw09I1ufUnA==", + "license": "MIT" + }, + "node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/any-promise": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-0.1.0.tgz", + "integrity": "sha512-lqzY9o+BbeGHRCOyxQkt/Tgvz0IZhTmQiA+LxQW8wSNpcTbj8K+0cZiSEvbpNZZP9/11Gy7dnLO3GNWUXO4d1g==", + "license": "MIT" + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/array-differ": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz", + "integrity": "sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arrify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", + "license": "MIT" + }, + "node_modules/assert-never": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/assert-never/-/assert-never-1.4.0.tgz", + "integrity": "sha512-5oJg84os6NMQNl27T9LnZkvvqzvAnHu03ShCnoj6bsJwS7L8AO4lf+C/XjK/nvzEqQB744moC6V128RucQd1jA==", + "license": "MIT" + }, + "node_modules/async": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", + "license": "MIT" + }, + "node_modules/babel-walk": { + "version": "3.0.0-canary-5", + "resolved": "https://registry.npmjs.org/babel-walk/-/babel-walk-3.0.0-canary-5.tgz", + "integrity": "sha512-GAwkz0AihzY5bkwIY5QDR+LvsRQgB/B+1foMPvi0FZPMl5fjD7ICiznUiBdLYMH1QYe6vqu4gWYytZOccLouFw==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.9.6" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "license": "MIT" + }, + "node_modules/bcp-47": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/bcp-47/-/bcp-47-1.0.8.tgz", + "integrity": "sha512-Y9y1QNBBtYtv7hcmoX0tR+tUNSFZGZ6OL6vKPObq8BbOhkCoyayF6ogfLTgAli/KuAEbsYHYUNq2AQuY6IuLag==", + "license": "MIT", + "dependencies": { + "is-alphabetical": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-decimal": "^1.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/bcp-47-match": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/bcp-47-match/-/bcp-47-match-1.0.3.tgz", + "integrity": "sha512-LggQ4YTdjWQSKELZF5JwchnBa1u0pIQSZf5lSdOHEdbVP55h0qICA/FUp3+W99q0xqxYa1ZQizTUH87gecII5w==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/bcp-47-normalize": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/bcp-47-normalize/-/bcp-47-normalize-1.1.1.tgz", + "integrity": "sha512-jWZ1Jdu3cs0EZdfCkS0UE9Gg01PtxnChjEBySeB+Zo6nkqtFfnvtoQQgP1qU1Oo4qgJgxhTI6Sf9y/pZIhPs0A==", + "license": "MIT", + "dependencies": { + "bcp-47": "^1.0.0", + "bcp-47-match": "^1.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/brace-expansion": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.4.tgz", + "integrity": "sha512-hGfVzPxthbf3+2yjg/RBs60cB0FhqBS/zvdV/4wn4/BmN0bNMMHPc4V/BbFieqf1TKAGGAHnY4eSjajCl0f2Xg==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/character-parser": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/character-parser/-/character-parser-2.2.0.tgz", + "integrity": "sha512-+UqJQjFEFaTAs3bNsF2j2kEN1baG/zghZbdqoYEDxGZtJo9LBzl1A+m0D4n3qKx8N2FNv8/Xp6yV9mQmBuptaw==", + "license": "MIT", + "dependencies": { + "is-regex": "^1.0.3" + } + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "license": "MIT", + "engines": { + "node": ">=14" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "license": "MIT" + }, + "node_modules/constantinople": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/constantinople/-/constantinople-4.0.1.tgz", + "integrity": "sha512-vCrqcSIq4//Gx74TXXCGnHpulY1dskqLTFGDmhrGxzeXL8lF8kvXv6mpNWlJj1uD4DW23D4ljAqbY4RRaaUZIw==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.6.0", + "@babel/types": "^7.6.1" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/dependency-graph": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz", + "integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==", + "license": "MIT", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/dev-ip": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dev-ip/-/dev-ip-1.0.1.tgz", + "integrity": "sha512-LmVkry/oDShEgSZPNgqCIp2/TlqtExeGmymru3uCELnfyjY11IzpAproLYs+1X88fXO6DBoYP3ul2Xo2yz2j6A==", + "bin": { + "dev-ip": "lib/dev-ip.js" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/doctypes": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/doctypes/-/doctypes-1.1.0.tgz", + "integrity": "sha512-LLBi6pEqS6Do3EKQ3J0NqHWV5hhb78Pi8vvESYwyOy2c31ZEZVdtitdzsQsKb7878PEERhzUk0ftqGhG6Mz+pQ==", + "license": "MIT" + }, + "node_modules/dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "license": "MIT", + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/dom-serializer/node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "license": "BSD-2-Clause", + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "BSD-2-Clause" + }, + "node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "license": "MIT" + }, + "node_modules/ejs": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", + "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", + "license": "Apache-2.0", + "dependencies": { + "jake": "^10.8.5" + }, + "bin": { + "ejs": "bin/cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/errno": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "license": "MIT", + "dependencies": { + "prr": "~1.0.1" + }, + "bin": { + "errno": "cli.js" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.2.tgz", + "integrity": "sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "license": "MIT" + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "license": "MIT", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fastq": { + "version": "1.20.3", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.3.tgz", + "integrity": "sha512-XKv5nnLs6nLF71NgiKJLIZFLkPyIEuOselLG7ujZnGrRfQK8HpvY+WqKhAJUAdLomwVHErVS4LfxFlPq0/FTAw==", + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/filelist": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.6.tgz", + "integrity": "sha512-5giy2PkLYY1cP39p17Ech+2xlpTRL9HLspOfEgm0L6CwBXBTgsK5ou0JtzYuepxkaQ/tvhCFIJ5uXo0OrM2DxA==", + "license": "Apache-2.0", + "dependencies": { + "minimatch": "^5.0.1" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.2.tgz", + "integrity": "sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==", + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "on-finished": "~2.4.1", + "parseurl": "~1.3.3", + "statuses": "~2.0.2", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "license": "ISC" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "1.1.18", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.18.tgz", + "integrity": "sha512-Edep/X9fGqVNmzKBVsDYIOtD+z1tuezV70LBjdCst9Tqu76lsnvRiZ6oTic1n+/BIwX6QDGAO94PN4N2SADvtw==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" + }, + "node_modules/gray-matter": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz", + "integrity": "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==", + "license": "MIT", + "dependencies": { + "js-yaml": "^3.13.1", + "kind-of": "^6.0.2", + "section-matter": "^1.0.0", + "strip-bom-string": "^1.0.0" + }, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/hamljs": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/hamljs/-/hamljs-0.6.2.tgz", + "integrity": "sha512-/chXRp4WpL47I+HX1vCCdSbEXAljEG2FBMmgO7Am0bYsqgnEjreeWzUdX1onXqwZtcfgxbCg5WtEYYvuZ5muBg==" + }, + "node_modules/handlebars": { + "version": "4.7.9", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.9.tgz", + "integrity": "sha512-4E71E0rpOaQuJR2A3xDZ+GM1HyWYv1clR58tC8emQNeQe3RH7MAzSbat+V0wG78LQBo6m6bzSG/L4pBuCsgnUQ==", + "license": "MIT", + "dependencies": { + "minimist": "^1.2.5", + "neo-async": "^2.6.2", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" + }, + "engines": { + "node": ">=0.4.7" + }, + "optionalDependencies": { + "uglify-js": "^3.1.4" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.4.tgz", + "integrity": "sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/htmlparser2": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-7.2.0.tgz", + "integrity": "sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==", + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "MIT", + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.2", + "domutils": "^2.8.0", + "entities": "^3.0.1" + } + }, + "node_modules/htmlparser2/node_modules/entities": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz", + "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/http-equiv-refresh": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/http-equiv-refresh/-/http-equiv-refresh-1.0.0.tgz", + "integrity": "sha512-TScO04soylRN9i/QdOdgZyhydXg9z6XdaGzEyOgDKycePeDeTT4KvigjBcI+tgfTlieLWauGORMq5F1eIDa+1w==", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/is-alphabetical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", + "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-alphanumerical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", + "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", + "license": "MIT", + "dependencies": { + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-core-module": { + "version": "2.16.2", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.2.tgz", + "integrity": "sha512-evOr8xfXKxE6qSR0hSXL2r3sd7ALj8+7jQEUvPYcm5sgZFdJ+AYzT6yNmJenvIYQBgIGwfwz08sL8zoL7yq2BA==", + "license": "MIT", + "dependencies": { + "hasown": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-decimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", + "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-expression": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-expression/-/is-expression-4.0.0.tgz", + "integrity": "sha512-zMIXX63sxzG3XrkHkrAPvm/OVZVSCPNkwMHU8oTX7/U3AL78I0QXCEICXUM13BIa8TYGZ68PiTKfQz3yaTNr4A==", + "license": "MIT", + "dependencies": { + "acorn": "^7.1.1", + "object-assign": "^4.1.1" + } + }, + "node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-json": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-json/-/is-json-2.0.1.tgz", + "integrity": "sha512-6BEnpVn1rcf3ngfmViLM6vjUjGErbdrL4rwlv+u1NO1XO8kqT4YGL8+19Q+Z/bas8tY90BTWMk2+fW1g6hQjbA==", + "license": "ISC" + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-promise": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", + "license": "MIT" + }, + "node_modules/is-regex": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "license": "ISC" + }, + "node_modules/iso-639-1": { + "version": "2.1.15", + "resolved": "https://registry.npmjs.org/iso-639-1/-/iso-639-1-2.1.15.tgz", + "integrity": "sha512-7c7mBznZu2ktfvyT582E2msM+Udc1EjOyhVRE/0ZsjD9LBtWSm23h3PtiRh2a35XoUsTQQjJXaJzuLjXsOdFDg==", + "license": "MIT", + "engines": { + "node": ">=6.0" + } + }, + "node_modules/jake": { + "version": "10.9.4", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.4.tgz", + "integrity": "sha512-wpHYzhxiVQL+IV05BLE2Xn34zW1S223hvjtqk0+gsPrwd/8JNLXJgZZM/iPFsYc1xyphF+6M6EvdE5E9MBGkDA==", + "license": "Apache-2.0", + "dependencies": { + "async": "^3.2.6", + "filelist": "^1.0.4", + "picocolors": "^1.1.1" + }, + "bin": { + "jake": "bin/cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/js-stringify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/js-stringify/-/js-stringify-1.0.2.tgz", + "integrity": "sha512-rtS5ATOo2Q5k1G+DADISilDA6lv79zIiwFd6CcjuIxGKLFm5C+RLImRscVap9k55i+MOZwgliw+NejvkLuGD5g==", + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "3.15.2", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.15.2.tgz", + "integrity": "sha512-6EuL879VkRA+1Cz578mKMiKvjPNEuk6+r1JaFzoSWejZmtf7xWbIyw1e3KkxlkzTIt9Taw6JBhEppG7utc1P+w==", + "license": "MIT", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jstransformer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/jstransformer/-/jstransformer-1.0.0.tgz", + "integrity": "sha512-C9YK3Rf8q6VAPDCCU9fnqo3mAfOH6vUGnMcP4AQAYIEpWtfGLpwOTmZ+igtdK5y+VvI2n3CyYSzy4Qh34eq24A==", + "license": "MIT", + "dependencies": { + "is-promise": "^2.0.0", + "promise": "^7.0.1" + } + }, + "node_modules/junk": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/junk/-/junk-1.0.3.tgz", + "integrity": "sha512-3KF80UaaSSxo8jVnRYtMKNGFOoVPBdkkVPsw+Ad0y4oxKXPduS6G6iHkrf69yJVff/VAaYXkV42rtZ7daJxU3w==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/kleur": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/linkify-it": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.2.tgz", + "integrity": "sha512-ONTm2jCMAVZjgQa/Fy1kScXsuOoF5NPTsoFBdE1KVIZ2vAh/r9+Bqo+0jINCBYnavTPQZz38QzFTme79ENoN3Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/puzrin" + }, + { + "type": "github", + "url": "https://github.com/sponsors/markdown-it" + } + ], + "license": "MIT", + "dependencies": { + "uc.micro": "^2.0.0" + } + }, + "node_modules/liquidjs": { + "version": "10.29.0", + "resolved": "https://registry.npmjs.org/liquidjs/-/liquidjs-10.29.0.tgz", + "integrity": "sha512-pCVOhs6FLAR8su3ItJ07diN26t6W5dHQRnmTMy8HPyTFuv1+oSCVJIGp5pGjfQyOZfh50KswvKtMTp6p4JEIdw==", + "license": "MIT", + "dependencies": { + "commander": "^10.0.0" + }, + "bin": { + "liquid": "bin/liquid.js", + "liquidjs": "bin/liquid.js" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/liquidjs" + } + }, + "node_modules/list-to-array": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/list-to-array/-/list-to-array-1.1.0.tgz", + "integrity": "sha512-+dAZZ2mM+/m+vY9ezfoueVvrgnHIGi5FvgSymbIgJOFwiznWyA59mav95L+Mc6xPtL3s9gm5eNTlNtxJLbNM1g==", + "license": "MIT" + }, + "node_modules/lodash.deburr": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/lodash.deburr/-/lodash.deburr-4.1.0.tgz", + "integrity": "sha512-m/M1U1f3ddMCs6Hq2tAsYThTBDaAKFDX3dwDo97GEYzamXi9SqUpjWi/Rrj/gf3X2n8ktwgZrlP1z6E3v/IExQ==", + "license": "MIT" + }, + "node_modules/luxon": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.7.2.tgz", + "integrity": "sha512-vtEhXh/gNjI9Yg1u4jX/0YVPMvxzHuGgCm6tC5kZyb08yjGWGnqAjGJvcXbqQR2P3MyMEFnRbpcdFS6PBcLqew==", + "license": "MIT", + "engines": { + "node": ">=12" + } + }, + "node_modules/markdown-it": { + "version": "14.3.1", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.3.1.tgz", + "integrity": "sha512-4Ej49aYTDFIQ+uBkfX8GBvJGccoARxxPep+7aWTs55ozbjQJpW9M26Fe53vnGgvLeVzva/amzjQQaQu9w0vMhA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/puzrin" + }, + { + "type": "github", + "url": "https://github.com/sponsors/markdown-it" + } + ], + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1", + "entities": "^4.5.0", + "linkify-it": "^5.0.2", + "mdurl": "^2.0.0", + "punycode.js": "^2.3.1", + "uc.micro": "^2.1.0" + }, + "bin": { + "markdown-it": "bin/markdown-it.mjs" + } + }, + "node_modules/markdown-it/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "license": "Python-2.0" + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/maximatch": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/maximatch/-/maximatch-0.1.0.tgz", + "integrity": "sha512-9ORVtDUFk4u/NFfo0vG/ND/z7UQCVZBL539YW0+U1I7H1BkZwizcPx5foFv7LCPcBnm2U6RjFnQOsIvN4/Vm2A==", + "license": "MIT", + "dependencies": { + "array-differ": "^1.0.0", + "array-union": "^1.0.1", + "arrify": "^1.0.0", + "minimatch": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/maximatch/node_modules/array-differ": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", + "integrity": "sha512-LeZY+DZDRnvP7eMuQ6LHfCzUGxAAIViUBliK24P3hWXL6y4SortgR6Nim6xrkfSLlmH0+k+9NYNwVC2s53ZrYQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/maximatch/node_modules/array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", + "license": "MIT", + "dependencies": { + "array-uniq": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/maximatch/node_modules/arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/maximatch/node_modules/brace-expansion": { + "version": "1.1.18", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.18.tgz", + "integrity": "sha512-Edep/X9fGqVNmzKBVsDYIOtD+z1tuezV70LBjdCst9Tqu76lsnvRiZ6oTic1n+/BIwX6QDGAO94PN4N2SADvtw==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/maximatch/node_modules/minimatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/mdurl": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.1.0.tgz", + "integrity": "sha512-1+HBaOx0zi/dQWht8rNv9MYf9qqpqL/kxI0hXImU6Y547zM6Sni8BQibt7ifgMcYtQg41ao3Ivd6cnSM86inpg==", + "license": "MIT" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", + "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/minimatch": { + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.9.tgz", + "integrity": "sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "license": "MIT", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/moo": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/moo/-/moo-0.5.3.tgz", + "integrity": "sha512-m2fmM2dDm7GZQsY7KK2cme8agi+AAljILjQnof7p1ZMDe6dQ4bdnSMx0cPppudoeNv5hEFQirN6u+O4fDE0IWA==", + "license": "BSD-3-Clause" + }, + "node_modules/morphdom": { + "version": "2.7.8", + "resolved": "https://registry.npmjs.org/morphdom/-/morphdom-2.7.8.tgz", + "integrity": "sha512-D/fR4xgGUyVRbdMGU6Nejea1RFzYxYtyurG4Fbv2Fi/daKlWKuXGLOdXtl+3eIwL110cI2hz1ZojGICjjFLgTg==", + "license": "MIT" + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/multimatch": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-5.0.0.tgz", + "integrity": "sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA==", + "license": "MIT", + "dependencies": { + "@types/minimatch": "^3.0.3", + "array-differ": "^3.0.0", + "array-union": "^2.1.0", + "arrify": "^2.0.1", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/multimatch/node_modules/brace-expansion": { + "version": "1.1.18", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.18.tgz", + "integrity": "sha512-Edep/X9fGqVNmzKBVsDYIOtD+z1tuezV70LBjdCst9Tqu76lsnvRiZ6oTic1n+/BIwX6QDGAO94PN4N2SADvtw==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/multimatch/node_modules/minimatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/mustache": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/mustache/-/mustache-4.2.0.tgz", + "integrity": "sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==", + "license": "MIT", + "bin": { + "mustache": "bin/mustache" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "license": "MIT" + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nunjucks": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/nunjucks/-/nunjucks-3.2.4.tgz", + "integrity": "sha512-26XRV6BhkgK0VOxfbU5cQI+ICFUtMLixv1noZn1tGU38kQH5A5nmmbk/O45xdyBhD1esk47nKrY0mvQpZIhRjQ==", + "license": "BSD-2-Clause", + "dependencies": { + "a-sync-waterfall": "^1.0.0", + "asap": "^2.0.3", + "commander": "^5.1.0" + }, + "bin": { + "nunjucks-precompile": "bin/precompile" + }, + "engines": { + "node": ">= 6.9.0" + }, + "peerDependencies": { + "chokidar": "^3.3.0" + }, + "peerDependenciesMeta": { + "chokidar": { + "optional": true + } + } + }, + "node_modules/nunjucks/node_modules/commander": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/parse-srcset": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/parse-srcset/-/parse-srcset-1.0.2.tgz", + "integrity": "sha512-/2qh0lav6CmI15FzA3i/2Bzk2zCgQhGMkvhOhKNcBVQ1ldgpbfiNTVslmooUmWJcADi1f1kIeynbDRVzNlfR6Q==", + "license": "MIT" + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "license": "MIT" + }, + "node_modules/path-to-regexp": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.3.0.tgz", + "integrity": "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==", + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/please-upgrade-node": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz", + "integrity": "sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==", + "license": "MIT", + "dependencies": { + "semver-compare": "^1.0.0" + } + }, + "node_modules/posthtml": { + "version": "0.16.7", + "resolved": "https://registry.npmjs.org/posthtml/-/posthtml-0.16.7.tgz", + "integrity": "sha512-7Hc+IvlQ7hlaIfQFZnxlRl0jnpWq2qwibORBhQYIb0QbNtuicc5ZxvKkVT71HJ4Py1wSZ/3VR1r8LfkCtoCzhw==", + "license": "MIT", + "dependencies": { + "posthtml-parser": "^0.11.0", + "posthtml-render": "^3.0.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/posthtml-parser": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.11.0.tgz", + "integrity": "sha512-QecJtfLekJbWVo/dMAA+OSwY79wpRmbqS5TeXvXSX+f0c6pW4/SE6inzZ2qkU7oAMCPqIDkZDvd/bQsSFUnKyw==", + "license": "MIT", + "dependencies": { + "htmlparser2": "^7.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/posthtml-render": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/posthtml-render/-/posthtml-render-3.0.0.tgz", + "integrity": "sha512-z+16RoxK3fUPgwaIgH9NGnK1HKY9XIDpydky5eQGgAFVXTCSezalv9U2jQuNV+Z9qV1fDWNzldcw4eK0SSbqKA==", + "license": "MIT", + "dependencies": { + "is-json": "^2.0.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/posthtml-urls": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/posthtml-urls/-/posthtml-urls-1.0.0.tgz", + "integrity": "sha512-CMJ0L009sGQVUuYM/g6WJdscsq6ooAwhUuF6CDlYPMLxKp2rmCYVebEU+wZGxnQstGJhZPMvXsRhtqekILd5/w==", + "license": "MIT", + "dependencies": { + "http-equiv-refresh": "^1.0.0", + "list-to-array": "^1.1.0", + "parse-srcset": "^1.0.2", + "promise-each": "^2.2.0" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "license": "MIT", + "dependencies": { + "asap": "~2.0.3" + } + }, + "node_modules/promise-each": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/promise-each/-/promise-each-2.2.0.tgz", + "integrity": "sha512-67roqt1k3QDA41DZ8xi0V+rF3GoaMiX7QilbXu0vXimut+9RcKBNZ/t60xCRgcsihmNUsEjh48xLfNqOrKblUg==", + "license": "MIT", + "dependencies": { + "any-promise": "^0.1.0" + } + }, + "node_modules/prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", + "license": "MIT" + }, + "node_modules/pug": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/pug/-/pug-3.0.4.tgz", + "integrity": "sha512-kFfq5mMzrS7+wrl5pLJzZEzemx34OQ0w4SARfhy/3yxTlhbstsudDwJzhf1hP02yHzbjoVMSXUj/Sz6RNfMyXg==", + "license": "MIT", + "dependencies": { + "pug-code-gen": "^3.0.4", + "pug-filters": "^4.0.0", + "pug-lexer": "^5.0.1", + "pug-linker": "^4.0.0", + "pug-load": "^3.0.0", + "pug-parser": "^6.0.0", + "pug-runtime": "^3.0.1", + "pug-strip-comments": "^2.0.0" + } + }, + "node_modules/pug-attrs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pug-attrs/-/pug-attrs-3.0.0.tgz", + "integrity": "sha512-azINV9dUtzPMFQktvTXciNAfAuVh/L/JCl0vtPCwvOA21uZrC08K/UnmrL+SXGEVc1FwzjW62+xw5S/uaLj6cA==", + "license": "MIT", + "dependencies": { + "constantinople": "^4.0.1", + "js-stringify": "^1.0.2", + "pug-runtime": "^3.0.0" + } + }, + "node_modules/pug-code-gen": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-3.0.4.tgz", + "integrity": "sha512-6okWYIKdasTyXICyEtvobmTZAVX57JkzgzIi4iRJlin8kmhG+Xry2dsus+Mun/nGCn6F2U49haHI5mkELXB14g==", + "license": "MIT", + "dependencies": { + "constantinople": "^4.0.1", + "doctypes": "^1.1.0", + "js-stringify": "^1.0.2", + "pug-attrs": "^3.0.0", + "pug-error": "^2.1.0", + "pug-runtime": "^3.0.1", + "void-elements": "^3.1.0", + "with": "^7.0.0" + } + }, + "node_modules/pug-error": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/pug-error/-/pug-error-2.1.0.tgz", + "integrity": "sha512-lv7sU9e5Jk8IeUheHata6/UThZ7RK2jnaaNztxfPYUY+VxZyk/ePVaNZ/vwmH8WqGvDz3LrNYt/+gA55NDg6Pg==", + "license": "MIT" + }, + "node_modules/pug-filters": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pug-filters/-/pug-filters-4.0.0.tgz", + "integrity": "sha512-yeNFtq5Yxmfz0f9z2rMXGw/8/4i1cCFecw/Q7+D0V2DdtII5UvqE12VaZ2AY7ri6o5RNXiweGH79OCq+2RQU4A==", + "license": "MIT", + "dependencies": { + "constantinople": "^4.0.1", + "jstransformer": "1.0.0", + "pug-error": "^2.0.0", + "pug-walk": "^2.0.0", + "resolve": "^1.15.1" + } + }, + "node_modules/pug-lexer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/pug-lexer/-/pug-lexer-5.0.1.tgz", + "integrity": "sha512-0I6C62+keXlZPZkOJeVam9aBLVP2EnbeDw3An+k0/QlqdwH6rv8284nko14Na7c0TtqtogfWXcRoFE4O4Ff20w==", + "license": "MIT", + "dependencies": { + "character-parser": "^2.2.0", + "is-expression": "^4.0.0", + "pug-error": "^2.0.0" + } + }, + "node_modules/pug-linker": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pug-linker/-/pug-linker-4.0.0.tgz", + "integrity": "sha512-gjD1yzp0yxbQqnzBAdlhbgoJL5qIFJw78juN1NpTLt/mfPJ5VgC4BvkoD3G23qKzJtIIXBbcCt6FioLSFLOHdw==", + "license": "MIT", + "dependencies": { + "pug-error": "^2.0.0", + "pug-walk": "^2.0.0" + } + }, + "node_modules/pug-load": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pug-load/-/pug-load-3.0.0.tgz", + "integrity": "sha512-OCjTEnhLWZBvS4zni/WUMjH2YSUosnsmjGBB1An7CsKQarYSWQ0GCVyd4eQPMFJqZ8w9xgs01QdiZXKVjk92EQ==", + "license": "MIT", + "dependencies": { + "object-assign": "^4.1.1", + "pug-walk": "^2.0.0" + } + }, + "node_modules/pug-parser": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/pug-parser/-/pug-parser-6.0.0.tgz", + "integrity": "sha512-ukiYM/9cH6Cml+AOl5kETtM9NR3WulyVP2y4HOU45DyMim1IeP/OOiyEWRr6qk5I5klpsBnbuHpwKmTx6WURnw==", + "license": "MIT", + "dependencies": { + "pug-error": "^2.0.0", + "token-stream": "1.0.0" + } + }, + "node_modules/pug-runtime": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/pug-runtime/-/pug-runtime-3.0.1.tgz", + "integrity": "sha512-L50zbvrQ35TkpHwv0G6aLSuueDRwc/97XdY8kL3tOT0FmhgG7UypU3VztfV/LATAvmUfYi4wNxSajhSAeNN+Kg==", + "license": "MIT" + }, + "node_modules/pug-strip-comments": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pug-strip-comments/-/pug-strip-comments-2.0.0.tgz", + "integrity": "sha512-zo8DsDpH7eTkPHCXFeAk1xZXJbyoTfdPlNR0bK7rpOMuhBYb0f5qUVCO1xlsitYd3w5FQTK7zpNVKb3rZoUrrQ==", + "license": "MIT", + "dependencies": { + "pug-error": "^2.0.0" + } + }, + "node_modules/pug-walk": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pug-walk/-/pug-walk-2.0.0.tgz", + "integrity": "sha512-yYELe9Q5q9IQhuvqsZNwA5hfPkMJ8u92bQLIMcsMxf/VADjNtEYptU+inlufAFYcWdHlwNfZOEnOOQrZrcyJCQ==", + "license": "MIT" + }, + "node_modules/punycode.js": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", + "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/recursive-copy": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/recursive-copy/-/recursive-copy-2.0.14.tgz", + "integrity": "sha512-K8WNY8f8naTpfbA+RaXmkaQuD1IeW9EgNEfyGxSqqTQukpVtoOKros9jUqbpEsSw59YOmpd8nCBgtqJZy5nvog==", + "license": "ISC", + "dependencies": { + "errno": "^0.1.2", + "graceful-fs": "^4.1.4", + "junk": "^1.0.1", + "maximatch": "^0.1.0", + "mkdirp": "^0.5.1", + "pify": "^2.3.0", + "promise": "^7.0.1", + "rimraf": "^2.7.1", + "slash": "^1.0.0" + } + }, + "node_modules/resolve": { + "version": "1.22.12", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.12.tgz", + "integrity": "sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "is-core-module": "^2.16.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/section-matter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz", + "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==", + "license": "MIT", + "dependencies": { + "extend-shallow": "^2.0.1", + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/semver": { + "version": "7.8.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz", + "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", + "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==", + "license": "MIT" + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/slugify": { + "version": "1.6.9", + "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.6.9.tgz", + "integrity": "sha512-vZ7rfeehZui7wQs438JXBckYLkIIdfHOXsaVEUMyS5fHo1483l1bMdo0EDSWYclY0yZKFOipDy4KHuKs6ssvdg==", + "license": "MIT", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "license": "BSD-3-Clause" + }, + "node_modules/ssri": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", + "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", + "license": "ISC", + "dependencies": { + "minipass": "^3.1.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/strip-bom-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", + "integrity": "sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/token-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/token-stream/-/token-stream-1.0.0.tgz", + "integrity": "sha512-VSsyNPPW74RpHwR8Fc21uubwHY7wMDeJLys2IX5zJNih+OnAnaifKHo+1LHT7DAdloQ7apeaaWg8l7qnf/TnEg==", + "license": "MIT" + }, + "node_modules/uc.micro": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", + "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==", + "license": "MIT" + }, + "node_modules/uglify-js": { + "version": "3.19.3", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz", + "integrity": "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==", + "license": "BSD-2-Clause", + "optional": true, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/void-elements": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz", + "integrity": "sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/with": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/with/-/with-7.0.2.tgz", + "integrity": "sha512-RNGKj82nUPg3g5ygxkQl0R937xLyho1J24ItRCBTr/m1YnZkzJy1hUiHUJrc/VlsDQzsCnInEGSg3bci0Lmd4w==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.9.6", + "@babel/types": "^7.9.6", + "assert-never": "^1.2.1", + "babel-walk": "3.0.0-canary-5" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", + "license": "MIT" + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "license": "ISC" + }, + "node_modules/ws": { + "version": "8.21.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.21.3.tgz", + "integrity": "sha512-201TZ/kPWxoPr/OKWjquZR1SWKXcvxdH+e1xrx89b3YbmzLMFCLfnaG1HFIgWzJOEWZ7MvpK++odZufgYR50Rw==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "license": "ISC" + } + } +} diff --git a/timecapsule/package.json b/timecapsule/package.json new file mode 100644 index 0000000..8c28366 --- /dev/null +++ b/timecapsule/package.json @@ -0,0 +1,14 @@ +{ + "name": "moonweb-timecapsule", + "version": "1.0.0", + "private": true, + "description": "Timecapsule: 2000s retro moonweb.org website", + "scripts": { + "dev": "npx @11ty/eleventy --serve --port=8087", + "build": "npx @11ty/eleventy" + }, + "dependencies": { + "@11ty/eleventy": "^2.0.1", + "markdown-it": "^14.1.0" + } +} diff --git a/timecapsule/src/.htaccess b/timecapsule/src/.htaccess new file mode 100644 index 0000000..49c7193 --- /dev/null +++ b/timecapsule/src/.htaccess @@ -0,0 +1,3 @@ +RewriteEngine On +RewriteBase / +ErrorDocument 404 /404/index.html diff --git a/timecapsule/src/404/index.html b/timecapsule/src/404/index.html new file mode 100644 index 0000000..45e79b7 --- /dev/null +++ b/timecapsule/src/404/index.html @@ -0,0 +1,69 @@ + + + + + +moonweb.org - Page Not Found + + + + + + + + + + + + + + +
      + +
      + + + +
      +
      + +

      Page Not Found

      + +

      The page you are looking for does not exist on moonweb.org.

      + +

      It may have been moved, renamed, or removed.

      + +

      Go to the beginning

      + +
      +
      +
      +
      + +
      +
      + + diff --git a/timecapsule/src/_data/nav.json b/timecapsule/src/_data/nav.json new file mode 100644 index 0000000..a6263b5 --- /dev/null +++ b/timecapsule/src/_data/nav.json @@ -0,0 +1,18 @@ +[ + [ + "beginning" + ], + [ + "projects", + "products", + "acoustics" + ], + [ + "location", + "background", + "partners" + ], + [ + "contact" + ] +] \ No newline at end of file diff --git a/timecapsule/src/_data/site.json b/timecapsule/src/_data/site.json new file mode 100644 index 0000000..a89dfcb --- /dev/null +++ b/timecapsule/src/_data/site.json @@ -0,0 +1,4 @@ +{ + "domain": "https://www.moonweb.org/timecapsule", + "contactEmail": "webmaster@moonweb.org" +} diff --git a/timecapsule/src/_includes/layout.njk b/timecapsule/src/_includes/layout.njk new file mode 100644 index 0000000..a5a56a5 --- /dev/null +++ b/timecapsule/src/_includes/layout.njk @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + +moonweb.org - {{ pageTitle | default("The " + section) }} + + + + + + + +
      + +
      +{{ section }} +{% include "nav.njk" %} +
      +
      + + + +
      +
      + +

      {{ pageTitle | default("The " + section) }}

      + +{{ content | safe }} + +
      +
      +{% if quicknav %} + +{% endif %} +
      +
      + +
      +
      + + diff --git a/timecapsule/src/_includes/nav.njk b/timecapsule/src/_includes/nav.njk new file mode 100644 index 0000000..5c55eea --- /dev/null +++ b/timecapsule/src/_includes/nav.njk @@ -0,0 +1,17 @@ + diff --git a/timecapsule/src/_includes/quicknav.njk b/timecapsule/src/_includes/quicknav.njk new file mode 100644 index 0000000..24e5034 --- /dev/null +++ b/timecapsule/src/_includes/quicknav.njk @@ -0,0 +1,2 @@ + +
      quicknav
      {% for entry in quicknav %}{{ entry.label }}{% if not loop.last %}
      {% endif %}{% endfor %}
      quicknav
      diff --git a/timecapsule/src/_includes/redirect.njk b/timecapsule/src/_includes/redirect.njk new file mode 100644 index 0000000..e0e5151 --- /dev/null +++ b/timecapsule/src/_includes/redirect.njk @@ -0,0 +1,12 @@ + + + + + + +Redirecting to {{ redirectTo }} + + +

      Redirecting to {{ redirectTo }}

      + + diff --git a/timecapsule/src/acoustics/index.md b/timecapsule/src/acoustics/index.md new file mode 100644 index 0000000..3076f3e --- /dev/null +++ b/timecapsule/src/acoustics/index.md @@ -0,0 +1,52 @@ +--- +title: "The acoustics" +description: "Explore my journey in music, from mixing on turntables since 1995 to creating computer music with MOD-Trackers. Discover live synthesizer sessions, DJ mixes, and more. Stay tuned for updates." +section: acoustics +permalink: "/timecapsule/acoustics/index.html" +layout: layout.njk +lastChanged: "5/1/2001" +--- + +Music has always been a significant part of my life. Since 1995, I have been mixing on turntables. I also tried composing my own songs, but they never turned out very well. + +## Music on Computers + +My first attempt at making music was on the computer. I never enjoyed live playing, so I sought a better way to create music. That's when I discovered MOD-Trackers. There are some nice MOD files, but they are very computer-based and don't sound like real music. + +{% pseudonymBox "MOD-file examples (can be played on Winamp)" %} + +Computer music examples from 1993: +[... wizard.mod (46kB)](https://www.moonweb.org/files/amiga/mods/wizard.mod) +[... run_away.mod (43kB)](https://www.moonweb.org/files/amiga/mods/run_away.mod) + +Electronic techno-steps from 1994: +[... lit_rave.mod (57kB)](https://www.moonweb.org/files/amiga/mods/LIT_RAVE.MOD) +[... nxt_rave.mod (33kB)](https://www.moonweb.org/files/amiga/mods/NXT_RAVE.MOD) + +{% endpseudonymBox %} + +## Live Synthesizer Music + +Later on, we tried to perform some live music. There are two tapes with live music that I will digitize very soon. One tape is a live recording from the S.O.N.A.X meets Genital Angriff session in our party room (screenshot follows), and the other is a solo tape from Genital Angriff. + +{% pseudonymBox "Live Sessions" %} + +vapeur live session (1992) +... album on soundcloud + +{% endpseudonymBox %} + +## Live Turntable Mixing + +I started mixing later in life and never aspired to be a star DJ. I really enjoyed mixing at private parties and smaller events. In the 'DJ examples' box, you can find the latest afro-cosmic-double-mix with my DJ friend Marc le Nain, a live recording at the Private Lounge Party V. + +{% pseudonymBox "DJ Examples" %} + +Biggest events: +... All Areas Party Prince Garden +... 2nd place in DJ competition + +Live mix: +... afro cosmic double mix on mix-cloud + +{% endpseudonymBox %} diff --git a/timecapsule/src/assets/archive/banner/moonback_finish.gif b/timecapsule/src/assets/archive/banner/moonback_finish.gif new file mode 100755 index 0000000..87e8917 Binary files /dev/null and b/timecapsule/src/assets/archive/banner/moonback_finish.gif differ diff --git a/timecapsule/src/assets/archive/banner/moonweb_banner_ani.gif b/timecapsule/src/assets/archive/banner/moonweb_banner_ani.gif new file mode 100755 index 0000000..6621284 Binary files /dev/null and b/timecapsule/src/assets/archive/banner/moonweb_banner_ani.gif differ diff --git a/timecapsule/src/assets/archive/banner/moonweb_banner_static.gif b/timecapsule/src/assets/archive/banner/moonweb_banner_static.gif new file mode 100755 index 0000000..69ec33e Binary files /dev/null and b/timecapsule/src/assets/archive/banner/moonweb_banner_static.gif differ diff --git a/timecapsule/src/assets/archive/banner/moonweb_newdesign5.gif b/timecapsule/src/assets/archive/banner/moonweb_newdesign5.gif new file mode 100755 index 0000000..2629260 Binary files /dev/null and b/timecapsule/src/assets/archive/banner/moonweb_newdesign5.gif differ diff --git a/timecapsule/src/assets/archive/fuckoff.jpg b/timecapsule/src/assets/archive/fuckoff.jpg new file mode 100755 index 0000000..0e13208 Binary files /dev/null and b/timecapsule/src/assets/archive/fuckoff.jpg differ diff --git a/timecapsule/src/assets/archive/splash-pre.gif b/timecapsule/src/assets/archive/splash-pre.gif new file mode 100755 index 0000000..c2596a1 Binary files /dev/null and b/timecapsule/src/assets/archive/splash-pre.gif differ diff --git a/timecapsule/src/assets/archive/splash.gif b/timecapsule/src/assets/archive/splash.gif new file mode 100755 index 0000000..9b0087c Binary files /dev/null and b/timecapsule/src/assets/archive/splash.gif differ diff --git a/timecapsule/src/assets/content/network.jpg b/timecapsule/src/assets/content/network.jpg new file mode 100755 index 0000000..ed0dd49 Binary files /dev/null and b/timecapsule/src/assets/content/network.jpg differ diff --git a/timecapsule/src/assets/content/stefan-koelle.jpg b/timecapsule/src/assets/content/stefan-koelle.jpg new file mode 100755 index 0000000..33b174d Binary files /dev/null and b/timecapsule/src/assets/content/stefan-koelle.jpg differ diff --git a/timecapsule/src/assets/css/moonweb.css b/timecapsule/src/assets/css/moonweb.css new file mode 100644 index 0000000..4e28894 --- /dev/null +++ b/timecapsule/src/assets/css/moonweb.css @@ -0,0 +1,315 @@ +body { + font-family: Verdana, Arial, sans-serif; + font-size:9pt; + background-color:#FFFFFF; + color:#000000; + margin: 0px; + } +input { + font-family: Verdana, Arial, sans-serif; + font-size:9pt; + width:300px; + BORDER-WIDTH: 1px; + BORDER-STYLE: solid; + BORDER-COLOR: #666666; + BACKGROUND-COLOR: #EEEEEE; + COLOR: #000000; + } +.inputbutton { + font-family: Verdana, Arial, sans-serif; + font-size:9pt; + width:120px; + BORDER-WIDTH: 1px; + BORDER-STYLE: solid; + BORDER-COLOR: #666666; + BACKGROUND-COLOR: #DDDDDD; + COLOR: #000000; + } +textarea { + font-family: Verdana, Arial, sans-serif; + font-size:9pt; + width:450px; + height:150px; + BORDER-WIDTH: 1px; + BORDER-STYLE: solid; + BORDER-COLOR: #666666; + BACKGROUND-COLOR: #EEEEEE; + COLOR: #000000; + } +hr { color:#AA2233; height:1; } +h1 { font-family:Impact,sans-serif,Arial; font-size:14pt; font-weight:normal; background-color:#DDDDDD; color:#555544; } +h2 { font-family: Verdana, Arial, sans-serif; font-weight:bold; font-size:9pt; background-color:#EEEEEE; color:#990033;} +h3 { font-family:Impact,Verdana,Arial; font-size:12pt; font-weight:bold; padding-left:50px; color:#990033; } +p { font-family: Verdana, Arial, sans-serif; font-size:9pt;} +br { font-family: Verdana, Arial, sans-serif; font-size:9pt;} +p.red { font-family: Verdana, Arial, sans-serif; font-size:9pt; color:#990033;} +p.footer { font-family: Verdana, Arial, sans-serif; font-size:8pt; text-align:center; alignment:center; } +br.footer { font-family: Verdana, Arial, sans-serif; font-size:9pt; text-align:center; alignment:center; } +p.pt8 { font-family:Verdana, Arial, sans-serif; font-size:9pt;} +th { font-family: Verdana, Arial, sans-serif; font-size:9pt;} +td { font-family: Verdana, Arial, sans-serif; font-size:9pt;} +ul { font-family: Verdana, Arial, sans-serif; list-style-image:url(/assets/images/item.gif); font-size:9pt;} +a:link { font-weight:bold; background-color:#FFFFFF; color:#334444; } +a:visited { font-weight:bold; background-color:#FFFFFF; color:#334444; } +a:active { font-weight:bold; background-color:#DDDDDD; color:#334444; } +a:hover { font-weight:bold; background-color:#BBCCEE; color:#334444; } +a.quicknav { font-weight:normal; text-decoration:none; background-color:#DDDDDD; width:85px; padding-right:5px; font-family: sans-serif, Arial, sans-serif; font-size:8pt; color:#AA2233; } +a.quicknav:visited { font-weight:normal; text-decoration:none; background-color:#DDDDDD; width:85px; padding-right:5px; font-family: sans-serif, Arial, sans-serif; font-size:8pt; color:#AA2233; } +a.quicknav:active { font-weight:normal; text-decoration:none; background-color:#DDDDDD; width:85px; padding-right:5px; font-family: sans-serif, Arial, sans-serif; font-size:8pt; color:#AA2233; } +a.quicknav:hover { font-weight:normal; text-decoration:none; background-color:#CCCCCC; width:85px; padding-right:5px; font-family: sans-serif, Arial, sans-serif; font-size:8pt; color:#AA2233; } +strong { color:#BBCCEE; background-color:#334444; font-weight:normal;} + +/* Mobile Header: nur auf Mobile sichtbar */ +.mobile-header { + display: none; +} + +.mobile-footer-quicknav { + display: none; +} + +/* ======================================== + MOBILE LAYOUT (Responsive) + ======================================== */ + +/* Navigation Toggle (nur im Mobile sichtbar) */ +.nav-toggle-button { + display: none; + background-color: #555544; + color: #CCAA66; + padding: 8px 12px; + cursor: pointer; + font-weight: bold; + border: none; + width: 100%; + text-align: left; +} +.nav-toggle-button:hover { + background-color: #444433; +} + +/* Mobile Breakpoint: 768px */ +@media (max-width: 768px) { + /* Mobile Header: Logo oben skaliert, darunter Seite + Navigation */ + .mobile-header { + display: block !important; + padding: 0 0 8px 0; + } + .mobile-logo { + display: block; + width: calc(100% - 40px); + max-width: 400px; + height: auto; + margin: 20px auto 0 auto; + border: 1px solid #000; + } + .mobile-nav-row { + display: flex !important; + align-items: flex-start; + padding: 20px; + } + .mobile-nav-row .mobile-pageimage { + flex-shrink: 0 !important; + width: 108px !important; + height: 120px !important; + object-fit: cover !important; + object-position: top !important; + border: 1px solid #000; + } + .mobile-header .nav-toggle { + flex: 1; + padding: 0 0 0 8px; + margin: 0; + } + .mobile-header .nav-toggle-button { + display: none !important; + } + .mobile-header .nav-table { + width: auto !important; + display: inline !important; + } + .mobile-header .nav-table > tbody, + .mobile-header .nav-table > tbody > tr { + display: inline !important; + } + .mobile-header .nav-table > tbody > tr > td { + display: inline !important; + width: auto !important; + text-align: left; + } + .mobile-header .nav-spacer { + display: inline !important; + width: 8px !important; + height: auto !important; + } + .mobile-header a.menu-item { + display: inline !important; + width: auto !important; + height: auto !important; + padding: 0 4px !important; + text-indent: 0 !important; + overflow: visible !important; + text-align: left; + background-image: none !important; + background-color: transparent; + color: #334444; + margin: 0; + font-weight: bold; + font-size: 14px; + } + .mobile-header a.menu-item:hover, + .mobile-header a.menu-item.active { + background-color: #BBCCEE; + } + + /* Layout-Tabellen auf Block umschalten */ + table.layout-main { + display: block !important; + width: 100% !important; + height: auto !important; + } + table.layout-main > tbody, + table.layout-main > tbody > tr { + display: block !important; + } + table.layout-main > tbody > tr > td { + display: block !important; + width: 100% !important; + padding: 0 !important; + } + + /* Linke Sidebar ausblenden */ + td.sidebar-left, + td.sidebar-left * { + display: none !important; + } + + /* Content-Bereich: Volle Breite */ + td.content-area { + width: 100% !important; + padding: 8px !important; + } + td.content-area table { + width: 100% !important; + padding: 8px !important; + } + td.content-area table td { + padding: 2px 10px !important; + } + + /* Rechte Sidebar ausblenden */ + td.sidebar-right, + td.sidebar-right * { + display: none !important; + } + + /* Footer: Volle Breite */ + td[colspan="2"] table { + width: 100% !important; + } + + /* Quicknav ueber Footer */ + .mobile-footer-quicknav { + display: block !important; + padding: 12px 20px; + text-align: center; + } + .mobile-footer-quicknav a.quicknav { + font-size: 14px; + margin: 0 4px; + } + + /* Typografie anpassen */ + body { + font-size: 14px !important; + line-height: 1.4; + } + h1 { + font-size: 18pt !important; + padding: 8px; + margin: 0; + } + h2 { + font-size: 11pt !important; + } + h3 { + font-size: 14pt !important; + padding-left: 10px !important; + } + p { + font-size: 14px !important; + } + + /* Formulare: Volle Breite */ + input[type="text"], + input[type="email"], + input[type="submit"], + textarea { + width: 100% !important; + max-width: 100% !important; + box-sizing: border-box; + } + + /* Tabellen in Inhalten: Volle Breite */ + td.content-area table { + display: table !important; + width: 100% !important; + } + + /* Quicknav: Kompakte horizontale Leiste */ + .quicknav-table { + width: 100% !important; + } + .quicknav-table td { + display: inline-block !important; + width: auto !important; + height: auto !important; + padding: 2px 4px !important; + } + .quicknav-table img { + display: none !important; + } + + /* Pseudonym-Box: Volle Breite */ + .pseudonym-box { + width: 100% !important; + max-width: 350px; + } + p[align="right"] { + text-align: center !important; + } + + /* Bilder: Responsiv */ + img { + max-width: 100% !important; + height: auto !important; + } + img.mobile-pageimage { + height: 120px !important; + max-height: 120px !important; + } + + /* Background: komplett aus */ + body { + background-image: none !important; + } + body::before { + display: none !important; + } +} + +/* Kleinere Breakpoint: 480px */ +@media (max-width: 480px) { + body { + font-size: 13px !important; + } + h1 { + font-size: 16pt !important; + } + td.content-area { + padding: 4px !important; + } + td.content-area table { + padding: 4px !important; + } +} diff --git a/timecapsule/src/assets/images/background.gif b/timecapsule/src/assets/images/background.gif new file mode 100755 index 0000000..921e003 Binary files /dev/null and b/timecapsule/src/assets/images/background.gif differ diff --git a/timecapsule/src/assets/images/favicon.ico b/timecapsule/src/assets/images/favicon.ico new file mode 100755 index 0000000..4cf9dbd Binary files /dev/null and b/timecapsule/src/assets/images/favicon.ico differ diff --git a/timecapsule/src/assets/images/item.gif b/timecapsule/src/assets/images/item.gif new file mode 100755 index 0000000..b225a46 Binary files /dev/null and b/timecapsule/src/assets/images/item.gif differ diff --git a/timecapsule/src/assets/images/logo.gif b/timecapsule/src/assets/images/logo.gif new file mode 100755 index 0000000..10a635c Binary files /dev/null and b/timecapsule/src/assets/images/logo.gif differ diff --git a/timecapsule/src/assets/images/logomobile.gif b/timecapsule/src/assets/images/logomobile.gif new file mode 100755 index 0000000..69ec33e Binary files /dev/null and b/timecapsule/src/assets/images/logomobile.gif differ diff --git a/timecapsule/src/assets/images/pixel-white.gif b/timecapsule/src/assets/images/pixel-white.gif new file mode 100755 index 0000000..350d4a3 Binary files /dev/null and b/timecapsule/src/assets/images/pixel-white.gif differ diff --git a/timecapsule/src/assets/images/quicknav-back.gif b/timecapsule/src/assets/images/quicknav-back.gif new file mode 100755 index 0000000..cffd8b8 Binary files /dev/null and b/timecapsule/src/assets/images/quicknav-back.gif differ diff --git a/timecapsule/src/assets/images/quicknav-end.gif b/timecapsule/src/assets/images/quicknav-end.gif new file mode 100755 index 0000000..43a9e14 Binary files /dev/null and b/timecapsule/src/assets/images/quicknav-end.gif differ diff --git a/timecapsule/src/assets/images/quicknav-top.gif b/timecapsule/src/assets/images/quicknav-top.gif new file mode 100755 index 0000000..f102218 Binary files /dev/null and b/timecapsule/src/assets/images/quicknav-top.gif differ diff --git a/timecapsule/src/assets/images/redbottom.gif b/timecapsule/src/assets/images/redbottom.gif new file mode 100755 index 0000000..7d0575b Binary files /dev/null and b/timecapsule/src/assets/images/redbottom.gif differ diff --git a/timecapsule/src/assets/images/redline.gif b/timecapsule/src/assets/images/redline.gif new file mode 100755 index 0000000..2cd2eb9 Binary files /dev/null and b/timecapsule/src/assets/images/redline.gif differ diff --git a/timecapsule/src/assets/menu/acoustics.gif b/timecapsule/src/assets/menu/acoustics.gif new file mode 100755 index 0000000..4890ea9 Binary files /dev/null and b/timecapsule/src/assets/menu/acoustics.gif differ diff --git a/timecapsule/src/assets/menu/acoustics_a.gif b/timecapsule/src/assets/menu/acoustics_a.gif new file mode 100755 index 0000000..4491eca Binary files /dev/null and b/timecapsule/src/assets/menu/acoustics_a.gif differ diff --git a/timecapsule/src/assets/menu/acoustics_h.gif b/timecapsule/src/assets/menu/acoustics_h.gif new file mode 100755 index 0000000..993046d Binary files /dev/null and b/timecapsule/src/assets/menu/acoustics_h.gif differ diff --git a/timecapsule/src/assets/menu/background.gif b/timecapsule/src/assets/menu/background.gif new file mode 100755 index 0000000..9f52a88 Binary files /dev/null and b/timecapsule/src/assets/menu/background.gif differ diff --git a/timecapsule/src/assets/menu/background_a.gif b/timecapsule/src/assets/menu/background_a.gif new file mode 100755 index 0000000..53edd78 Binary files /dev/null and b/timecapsule/src/assets/menu/background_a.gif differ diff --git a/timecapsule/src/assets/menu/background_h.gif b/timecapsule/src/assets/menu/background_h.gif new file mode 100755 index 0000000..a72249f Binary files /dev/null and b/timecapsule/src/assets/menu/background_h.gif differ diff --git a/timecapsule/src/assets/menu/beginning.gif b/timecapsule/src/assets/menu/beginning.gif new file mode 100755 index 0000000..21982d2 Binary files /dev/null and b/timecapsule/src/assets/menu/beginning.gif differ diff --git a/timecapsule/src/assets/menu/beginning_a.gif b/timecapsule/src/assets/menu/beginning_a.gif new file mode 100755 index 0000000..44302de Binary files /dev/null and b/timecapsule/src/assets/menu/beginning_a.gif differ diff --git a/timecapsule/src/assets/menu/beginning_h.gif b/timecapsule/src/assets/menu/beginning_h.gif new file mode 100755 index 0000000..fa07979 Binary files /dev/null and b/timecapsule/src/assets/menu/beginning_h.gif differ diff --git a/timecapsule/src/assets/menu/contact.gif b/timecapsule/src/assets/menu/contact.gif new file mode 100755 index 0000000..0e155b2 Binary files /dev/null and b/timecapsule/src/assets/menu/contact.gif differ diff --git a/timecapsule/src/assets/menu/contact_a.gif b/timecapsule/src/assets/menu/contact_a.gif new file mode 100755 index 0000000..011030e Binary files /dev/null and b/timecapsule/src/assets/menu/contact_a.gif differ diff --git a/timecapsule/src/assets/menu/contact_h.gif b/timecapsule/src/assets/menu/contact_h.gif new file mode 100755 index 0000000..b82a73a Binary files /dev/null and b/timecapsule/src/assets/menu/contact_h.gif differ diff --git a/timecapsule/src/assets/menu/location.gif b/timecapsule/src/assets/menu/location.gif new file mode 100755 index 0000000..608c4b1 Binary files /dev/null and b/timecapsule/src/assets/menu/location.gif differ diff --git a/timecapsule/src/assets/menu/location_a.gif b/timecapsule/src/assets/menu/location_a.gif new file mode 100755 index 0000000..90cd5d9 Binary files /dev/null and b/timecapsule/src/assets/menu/location_a.gif differ diff --git a/timecapsule/src/assets/menu/location_h.gif b/timecapsule/src/assets/menu/location_h.gif new file mode 100755 index 0000000..4233516 Binary files /dev/null and b/timecapsule/src/assets/menu/location_h.gif differ diff --git a/timecapsule/src/assets/menu/partners.gif b/timecapsule/src/assets/menu/partners.gif new file mode 100755 index 0000000..c3671ae Binary files /dev/null and b/timecapsule/src/assets/menu/partners.gif differ diff --git a/timecapsule/src/assets/menu/partners_a.gif b/timecapsule/src/assets/menu/partners_a.gif new file mode 100755 index 0000000..22896de Binary files /dev/null and b/timecapsule/src/assets/menu/partners_a.gif differ diff --git a/timecapsule/src/assets/menu/partners_h.gif b/timecapsule/src/assets/menu/partners_h.gif new file mode 100755 index 0000000..82d787e Binary files /dev/null and b/timecapsule/src/assets/menu/partners_h.gif differ diff --git a/timecapsule/src/assets/menu/products.gif b/timecapsule/src/assets/menu/products.gif new file mode 100755 index 0000000..84f30f0 Binary files /dev/null and b/timecapsule/src/assets/menu/products.gif differ diff --git a/timecapsule/src/assets/menu/products_a.gif b/timecapsule/src/assets/menu/products_a.gif new file mode 100755 index 0000000..10e4473 Binary files /dev/null and b/timecapsule/src/assets/menu/products_a.gif differ diff --git a/timecapsule/src/assets/menu/products_h.gif b/timecapsule/src/assets/menu/products_h.gif new file mode 100755 index 0000000..0ca497b Binary files /dev/null and b/timecapsule/src/assets/menu/products_h.gif differ diff --git a/timecapsule/src/assets/menu/projects.gif b/timecapsule/src/assets/menu/projects.gif new file mode 100755 index 0000000..39cadda Binary files /dev/null and b/timecapsule/src/assets/menu/projects.gif differ diff --git a/timecapsule/src/assets/menu/projects_a.gif b/timecapsule/src/assets/menu/projects_a.gif new file mode 100755 index 0000000..c7312cf Binary files /dev/null and b/timecapsule/src/assets/menu/projects_a.gif differ diff --git a/timecapsule/src/assets/menu/projects_h.gif b/timecapsule/src/assets/menu/projects_h.gif new file mode 100755 index 0000000..9ce7882 Binary files /dev/null and b/timecapsule/src/assets/menu/projects_h.gif differ diff --git a/timecapsule/src/assets/pageImage/acoustics.jpg b/timecapsule/src/assets/pageImage/acoustics.jpg new file mode 100755 index 0000000..a0338a4 Binary files /dev/null and b/timecapsule/src/assets/pageImage/acoustics.jpg differ diff --git a/timecapsule/src/assets/pageImage/background.jpg b/timecapsule/src/assets/pageImage/background.jpg new file mode 100755 index 0000000..5ff26d2 Binary files /dev/null and b/timecapsule/src/assets/pageImage/background.jpg differ diff --git a/timecapsule/src/assets/pageImage/beginning.jpg b/timecapsule/src/assets/pageImage/beginning.jpg new file mode 100755 index 0000000..9450002 Binary files /dev/null and b/timecapsule/src/assets/pageImage/beginning.jpg differ diff --git a/timecapsule/src/assets/pageImage/contact.jpg b/timecapsule/src/assets/pageImage/contact.jpg new file mode 100755 index 0000000..fe66e8d Binary files /dev/null and b/timecapsule/src/assets/pageImage/contact.jpg differ diff --git a/timecapsule/src/assets/pageImage/location.jpg b/timecapsule/src/assets/pageImage/location.jpg new file mode 100755 index 0000000..e7a73c4 Binary files /dev/null and b/timecapsule/src/assets/pageImage/location.jpg differ diff --git a/timecapsule/src/assets/pageImage/network.jpg b/timecapsule/src/assets/pageImage/network.jpg new file mode 100755 index 0000000..c57a2b8 Binary files /dev/null and b/timecapsule/src/assets/pageImage/network.jpg differ diff --git a/timecapsule/src/assets/pageImage/partners.jpg b/timecapsule/src/assets/pageImage/partners.jpg new file mode 100755 index 0000000..53b34f7 Binary files /dev/null and b/timecapsule/src/assets/pageImage/partners.jpg differ diff --git a/timecapsule/src/assets/pageImage/products.jpg b/timecapsule/src/assets/pageImage/products.jpg new file mode 100755 index 0000000..a0b1ae7 Binary files /dev/null and b/timecapsule/src/assets/pageImage/products.jpg differ diff --git a/timecapsule/src/assets/pageImage/projects.jpg b/timecapsule/src/assets/pageImage/projects.jpg new file mode 100755 index 0000000..c57a2b8 Binary files /dev/null and b/timecapsule/src/assets/pageImage/projects.jpg differ diff --git a/timecapsule/src/assets/pageImage/stefan.jpg b/timecapsule/src/assets/pageImage/stefan.jpg new file mode 100755 index 0000000..fe66e8d Binary files /dev/null and b/timecapsule/src/assets/pageImage/stefan.jpg differ diff --git a/timecapsule/src/background/index.md b/timecapsule/src/background/index.md new file mode 100644 index 0000000..fe7aa31 --- /dev/null +++ b/timecapsule/src/background/index.md @@ -0,0 +1,67 @@ +--- +title: "The background" +description: "Discover the key milestones in my IT learning journey, from my first computer in 1988 to my work at IXOS SOFTWARE AG. Learn about my projects, certifications, and contributions to the IT field." +section: background +permalink: "/timecapsule/background/index.html" +layout: layout.njk +lastChanged: "5/1/2001" +--- + +Here is a list of key milestones in my IT learning journey. + +## The Key Dates + +{% pseudonymBox "Key Dates" %} + +1988 +First computer (Atari ST) + +1990 +First computer program (Bowling) + +1991 +First complete computer game (Atom Oh No!) + +1992 +First Intel computer (80486) + +1994 +First computer modem + +1996 +Own computer mailbox and Fidonet access + +1997 +First computer network (10Mbit thin-ethernet) + +1997-99 +Trainee at IXOS SOFTWARE AG + +1998 +First internet webpage (www.moonweb.org) + +1999-00 +Web Engineer at IXOS SOFTWARE AG + +2000 +Microsoft certified for: +- Windows NT 4.0 Workstation, Server +- Internet Information Server 4.0 + +{% endpseudonymBox %} + +## The Work at IXOS SOFTWARE AG + +I started to work at IXOS SOFTWARE AG as an intern during my studies and worked on different projects. + +- Jetform integration into IXOS ARCHIVE on an R/3 environment + +- Mobile internet computing test for IXOS Mobile/3 + +- IXtrain sysadmin while studying + +- Digital timestamp client/server application in Java + +- Porting the Perl/CGI version of the IXOS Jukeman website to ASP/SQL on the IIS + +After I stopped my studies, I started to work at IXOS SOFTWARE AG as a Web Engineer. My job was to build up a logical environment for all scripts and to enable persons with no HTML experience to publish content on the www.ixos.com webpage. This was done for press releases, event database, and later for job offers. I also integrated the index server search engine on the webpage, including PDF indexing. If you have further questions about this, just [email me](mailto:stefans-work-at-ixos@moonweb.org). diff --git a/timecapsule/src/beginning/index.md b/timecapsule/src/beginning/index.md new file mode 100644 index 0000000..143da19 --- /dev/null +++ b/timecapsule/src/beginning/index.md @@ -0,0 +1,8 @@ +--- +title: "The beginning" +description: "Welcome to moonweb.org, a site dedicated to building IT knowledge through self-study." +section: beginning +permalink: "/timecapsule/beginning/index.html" +redirectTo: "/" +layout: redirect.njk +--- diff --git a/timecapsule/src/beginning/news.md b/timecapsule/src/beginning/news.md new file mode 100644 index 0000000..4e4f04b --- /dev/null +++ b/timecapsule/src/beginning/news.md @@ -0,0 +1,43 @@ +--- +title: "The news" +description: "Stay updated with the latest news on moonweb.org. Learn about the design relaunch, upcoming section updates, and the reasons behind the changes. Discover more about our projects and products." +section: beginning +pageTitle: "The news" +permalink: "/timecapsule/beginning/news.html" +layout: layout.njk +lastChanged: "5/1/2001" +quicknav: + - { label: "news", url: "/beginning/news.html" } + - { label: "monthly report", url: "/beginning/report.html" } + - { label: "sitemap", url: "/beginning/sitemap.html" } +--- + +This relaunch of moonweb.org is mostly a design update. In the following months, I will update one section per month. +Keep an eye on the following dates: + +{% pseudonymBox "The dates of section updates" %} + +06/2001 - The projects +07/2001 - The products +08/2001 - The acoustics + +{% endpseudonymBox %} +
      + +## The design relaunch (1.5.2001) + +Many people ask me about the reason for moonweb.org. During my studies, I started to think more globally. I already had +some contacts through Fidonet, but serious networking and communication started with the internet. The first step was to build up +an internet brand, and I started with the first planets.org webpages. I quickly realized an internet brand has to have +its own domain. As everyone can expect, planets.org was already taken, and after sleepless nights, moonweb.org +became the domain of the moment. + +So why have I relaunched the design of this domain? +Sure, there has not been much activity in the last two years on moonweb.org, but the main reason to update this page was +to collect all the projects and products we created over the past 10 years and document them on this webpage. + +Are there still some active projects or new products? +Yes, and I hope there are still more to come. Stay tuned. +More about the upcoming projects and products in the next months. + +Stefan diff --git a/timecapsule/src/beginning/report.md b/timecapsule/src/beginning/report.md new file mode 100644 index 0000000..55ffa1a --- /dev/null +++ b/timecapsule/src/beginning/report.md @@ -0,0 +1,39 @@ +--- +title: "The monthly report" +description: "This month marks the relaunch of moonweb.org with a new design. Learn about the design process, timeline, and upcoming content releases. Stay updated with the latest news." +section: beginning +pageTitle: "The monthly report" +permalink: "/timecapsule/beginning/report.html" +layout: layout.njk +lastChanged: "5/1/2001" +quicknav: + - { label: "news", url: "/beginning/news.html" } + - { label: "monthly report", url: "/beginning/report.html" } + - { label: "sitemap", url: "/beginning/sitemap.html" } +--- + +This month marks the relaunch. For more information about the relaunch, please visit the [news page](news.html). + +## The Design Relaunch (1.5.2001) + +Soon after the first release of the old moonweb.org design, I started thinking about a new design—a simple, clean, and smooth version. After a year of brainstorming, I developed the first version of the new design and aimed to publish it by the new millennium in 2000. However, I discovered numerous small issues I didn't like. Nearly another year later, I finished the design. Here is a timeline with the key relaunch steps: + +{% pseudonymBox "Timeline" %} + +05/1998 - Release of old moonweb.org design +12/1998 - Idea of new moonweb.org design +12/1999 - First design prototype +05/2000 - Last content change on old design +01/2001 - Content prototype +03/2001 - Completed new design of moonweb.org +05/2001 - Design relaunch of moonweb.org + +{% endpseudonymBox %} + +Meanwhile, I also tried to develop the INSECO Webpages, but they are still in early development. More information about this will be announced in the coming months with a detailed plan of the steps to publish the INSECO Webpages. + +The content on moonweb.org will be released in three steps as described on the [news page](news.html). This is due to the large amount of information that needs to be added to these sections. This time, I will describe everything that has been developed over the last 13 years. + +For any comments, please write me an email. Thanks. + +Stefan diff --git a/timecapsule/src/beginning/sitemap.md b/timecapsule/src/beginning/sitemap.md new file mode 100644 index 0000000..f161de7 --- /dev/null +++ b/timecapsule/src/beginning/sitemap.md @@ -0,0 +1,160 @@ +--- +title: "The sitemap" +description: "Explore the sitemap of moonweb.org, including sections on projects, products, acoustics, location, background, partners, and contact information. Discover our journey and how to connect with us." +section: beginning +pageTitle: "The sitemap" +permalink: "/timecapsule/beginning/sitemap.html" +layout: layout.njk +lastChanged: "5/1/2001" +quicknav: + - { label: "news", url: "/beginning/news.html" } + - { label: "monthly report", url: "/beginning/report.html" } + - { label: "sitemap", url: "/beginning/sitemap.html" } +--- + +Listed below is the sitemap of moonweb.org. + +## The Projects + +The main purpose of moonweb.org is to build up knowledge through continuous learning by doing. You can find all finished, ongoing, and upcoming projects below. + +- Atari development +- Amiga development +- PC/Intel development +- Fidonet/BBS +- Network/Internet +- Web development + +
      + + + + + + +
      +The Projects +
      +
      + +## The Products + +After 13 years of development, we have released several products during different projects. + +- SkyLINE Shareware Development +- PHOBIA +- ESPRIT (Tr@nceMission, P.C.C) +- ASC (The Force, HCC) +- Olympic Arts / TropicDREAMS + +
      + + + + + + +
      +The Products +
      +
      + +## The Acoustics + +Live music and DJ mixes recorded over the past 10 years. Also, some rare tracks from studioMARS. + +- Live music +- Live mixing +- studioMARS + +
      + + + + + + +
      +The Acoustics +
      +
      + +## The Location + +General information about our current operations and our locations. + +- Branch offices +- Environments +- Teams + +
      + + + + + + +
      +The Location +
      +
      + +## The Background + +Information about myself, the creator of moonweb.org, and the beginnings of the moonweb.org network. + +- Personal +- Knowledge +- Timeline + +
      + + + + + + +
      +The Background +
      +
      + +## The Partners + +All our partners, supporters, and guests. + +- Partners +- Supporters +- Guests + +
      + + + + + + +
      +The Partners +
      +
      + +## The Contact + +Different ways to get in contact with us. + +- Phone +- Fax +- Email + +
      + + + + + + +
      +The Contact +
      +
      diff --git a/timecapsule/src/contact/index.md b/timecapsule/src/contact/index.md new file mode 100644 index 0000000..21d593c --- /dev/null +++ b/timecapsule/src/contact/index.md @@ -0,0 +1,25 @@ +--- +title: "The contact" +description: "Get in touch for general information or report technical issues with moonweb.org. Contact us via phone or email for assistance." +section: contact +permalink: "/timecapsule/contact/index.html" +layout: layout.njk +lastChanged: "5/1/2001" +--- + +For general information, please use this contact information. + +{% pseudonymBox "Contact" %} + +phone: +49.89.20006547 +email: info@moonweb.org + +{% endpseudonymBox %} + +Please report technical problems with this webserver to the webmaster. + +{% pseudonymBox "Webmaster" %} + +email: webmaster@moonweb.org + +{% endpseudonymBox %} diff --git a/timecapsule/src/css/nav-replacement.njk b/timecapsule/src/css/nav-replacement.njk new file mode 100644 index 0000000..1516c71 --- /dev/null +++ b/timecapsule/src/css/nav-replacement.njk @@ -0,0 +1,38 @@ +--- +permalink: "/timecapsule/assets/css/nav-replacement.css" +eleventyExcludeFromCollections: true +--- +/* Ersetzt den Bild-Hover-Tausch aus menu.js OHNE Javascript. */ + +/* Fix: inline in table cells with explicit height creates 2px baseline gap */ +table.quicknav-table img { display: block; } + +a.menu-item { + display: inline-block; + width: 76px; + height: 15px; + background-repeat: no-repeat; + text-indent: -9999px; + overflow: hidden; +} + +{% for group in nav %}{% for item in group %} +a.menu-{{ item }} { + background-image: url("/timecapsule/assets/menu/{{ item }}.gif"); +} +a.menu-{{ item }}:hover { + background-image: url("/timecapsule/assets/menu/{{ item }}_h.gif"); +} +a.menu-{{ item }}.active { + background-image: url("/timecapsule/assets/menu/{{ item }}_a.gif"); +} +{% endfor %}{% endfor %} + +/* Mobile: Navigation als Text statt Bilder */ +@media (max-width: 768px) { + a.menu-item { + background-image: none !important; + text-indent: 0 !important; + overflow: visible !important; + } +} diff --git a/timecapsule/src/hardware.md b/timecapsule/src/hardware.md new file mode 100644 index 0000000..aa0d507 --- /dev/null +++ b/timecapsule/src/hardware.md @@ -0,0 +1,5 @@ +--- +permalink: "/timecapsule/hardware.html" +redirectTo: "/" +layout: redirect.njk +--- diff --git a/timecapsule/src/index.md b/timecapsule/src/index.md new file mode 100644 index 0000000..289faa5 --- /dev/null +++ b/timecapsule/src/index.md @@ -0,0 +1,35 @@ +--- +title: "The beginning" +description: "Welcome to moonweb.org, a site dedicated to building IT knowledge through self-study. Explore my life, projects, and the journey of learning IT with Matthias since 1988. Stay tuned for more updates." +section: beginning +permalink: "/timecapsule/index.html" +layout: layout.njk +lastChanged: "5/1/2001" +quicknav: + - { label: "news", url: "/beginning/news.html" } + - { label: "monthly report", url: "/beginning/report.html" } + - { label: "sitemap", url: "/beginning/sitemap.html" } +--- + +Welcome to the new moonweb.org website. After 2 years of part-time development, it is finally here. + +## The Idea + +Thank you for visiting our page. The idea behind moonweb.org is to build IT knowledge and to learn from each other. +Since computer education in schools or colleges here in Germany isn't very comprehensive and often misses out on interesting aspects relevant to business life, we built up our IT knowledge through self-study. + +## The Website + +This page mostly describes my life, the products I have developed, and the projects I have been part of. +You can also find some general information about the person who played a major role in my IT learning process, Matthias. Together, we took our first steps in computer programming in 1988 on an Atari STFM 1040, a great machine. + +## The Person + +Since there is no advertising on my homepage, you probably know who I am, so I will skip the standard description of myself. If you want to know more about [me](/timecapsule/stefan/), write me an [email](mailto:who-are-you@moonweb.org). +I dislike personal websites and often wonder if anyone would actually use this page. I stopped worrying about it :) and remember the main reason I started this website: to document all the information about my projects so I would never forget anything. That's all. + +## The Future + +... stay tuned + +Stefan diff --git a/timecapsule/src/index2.md b/timecapsule/src/index2.md new file mode 100644 index 0000000..436da2d --- /dev/null +++ b/timecapsule/src/index2.md @@ -0,0 +1,5 @@ +--- +permalink: "/timecapsule/index2.html" +redirectTo: "/" +layout: redirect.njk +--- diff --git a/timecapsule/src/index3.md b/timecapsule/src/index3.md new file mode 100644 index 0000000..a93b4df --- /dev/null +++ b/timecapsule/src/index3.md @@ -0,0 +1,5 @@ +--- +permalink: "/timecapsule/index3.html" +redirectTo: "/" +layout: redirect.njk +--- diff --git a/timecapsule/src/infos.md b/timecapsule/src/infos.md new file mode 100644 index 0000000..623cf78 --- /dev/null +++ b/timecapsule/src/infos.md @@ -0,0 +1,5 @@ +--- +permalink: "/timecapsule/infos.html" +redirectTo: "/" +layout: redirect.njk +--- diff --git a/timecapsule/src/legal-notice/index.md b/timecapsule/src/legal-notice/index.md new file mode 100644 index 0000000..71bf700 --- /dev/null +++ b/timecapsule/src/legal-notice/index.md @@ -0,0 +1,20 @@ +--- +layout: layout.njk +section: contact +permalink: /timecapsule/legal-notice/index.html +pageTitle: "Legal Notice" +lastChanged: "8/16/2026" +--- + +**Legal Notice (Impressum, § 5 DDG)** + +Stefan Kölle +Neumarkter Str. 86c +81673 München + +Phone/Fax: +49-(89)-20006547 +E-Mail: webmaster@moonweb.org + +Responsible for content according to § 18 (2) MStV: Stefan Kölle, address as above. + +Full legal notice & privacy policy for this website and the moonweb.org network: [/impressum](https://www.moonweb.org/impressum) diff --git a/timecapsule/src/links.md b/timecapsule/src/links.md new file mode 100644 index 0000000..ecb927a --- /dev/null +++ b/timecapsule/src/links.md @@ -0,0 +1,5 @@ +--- +permalink: "/timecapsule/links.html" +redirectTo: "/" +layout: redirect.njk +--- diff --git a/timecapsule/src/location/index.md b/timecapsule/src/location/index.md new file mode 100644 index 0000000..8bd94d0 --- /dev/null +++ b/timecapsule/src/location/index.md @@ -0,0 +1,43 @@ +--- +title: "The location" +description: "Learn about the location and network setup of moonweb.org in Augsburg, Germany. Explore the hardware and network environment, including servers, workstations, and network connections." +section: location +permalink: "/timecapsule/location/index.html" +layout: layout.njk +lastChanged: "5/1/2001" +--- + +moonweb.org was located in Augsburg, Germany. The location was connected to two additional locations: one in the same house via a 10 Mbit thin-Ethernet cable, and another to the Springfield.net network via a demand dial RAS connection. The next step was to build a much wider network with the new network project 'VPN demand dial connection'. + +## The Main Environment + +There were some old servers which did not run very fast, so don't expect too much. The main server, the internet access, and the two client hubs (10 Mbit and 100 Mbit) were connected with a SOHO switch. + +{% pseudonymBox "Hardware" %} + +XS +smoothwall firewall + +IO +The main server for all internal services + +KALLISTO +Red Hat Linux Server + +PANDORA +The multimedia workstation with 3 monitors and high-quality speakers + +GANYMED +The guest computer + +PHOBOS +Linux Server with Postfix/Apache + +DIONE +The classic 486 with DOS + +{% endpseudonymBox %} + +## The Network + +A network plan can be found here: [network plan](/timecapsule/network) diff --git a/timecapsule/src/network/index.md b/timecapsule/src/network/index.md new file mode 100644 index 0000000..2cdee67 --- /dev/null +++ b/timecapsule/src/network/index.md @@ -0,0 +1,15 @@ +--- +title: "The network" +description: "Explore the moonweb.org network setup, including hardware, servers, workstations, and network connections. Learn about the infrastructure that supports our IT environment." +section: network +pageTitle: "The network" +permalink: "/timecapsule/network/index.html" +layout: layout.njk +lastChanged: "5/1/2001" +--- + +Here is the moonweb.org network plan: + +![Detailed network plan of the moonweb.org network](/timecapsule/assets/content/network.jpg) + +The moonweb.org network in Augsburg, Germany, connected to two other locations via a 10 Mbit thin-Ethernet cable and a demand dial RAS connection. Plans included expanding with a VPN demand dial connection. The network had older servers, modest performance, and used a SOHO switch to connect the main server, internet access, and client hubs. The setup featured various servers and workstations, including a Smoothwall firewall and a classic 486 with DOS. diff --git a/timecapsule/src/new.md b/timecapsule/src/new.md new file mode 100644 index 0000000..c0adc66 --- /dev/null +++ b/timecapsule/src/new.md @@ -0,0 +1,5 @@ +--- +permalink: "/timecapsule/new.html" +redirectTo: "/" +layout: redirect.njk +--- diff --git a/timecapsule/src/partners/index.md b/timecapsule/src/partners/index.md new file mode 100644 index 0000000..8a0dff9 --- /dev/null +++ b/timecapsule/src/partners/index.md @@ -0,0 +1,46 @@ +--- +title: "The partners" +description: "A heartfelt thank you to the individuals who supported me from 1988 to 2001. Acknowledging contributions in game development, demo coding, network projects, and more." +section: partners +permalink: "/timecapsule/partners/index.html" +layout: layout.njk +lastChanged: "5/1/2001" +--- + +I want to thank some people who helped me during the last 13 years (1988-2001). + +Matthias +For the best time ever while brainstorming about games, demos, and enhancements of all the tools we developed. And of course, I have to thank you for leading me to the Atari ST and not to the Amiga :) and for the help on all the projects. + +The Elite, M.C.A., and of course the equinox website +For the inspiration in demo coding. + +Milkrun +For the help with graphical coding. + +Helmut Kalb +For the interesting projects at IXOS SOFTWARE AG. + +Miltos +For the great help while learning ASP :) + +Christian Beckmann +For the help with the network projects and for the hardware supply :) + +Thomas Hoeger +For the nice time at IXtrain as a sysadmin. + +Hary and Thomas +For the help with electronics. + +Ulrich, Sirius-BBS Sysop, and Mash +For the great Fidonet time and for some help with the Fidonet projects. + +Raphael +For some help with programming and network stuff. + +Marco +For the nice cosmic sounds. + +Juergen and Brainstorm-Radio +For the help with the Fidonet and internet projects. diff --git a/timecapsule/src/products/index.md b/timecapsule/src/products/index.md new file mode 100644 index 0000000..d8f73b4 --- /dev/null +++ b/timecapsule/src/products/index.md @@ -0,0 +1,84 @@ +--- +title: "The products" +description: "Discover the products developed over the years at moonweb.org, from Atari ST games and tools to PC games, intros, demos, and utilities. Learn about the projects and software group pseudonyms." +section: products +permalink: "/timecapsule/products/index.html" +layout: layout.njk +lastChanged: "5/1/2001" +--- + +Over the years of development projects, some products have been released. This section is grouped by project and also listed separately by product title. The projects started in 1988 on our first computers, which were Atari STFM 1040s. You can find more detailed information in the projects section. + +## The Atari ST Products + +On our first project, we quickly learned to code some simple programs. Matthias mainly focused on medium resolution programming and Stefan on high resolution. As 12-year-olds, the type of software we wanted to code was games, although we also coded some nice tools. + +- International Kegeln and Bowling (1990) + Our first release ever. Idea from Matthias (Olympic Arts) and first graphical coding project. The result was a complete Bowling game as a second version of "International Kegeln" simply called Bowling. It was complete, but never playable. + +- Runner (1991) + An all-round helper tool including a database, memo, system overview, and a game. Main idea from CPK and some help from Stefan on the built-in Hangman game. + +- Atom Oh No! (1991) + The second game release on the Atari ST completely coded by Stefan under the pseudonym "Tropic DREAMs". The idea came from the game Atomix on the Amiga, ported to the Atari ST high resolution 640x400 including a level maker and 10 demo levels. + +- TOP Tools (1992) + Some small tools and a game coded by Stefan under the pseudonym "Tropic DREAMs". All-round tool like Runner, a simple strategic game, and an archive tool for the Atari ST magazine TOS. + +{% pseudonymBox "The software group pseudonyms" %} + +Olympic Arts +mainly Matthias, his brother, and sometimes Stefan + +Tropic DREAMs +mainly Stefan + +{% endpseudonymBox %} + +## The PC Games + +In about 1992, Matthias and I bought a 486 Intel personal computer and quickly learned to develop on this processor. Our main language was Turbo Pascal with more and more inline assembler from Stefan. The first type of software we wanted to develop was games. + +- Glücksrad (1993) + The first PC software release in 1993. Code by Stefan, graphics from Matthias, and PC-Speaker sound sampled from the 'Wheel of Fortune' show on Sat1. The idea, of course, comes from 'Wheel of Fortune'. Recommended computer: 486 with DOS. [... download (400kB)](https://www.moonweb.org/files/pc/esprit/grad1993.zip) + +- Tetris (1994) + Fully playable two-player Tetris competition preview. Complete coding and graphics by Stefan. Never finished a release version, but this version is very playable. Released under 'SkyLINE Production'. Recommended computer: 486 with DOS. Now available as DOSBox version for Windows and modern systems. + [... download DOSBOX Version](https://www.moonweb.org/files/pc/skyline/tet_comp_dosbox.zip) + +{% pseudonymBox "The software group pseudonyms" %} + +Tr@nceMISSION +mainly Stefan, the goal was to build games and demos on the PC, but there was only one game release and some small demos and intros +Tr@nceMission Website with Sourcecode + +SkyLINE Productions +mainly Stefan, the goal was to build serious applications on the PC. SkyLINE existed from 1993 until 1995 and released about 15 tools and demos +SkyLINE Production Releases + +PHOB!A +was a short-lived PC demo group in 1994. It released the Phobia Welcome Intro, coded in Turbo Pascal with inline assembler, using palette tricks for animation and a custom font. +PHOB!A Website with Sourcecode + +{% endpseudonymBox %} + +## The PC Intros and Demos + +Matthias and I always looked at the famous PC demos and thought about the way to code them. Several small demo releases deserve mention. + +- phobia-intro (1994) + The best intro ever coded by me (Stefan). Some parts are faked, but it looks really good. I will try to make a screenshot soon and put the source and the executable into an archive for download. Meanwhile, you can read about the PHOBIA and the demo group story. Sorry, the links on this page do not work. ... read more + +- Copperintro (1995) + A really interesting demo with more than 100 colors in text mode done with Amiga copper-like effects. Only works on an old 486 PC. Perhaps it will run under Pentium, too. Just test it. [... download (10kB)](https://www.moonweb.org/files/pc/skyline/copperint.zip) + +## The PC Tools + +- DOSMENU II (1994) + The only boot selector that could change config.sys and autoexec.bat parameters while booting. There has never been a tool like this. It might be useful for you. A must for a DOS machine. + [... download (170kB)](https://www.moonweb.org/files/pc/skyline/dosmenu.zip) + [... free reg-key by email](mailto:dosmenu-reg-key@moonweb.org) + +- misc Tools (1995) + SkyLINE released even more tools, especially the XLIBUNIT for Turbo Pascal for direct VGA functions. I will release the source code as public freeware, not sure if anyone would need it. Mostly assembler code, maybe just for fun to read through :) + ... X Lib Unit on Github diff --git a/timecapsule/src/projects.md b/timecapsule/src/projects.md new file mode 100644 index 0000000..66a3071 --- /dev/null +++ b/timecapsule/src/projects.md @@ -0,0 +1,5 @@ +--- +permalink: "/timecapsule/projects.html" +redirectTo: "/" +layout: redirect.njk +--- diff --git a/timecapsule/src/projects/index.md b/timecapsule/src/projects/index.md new file mode 100644 index 0000000..c01f475 --- /dev/null +++ b/timecapsule/src/projects/index.md @@ -0,0 +1,103 @@ +--- +title: "The projects" +description: "Explore the diverse projects at moonweb.org, from computer programming and game development to networking and music projects. Learn about our journey in IT knowledge building since 1988." +section: projects +permalink: "/timecapsule/projects/index.html" +layout: layout.njk +lastChanged: "5/1/2001" +--- + +The main goal of moonweb.org projects is to build up IT knowledge. Over the past 13 years, through a continuous learning process, I have gained extensive experience in various areas of IT. + +## Computer Programming Projects + +Over the years, several products have been released through various development projects. These projects began in 1988 on our first computers, the Atari STFM 1040. More detailed information can be found in the projects section. + +The Atari ST Products +Our first project involved coding simple programs. Matthias focused on medium resolution programming, while Stefan worked on high resolution. As 12-year-olds, we primarily coded games but also developed some useful tools. + +- International Kegeln and Bowling (1990): Our first release, a complete but barely playable bowling game. + +- Runner (1991): An all-round helper tool with a database, memo, system overview, and a game. + +- Atom Oh No! (1991): A game inspired by Atomix on the Amiga, including a level maker and 10 demo levels. + +- TOP Tools (1992): Small tools and a game, including a strategic game and an archive tool for the Atari ST magazine TOS. + +The PC Games +In 1992, we started developing on a 486 Intel personal computer using Turbo Pascal and inline assembler. Our initial focus was on game development. + +- Glücksrad (1993): A 'Wheel of Fortune' inspired game with graphics and PC-Speaker sound. + +- Tetris (1994): A two-player Tetris competition preview, very playable but never finished. + +The PC Intros and Demos +We were inspired by famous PC demos and released some small demo projects. + +- phobia-intro (1994): A visually impressive intro. + +- Copperintro (1995): A demo with more than 100 colors in text mode, using Amiga copper-like effects. + +The PC Tools +We also developed several tools for DOS. + +- DOSMENU II (1994): A boot selector that could change config.sys and autoexec.bat parameters while booting. + +- misc Tools (1995): Various tools, including XLIBUNIT for Turbo Pascal with direct VGA functions. + +## Mailbox/BBS/Fidonet Projects + +- BBS and Fidonet node (dates approximately 1994 - 2000) + +- Node in Augsburg with uplink directly to the NC in Munich + +- Operated on an OS/2 machine + +- 2x ISDN, 1x MODEM + +- Approximately 20 subnodes and points + +- Bavaria HUB/HOST for various Alt-Nets + +## Networking Projects + +- Home network with various Linux servers and Windows NT 4.0 + +- pfSense firewall predecessor + +- FreeBSD server with Apache/Sendmail/Perl scripts + +- NT 4.0 file server + +- Windows 98 and Windows 2000 hosts + +- Better information at [/timecapsule/network/](/timecapsule/network/) + +## Practical Projects at IXOS SOFTWARE AG + +- Redesigned the Jukeman website (in ASP classic and MSSQL) + +- Prepared rooms for R/3 training sessions + +- Worked in the innovation department + +- Developed blockchain technology for contract signing in Java + +- Created an R/3 module for Jetforms form editor in ABAP and C++ + +## Music Projects + +Music has always been a significant part of my life. Since 1995, I have been mixing on turntables and composing my own songs, although they were never quite professional. + +The Music on Computers +I started by composing music on the computer using MOD-Trackers. While these tracks were very computer-based, they didn't sound like real music. + +- Examples from 1993: wizard.mod (46kB), run_away.mod (43kB) + +- Electronic techno-steps from 1994: lit_rave.mod (55kB), nxt_rave.mod (32kB) + +The Live Synthesizer Music +We later experimented with live music, resulting in two tapes of live recordings, including a session from S.O.N.A.X meets Genital Angriff and a solo tape from Genital Angriff. + +The Live Turntable Mixing +I started mixing live at private and smaller parties. Some notable events include the 'all areas party prince garden' and winning 2nd place in a DJ competition. You can find a live recording of the afro-cosmic-double-mix with my DJ friend Marc Le Nain from Private Lounge Party V. diff --git a/timecapsule/src/robots.njk b/timecapsule/src/robots.njk new file mode 100644 index 0000000..a6862c2 --- /dev/null +++ b/timecapsule/src/robots.njk @@ -0,0 +1,8 @@ +--- +permalink: "/timecapsule/robots.txt" +eleventyExcludeFromCollections: true +--- +User-agent: * +Allow: / + +Sitemap: {{ site.domain }}/sitemap.xml diff --git a/timecapsule/src/sitemap.xml.njk b/timecapsule/src/sitemap.xml.njk new file mode 100644 index 0000000..b8666ae --- /dev/null +++ b/timecapsule/src/sitemap.xml.njk @@ -0,0 +1,12 @@ +--- +permalink: "/timecapsule/sitemap.xml" +eleventyExcludeFromCollections: true +--- + + +{%- for page in collections.all %}{% if page.data.layout != "redirect.njk" and page.data.permalink != "/sitemap.xml" and page.url != "/404/" %} + + {{ site.domain }}{{ page.url }}{% if page.data.lastChanged %} + {{ page.data.lastChanged | toIsoDate }}{% endif %} + {% endif %}{% endfor %} + diff --git a/timecapsule/src/start.md b/timecapsule/src/start.md new file mode 100644 index 0000000..97c9129 --- /dev/null +++ b/timecapsule/src/start.md @@ -0,0 +1,5 @@ +--- +permalink: "/timecapsule/start.html" +redirectTo: "/" +layout: redirect.njk +--- diff --git a/timecapsule/src/stefan/index.md b/timecapsule/src/stefan/index.md new file mode 100644 index 0000000..547c1f6 --- /dev/null +++ b/timecapsule/src/stefan/index.md @@ -0,0 +1,26 @@ +--- +title: "The person" +description: "Learn more about Stefan Kölle, including contact details, favorite radio stations, and electronic music preferences. Discover additional background information." +section: stefan +pageTitle: "The person" +permalink: "/timecapsule/stefan/index.html" +layout: layout.njk +lastChanged: "5/1/2001" +--- + +![Stefan Koelle Munich](/timecapsule/assets/content/stefan-koelle.jpg) +Stefan Kölle +Neumarkter Str. 86c +81673 München +Germany + +phone: +49-89-20006547 +email: stefan.koelle@moonweb.org + +Favourite radio station: FM4 +Favourite internet radio: Soma FM +Favourite electronic band: Autechre + +## Links + +[More background information about myself](/timecapsule/background/) diff --git a/timecapsule/src/users.md b/timecapsule/src/users.md new file mode 100644 index 0000000..cee5efa --- /dev/null +++ b/timecapsule/src/users.md @@ -0,0 +1,5 @@ +--- +permalink: "/timecapsule/users.html" +redirectTo: "/" +layout: redirect.njk +---