feat: scaffold Hugo MVP site (#3)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

jmservera committed May 18, 2026 at 10:34 UTC c46beabfed82283385da4d3cf530d69c2e1b018d
15 files changed +242 -1
.github/workflows/deploy-site.yml new
+56
@@ -0,0 +1,56 @@
1 +name: Deploy Hugo site
2 +
3 +on:
4 + push:
5 + branches:
6 + - main
7 + workflow_dispatch:
8 +
9 +permissions:
10 + contents: read
11 + pages: write
12 + id-token: write
13 +
14 +concurrency:
15 + group: pages
16 + cancel-in-progress: true
17 +
18 +jobs:
19 + build:
20 + runs-on: ubuntu-latest
21 + env:
22 + HUGO_VERSION: 0.161.1
23 + steps:
24 + - name: Check out repository
25 + uses: actions/checkout@v4
26 + with:
27 + submodules: recursive
28 + fetch-depth: 0
29 +
30 + - name: Configure GitHub Pages
31 + uses: actions/configure-pages@v5
32 +
33 + - name: Set up Hugo
34 + uses: actions/setup-hugo@v3
35 + with:
36 + hugo-version: ${{ env.HUGO_VERSION }}
37 + extended: true
38 +
39 + - name: Build site
40 + run: hugo --minify
41 +
42 + - name: Upload Pages artifact
43 + uses: actions/upload-pages-artifact@v3
44 + with:
45 + path: ./public
46 +
47 + deploy:
48 + needs: build
49 + runs-on: ubuntu-latest
50 + environment:
51 + name: github-pages
52 + url: ${{ steps.deployment.outputs.page_url }}
53 + steps:
54 + - name: Deploy to GitHub Pages
55 + id: deployment
56 + uses: actions/deploy-pages@v4
.gitignore
+6
@@ -6,3 +6,9 @@
6 .squad/.scratch/
7 # Squad: SubSquad activation file (local to this machine)
8 .squad-workstream
9 +
10 +# Local Hugo tooling and build output
11 +.tools/
12 +public/
13 +resources/_gen/
14 +.hugo_build.lock
.squad/agents/amy/history.md
+3 -1
@@ -14,4 +14,6 @@
14
15 ## Learnings
16
17 -_No learnings recorded yet._
17 +- **2026-05-18T10:27:35.339+02:00:** Hugo now scaffolds from the repo root with the primary site config in `hugo.toml` and the PaperMod theme installed as a git submodule at `themes/PaperMod`.
18 +- **2026-05-18T10:27:35.339+02:00:** The MVP content structure lives under `content/weekly/`, `content/monthly/`, and `content/yearly/`, with archive/search entry pages at `content/archive.md` and `content/search.md`.
19 +- **2026-05-18T10:27:35.339+02:00:** GitHub Pages deployment for the Hugo site is wired through `.github/workflows/deploy-site.yml`, and local builds should use `hugo --minify` after initializing submodules.
README.md new
+33
@@ -0,0 +1,33 @@
1 +# SquadScope
2 +
3 +SquadScope is a Hugo-powered GitHub Pages site for weekly, monthly, and yearly tech trend summaries sourced from GitHub.
4 +
5 +## Theme and stack
6 +
7 +- Static site generator: Hugo (extended)
8 +- Theme: [PaperMod](https://github.com/adityatelange/hugo-PaperMod)
9 +- Deployment: GitHub Pages via GitHub Actions
10 +
11 +## Local development
12 +
13 +1. Install the Hugo extended binary (version 0.146.0 or newer).
14 +2. Clone the repository with submodules, or initialize them after cloning:
15 + - `git clone --recurse-submodules https://github.com/jmservera/SquadScope.git`
16 + - `git submodule update --init --recursive`
17 +3. Start the local development server:
18 + - `hugo server`
19 +4. Create a production build:
20 + - `hugo --minify`
21 +
22 +## Content structure
23 +
24 +- `content/weekly/` — weekly summaries
25 +- `content/monthly/` — monthly rollups
26 +- `content/yearly/` — yearly summaries
27 +- `data/raw/` — crawler output
28 +- `data/analyzed/` — analysis output
29 +- `data/snapshots/` — star count snapshots
30 +
31 +## Deployment
32 +
33 +Pushing to `main` triggers `.github/workflows/deploy-site.yml`, which builds the Hugo site and deploys the generated `public/` directory to GitHub Pages.
archetypes/default.md new
+5
@@ -0,0 +1,5 @@
1 ++++
2 +date = '{{ .Date }}'
3 +draft = true
4 +title = '{{ replace .File.ContentBaseName "-" " " | title }}'
5 ++++
content/_index.md new
+8
@@ -0,0 +1,8 @@
1 ++++
2 +title = 'SquadScope'
3 +date = '2026-05-18T10:27:35.339+02:00'
4 +draft = false
5 +summary = 'Weekly tech trend summaries sourced from GitHub.'
6 ++++
7 +
8 +SquadScope publishes weekly signal, monthly rollups, and yearly retrospectives so readers can track what matters on GitHub without chasing every trend feed.
content/archive.md new
+9
@@ -0,0 +1,9 @@
1 ++++
2 +title = 'Archive'
3 +date = '2026-05-18T10:27:35.339+02:00'
4 +draft = false
5 +layout = 'archives'
6 +summary = 'Browse the full SquadScope archive.'
7 ++++
8 +
9 +Use the archive to scan every published SquadScope entry in chronological order.
content/monthly/_index.md new
+8
@@ -0,0 +1,8 @@
1 ++++
2 +title = 'Monthly rollups'
3 +date = '2026-05-18T10:27:35.339+02:00'
4 +draft = false
5 +summary = 'See month-level tech trend rollups.'
6 ++++
7 +
8 +Monthly rollups will synthesize the strongest themes, repeat winners, and notable shifts that emerged across each month.
content/search.md new
+9
@@ -0,0 +1,9 @@
1 ++++
2 +title = 'Search'
3 +date = '2026-05-18T10:27:35.339+02:00'
4 +draft = false
5 +layout = 'search'
6 +summary = 'Search weekly, monthly, and yearly SquadScope reports.'
7 ++++
8 +
9 +Search across the entire archive by topic, category, or keyword.
content/weekly/_index.md new
+8
@@ -0,0 +1,8 @@
1 ++++
2 +title = 'Weekly summaries'
3 +date = '2026-05-18T10:27:35.339+02:00'
4 +draft = false
5 +summary = 'Browse each weekly SquadScope report.'
6 ++++
7 +
8 +Weekly editions collect the most notable new repositories, star surges, and critical analysis for each publishing cycle.
content/yearly/_index.md new
+8
@@ -0,0 +1,8 @@
1 ++++
2 +title = 'Yearly summaries'
3 +date = '2026-05-18T10:27:35.339+02:00'
4 +draft = false
5 +summary = 'Review long-view yearly trend analysis.'
6 ++++
7 +
8 +Yearly summaries will capture the biggest platform themes, enduring categories, and changing priorities across the GitHub ecosystem.
data/analyzed/.gitkeep
data/raw/.gitkeep
data/snapshots/.gitkeep
hugo.toml new
+89
@@ -0,0 +1,89 @@
1 +baseURL = 'https://jmservera.github.io/SquadScope/'
2 +locale = 'en-us'
3 +title = 'SquadScope — Weekly Tech Trends from GitHub'
4 +theme = 'PaperMod'
5 +enableRobotsTXT = true
6 +rssLimit = 20
7 +
8 +[pagination]
9 + pagerSize = 10
10 +
11 +[taxonomies]
12 + tag = 'tags'
13 + category = 'categories'
14 +
15 +[outputs]
16 + home = ['HTML', 'RSS', 'JSON']
17 + section = ['HTML', 'RSS']
18 + taxonomy = ['HTML', 'RSS']
19 + term = ['HTML', 'RSS']
20 +
21 +[params]
22 + defaultTheme = 'auto'
23 + disableSpecial1stPost = true
24 + ShowReadingTime = true
25 + ShowPostNavLinks = true
26 + ShowCodeCopyButtons = true
27 + ShowRssButtonInSectionTermList = true
28 + ShowAllPagesInArchive = true
29 + mainSections = ['weekly', 'monthly', 'yearly']
30 +
31 + [params.homeInfoParams]
32 + Title = 'Weekly tech signal from GitHub'
33 + Content = 'SquadScope turns GitHub activity into readable weekly, monthly, and yearly trend reports for busy developers and tech leads.'
34 +
35 + [params.fuseOpts]
36 + isCaseSensitive = false
37 + shouldSort = true
38 + location = 0
39 + distance = 1000
40 + threshold = 0.35
41 + minMatchCharLength = 2
42 + limit = 10
43 + keys = ['title', 'permalink', 'summary', 'content', 'tags', 'categories']
44 +
45 +[menu]
46 + [[menu.main]]
47 + identifier = 'weekly'
48 + name = 'Weekly'
49 + url = '/weekly/'
50 + weight = 10
51 +
52 + [[menu.main]]
53 + identifier = 'monthly'
54 + name = 'Monthly'
55 + url = '/monthly/'
56 + weight = 20
57 +
58 + [[menu.main]]
59 + identifier = 'yearly'
60 + name = 'Yearly'
61 + url = '/yearly/'
62 + weight = 30
63 +
64 + [[menu.main]]
65 + identifier = 'archive'
66 + name = 'Archive'
67 + url = '/archive/'
68 + weight = 40
69 +
70 + [[menu.main]]
71 + identifier = 'search'
72 + name = 'Search'
73 + url = '/search/'
74 + weight = 50
75 +
76 + [[menu.main]]
77 + identifier = 'rss'
78 + name = 'RSS'
79 + url = '/index.xml'
80 + weight = 60
81 +
82 +[markup]
83 + [markup.goldmark.renderer]
84 + unsafe = true
85 +
86 + [markup.tableOfContents]
87 + startLevel = 2
88 + endLevel = 4
89 + ordered = false