vibingbase 0.12.37 → 0.12.38
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/assets/default/.gitignore.template +6 -6
- package/assets/default/AGENTS.md.template +43 -0
- package/assets/default/CLAUDE.md.template +3 -0
- package/assets/default/src-tauri/Cargo.lock.template +4 -4
- package/assets/tailwind/.gitignore.template +6 -6
- package/assets/tailwind/AGENTS.md.template +44 -0
- package/assets/tailwind/CLAUDE.md.template +3 -0
- package/assets/tailwind/src-tauri/Cargo.lock.template +4 -4
- package/dist/index.js +2 -2
- package/package.json +1 -1
|
@@ -3,13 +3,14 @@
|
|
|
3
3
|
/.playwright-mcp
|
|
4
4
|
__MACOSX
|
|
5
5
|
.DS_Store
|
|
6
|
-
*.tsbuildinfo
|
|
7
|
-
*.db
|
|
8
|
-
.vars
|
|
9
|
-
.secrets
|
|
10
6
|
.env
|
|
11
7
|
.env.*
|
|
8
|
+
.vars
|
|
9
|
+
.secrets
|
|
12
10
|
node_modules
|
|
11
|
+
*.tsbuildinfo
|
|
12
|
+
tsconfig.api-extractor.json
|
|
13
|
+
.api-extractor
|
|
13
14
|
dist
|
|
14
15
|
.react-router
|
|
15
16
|
build
|
|
@@ -20,5 +21,4 @@ out
|
|
|
20
21
|
.vercel
|
|
21
22
|
target
|
|
22
23
|
gen
|
|
23
|
-
|
|
24
|
-
.api-extractor
|
|
24
|
+
*.db
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# AGENTS.md
|
|
2
|
+
|
|
3
|
+
## Job Description
|
|
4
|
+
|
|
5
|
+
You must always deliver a fully-functional desktop app that the user can interact with and provide feedback on. If the user's requirements are unclear, you should still deliver a fully-functional desktop app based on your best assumptions.
|
|
6
|
+
|
|
7
|
+
## Tech Stack
|
|
8
|
+
|
|
9
|
+
- Web Components: TypeScript + React Router v7 (SPA) + React v19 + Vite v7
|
|
10
|
+
- Desktop Components: Rust + Tauri v2
|
|
11
|
+
|
|
12
|
+
## Project Structure
|
|
13
|
+
|
|
14
|
+
```
|
|
15
|
+
app/
|
|
16
|
+
├─ entry.server.tsx # Server-side entry point (SPA build script)
|
|
17
|
+
├─ entry.client.tsx # Client-side entry point (SPA load script)
|
|
18
|
+
├─ root.tsx # Root route
|
|
19
|
+
├─ routes.ts # Config-based routes
|
|
20
|
+
└─ routes/
|
|
21
|
+
├─ index.tsx # Index route
|
|
22
|
+
└─ … # Other routes
|
|
23
|
+
src-tauri/
|
|
24
|
+
├── capabilities/ # Tauri app capabilities
|
|
25
|
+
├── icons/ # Tauri app icons
|
|
26
|
+
├── src/ # Tauri source files
|
|
27
|
+
└── tauri.conf.json # Tauri configuration
|
|
28
|
+
react-router.config.js # React Router configuration
|
|
29
|
+
vite.config.js # Vite configuration
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## SPA Mode
|
|
33
|
+
|
|
34
|
+
The React Router v7 app must be built with "SPA Mode" enabled (`ssr: false` in `react-router.config.js`). Only `app/root.tsx` may have a `loader` function to load data at build time. All other routes must use `clientLoader` instead of `loader`. All other server-side features are unavailable (e.g., `action`, `middleware`, etc.) and should be substituted with client-side features (e.g., `clientAction`, `clientMiddleware`, etc.).
|
|
35
|
+
|
|
36
|
+
## Common Commands
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
<%= exec %> tauri dev
|
|
40
|
+
<%= exec %> tauri build
|
|
41
|
+
<%= exec %> react-router typegen
|
|
42
|
+
<%= exec %> tsc --noEmit
|
|
43
|
+
```
|
|
@@ -1806,9 +1806,9 @@ dependencies = [
|
|
|
1806
1806
|
|
|
1807
1807
|
[[package]]
|
|
1808
1808
|
name = "itoa"
|
|
1809
|
-
version = "1.0.
|
|
1809
|
+
version = "1.0.16"
|
|
1810
1810
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1811
|
-
checksum = "
|
|
1811
|
+
checksum = "7ee5b5339afb4c41626dde77b7a611bd4f2c202b897852b4bcf5d03eddc61010"
|
|
1812
1812
|
|
|
1813
1813
|
[[package]]
|
|
1814
1814
|
name = "javascriptcore-rs"
|
|
@@ -3256,9 +3256,9 @@ checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d"
|
|
|
3256
3256
|
|
|
3257
3257
|
[[package]]
|
|
3258
3258
|
name = "ryu"
|
|
3259
|
-
version = "1.0.
|
|
3259
|
+
version = "1.0.21"
|
|
3260
3260
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
3261
|
-
checksum = "
|
|
3261
|
+
checksum = "62049b2877bf12821e8f9ad256ee38fdc31db7387ec2d3b3f403024de2034aea"
|
|
3262
3262
|
|
|
3263
3263
|
[[package]]
|
|
3264
3264
|
name = "same-file"
|
|
@@ -3,13 +3,14 @@
|
|
|
3
3
|
/.playwright-mcp
|
|
4
4
|
__MACOSX
|
|
5
5
|
.DS_Store
|
|
6
|
-
*.tsbuildinfo
|
|
7
|
-
*.db
|
|
8
|
-
.vars
|
|
9
|
-
.secrets
|
|
10
6
|
.env
|
|
11
7
|
.env.*
|
|
8
|
+
.vars
|
|
9
|
+
.secrets
|
|
12
10
|
node_modules
|
|
11
|
+
*.tsbuildinfo
|
|
12
|
+
tsconfig.api-extractor.json
|
|
13
|
+
.api-extractor
|
|
13
14
|
dist
|
|
14
15
|
.react-router
|
|
15
16
|
build
|
|
@@ -20,5 +21,4 @@ out
|
|
|
20
21
|
.vercel
|
|
21
22
|
target
|
|
22
23
|
gen
|
|
23
|
-
|
|
24
|
-
.api-extractor
|
|
24
|
+
*.db
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# AGENTS.md
|
|
2
|
+
|
|
3
|
+
## Job Description
|
|
4
|
+
|
|
5
|
+
You must always deliver a fully-functional desktop app that the user can interact with and provide feedback on. If the user's requirements are unclear, you should still deliver a fully-functional desktop app based on your best assumptions.
|
|
6
|
+
|
|
7
|
+
## Tech Stack
|
|
8
|
+
|
|
9
|
+
- Web Components: TypeScript + React Router v7 (SPA) + React v19 + Tailwind CSS v4 + Vite v7
|
|
10
|
+
- Desktop Components: Rust + Tauri v2
|
|
11
|
+
|
|
12
|
+
## Project Structure
|
|
13
|
+
|
|
14
|
+
```
|
|
15
|
+
app/
|
|
16
|
+
├─ entry.server.tsx # Server-side entry point (SPA build script)
|
|
17
|
+
├─ entry.client.tsx # Client-side entry point (SPA load script)
|
|
18
|
+
├─ entry.client.css # Global styles
|
|
19
|
+
├─ root.tsx # Root route
|
|
20
|
+
├─ routes.ts # Config-based routes
|
|
21
|
+
└─ routes/
|
|
22
|
+
├─ index.tsx # Index route
|
|
23
|
+
└─ … # Other routes
|
|
24
|
+
src-tauri/
|
|
25
|
+
├── capabilities/ # Tauri app capabilities
|
|
26
|
+
├── icons/ # Tauri app icons
|
|
27
|
+
├── src/ # Tauri source files
|
|
28
|
+
└── tauri.conf.json # Tauri configuration
|
|
29
|
+
react-router.config.js # React Router configuration
|
|
30
|
+
vite.config.js # Vite configuration
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## SPA Mode
|
|
34
|
+
|
|
35
|
+
The React Router v7 app must be built with "SPA Mode" enabled (`ssr: false` in `react-router.config.js`). Only `app/root.tsx` may have a `loader` function to load data at build time. All other routes must use `clientLoader` instead of `loader`. All other server-side features are unavailable (e.g., `action`, `middleware`, etc.) and should be substituted with client-side features (e.g., `clientAction`, `clientMiddleware`, etc.).
|
|
36
|
+
|
|
37
|
+
## Common Commands
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
<%= exec %> tauri dev
|
|
41
|
+
<%= exec %> tauri build
|
|
42
|
+
<%= exec %> react-router typegen
|
|
43
|
+
<%= exec %> tsc --noEmit
|
|
44
|
+
```
|
|
@@ -1806,9 +1806,9 @@ dependencies = [
|
|
|
1806
1806
|
|
|
1807
1807
|
[[package]]
|
|
1808
1808
|
name = "itoa"
|
|
1809
|
-
version = "1.0.
|
|
1809
|
+
version = "1.0.16"
|
|
1810
1810
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1811
|
-
checksum = "
|
|
1811
|
+
checksum = "7ee5b5339afb4c41626dde77b7a611bd4f2c202b897852b4bcf5d03eddc61010"
|
|
1812
1812
|
|
|
1813
1813
|
[[package]]
|
|
1814
1814
|
name = "javascriptcore-rs"
|
|
@@ -3256,9 +3256,9 @@ checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d"
|
|
|
3256
3256
|
|
|
3257
3257
|
[[package]]
|
|
3258
3258
|
name = "ryu"
|
|
3259
|
-
version = "1.0.
|
|
3259
|
+
version = "1.0.21"
|
|
3260
3260
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
3261
|
-
checksum = "
|
|
3261
|
+
checksum = "62049b2877bf12821e8f9ad256ee38fdc31db7387ec2d3b3f403024de2034aea"
|
|
3262
3262
|
|
|
3263
3263
|
[[package]]
|
|
3264
3264
|
name = "same-file"
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import*as
|
|
2
|
-
${y(
|
|
1
|
+
import*as t from"@clack/prompts";import{capitalCase as W}from"change-case";import{Command as q}from"commander";import{existsSync as E}from"node:fs";import{rm as L}from"node:fs/promises";import d from"node:path";import _ from"picocolors";function w(){let e=process.env.npm_config_user_agent??"";return e.startsWith("pnpm")?"pnpm":e.startsWith("yarn")?"yarn":e.startsWith("bun")?"bun":"npm"}import{exec as M}from"node:child_process";import{promisify as I}from"node:util";var m=I(M);import{customAlphabet as V}from"nanoid";var A="0123456789abcdefghijklmnopqrstuvwxyz",x=V(A);function D(e){switch(e){case"install":case"start":return!1;default:return!0}}function y(e,r){let a=e==="npm"&&D(r)?`run ${r}`:r;return`${e} ${a}`}function v(e){switch(e){case"npm":return"npx";case"pnpm":return"pnpm exec";case"yarn":return"yarn";case"bun":return"bunx"}}import N from"ejs";import{copyFile as T,mkdir as $,readdir as F,readFile as S,writeFile as z}from"node:fs/promises";import h from"node:path";var k=".template";async function u(e,r,a){await $(r,{recursive:!0});let i=await F(e,{withFileTypes:!0});await Promise.all(i.map(async n=>{let c=n.name.endsWith(k),l=h.join(e,n.name),p=h.join(r,c?n.name.slice(0,-k.length):n.name);if(n.isDirectory())await u(l,p,a);else if(c){let s=await S(l,"utf8");await z(p,N.render(s,a))}else await T(l,p)}))}function P(e){if(!e)return"App name is required";if(e.includes(" "))return"No double spaces allowed"}function C(e){if(!e)return"Directory name is required"}var g={name:"vibingbase",version:"0.12.38",description:"CLI for creating Vibingbase apps",keywords:["vibingbase","vibe-coding","ai-coding","low-code","no-code"],homepage:"https://www.vibingbase.com",bugs:{url:"https://github.com/vibingbase/apps/issues",email:"team@vibingbase.com"},license:"MIT",author:{name:"Vibingbase",email:"team@vibingbase.com"},type:"module",imports:{"#./*":"./*"},exports:{".":{development:"./lib/index.ts",import:"./dist/index.js"}},bin:"./bin/index.js",dependencies:{"@clack/prompts":"^0.11.0","change-case":"^5.4.4",commander:"^14.0.2",ejs:"^3.1.10",nanoid:"^5.1.6",picocolors:"^1.1.1"},devDependencies:{"@types/ejs":"^3.1.5","eslint-config-base":"workspace:^"}};var f=new q;f.name(g.name).version(g.version).description(g.description);var j="Create a new Vibingbase app";f.command("create",{isDefault:!0}).description(j).action(async()=>{t.intro(_.bold(j));let e="my-app",r=await t.text({message:"Directory name:",placeholder:e,defaultValue:e,initialValue:e,validate:C});t.isCancel(r)&&process.exit(0);let a=r.trim(),i=d.isAbsolute(a)?a:d.join(process.cwd(),a);if(E(i)){let b=await t.confirm({message:"Overwrite existing directory?",initialValue:!1});(t.isCancel(b)||!b)&&process.exit(0),await L(i,{recursive:!0,force:!0})}let n=W(d.basename(a)),c=await t.text({message:"App name:",placeholder:n,defaultValue:n,initialValue:n,validate:P});t.isCancel(c)&&process.exit(0);let l=c.trim(),p=await t.confirm({message:"Use Tailwind CSS?",initialValue:!0});t.isCancel(p)&&process.exit(0);let s=await t.select({message:"Package manager:",initialValue:w(),options:[{value:"npm",label:"npm"},{value:"pnpm",label:"pnpm"},{value:"yarn",label:"yarn"},{value:"bun",label:"bun"}]});t.isCancel(s)&&process.exit(0);let o=t.spinner();o.start("Generating project files..."),await u(d.join(import.meta.dirname,"..","assets",p?"tailwind":"default"),i,{name:l,id:x(),version:"1.0.0",exec:v(s),websiteURL:"https://www.vibingbase.com"}),o.stop("Generated project files!"),o.start(`Installing ${s} dependencies...`),await m(`${s} install`,{cwd:i}),o.stop(`Installed ${s} dependencies!`),o.start("Installing cargo dependencies..."),await m("cargo fetch",{cwd:d.join(i,"src-tauri")}),o.stop("Installed cargo dependencies!"),o.start("Initializing Git..."),await m("git init",{cwd:i}),await m("git add .",{cwd:i}),await m('git commit -m "Initialize repository with Vibingbase CLI"',{cwd:i}),o.stop("Initialized Git!"),t.note(`cd ${a}
|
|
2
|
+
${y(s,"dev")}`,"Next steps"),t.outro("Happy coding!")});await f.parseAsync();
|