Portfolio server for bniladridas: Traction and Palmshed Sandbox.
Live site: https://bniladridas.github.io/
pip install bniladridas-portfolioportfolio serve
portfolio serve --port 8000 --open
python -m bniladridas_portfolio.cli serve --host 127.0.0.1 --port 8000Serves the same static site that GitHub Pages serves.
The About section at content/about.json is editable from the site via Decap CMS at https://bniladridas.github.io/admin/ (GitHub login required, admin only). Edits are saved as Git commits to main.
index.html,script.js,styles.css: static portfolio sourcecontent/about.json: editable About contentadmin/: Decap CMS interface and configuration (admin/config.yml)assets/: site assets (og-image.png,thumbnail.png)src/bniladridas_portfolio/: Python package and CLI (portfolio serve)tests/e2e/: browser and site regression tests.github/workflows/pages.yml: GitHub Pages deploymentverify-human.py: human-feel and site quality checks
The repository root is intentionally both the project root and the GitHub Pages source.
For serving the portfolio locally, see the commands in the Use section above.
npm run test:e2e
python3 verify-human.pyportfolio serve serves the repository root. npm run test:e2e runs the jsdom E2E suite. verify-human.py checks human-feel, visual noise, and live asset reachability.
Pushes to main trigger the GitHub Pages workflow. The repository root is deployed directly. See .github/workflows/README.md for the detailed pipeline.
pyproject.toml packages the static site into the Python wheel via force-include, mapping index.html, styles.css, script.js, og-image.png, assets, content, and admin into bniladridas_portfolio/static/. GitHub Pages serves the repository root directly; the wheel is built separately.
About content lives in content/about.json and is loaded by the site. /admin/ is the CMS entry point. GitHub OAuth authentication for Decap is configured via the standalone Cloudflare Worker proxy (see admin/config.yml).
This repository's architecture, security decisions, debugging history, and SDK roadmap are documented in the public project journey Gist.