Run the TwinStack site from your browser
Copy twinstack-site into your GitHub account, then add pages, edit them with Claude, preview the result and publish it. No terminal needed.
How it works
Get access
- Create an account with your name, email and a password of at least 8 characters, or log in if you already have one.
- Connect GitHub from the dashboard. GitHub asks you to approve four permissions: read your profile, read your email address, access your repositories (public and private, read and write) and update GitHub Actions workflows. The app needs repository access to list, copy and push your repositories. It needs the workflow permission because the site includes a deploy workflow, and GitHub refuses pushes that contain workflow files without it. The connection stays with your account, so you only do this once. You can disconnect it from the dashboard at any time.
- Check that you can use the site manager. Opening a site runs its build scripts on the server, so it's limited to approved GitHub accounts. If you see “Site management isn't enabled for your account”, ask the administrator to add the GitHub username you connected.
- Add your Anthropic API key on the dashboard if you want to use Claude (Edit with Claude and scheduled pages). The key is checked with Anthropic, then stored encrypted on the server for your account. Usage is billed to your Anthropic account, and you can remove the key any time. Everything else works without a key.
Repositories that belong to an organisation only appear if the organisation allows this app, under Settings → Third-party access.
Copy the site to your account
- Open the dashboard and find
twinstack-site. Use the filter box and the Private / Public / All switch. - Click Duplicate, choose a name for your copy and whether it's private, then click Create & push.
- The new repository is created in your account with every branch, tag and commit. Once it's done, it's added to your list.
Issues, pull requests, wikis, repository settings and Git LFS files aren't copied. If copying fails partway, try again with the same name: the empty repository that was left behind is reused. The template itself can't be managed. Your changes always go into your own copy.
Work on your site
Click Manage site next to your copy. The first time, the server clones the repository and installs its dependencies, which takes about a minute. After that, opening the site fetches the latest from GitHub. Work you haven't published yet is kept, even if you close the page.
| Tab | What you can do | Same as |
|---|---|---|
| Build & preview | Build the site and check it for broken links, or build a preview that includes drafts. | npm run check |
| Pages | Create a page, product, service, blog post or case study, and see every page in the site. | npm run new |
| Navigation | Add or remove header links, including menus that list a collection automatically. | nav:add, nav:remove |
| Edit with Claude | Change one file from a plain-English instruction, or queue several edits. Preview first. | page:edit |
| Site tree | Edit the list of pages the site should have, then create the ones that are missing. | scaffold |
| Schedule | Plan pages for a date: Claude writes them from your brief, or a finished file is moved into place. | scaffold:schedule |
| Changes | See every changed file, discard what you don't want, and publish the rest. | git |
One command runs at a time. Its output appears in the Output panel, where you can also cancel it. Claude edits have a Preview button that shows the proposed file without writing it.
Publish your changes
- Open the Changes tab. Expand a file to see its diff, or select files and discard them.
- Write a commit message and choose how to publish:
- New branch and pull request (recommended). Your changes go to a new branch, named
twinstack/<date>-<time>unless you pick a name, and a pull request is opened into the default branch. Review and merge it on GitHub. Later commits on that branch update the same pull request. - Push directly to the current branch. This skips review. If the site's deploy workflow builds from that branch, the live site changes straight away.
- New branch and pull request (recommended). Your changes go to a new branch, named
- When the pull request is merged, click Start a new change to go back to the default branch. If GitHub has newer commits, click Update to latest. Both are available once there are no unpublished changes.
Troubleshooting
- It says my GitHub access has expired, or asks me to reconnect GitHub
- Click Reconnect GitHub. GitHub access can expire, and an older connection may lack a permission the app now needs. Your account and Anthropic key are kept.
- A repository I expect is missing from the dashboard
- Check the Private / Public / All filter. For an organisation's repository, the organisation has to allow this app under Settings → Third-party access. You can request that from your GitHub application settings.
- “Site management isn't enabled for your account”
- Opening a site runs its build scripts on the server, so only approved GitHub accounts can use the site manager. Ask the administrator to add the GitHub username you connected.
- “This isn't a TwinStack site repository”
- The site manager only opens copies of the template that have site.config.json and scripts/build.js on the default branch. Duplicate the template and manage the copy.
- “The workspace is busy”
- Only one command runs at a time. Watch the Output panel. You can cancel the running command there.
- The Claude buttons are disabled
- Add your Anthropic API key on the dashboard. The previews for scheduled pages work without one.
- Publishing failed
- Your commit is kept in the workspace. Fix the cause shown, then press Push on the Changes tab to try again.