Static hosting platform on top of GitHub Pages:
- Users log in at
https://pages.houselearning.org - Each user can create up to 5 sites
- Site files are stored in Firestore
- "Deploy" triggers a GitHub Action via
repository_dispatch - GitHub Action writes files into this repo and GitHub Pages serves them
Deployed sites live under:
https://pages.houselearning.org/sites/{uid}/{siteId}/
You can later add a nicer alias layer like:
https://pages.houselearning.org/{username}/{siteSlug}/
- Clone this repo into GitHub (e.g.
HouseLearning/pages-hosting). - Enable GitHub Pages:
- Source:
mainbranch - Folder:
/ (root)or/publicdepending on how you host
- Source:
- Firebase:
- Create a Firebase project
- Enable Email/Password or other providers
- Create Firestore in production mode
- Copy your config into
public/js/firebase-init.js
- GitHub Secrets:
PAGES_PAT: Personal Access Token withreposcopePAGES_REPO:owner/repo(e.g.HouseLearning/pages-hosting)PAGES_BRANCH: usuallymain
- Deploy:
- Push to GitHub
- Visit
https://<your-gh-pages-domain>(or custom domainpages.houselearning.org)
users/{uid}:emaildisplayNamesiteCount
sites/{uid}_{siteId}:uidsiteIdnameslugcreatedAtupdatedAtlastDeployedAt
siteFiles/{uid}_{siteId}:files: array of{ path, content, contentType }- (or you can normalize into subcollections if you prefer)
You can adapt this to your existing Blob system.
- User logs in.
- User creates a site (up to 5).
- User uploads files (HTML/CSS/JS).
- User clicks "Deploy".
- Frontend calls GitHub REST API
repository_dispatchwith payload:uid,siteId,files[]
- GitHub Action:
- Writes files into
/sites/{uid}/{siteId}/ - Commits and pushes
- GitHub Pages serves them.
- Writes files into