DBDelve
Dive deep into your data. A fast, native, multi-engine database client written in Rust. Free and open source, no telemetry.
翻訳待ち
No updates detected yet. GitHub releases will appear here.
A publishing platform that costs nothing when nobody is reading. Static sites on S3 + CloudFront, with a template system, client-side search, and an editor that scales to zero.
翻訳待ち
Loading the full README.
Read the full README ↗A publishing platform that costs nothing when nobody is reading.
Pages are rendered once, when you save them, and served as files from object storage behind a CDN. There is no server on the read path, no database, and no runtime for anyone to exploit. A page costs the same whether one person reads it or a hundred thousand do. The editor is a Lambda that wakes when you open it and goes back to sleep when you close the tab.
Two ways to use it:
Same codebase. The difference is one field on a site record, which is deliberate: the moment the self-hosted version becomes a demo of the hosted one, it stops being worth running.
Not built: comments, search-as-you-type against a server, or anything else that needs to think while a reader waits. If your site needs to run code for every visitor, this is the wrong tool.
You need Node 18+, the AWS CLI, curl, a domain in Route 53 (or one you can
repoint there), and an AWS account. Everything is a script; there is no IaC tool
to learn.
git clone https://github.com/bissellator/quickieweb.git
cd quickieweb
cp config.example.json config.json
npm run fetch-editor
config.json is gitignored — it will hold your bucket names, distribution ids
and certificate ARN, and publishing that hands a stranger a map of your
infrastructure. fetch-editor vendors CKEditor into admin/ui/; it is not
committed because this project is Apache-2.0 and CKEditor is GPL. See NOTICE.
Fill in config.json. Every script refuses to run against a REPLACE-ME.
node infra/create-deploy-user.mjs --admin-profile <your-admin-profile>
export AWS_PROFILE=quickieweb
This is not optional politeness. A deploy script running on a root or full-admin
key means "the script had a bug" and "the key leaked" both resolve to total
account compromise. The policy in infra/iam/deploy-user-policy.json scopes the
new key to your quickieweb-* buckets, qw-* functions and qw-* roles, and
the secret is written straight into ~/.aws/credentials without ever being
printed. Its residual weakness is documented at the top of the script rather than
glossed over.
node infra/provision-platform.mjs # template library + account registry
node infra/provision.mjs # buckets, certificate, distribution, DNS, OAC
The one step that cannot be scripted — it lives in the Google Cloud console. A personal Google account is fine; you do not need Workspace or a billing account.
Quickieweb asks only for openid email profile, so publishing the app to
production needs no verification review.
node infra/deploy-lambda.mjs --client-id <id>.apps.googleusercontent.com
node infra/wire-cloudfront.mjs
node infra/deploy-admin-ui.mjs
node infra/seed-platform-admin.mjs --email [email protected] # makes you staff
node infra/enable-logging.mjs # access logs, for stats
node infra/fetch-geodb.mjs # IP-to-city, monthly
Then sign in and create your first site.
The console is not the only way in. You can author locally and push:
node cli/build.mjs # content/*.json -> site/
node cli/deploy.mjs --dry-run
node cli/deploy.mjs
deploy.mjs never deletes. The repository and the console are two authors of the
same bucket and only one of them writes back, so a mirroring sync would take down
posts written in the console. Pruning is opt-in behind --prune, and
--dry-run --prune shows you what it would take first.
This is the beginning of the README. Read the rest at the original. Read the full README ↗