Repository navigation
Strip the site down to a blog with an /admin writing flow; move Tides to BTO - #5
Merged
Merged
Conversation
- FastAPI + Jinja renders plain HTML from markdown in S3 (local ./content in dev) - /admin: markdown editor with htmx live preview, drafts, publish/unpublish, image uploads; behind oauth2-proxy (GitHub) in Traefik, with the app re-checking the forwarded username and blocking cross-site POSTs - Blog, projects (GitHub link + screenshots), and digests; one stylesheet, no frontend build, no widgets - Tides moved to its own repo; compose routes /tides to it behind a profile - EC2 role can now write to the content bucket
The dashboard lives in github.com/Sean-Michael/BTO; the compose service and README now reference it instead of a separate tides repo. The image default no longer fails compose interpolation while the tides profile is off.
- urllib3 2.7.0 -> 2.8.0 (PYSEC-2026-4175/4176/4177), floor raised in pyproject so it can't regress. - Terraform workflow: the upstream tfsec install script now installs into /usr/local/bin itself, so the follow-up `mv ./tfsec` failed. Download the pinned v1.28.14 release and verify its checksum instead of piping the master-branch script to bash.
Contributor
|
tfsec checkov |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The site had grown into widgets, carousels, a React/Vite bundle, and a mount-S3 CLI to write posts. This strips it back to plain HTML + one stylesheet and makes writing a browser task: sign in, write, preview, publish.
What changed
Writing (
/admin)images/<kind>/<slug>/, served back via/images/.... Projects get GitHub/live links, tech stack, and a screenshot gallery.blog/posts/,projects/published/,digests/), with drafts in siblingdrafts/prefixes. No migration, and the digest automation keeps writing todigests/. Unknown frontmatter keys are preserved on edit.Auth
/admin(both hosts) through oauth2-proxy (GitHub login, allowlisted users) via forwardAuth.X-Auth-Request-Userand blocks cross-site POSTs; public routes strip that header so it can't be spoofed.Public site
/blog/feed.xml), Projects, Digest, About (existing prose, unchanged), Arete support/privacy pages kept at their URLs, sitemap/robots.Removed / moved
tidesservice behind a profile, routed at/tidesand/api/tides.Infra / CI
infrastructure/: EC2 role can nowPutObject/DeleteObjecton the content bucket (versioning already on).docker-compose.yaml: oauth2-proxy service, admin router, header-stripping middleware, tides profile.frontend/**paths.Testing
/admin403 without the forwarded user.Before merging (merging deploys)
terraform applyininfrastructure/so/adminsaves can write to S3.https://sean-michael.dev/oauth2/callback) and add to/opt/app/.env:OAUTH2_PROXY_CLIENT_ID,OAUTH2_PROXY_CLIENT_SECRET,OAUTH2_PROXY_COOKIE_SECRET,ADMIN_GITHUB_USERS./tides: merge Port newer dashboard from sean-michael.dev; serve under /tides; push to Docker Hub BTO#2, add its Docker Hub secrets, then setCOMPOSE_PROFILES=tidesandTIDES_IMAGE=<dockerhub user>/bto:latestin/opt/app/.env. Until then/tides404s.The public site works without steps 2–3;
/adminwon't until step 2 is done.🤖 Generated with Claude Code