nivii 0.3.1 → 0.3.3

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.
Files changed (57) hide show
  1. package/README.md +142 -215
  2. package/dist/cli.js +48 -1
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/fullstack.d.ts +12 -0
  5. package/dist/commands/fullstack.d.ts.map +1 -0
  6. package/dist/commands/fullstack.js +173 -0
  7. package/dist/commands/fullstack.js.map +1 -0
  8. package/dist/commands/pro.d.ts +2 -0
  9. package/dist/commands/pro.d.ts.map +1 -0
  10. package/dist/commands/pro.js +174 -0
  11. package/dist/commands/pro.js.map +1 -0
  12. package/dist/commands/share.d.ts.map +1 -1
  13. package/dist/commands/share.js +5 -4
  14. package/dist/commands/share.js.map +1 -1
  15. package/dist/core/backend.d.ts +26 -0
  16. package/dist/core/backend.d.ts.map +1 -0
  17. package/dist/core/backend.js +185 -0
  18. package/dist/core/backend.js.map +1 -0
  19. package/dist/core/env.d.ts +27 -0
  20. package/dist/core/env.d.ts.map +1 -0
  21. package/dist/core/env.js +164 -0
  22. package/dist/core/env.js.map +1 -0
  23. package/dist/core/fullstack.d.ts +29 -0
  24. package/dist/core/fullstack.d.ts.map +1 -0
  25. package/dist/core/fullstack.js +126 -0
  26. package/dist/core/fullstack.js.map +1 -0
  27. package/dist/core/upload.d.ts +2 -1
  28. package/dist/core/upload.d.ts.map +1 -1
  29. package/dist/core/upload.js +2 -0
  30. package/dist/core/upload.js.map +1 -1
  31. package/dist/ui/spinner.d.ts +1 -0
  32. package/dist/ui/spinner.d.ts.map +1 -1
  33. package/dist/ui/spinner.js +3 -0
  34. package/dist/ui/spinner.js.map +1 -1
  35. package/dist/ui/welcome.d.ts.map +1 -1
  36. package/dist/ui/welcome.js +6 -3
  37. package/dist/ui/welcome.js.map +1 -1
  38. package/dist/utils/config.d.ts +3 -0
  39. package/dist/utils/config.d.ts.map +1 -1
  40. package/dist/utils/config.js.map +1 -1
  41. package/package.json +9 -4
  42. package/src/cli.ts +0 -118
  43. package/src/commands/config.ts +0 -33
  44. package/src/commands/share.ts +0 -159
  45. package/src/commands/whoami.ts +0 -16
  46. package/src/core/analytics.ts +0 -64
  47. package/src/core/build.ts +0 -46
  48. package/src/core/detect.ts +0 -159
  49. package/src/core/qr.ts +0 -30
  50. package/src/core/tunnel.ts +0 -70
  51. package/src/core/upload.ts +0 -95
  52. package/src/ui/spinner.ts +0 -36
  53. package/src/ui/theme.ts +0 -35
  54. package/src/ui/welcome.ts +0 -104
  55. package/src/utils/config.ts +0 -47
  56. package/src/utils/hash.ts +0 -11
  57. package/src/utils/zip.ts +0 -22
