Deployment — from zero to live at genz-economics.com
This is a one-time setup. Once it’s done, merging a PR on GitHub → site updates within ~2 minutes.
0. What you’ll need
- A GitHub account (free). Ideally a GitHub organization called
genz-economics— it looks cleaner than a personal account. - Your domain
genz-economics.com(you’ve got this). - About 20 minutes.
1. Create the repository
Option A — organization repo (recommended).
- On GitHub, create a new organization:
genz-economics. - Inside it, create a public repo called
genz-economics.com. - Invite moderators as members with “Write” access.
Option B — personal repo (quick start).
- Just create
your-username/genz-economics.comand upgrade to an org later. Updaterepository:in_config.yml+ the URLs in.github/CODEOWNERSaccordingly.
Leave the repo empty (no README, no license) — we’re pushing one.
2. Push this folder
Open a terminal in this folder (genz-economics-site/):
git init
git add .
git commit -m "Initial commit: site scaffold, docs, stub posts"
git branch -M main
git remote add origin git@github.com:harsharya7021/genz-economics.com.git
git push -u origin main
3. Turn on GitHub Pages
- Repo → Settings → Pages.
- Under “Build and deployment”:
- Source: Deploy from a branch.
- Branch:
main//(root).
- Save. First build takes 1–2 minutes.
- Your site is now live at
https://genz-economics.github.io/genz-economics.com/.
4. Point the domain
In the same Settings → Pages screen:
- Under Custom domain, type
genz-economics.comand save. - GitHub will show the DNS records you need.
Go to your domain registrar (where you bought genz-economics.com) and add:
| Type | Host | Value |
|---|---|---|
| A | @ | 185.199.108.153 |
| A | @ | 185.199.109.153 |
| A | @ | 185.199.110.153 |
| A | @ | 185.199.111.153 |
| CNAME | www | genz-economics.github.io |
DNS propagation is usually minutes, sometimes up to a few hours.
Back in GitHub, once DNS resolves, check “Enforce HTTPS”. GitHub provisions a Let’s Encrypt cert automatically.
5. Import the actual note content
The _posts/ folder currently has stub posts (correct titles and front matter, placeholder bodies). To replace with real content from the Word docs:
# At the repo root
mkdir source-docs
# Copy all 8 .docx files into source-docs/ (drag-drop works)
bash scripts/import-docs.sh
The script preserves the front matter already in each stub and replaces the body with the pandoc-converted content. Images get extracted into assets/images/<slug>/ automatically.
After running it:
git add -A
git commit -m "Import: session notes and images"
git push
Site rebuilds. Done.
6. Protect main (optional but recommended)
Repo → Settings → Branches → Add rule for main:
- ☑ Require a pull request before merging
- ☑ Require approvals (1 is fine)
- ☑ Require review from Code Owners
- ☑ Dismiss stale approvals on new commits
This enforces the PR flow that makes the “moderated by students” story real.
7. Invite moderators
- Update
MODERATORS.md— PR to add yourself. - Update
.github/CODEOWNERS— add their GitHub handles. - Repo → Settings → Collaborators & teams → Invite with “Write” access.
Iterating
- Every merged PR to
maintriggers a rebuild automatically. No action needed. - To preview locally before pushing:
bundle install bundle exec jekyll serve --livereload # http://localhost:4000 - If a build ever fails, the “Actions” tab shows the error log.
What’s NOT here yet (on purpose)
- Comments. GitHub Issues is the comment system. If you want inline commenting, look at giscus or utterances — both use GitHub Issues as backing store, no database needed.
- Search. If the corpus gets big, add Lunr (client-side, zero infra).
- Newsletter. Buttondown or Substack, feeding off the RSS feed (
/feed.xml). - Audio/video. Separate decision — YouTube unlisted for recordings would be the MVP path.
Keep shipping. The site will get better the moment someone other than you sends a PR.