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