package/README.md CHANGED
@@ -1,24 +1,6 @@
1
- ```
2
- ███╗ ██╗██╗██╗ ██╗██╗██╗
3
- ████╗ ██║██║██║ ██║██║██║
4
- ██╔██╗ ██║██║██║ ██║██║██║
5
- ██║╚██╗██║██║╚██╗ ██╔╝██║██║
6
- ██║ ╚████║██║ ╚████╔╝ ██║██║
7
- ╚═╝ ╚═══╝╚═╝ ╚═══╝ ╚═╝╚═╝
8
- ```
9
-
10
- <div align="center">
11
-
12
- [![npm version](https://img.shields.io/npm/v/nivii?color=7C3AED&label=npm&logo=npm&style=for-the-badge)](https://www.npmjs.com/package/nivii)
13
- [![License: AGPL-3.0](https://img.shields.io/badge/License-AGPL--3.0-7C3AED?style=for-the-badge)](https://github.com/Aadigarg111/Nivi-sh/blob/main/LICENSE)
14
- [![Made with ❤️](https://img.shields.io/badge/Made_with-❤️-EF4444?style=for-the-badge)](#)
15
- [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-10B981?style=for-the-badge)](https://github.com/Aadigarg111/Nivi-sh/pulls)
1
+ ███╗ ██╗██╗██╗ ██╗██╗██╗ ████╗ ██║██║██║ ██║██║██║ ██╔██╗ ██║██║██║ ██║██║██║ ██║╚██╗██║██║╚██╗ ██╔╝██║██║ ██║ ╚████║██║ ╚████╔╝ ██║██║ ╚═╝ ╚═══╝╚═╝ ╚═══╝ ╚═╝╚═╝
16
2
 
17
- **⚡ The fastest, most beautiful way to share any local dev project. No accounts. No config. Just share.**
18
-
19
- [Website](https://nivii.app) · [npm](https://www.npmjs.com/package/nivii) · [Issues](https://github.com/Aadigarg111/Nivi-sh/issues)
20
-
21
- </div>
3
+ <div align="center"> [![npm version](https://img.shields.io/npm/v/nivii?color=7C3AED&label=npm&logo=npm&style=for-the-badge)](https://www.npmjs.com/package/nivii) [![License: AGPL-3.0](https://img.shields.io/badge/License-AGPL--3.0-7C3AED?style=for-the-badge)](https://github.com/Aadigarg111/Nivi-sh/blob/main/LICENSE) [![Made with ❤️](https://img.shields.io/badge/Made_with-❤️-EF4444?style=for-the-badge)](#) [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-10B981?style=for-the-badge)](https://github.com/Aadigarg111/Nivi-sh/pulls) ⚡️ The fastest, most beautiful way to share any local dev project. No accounts. No config. Just share. [Website](https://nivii.app) · [npm](https://www.npmjs.com/package/nivii) · [Issues](https://github.com/Aadigarg111/Nivi-sh/issues) </div>
22
4
 
23
5
  ---
24
6
 
@@ -26,12 +8,8 @@
26
8
 
27
9
  ```bash
28
10
  npm i -g nivii
29
- ```
30
-
31
- ```bash
32
11
  # or with pnpm
33
12
  pnpm add -g nivii
34
-
35
13
  # or with bun
36
14
  bun add -g nivii
37
15
  ```
@@ -48,33 +26,28 @@ cd ~/my-awesome-project
48
26
  nivii share
49
27
  ```
50
28
 
51
- **Example output:**
29
+ Example output:
52
30
 
53
31
  ```
54
- NIVII v0.1.0
55
-
56
- 🔍 Detecting project type… ~/my-awesome-project
57
- Detected Next.js (99% confidence)
58
- ✓ Build complete (nextjs)
59
- 📦 Compressing project…
60
- ✓ Deployed to edge (xk9m2pqr)
61
-
62
- ╭─────────────────────────────────────────────────╮
63
- │ │
64
- 🚀 Your project is live!
65
-
66
- URL: https://xk9m2pqr.nivii.app
67
- │ Expires: in 48 hours │
68
- │ │
69
- ╰─────────────────────────────────────────────────╯
70
-
71
- ✓ URL copied to clipboard
72
-
73
- ┌─────────────────────────────────┐
74
- │ Scan to open on mobile │
75
- └─────────────────────────────────┘
76
-
77
- [QR CODE HERE]
32
+ ⚡️ NIVII v0.1.0
33
+ 🔍 Detecting project type… ~/my-awesome-project
34
+ Detected Next.js (99% confidence)
35
+ Build complete (nextjs)
36
+ 📦 Compressing project…
37
+ Deployed to edge (xk9m2pqr)
38
+ ╭─────────────────────────────────────────────────╮
39
+ │ │
40
+ │ 🚀 Your project is live! │
41
+ │ │
42
+ URL: https://xk9m2pqr.nivii.app
43
+ Expires: in 48 hours
44
+
45
+ ╰─────────────────────────────────────────────────╯
46
+ ✓ URL copied to clipboard
47
+
48
+ ┌─────────────────────────────────┐
49
+ Scan to open on mobile │
50
+ └─────────────────────────────────┘
78
51
  ```
79
52
 
80
53
  ---
@@ -83,51 +56,51 @@ nivii share
83
56
 
84
57
  | Emoji | Feature | Description |
85
58
  |-------|---------|-------------|
86
- | 🔍 | **Smart Detection** | Auto-detects framework, build command, and output directory |
87
- | | **Live Sync** | Watch for file changes and auto-redeploy (Pro) |
88
- | 🔒 | **Password Protection** | Password or OTP-protect any deployment |
89
- | 🔗 | **Custom Slugs** | Get `my-demo.nivii.app` instead of random strings (Pro) |
90
- | 📱 | **QR Codes** | Instant QR code printed in terminal |
91
- | 📋 | **Clipboard** | URL auto-copied to clipboard |
92
- | 🌐 | **Auto-open** | Browser opens automatically after deploy |
93
- | 📊 | **Analytics** | Privacy-first view counts and visitor data (Pro) |
94
- | 💥 | **Self-Destruct** | Links that expire after N views or a duration |
95
- | 🤝 | **Collab Previews** | Real-time collaborative previews (Pro) |
96
- | 🌍 | **Edge CDN** | Deployed on Cloudflare's global network |
97
- | 🎨 | **Beautiful UI** | Futuristic terminal UI with gradients and spinners |
59
+ | 🔍 | Smart Detection | Auto-detects framework, build command, and output directory |
60
+ | ⚡️ | Live Sync | Watch for file changes and auto-redeploy (Pro) |
61
+ | 🔒 | Password Protection | Password or OTP-protect any deployment |
62
+ | 🔗 | Custom Slugs | Get my-demo.nivii.app instead of random strings (Pro) |
63
+ | 📱 | QR Codes | Instant QR code printed in terminal |
64
+ | 📋 | Clipboard | URL auto-copied to clipboard |
65
+ | 🌐 | Auto-open | Browser opens automatically after deploy |
66
+ | 📊 | Analytics | Privacy-first view counts and visitor data (Pro) |
67
+ | 💥 | Self-Destruct | Links that expire after N views or a duration |
68
+ | 🤝 | Collab Previews | Real-time collaborative previews (Pro) |
69
+ | 🌍 | Edge CDN | Deployed on Cloudflare's global network |
70
+ | 🎨 | Beautiful UI | Futuristic terminal UI with gradients and spinners |
98
71
 
99
72
  ---
100
73
 
101
- ## All Flags — `nivii share`
74
+ ## All Flags — nivii share
102
75
 
103
76
  | Flag | Type | Default | Description |
104
77
  |------|------|---------|-------------|
105
- | `--dir <dir>` | string | cwd | Directory to deploy |
106
- | `--slug <slug>` | string | random | Custom slug — e.g. `my-demo``my-demo.nivii.app` (Pro) |
107
- | `--pass <password>` | string | — | Password-protect the deployment |
108
- | `--otp` | boolean | false | Enable one-time password access |
109
- | `--expires <duration>` | string | 48h | Expiry: `1h` / `24h` / `7d` / `30d` / `never` |
110
- | `--live` | boolean | false | Enable live sync — watch & auto-redeploy on changes (Pro) |
111
- | `--collab` | boolean | false | Real-time collaborative preview (Pro) |
112
- | `--no-build` | boolean | false | Skip build step, use existing output directory |
113
- | `--cmd <cmd>` | string | auto | Custom build command |
114
- | `--port <port>` | number | 3000 | Port for server-mode proxy |
115
- | `--max-views <n>` | number | — | Self-destruct after N views |
116
- | `--self-destruct` | boolean | false | Destroy after first view |
117
- | `--no-qr` | boolean | false | Skip QR code display |
118
- | `--no-open` | boolean | false | Don't auto-open browser |
78
+ | --dir <dir> | string | cwd | Directory to deploy |
79
+ | --slug <slug> | string | random | Custom slug — e.g. my-demo → my-demo.nivii.app (Pro) |
80
+ | --pass <password> | string | — | Password-protect the deployment |
81
+ | --otp | boolean | false | Enable one-time password access |
82
+ | --expires <duration> | string | 48h | Expiry: 1h / 24h / 7d / 30d / never |
83
+ | --live | boolean | false | Enable live sync — watch & auto-redeploy on changes (Pro) |
84
+ | --collab | boolean | false | Real-time collaborative preview (Pro) |
85
+ | --no-build | boolean | false | Skip build step, use existing output directory |
86
+ | --cmd <cmd> | string | auto | Custom build command |
87
+ | --port <port> | number | 3000 | Port for server-mode proxy |
88
+ | --max-views <n> | number | — | Self-destruct after N views |
89
+ | --self-destruct | boolean | false | Destroy after first view |
90
+ | --no-qr | boolean | false | Skip QR code display |
91
+ | --no-open | boolean | false | Don't auto-open browser |
119
92
 
120
93
  ---
121
94
 
122
95
  ## All Commands
123
96
 
124
- ```bash
125
- nivii share # Deploy current directory
126
- nivii ls # List recent deployments
127
- nivii analytics # View analytics for a deployment
128
- nivii config # View/set config values
129
- nivii whoami # Show current account info
130
- nivii --help # Show all commands
97
+ ```
98
+ nivii share # Deploy current directory
99
+ nivii ls # List recent deployments
100
+ nivii analytics # View analytics for a deployment
101
+ nivii config # View/set config values
102
+ nivii whoami # Show current account info
103
+ nivii --help # Show all commands
131
104
  ```
132
105
 
133
106
  ---
@@ -136,71 +109,56 @@ nivii --help # Show all commands
136
109
 
137
110
  | Framework | Detection | Build Command | Output Directory |
138
111
  |-----------|-----------|---------------|-----------------|
139
- | **Next.js** | `package.json` `next` dep | `npm run build` | `out` / `.next` |
140
- | **Vite** | `package.json` `vite` dep | `npm run build` | `dist` |
141
- | **React (CRA)** | `vite` + `react` deps | `npm run build` | `dist` |
142
- | **Vue** | `vite` + `vue` deps | `npm run build` | `dist` |
143
- | **Svelte** | `vite` + `svelte` deps | `npm run build` | `dist` |
144
- | **SvelteKit** | `@sveltejs/kit` dep | `npm run build` | `build` |
145
- | **Astro** | `astro` dep | `npm run build` | `dist` |
146
- | **Remix** | `@remix-run/*` deps | `npm run build` | `public` |
147
- | **Nuxt** | `nuxt` dep | `npm run generate` | `.output/public` |
148
- | **Solid.js** | `vite` + `solid-js` deps | `npm run build` | `dist` |
149
- | **Express** | `express` dep | — (server mode) | `.` |
150
- | **Fastify** | `fastify` dep | — (server mode) | `.` |
151
- | **Hono** | `hono` dep | — (server mode) | `.` |
152
- | **Static HTML** | `index.html` exists | — | `.` / `dist` / `build` |
112
+ | Next.js | package.json next dep | npm run build | out / .next |
113
+ | Vite | package.json vite dep | npm run build | dist |
114
+ | React (CRA) | vite + react deps | npm run build | dist |
115
+ | Vue | vite + vue deps | npm run build | dist |
116
+ | Svelte | vite + svelte deps | npm run build | dist |
117
+ | SvelteKit | @sveltejs/kit dep | npm run build | build |
118
+ | Astro | astro dep | npm run build | dist |
119
+ | Remix | @remix-run/* deps | npm run build | public |
120
+ | Nuxt | nuxt dep | npm run generate | .output/public |
121
+ | Solid.js | vite + solid-js deps | npm run build | dist |
122
+ | Express | express dep | — (server mode) | . |
123
+ | Fastify | fastify dep | — (server mode) | . |
124
+ | Hono | hono dep | — (server mode) | . |
125
+ | Static HTML | index.html exists | — | . / dist / build |
153
126
 
154
127
  ---
155
128
 
156
129
  ## Architecture
157
130
 
131
+ User runs: `nivii share`
132
+
158
133
  ```
159
- User runs: nivii share
160
-
161
-
162
- ┌─────────────────────────────────────────────────────────┐
163
- │ Nivii CLI (Node.js)
164
- │ │
165
- │ 1. detectFramework() identifies build system │
166
- │ 2. runBuild() → executes build command │
167
- │ 3. zipDirectory() → zips output dir │
168
- │ 4. uploadDeploy() → POST /deploy to API │
169
- │ 5. showQR() → renders QR in terminal │
170
- │ 6. startLiveSync() → WebSocket watcher (--live) │
171
- └──────────────────────────────┬──────────────────────────┘
172
- HTTPS multipart/form-data
173
-
174
- ┌─────────────────────────────────────────────────────────┐
175
- │ api.nivii.app (Cloudflare Worker) │
176
- │ │
177
- │ POST /deploy
178
- │ ├─ Stores metadata in KV (slug, password, expiry…) │
179
- │ └─ Uploads deploy.zip to R2 bucket │
180
- └──────────────┬────────────────────────────────┬─────────┘
181
- │ │
182
- ▼ ▼
183
- ┌──────────────────────┐ ┌─────────────────────────────┐
184
- │ Cloudflare R2 │ │ Cloudflare KV
185
- │ (Object Storage) │ │ (Metadata + Analytics) │
186
- │ │ │ │
187
- │ deploys/{slug}/ │ │ deploy:{slug} → JSON meta │
188
- │ └─ deploy.zip │ │ analytics:{slug} → stats │
189
- └──────────────────────┘ └─────────────────────────────┘
190
-
191
-
192
- ┌─────────────────────────────────────────────────────────┐
193
- │ *.nivii.app (Cloudflare Worker wildcard routing) │
194
- │ │
195
- │ GET xyz.nivii.app/ │
196
- │ ├─ Checks KV for metadata (expiry, password, OTP) │
197
- │ ├─ Serves files from R2 │
198
- │ └─ SPA fallback to index.html │
199
- │ │
200
- │ live.nivii.app/live/{slug} (WebSocket) │
201
- │ └─ LiveSyncDO (Durable Object) │
202
- │ └─ Broadcasts reload events to connected viewers │
203
- └─────────────────────────────────────────────────────────┘
134
+ Nivii CLI (Node.js)
135
+ 1. detectFramework() → identifies build system
136
+ 2. runBuild() → executes build command
137
+ 3. zipDirectory() → zips output dir
138
+ 4. uploadDeploy() → POST /deploy to API
139
+ 5. showQR() → renders QR in terminal
140
+ 6. startLiveSync() WebSocket watcher (--live)
141
+ ```
142
+
143
+ ```
144
+ api.nivii.app (Cloudflare Worker)
145
+ POST /deploy
146
+ - Stores metadata in KV (slug, password, expiry…)
147
+ - Uploads files to R2 bucket
148
+ ```
149
+
150
+ ```
151
+ Cloudflare R2 (Object Storage) | Cloudflare KV (Metadata + Analytics)
152
+ deploys/{slug}/ deploy:{slug} → JSON meta
153
+ analytics:{slug} stats
154
+ ```
155
+
156
+ ```
157
+ *.nivii.app (Cloudflare Worker wildcard routing)
158
+ GET xyz.nivii.app/
159
+ - Checks KV for metadata (expiry, password, OTP)
160
+ - Serves files from R2
161
+ - SPA fallback to index.html
204
162
  ```
205
163
 
206
164
  ---
@@ -210,23 +168,20 @@ User runs: nivii share
210
168
  Deploy your own Nivii instance in ~10 minutes:
211
169
 
212
170
  ### Prerequisites
213
-
214
171
  - [Cloudflare account](https://cloudflare.com) (free tier works)
215
172
  - [Wrangler CLI](https://developers.cloudflare.com/workers/wrangler/): `npm i -g wrangler`
216
173
  - Node.js 18+
217
174
 
218
175
  ### Steps
219
176
 
220
- **1. Clone and install**
221
-
177
+ 1. Clone and install
222
178
  ```bash
223
179
  git clone https://github.com/Aadigarg111/Nivi-sh.git
224
180
  cd Nivi-sh
225
181
  npm install
226
182
  ```
227
183
 
228
- **2. Create Cloudflare resources**
229
-
184
+ 2. Create Cloudflare resources
230
185
  ```bash
231
186
  # Login to Cloudflare
232
187
  wrangler login
@@ -239,43 +194,36 @@ wrangler kv:namespace create "DB" --preview
239
194
  wrangler r2 bucket create nivii-deployments
240
195
  ```
241
196
 
242
- **3. Update wrangler.toml**
243
-
244
- ```toml
197
+ 3. Update `wrangler.toml`
198
+ ```
245
199
  # packages/worker/wrangler.toml
246
200
  [[kv_namespaces]]
247
- binding = "DB"
248
- id = "YOUR_ACTUAL_KV_ID" # from step 2
249
- preview_id = "YOUR_PREVIEW_KV_ID"
201
+ binding = "DB"
202
+ id = "YOUR_ACTUAL_KV_ID"
203
+ preview_id = "YOUR_PREVIEW_KV_ID"
250
204
 
251
205
  [[r2_buckets]]
252
- binding = "BUCKET"
253
- bucket_name = "nivii-deployments"
206
+ binding = "BUCKET"
207
+ bucket_name = "nivii-deployments"
254
208
  ```
255
209
 
256
- **4. Deploy the worker**
257
-
210
+ 4. Deploy the worker
258
211
  ```bash
259
212
  cd packages/worker
260
213
  wrangler deploy
261
214
  ```
262
215
 
263
- **5. Configure DNS**
264
-
216
+ 5. Configure DNS
265
217
  Add a wildcard DNS record:
266
- ```
267
- Type: CNAME
268
- Name: *
269
- Target: your-worker.workers.dev
270
- Proxy: Enabled (orange cloud)
271
- ```
272
-
273
- **6. Point the CLI at your instance**
218
+ - Type: CNAME
219
+ - Name: *
220
+ - Target: your-worker.workers.dev
221
+ - Proxy: Enabled (orange cloud)
274
222
 
223
+ 6. Point the CLI at your instance
275
224
  ```bash
276
225
  export NIVII_API=https://api.your-domain.com
277
-
278
- # Or in config
226
+ # Or set in config
279
227
  nivii config apiBase https://api.your-domain.com
280
228
  ```
281
229
 
@@ -290,66 +238,55 @@ Config is stored at `~/.nivii/config.json`:
290
238
  "token": "your-pro-token",
291
239
  "plan": "free",
292
240
  "apiBase": "https://api.nivii.app",
293
- "deployments": [...]
241
+ "deployments": []
294
242
  }
295
243
  ```
296
244
 
297
245
  Manage it:
298
-
299
- ```bash
300
- nivii config # show all
301
- nivii config token <tok> # set token
246
+ ```
247
+ nivii config # show all
248
+ nivii config token <tok> # set token
302
249
  nivii config apiBase <url> # point to self-hosted instance
303
250
  ```
304
251
 
305
252
  ---
306
253
 
307
254
  ## Roadmap v2
308
-
309
- - [ ] **Team workspaces**share deployments with your team
310
- - [ ] **Custom domains**deploy to `preview.your-company.com`
311
- - [ ] **GitHub Actions integration**auto-share on every PR
312
- - [ ] **VS Code extension** deploy with a keyboard shortcut
313
- - [ ] **Mobile app**scan QR codes from Nivii deployments
314
- - [ ] **Zip-streaming upload**faster uploads for large projects
315
- - [ ] **Screenshot previews** auto-thumbnail for each deployment
316
- - [ ] **API keys + webhooks** programmatic deployments
317
- - [ ] **Deployment history UI** web dashboard at `app.nivii.app`
318
- - [ ] **SSR support**run Express/Fastify apps in serverless mode
319
- - [ ] **Monorepo support** — deploy multiple packages at once
255
+ - [ ] Team workspaces — share deployments with your team
256
+ - [ ] Custom domainsdeploy to preview.your-company.com
257
+ - [ ] GitHub Actions integration auto-share on every PR
258
+ - [ ] VS Code extensiondeploy with a keyboard shortcut
259
+ - [ ] Mobile appscan QR codes from Nivii deployments
260
+ - [ ] Zip-streaming uploadfaster uploads for large projects
261
+ - [ ] Screenshot previewsauto-thumbnail for each deployment
262
+ - [ ] API keys + webhooks programmatic deployments
263
+ - [ ] Deployment history UIweb dashboard at app.nivii.app
264
+ - [ ] SSR supportrun Express/Fastify apps in serverless mode
265
+ - [ ] Monorepo support — deploy multiple packages at once
320
266
 
321
267
  ---
322
268
 
323
269
  ## Contributing
324
270
 
325
- Contributions are welcome! This is an AGPL-3.0 open-source project.
271
+ Contributions are welcome! This is an AGPL-3.0 project.
326
272
 
273
+ ### Fork and clone
327
274
  ```bash
328
- # Fork and clone
329
275
  git clone https://github.com/YOUR_USERNAME/Nivi-sh.git
330
276
  cd Nivi-sh
331
-
332
- # Install dependencies
333
277
  npm install
278
+ ```
334
279
 
280
+ ### Run locally
281
+ ```bash
335
282
  # Build CLI
336
283
  cd packages/cli && npm run build
337
284
 
338
- # Run locally
285
+ # Run the CLI locally
339
286
  node dist/cli.js share --help
340
287
  ```
341
288
 
342
- ### Project structure
343
-
344
- ```
345
- packages/cli/ - The NPM CLI tool (published as `nivii`)
346
- packages/worker/ - Cloudflare Worker backend
347
- landing/ - Landing page HTML
348
- .github/ - GitHub Actions workflows
349
- ```
350
-
351
289
  ### Submitting PRs
352
-
353
290
  1. Fork the repository
354
291
  2. Create a feature branch: `git checkout -b feat/my-feature`
355
292
  3. Commit your changes: `git commit -m 'feat: add something cool'`
@@ -362,24 +299,14 @@ Please follow conventional commits and keep PRs focused.
362
299
 
363
300
  ## License
364
301
 
365
- ```
366
302
  Nivii — Futuristic Project Sharing CLI
303
+
367
304
  Copyright (C) 2025 Aadigarg111
368
305
 
369
- This program is free software: you can redistribute it and/or modify
370
- it under the terms of the GNU Affero General Public License as published by
371
- the Free Software Foundation, either version 3 of the License, or
372
- (at your option) any later version.
373
- ```
306
+ This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
374
307
 
375
- **[AGPL-3.0](./LICENSE)** — See the LICENSE file for full terms.
308
+ [AGPL-3.0](./LICENSE) — See the LICENSE file for full terms.
376
309
 
377
310
  ---
378
311
 
379
- <div align="center">
380
-
381
- Made with ❤️ by [Aadigarg111](https://github.com/Aadigarg111)
382
-
383
- ⚡ [nivii.app](https://nivii.app) · [npm](https://www.npmjs.com/package/nivii) · [GitHub](https://github.com/Aadigarg111/Nivi-sh)
384
-
385
- </div>
312
+ <div align="center"> Made with ❤️ by [Aadigarg111](https://github.com/Aadigarg111) ⚡️ [nivii.app](https://nivii.app) · [npm](https://www.npmjs.com/package/nivii) · [GitHub](https://github.com/Aadigarg111/Nivi-sh) </div>
package/dist/cli.js CHANGED
@@ -1,11 +1,16 @@
1
1
  #!/usr/bin/env node
2
2
  import { cac } from 'cac';
3
3
  import chalk from 'chalk';
4
+ import { createRequire } from 'module';
4
5
  import { runShare } from './commands/share.js';
6
+ import { runFullStack } from './commands/fullstack.js';
5
7
  import { runConfig } from './commands/config.js';
6
8
  import { runWhoami } from './commands/whoami.js';
9
+ import { runPro } from './commands/pro.js';
7
10
  import { runAnalytics } from './core/analytics.js';
8
11
  import { loadConfig, updateConfig } from './utils/config.js';
12
+ const require = createRequire(import.meta.url);
13
+ const PKG_VERSION = require('../package.json').version;
9
14
  import { showWelcome, showHelp } from './ui/welcome.js';
10
15
  const cli = cac('nivii');
11
16
  // ─── First run ────────────────────────────────────────────────────────────────
@@ -55,6 +60,48 @@ cli
55
60
  process.exit(1);
56
61
  }
57
62
  });
63
+ // ─── fullstack ────────────────────────────────────────────────────────────────
64
+ cli
65
+ .command('fullstack', 'Deploy frontend + backend together, auto-wired')
66
+ .alias('fs')
67
+ .option('--dir <dir>', 'Root directory (default: cwd)')
68
+ .option('--slug <slug>', 'Custom slug')
69
+ .option('--expires <duration>', 'Expiry: 1h / 24h / 7d / 30d')
70
+ .option('--fly-token <token>', 'Fly.io API token for backend deploy')
71
+ .option('--skip-backend', 'Deploy frontend only')
72
+ .option('--skip-frontend', 'Deploy backend only')
73
+ .option('--no-qr', 'Skip QR code')
74
+ .option('--no-open', 'Do not open browser')
75
+ .action(async (options) => {
76
+ try {
77
+ await runFullStack({
78
+ dir: options.dir,
79
+ slug: options.slug,
80
+ expires: options.expires,
81
+ flyToken: options.flyToken,
82
+ skipBackend: options.skipBackend,
83
+ skipFrontend: options.skipFrontend,
84
+ noQr: options['no-qr'],
85
+ noOpen: options['no-open'],
86
+ });
87
+ }
88
+ catch (err) {
89
+ console.error(chalk.red('\n ✗ ') + err.message);
90
+ process.exit(1);
91
+ }
92
+ });
93
+ // ─── pro ──────────────────────────────────────────────────────────────────────
94
+ cli
95
+ .command('pro [subcommand]', 'Manage your Nivii Pro early access')
96
+ .action(async (subcommand) => {
97
+ try {
98
+ await runPro(subcommand);
99
+ }
100
+ catch (err) {
101
+ console.error(chalk.red('\n ✗ ') + err.message);
102
+ process.exit(1);
103
+ }
104
+ });
58
105
  // ─── config ───────────────────────────────────────────────────────────────────
59
106
  cli
60
107
  .command('config [key] [value]', 'View or set config values')
@@ -92,7 +139,7 @@ cli
92
139
  .action(async (slug) => {
93
140
  await runAnalytics(slug);
94
141
  });
95
- cli.version('0.3.0');
142
+ cli.version(PKG_VERSION);
96
143
  // ─── Show help when no command given ─────────────────────────────────────────
97
144
  cli.parse(process.argv, { run: false });
98
145
  if (!cli.matchedCommand) {
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ export interface FullStackOptions {
2
+ dir?: string;
3
+ slug?: string;
4
+ expires?: string;
5
+ noOpen?: boolean;
6
+ noQr?: boolean;
7
+ flyToken?: string;
8
+ skipBackend?: boolean;
9
+ skipFrontend?: boolean;
10
+ }
11
+ export declare function runFullStack(opts: FullStackOptions): Promise<void>;
12
+ //# sourceMappingURL=fullstack.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fullstack.d.ts","sourceRoot":"","sources":["../../src/commands/fullstack.ts"],"names":[],"mappings":"AAeA,MAAM,WAAW,gBAAgB;IAC/B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,gBAAgB,iBA6JxD"}