ebade 0.3.0 → 0.4.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.
Files changed (49) hide show
  1. package/CHANGELOG.md +5 -0
  2. package/README.md +30 -30
  3. package/ROADMAP.md +17 -12
  4. package/cli/scaffold.js +315 -183
  5. package/cli/simulate.js +102 -0
  6. package/cli/templates/feature-grid.tsx +80 -0
  7. package/cli/templates/footer.tsx +121 -0
  8. package/cli/templates/hero-section.tsx +34 -0
  9. package/cli/templates/login-form.tsx +124 -0
  10. package/cli/templates/navbar.tsx +53 -0
  11. package/cli/templates/pricing-table.tsx +140 -0
  12. package/cli/templates/signup-form.tsx +111 -0
  13. package/demo.tape +2 -2
  14. package/examples/saas-dashboard.ebade.yaml +2 -0
  15. package/netlify.toml +7 -0
  16. package/package.json +1 -1
  17. package/packages/mcp-server/README.md +3 -3
  18. package/packages/mcp-server/package.json +2 -2
  19. package/packages/mcp-server/src/index.ts +12 -16
  20. package/packages/mcp-server/src/tools/scaffold.ts +153 -404
  21. package/packages/vscode-extension/README.md +11 -8
  22. package/packages/vscode-extension/ebade-0.3.0.vsix +0 -0
  23. package/packages/vscode-extension/ebade-0.3.1.vsix +0 -0
  24. package/packages/vscode-extension/ebade-0.3.2.vsix +0 -0
  25. package/packages/vscode-extension/images/icon.png +0 -0
  26. package/packages/vscode-extension/package.json +2 -1
  27. package/packages/vscode-extension/snippets/ebade.json +86 -0
  28. package/www/README.md +36 -0
  29. package/www/app/favicon.ico +0 -0
  30. package/{landing/style.css → www/app/globals.css} +390 -19
  31. package/www/app/layout.tsx +66 -0
  32. package/www/app/page.tsx +374 -0
  33. package/www/app/playground/page.tsx +627 -0
  34. package/www/components/ThreeCanvas.tsx +156 -0
  35. package/www/next.config.ts +19 -0
  36. package/www/package-lock.json +1779 -0
  37. package/www/package.json +27 -0
  38. package/www/postcss.config.mjs +7 -0
  39. package/www/public/logo.png +0 -0
  40. package/www/tsconfig.json +42 -0
  41. package/landing/index.html +0 -268
  42. package/landing/main.js +0 -147
  43. package/packages/vscode-extension/images/icon.svg +0 -6
  44. /package/{demo.gif → assets/demo.gif} +0 -0
  45. /package/{demo.mp4 → assets/demo.mp4} +0 -0
  46. /package/{landing → www/public}/_headers +0 -0
  47. /package/{landing → www/public}/favicon.svg +0 -0
  48. /package/{landing → www/public}/og-image.png +0 -0
  49. /package/{landing → www/public}/og-readme.png +0 -0
@@ -0,0 +1,111 @@
1
+ import React from "react";
2
+ import { cn } from "@/lib/utils";
3
+
4
+ /**
5
+ * 🧠 Generated via ebade
6
+ * Intent: signup-form
7
+ */
8
+ export function SignupForm() {
9
+ return (
10
+ <div className="w-full max-w-md mx-auto p-8">
11
+ <div className="mb-8 text-center">
12
+ <h2 className="text-3xl font-black tracking-tight mb-2">
13
+ Create an account
14
+ </h2>
15
+ <p className="text-muted-foreground">
16
+ Start building your next big idea
17
+ </p>
18
+ </div>
19
+
20
+ <form className="space-y-6">
21
+ <div className="space-y-2">
22
+ <label htmlFor="name" className="text-sm font-medium">
23
+ Full Name
24
+ </label>
25
+ <input
26
+ id="name"
27
+ type="text"
28
+ placeholder="John Doe"
29
+ className="w-full px-4 py-3 rounded-lg border border-input bg-background focus:outline-none focus:ring-2 focus:ring-ring focus:border-transparent transition-all"
30
+ />
31
+ </div>
32
+
33
+ <div className="space-y-2">
34
+ <label htmlFor="email" className="text-sm font-medium">
35
+ Email
36
+ </label>
37
+ <input
38
+ id="email"
39
+ type="email"
40
+ placeholder="you@example.com"
41
+ className="w-full px-4 py-3 rounded-lg border border-input bg-background focus:outline-none focus:ring-2 focus:ring-ring focus:border-transparent transition-all"
42
+ />
43
+ </div>
44
+
45
+ <div className="space-y-2">
46
+ <label htmlFor="password" className="text-sm font-medium">
47
+ Password
48
+ </label>
49
+ <input
50
+ id="password"
51
+ type="password"
52
+ placeholder="At least 8 characters"
53
+ className="w-full px-4 py-3 rounded-lg border border-input bg-background focus:outline-none focus:ring-2 focus:ring-ring focus:border-transparent transition-all"
54
+ />
55
+ </div>
56
+
57
+ <button
58
+ type="submit"
59
+ className="w-full py-3 px-6 rounded-lg bg-primary text-primary-foreground font-bold hover:opacity-90 transition-all shadow-lg hover:scale-[1.02] active:scale-95"
60
+ >
61
+ Create account
62
+ </button>
63
+
64
+ <p className="text-center text-xs text-muted-foreground">
65
+ By clicking continue, you agree to our{" "}
66
+ <a href="#" className="underline hover:text-primary">
67
+ Terms of Service
68
+ </a>{" "}
69
+ and{" "}
70
+ <a href="#" className="underline hover:text-primary">
71
+ Privacy Policy
72
+ </a>
73
+ .
74
+ </p>
75
+
76
+ <div className="relative my-6">
77
+ <div className="absolute inset-0 flex items-center">
78
+ <div className="w-full border-t border-border"></div>
79
+ </div>
80
+ <div className="relative flex justify-center text-xs uppercase">
81
+ <span className="bg-background px-2 text-muted-foreground">
82
+ Or register with
83
+ </span>
84
+ </div>
85
+ </div>
86
+
87
+ <div className="grid grid-cols-2 gap-4">
88
+ <button
89
+ type="button"
90
+ className="py-3 px-4 rounded-lg border border-border bg-background hover:bg-accent transition-all flex items-center justify-center gap-2 font-medium"
91
+ >
92
+ Google
93
+ </button>
94
+ <button
95
+ type="button"
96
+ className="py-3 px-4 rounded-lg border border-border bg-background hover:bg-accent transition-all flex items-center justify-center gap-2 font-medium"
97
+ >
98
+ GitHub
99
+ </button>
100
+ </div>
101
+
102
+ <p className="text-center text-sm text-muted-foreground">
103
+ Already have an account?{" "}
104
+ <a href="#" className="text-primary font-medium hover:underline">
105
+ Sign in
106
+ </a>
107
+ </p>
108
+ </form>
109
+ </div>
110
+ );
111
+ }
package/demo.tape CHANGED
@@ -3,8 +3,8 @@
3
3
  # Outputs: demo.gif + demo.mp4
