Long-form faith writeups — scripture, doubt, culture, and the God who draws in curves.
This is a plain static site (HTML/CSS/vanilla JS, no build tools required to run it) with a small Python generator that turns Markdown essays into the styled pages. It's built to be hosted for free on GitHub Pages.
Tech stack: Python 3 static-site generator (markdown package) → static HTML/CSS/vanilla JS output. 28 long-form essays, client-side search/filter on library.html, no server, no database, no npm.
Live at: https://babatundeawo.github.io/deep-calls/
Deployed via GitHub Pages, Settings → Pages → Source: "Deploy from a branch",
branch main, folder / (root). No build step runs on GitHub — the HTML in this
repo is already the final generated output, committed directly.
scripts/generate_site.py has SITE_URL set to the live URL above, so social-share
links and the sitemap already point to the right place. If you ever fork this to a
different URL, update SITE_URL at the top of that file and re-run the generator
(see step 3 below).
index.html ← homepage (generated)
404.html ← not-found page (generated)
sitemap.xml ← generated
robots.txt ← generated
writeups/*.html ← one page per essay (generated)
assets/css/style.css ← all styling — hand-written, safe to edit directly
assets/js/*.js ← search/filter + interactivity — hand-written, safe to edit
assets/img/ ← favicon etc.
content/*.md ← the SOURCE of every essay — edit these, not the HTML
data/writeups.json ← generated metadata (title, excerpt, category, reading time…)
scripts/ ← the two-step generator described below
Rule of thumb: anything inside writeups/, index.html, 404.html, sitemap.xml, robots.txt, and data/writeups.json is generated. Don't hand-edit it — your changes will be overwritten the next time you run the generator. Edit the Markdown in content/, or the CSS/JS in assets/, instead.
-
Drop a new
.mdfile intocontent/. Format it like the existing ones:# Your Title Here --- > *"A scripture quote."* > — Book Chapter:Verse (Translation) --- ## Your First Subheading Body text starts here...
-
Open
scripts/build_data.pyand add one line to theCATEGORYdictionary near the top, mapping your new file's name (without.md) to one of the existing categories ("Grace & Identity","Hard Questions","Sovereignty","Church & Culture","Spiritual Warfare","Wisdom") — or invent a new category name and it'll show up automatically as a new filter chip. -
Regenerate the site:
cd scripts python3 build_data.py # re-parses everything in content/ into data/writeups.json python3 generate_site.py # rebuilds index.html, writeups/*.html, sitemap.xml, etc.
(Needs Python 3 with the
markdownpackage:pip install markdown.) -
Commit and push. GitHub Pages updates automatically within a minute or two.
That's the whole workflow — no npm, no framework, no build server.
- Palette: a reading room by daylight — warm paper background (
#f7f2e6), deep ink text (#211c2b), candlelight gold accents (#8a6a1a/#dba934), with a faint wine red for warmth. Custom properties live at the top ofassets/css/style.css. - Type: Fraunces (display headlines) + Literata (long-form reading body) + Inter (UI chrome), loaded from Google Fonts.
- Signature motif: every section divider is a gently curved hand-drawn line rather than a straight hairline rule — a nod to the essay "The God Who Draws in Curves," about providence rarely taking the straight path.
- Mobile-first throughout; the grid scales from 1 → 2 → 3 columns as the viewport grows.
- Respects
prefers-reduced-motion; all interactive elements have visible keyboard focus states.
No server is strictly required — you can open index.html directly in a browser. For paths to behave exactly like production (and to avoid any browser file:// quirks), you can also run a tiny local server from the repo root:
python3 -m http.server 8000
# then visit http://localhost:8000