getonup 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +148 -0
- package/dist/index.js +15173 -0
- package/package.json +40 -0
package/README.md
ADDED
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
<div align="center">
|
|
2
|
+
|
|
3
|
+
# ✨ getonup
|
|
4
|
+
|
|
5
|
+
**Your AI artifact, live in seconds.**
|
|
6
|
+
|
|
7
|
+
Turn any AI-generated web artifact — an HTML file, a React/Vue component, or a built static
|
|
8
|
+
folder — into a **live, shareable URL** with one command. Open-source, self-hosted, scale-to-zero.
|
|
9
|
+
|
|
10
|
+
```bash
|
|
11
|
+
getonup deploy counter.tsx
|
|
12
|
+
✓ live → https://getonup.example.com/s/iwcmg3dt
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
[](./LICENSE)
|
|
16
|
+
· one Worker + R2 · scale-to-zero · agent-native
|
|
17
|
+
|
|
18
|
+
<br/>
|
|
19
|
+
|
|
20
|
+
<img src="docs/landings/midnight.png" alt="getonup landing page" width="760" />
|
|
21
|
+
|
|
22
|
+
</div>
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## Why
|
|
27
|
+
|
|
28
|
+
AI assistants generate gorgeous little apps — but they're trapped in a chat window. getonup
|
|
29
|
+
publishes them to a real URL from the command line, on infrastructure you own:
|
|
30
|
+
|
|
31
|
+
- **One command** — `getonup deploy app.tsx` prints a live URL. No build step, no boilerplate.
|
|
32
|
+
- **Agent-native** — drop a snippet in `AGENTS.md` and any coding agent can publish its own work.
|
|
33
|
+
- **Auto-wrap** — hand it a bare `.tsx`/`.vue`/`.js` and it becomes a self-contained, runnable
|
|
34
|
+
page (React 18 + Babel + Tailwind, Vue 3). HTML files and static folders are served as-is.
|
|
35
|
+
- **Self-hosted & scale-to-zero** — one Cloudflare Worker + an R2 bucket, ~$0 when idle. MIT.
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
## Run it locally (no Cloudflare account)
|
|
40
|
+
|
|
41
|
+
`npm run dev` runs the whole server on your machine via Wrangler's local
|
|
42
|
+
[miniflare](https://developers.cloudflare.com/workers/testing/miniflare/) storage — **no Cloudflare
|
|
43
|
+
account, no login, no bucket.** The fastest way to try it:
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
git clone https://github.com/YOUR_USERNAME/getonup.git && cd getonup
|
|
47
|
+
npm install
|
|
48
|
+
npm run setup # builds + links the getonup CLI, writes a local deploy token, prints the next step
|
|
49
|
+
npm run dev # serves at http://localhost:8787 (Ctrl-C to stop)
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
`npm run setup` prints a ready-to-run `getonup login` line with your generated token. In a second
|
|
53
|
+
terminal:
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
getonup login --url http://localhost:8787 --token <token-from-setup>
|
|
57
|
+
getonup deploy examples/counter.tsx # auto-wrapped React → http://localhost:8787/s/<id>
|
|
58
|
+
getonup serve examples/counter.tsx # …or just preview it — no server, no token
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
Ready for a public URL? See **[Self-hosting on Cloudflare »](docs/SELF-HOSTING.md)**.
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
## Using the CLI
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
getonup deploy index.html # a full HTML file → served as-is
|
|
69
|
+
getonup deploy counter.tsx --open # a React component → auto-wrapped & opened in your browser
|
|
70
|
+
getonup deploy card.vue # a Vue SFC → auto-wrapped
|
|
71
|
+
cat art.html | getonup deploy - # pipe from stdin
|
|
72
|
+
getonup deploy ./dist # a built static site (folder with index.html)
|
|
73
|
+
|
|
74
|
+
getonup list # everything you've published
|
|
75
|
+
getonup rm <id> # take one down
|
|
76
|
+
getonup serve app.tsx --watch # local preview with live-reload (no deploy, no token)
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
`deploy` prints the live URL as the last stdout line — `--json` for structured output, `--quiet`
|
|
80
|
+
for just the URL. Full command + flag reference: **[docs/CLI.md](docs/CLI.md)**.
|
|
81
|
+
|
|
82
|
+
### What you can deploy
|
|
83
|
+
|
|
84
|
+
| You give it | getonup does |
|
|
85
|
+
|---|---|
|
|
86
|
+
| `.html` (full document) | serves it verbatim |
|
|
87
|
+
| `.html` (fragment) | wraps it in a minimal styled page |
|
|
88
|
+
| `.jsx` / `.tsx` | React 18 + Babel + esm.sh import map + Tailwind; mounts your default export |
|
|
89
|
+
| `.vue` | Vue 3 + `vue3-sfc-loader` |
|
|
90
|
+
| `.js` / `.ts` | a module shell, transpiled, with an esm.sh import map for bare imports |
|
|
91
|
+
| a directory | uploads the folder as a static site (must contain `index.html`) |
|
|
92
|
+
|
|
93
|
+
`import`s for npm packages (`lucide-react`, `recharts`, …) resolve at runtime via
|
|
94
|
+
[esm.sh](https://esm.sh) — no bundler. `--no-wrap` hosts raw source, `--type` overrides detection,
|
|
95
|
+
`--no-tailwind` skips the Tailwind CDN.
|
|
96
|
+
|
|
97
|
+
> **Static & client-side only.** Wrapped pages load their dependencies from CDNs at runtime; there's
|
|
98
|
+
> no server-side code (that's what keeps it scale-to-zero). Details + air-gapped notes in
|
|
99
|
+
> [Self-hosting › Limitations](docs/SELF-HOSTING.md#limitations).
|
|
100
|
+
|
|
101
|
+
---
|
|
102
|
+
|
|
103
|
+
## Give it to your agent
|
|
104
|
+
|
|
105
|
+
The point of getonup: your coding agent publishes its own work. Add this to your project's
|
|
106
|
+
`AGENTS.md` (or `CLAUDE.md`, `.cursorrules`, …):
|
|
107
|
+
|
|
108
|
+
```markdown
|
|
109
|
+
## Publishing artifacts
|
|
110
|
+
To share a web artifact (HTML page, React/Vue component, or built static site) as a live URL,
|
|
111
|
+
run: `getonup deploy <file-or-dir>` and give the user the printed URL.
|
|
112
|
+
- Single components are auto-wrapped (React/Vue/Tailwind) — just point at the .tsx/.vue/.html.
|
|
113
|
+
- Use `--json` to parse the result.
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
A ready-to-copy block is in [`AGENTS.md`](./AGENTS.md), and there's a Claude Code skill in
|
|
117
|
+
[`skills/getonup`](./skills/getonup).
|
|
118
|
+
|
|
119
|
+
**…or as an MCP server:** `getonup mcp` exposes `deploy_artifact`, `list_deploys`, and `remove_deploy`
|
|
120
|
+
over stdio to any MCP-aware agent:
|
|
121
|
+
|
|
122
|
+
```json
|
|
123
|
+
{ "mcpServers": { "getonup": { "command": "getonup", "args": ["mcp"],
|
|
124
|
+
"env": { "GETONUP_URL": "https://your-getonup.example", "GETONUP_TOKEN": "your-token" } } } }
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
---
|
|
128
|
+
|
|
129
|
+
## The `getonup` command
|
|
130
|
+
|
|
131
|
+
`getonup` is the CLI. Config lives in `~/.config/getonup/config.json`, or pass `GETONUP_URL` /
|
|
132
|
+
`GETONUP_TOKEN` env vars (handy for CI and agents). From the repo without installing:
|
|
133
|
+
`npm run getonup -- <args>`.
|
|
134
|
+
|
|
135
|
+
---
|
|
136
|
+
|
|
137
|
+
## More
|
|
138
|
+
|
|
139
|
+
- **[Self-hosting on Cloudflare »](docs/SELF-HOSTING.md)** — deploy to a public URL; configure,
|
|
140
|
+
secure, and harden your instance; plus hosting alternatives (GitHub Pages, Datasette Apps).
|
|
141
|
+
- **[CLI reference »](docs/CLI.md)** — every command and flag.
|
|
142
|
+
- **[Architecture & design »](PLAN.md)** — how the CLI and Worker fit together.
|
|
143
|
+
- **[Landing designs »](LANDINGS.md)** — fifteen demo landing pages, all deployed through getonup.
|
|
144
|
+
- **[Contributing »](CONTRIBUTING.md)** — dev setup and project layout.
|
|
145
|
+
|
|
146
|
+
## License
|
|
147
|
+
|
|
148
|
+
[MIT](./LICENSE) — getonup contributors.
|