4
4
 
5
5
  # Outputs - both formats
6
- Output demo.gif
7
- Output demo.mp4
6
+ Output assets/demo.gif
7
+ Output assets/demo.mp4
8
8
 
9
9
  # Configuration
10
10
  Set FontSize 20
@@ -24,12 +24,14 @@ pages:
24
24
  intent: "landing-page"
25
25
  auth: none
26
26
  components:
27
+ - navbar
27
28
  - hero-section
28
29
  - feature-grid
29
30
  - pricing-table
30
31
  - testimonials
31
32
  - faq-accordion
32
33
  - cta-banner
34
+ - footer
33
35
 
34
36
  - path: "/login"
35
37
  intent: "auth-login"
package/netlify.toml ADDED
@@ -0,0 +1,7 @@
1
+ [build]
2
+ base = "www"
3
+ command = "npm run build"
4
+ publish = ".next"
5
+
6
+ [[plugins]]
7
+ package = "@netlify/plugin-nextjs"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ebade",
3
- "version": "0.3.0",
3
+ "version": "0.4.0",
4
4
  "description": "ebade - Agent-First Framework. The first framework designed for AI agents, readable by humans.",
5
5
  "type": "module",
6
6
  "main": "cli/scaffold.js",
@@ -56,9 +56,9 @@ Create a complete project from an ebade definition.
56
56
  ```typescript
57
57
  // Example usage by an AI agent:
58
58
  ebade_scaffold({
59
- projectName: "my-store",
60
- projectType: "e-commerce",
61
- features: ["product-catalog", "shopping-cart", "checkout"],
59
+ projectName: "my-app",
60
+ projectType: "SaaS Dashboard", // "E-commerce" or "Landing Page"
61
+ primaryColor: "#4f46e5",
62
62
  outputDir: "/path/to/projects"
63
63
  })
64
64
  ```
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@ebade/mcp-server",
3
- "version": "0.1.0",
4
- "description": "MCP Server for ebade - Enable AI agents to build with the essence of code",
3
+ "version": "0.4.0",
4
+ "description": "MCP Server for ebade v0.3.1 - The Agent-First Framework",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
7
7
  "bin": {
@@ -29,7 +29,7 @@ import { generateComponent } from "./tools/generate.js";
29
29
  const server = new Server(
30
30
  {
31
31
  name: "ebade",
32
- version: "0.1.0",
32
+ version: "0.3.1",
33
33
  },
34
34
  {
35
35
  capabilities: {
@@ -50,8 +50,8 @@ This creates a complete Next.js project structure based on the ebade specificati
50
50
 
51
51
  Use this when the user wants to:
52
52
  - Start a new web project
53
- - Create an e-commerce site, SaaS dashboard, blog, etc.
54
- - Generate a full application structure
53
+ - Create an "SaaS Dashboard", "E-commerce", or "Landing Page"
54
+ - Generate a full application structure with agent-first rules (.cursorrules, etc.)
55
55
 
56
56
  The ebade file uses YAML format with pages, components, data models, and API definitions.`,
57
57
  inputSchema: {
@@ -59,25 +59,21 @@ The ebade file uses YAML format with pages, components, data models, and API def
59
59
  properties: {
60
60
  projectName: {
61
61
  type: "string",
62
- description: "Name of the project (kebab-case, e.g., 'my-store')",
62
+ description: "Name of the project (kebab-case, e.g., 'my-app')",
63
63
  },
64
64
  projectType: {
65
65
  type: "string",
66
66
  enum: [
67
- "e-commerce",
68
- "saas-dashboard",
69
- "blog",
70
- "landing-page",
71
- "portfolio",
72
- "api-only",
67
+ "SaaS Dashboard",
68
+ "E-commerce",
69
+ "Landing Page",
70
+ "Empty Project",
73
71
  ],
74
- description: "Type of project to scaffold",
72
+ description: "Type of project template to use",
75
73
  },
76
- features: {
77
- type: "array",
78
- items: { type: "string" },
79
- description:
80
- "Features to include (e.g., 'user-auth', 'shopping-cart', 'dark-mode')",
74
+ primaryColor: {
75
+ type: "string",
76
+ description: "Hex primary color (e.g., '#4f46e5')",
81
77
  },
82
78
  outputDir: {
83
79
  type: "string",