Homepage and resource hub for Lanie Carmelo: Christian, accessibility tester, neurodivergent programmer, and disability advocate. This site documents my access needs, technical workflows, personal essays, faith reflections, and advocacy work.
- Accessible design: Built with low cognitive load, keyboard navigation, and screen reader usability in mind.
- Static site: Built with Hugo for fast, reliable static publishing.
- Automated deployment: Deployed through GitHub Actions and Cloudflare Pages.
- Social publishing helper: Python helper scripts can queue new posts to Buffer-connected social channels.
- Contact form: A Cloudflare Worker handles contact form submissions with Turnstile spam protection.
To add a new essay or article:
- Create a new Markdown file in the appropriate Hugo content folder.
- Add TOML front matter.
- Write the post content below the front matter.
- Build and preview locally.
- Commit and push.
Example post front matter:
+++
title = "Your Article Title"
date = 2026-05-21
description = "A short description for summaries and previews."
draft = false
tags = ["accessibility", "technology"]
categories = ["Technology"]
+++# Clone the repository
git clone https://github.com/RareBird15/lanie.work.git
cd lanie.work
# Install Python helper dependencies
uv sync
# Start Hugo's local development server
hugo serverVisit the local URL printed by Hugo to view the site.
hugoThis generates the static site in:
public/
This repository includes Python helper scripts for Buffer-based social publishing.
The main publish script reads the generated Hugo RSS feed, finds the latest post, queues it to Buffer, and records what has already been queued so rebuilds do not repeatedly queue the same post.
Required environment variables:
BUFFER_API_KEY=your_buffer_api_key
BUFFER_CHANNEL_IDS=comma,separated,buffer,channel,ids
BUFFER_FACEBOOK_CHANNEL_IDS=comma,separated,facebook,channel,idsUseful scripts:
# List Buffer organizations and channels
uv run ./scripts/get_buffer_org_ids.py
# Queue a harmless test post
uv run ./scripts/test_buffer_post.py
# Queue the latest generated RSS post to Buffer
uv run ./scripts/publish_latest_to_buffer.pyBefore running the publish script, build the site so the RSS feed exists:
hugo
uv run ./scripts/publish_latest_to_buffer.pyThe publish state is stored in:
data/buffer-published.json
lanie.work/
├── content/ # Hugo content files
├── data/ # Data files, including Buffer publish state
├── layouts/ # Hugo layout overrides, if any
├── public/ # Generated site output
├── scripts/ # Python helper scripts
├── static/ # Static assets
├── themes/ # Hugo theme files or modules, if used
├── workers/ # Cloudflare Worker code
├── .github/
│ └── workflows/ # CI/CD workflows
├── pyproject.toml # Python helper dependencies
├── requirements.txt # Compiled Python requirements, if needed
└── README.md # Project overview
- Use ATX-style headers (
#syntax) for logical screen reader navigation. - Do not skip heading levels.
- Keep paragraphs short and scannable.
- Always include descriptive
alttext for images. - Specify a language for fenced code blocks, such as
bash,python,toml, ortext. - Use descriptive link text. Avoid vague links like “click here” or “read more.”
- Text over audio: Provide persistent text for all critical information.
- Low cognitive load: Use clear structure, short sections, and plain language where possible.
- Keyboard-first: Pages and interactive elements should work without a mouse.
- No spatial reliance: Avoid instructions that depend on visual placement, color alone, or layout alone.
Contributions are welcome, especially improvements to accessibility, semantic structure, documentation, and workflow automation.
Please read CONTRIBUTING.md before submitting changes.
- Website: lanie.work
- Mastodon: @RareBird15@allovertheplace.ca
- GitHub: RareBird15
- LinkedIn: laniecarmelo
- Code::Stats: RareBird15
Built with Hugo, hosted on Cloudflare Pages, and supported by small Python helper scripts managed with uv.