ebade 0.4.6 β†’ 0.4.7

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.
@@ -2,39 +2,35 @@
2
2
  description: ebade Prompt-to-Product Workflow
3
3
  ---
4
4
 
5
- # 🐣 ebade Prompt-to-Product Workflow
5
+ # πŸŒ— Hybrid Workflow: Architect & Engineer
6
6
 
7
- This workflow describes how an AI Agent should use the ebade framework to transform a user's natural language intent into a production-ready codebase.
7
+ This workflow divides your task into two phases: **Offline Architecture** (Deterministic) and **Online Engineering** (Generative).
8
8
 
9
- ## 1. Initial Project Scaffolding
9
+ ## 1. Phase I: The Offline Architect (Deterministic)
10
10
  When a user asks to "build", "create", or "start" a new web application:
11
11
 
12
12
  // turbo
13
- 1. Use the `ebade build` command with the user's prompt.
13
+ 1. **Execute the Architecture**: Run the `ebade build` command.
14
14
  ```bash
15
15
  node cli/scaffold.js build "[User's Prompt]"
16
16
  ```
17
- *This tool will automatically choose the project type, color palette, and initial components.*
17
+ *ebade will handle the heavy lifting: selecting the project type, generating a design system, and creating the file structure with **0-token cost** and **100% determinism**.*
18
18
 
19
- 2. Navigate into the generated project directory.
19
+ 2. **Move In**: `cd` into the generated project directory.
20
20
 
21
- ## 2. Understanding the Architecture
22
- ebade generates a `project.ebade.yaml` file in the project root. This is your **Source of Truth**.
23
- 1. Read `project.ebade.yaml` to understand the pages, components, and data models.
24
- 2. Respect the design system tokens in `app/globals.css`.
21
+ ## 2. Phase II: The Online Engineer (Generative)
22
+ Now that the foundation is set, you act as the generative engineer to add "The Soul" to the codebase.
25
23
 
26
- ## 3. Iterative Development
27
- Once the scaffold is ready, move from "Architect" to "Engineer":
24
+ 1. **Initialize Dependencies**: Run `npm install` to prepare the environment.
25
+ 2. **Read the Intent**: Open `project.ebade.yaml`. This is your **Source of Truth**. Your goal is to implement the specific logic requested by the user, while respecting the boundaries set in the YAML.
26
+ 3. **Refine Components**: Locate the UI components in `components/`. They are visually premium but contain "Business Logic" placeholders. Replace these with actual logic (API calls, state, conditional rendering).
27
+ 4. **API Integration**: Fill the `app/api/` skeletons with real backend code (DB queries, Auth logic).
28
28
 
29
- 1. **Refine Components**: Locate generated components in `components/`. They are high-quality visual placeholders. Add the specific business logic, API calls, or complex state management requested by the user.
30
- 2. **Implement API Logic**: Fill the `app/api/` route handlers with real backend logic (database queries, external service integrations).
31
- 3. **Data Schemas**: Use the generated SQL in `database/schema.sql` to set up the actual database.
32
-
33
- ## 4. Expanding the Project
34
- To add new features:
35
- 1. Update `project.ebade.yaml` with the new intent.
36
- 2. Run `node cli/scaffold.js scaffold project.ebade.yaml .` to generate the new files while preserving your logic.
37
- 3. Apply the specific implementation details to the new files.
29
+ ## 3. Iterative Feedback Loop
30
+ To expand or modify:
31
+ 1. Update `project.ebade.yaml` with the new intent (e.g., adding a new page or feature).
32
+ 2. Run `node cli/scaffold.js scaffold project.ebade.yaml .` to generate new files without breaking your existing work.
33
+ 3. Apply generative logic to the new structures.
38
34
 
39
35
  ---
40
- *Built for the Agent-First Era. ebade empowers you to focus on logic, while we handle the architecture.*
36
+ *ebade: Empowering Agents to focus on Logic, while we handle the Architecture.*
package/ARCHITECTURE.md CHANGED
@@ -43,13 +43,25 @@ Immediately after scaffolding, ebade runs a series of integrity checks:
43
43
  - **Intent-Code Mapping:** Verifies that exported component names and routes match the original intent.
44
44
  - **Test Coverage:** Confirms that matching unit tests (Vitest) have been generated for every new component.
45
45
 
46
- ### 5. AI-Enhanced Scaffolding (The "Online Compiler")
46
+ ## πŸŒ— The Hybrid Workflow Model
47
47
 
48
- This is where the magic happens. ebade uses AI not as a "free-text generator," but as a **Deterministic Compiler Component**.
48
+ ebade operates as a hybrid engine, splitting the lifecycle into two specific environments:
49
49
 
50
- - **Templates:** ebade provides a library of high-quality, pre-tested component templates.
51
- - **Mapping:** The AI maps the specific fields and logic from the `@intent` into these templates.
52
- - **Validation:** Every generated file is validated against the intent AST to ensure zero hallucinations.
50
+ ### 1. The Offline Architect (Deterministic)
51
+
52
+ The local CLI acts as the core architect. It performs high-speed, 0-token analysis of the user's intent to establish the foundational structure of the codebase.
53
+
54
+ - **Rules Engine**: Uses pattern matching and adjacency maps to select components and theme colors.
55
+ - **Scaffold Engine**: Generates 100% of the boilerplate (folders, config files, type definitions).
56
+ - **Zero-Token Hallucination Protection**: Since this runs locally with fixed logic, the structural integrity is guaranteed.
57
+
58
+ ### 2. The Online Engineer (Generative)
59
+
60
+ Once the "House" (scaffold) is built, the AI Agent (the engineer) moves in to decorate and install the appliances (business logic).
61
+
62
+ - **Intent Mapping**: The agent maps the specific sub-intents from the `@intent` decorators into the generated templates.
63
+ - **Hallucination Guardrails**: By using the `project.ebade.yaml` as a strict AST-based specification, the agent is restricted from going "off-rails."
64
+ - **Token Efficiency**: The agent only spends compute cycles on the actual business logic, not on imports or layout setup.
53
65
 
54
66
  ---
55
67
 
package/CHANGELOG.md CHANGED
@@ -5,6 +5,16 @@ All notable changes to **ebade** will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [0.4.7] - 2025-01-10
9
+
10
+ ### Added
11
+
12
+ - **Multi-Target Support**: The ebade CLI is now target-agnostic. Decoupled Next.js logic into adapters.
13
+ - **Vanilla HTML Adapter**: Added support for standard HTML/CSS project generation via `--target html`.
14
+ - **Automated Formatting**: Integrated Prettier into the scaffolding pipeline. Every generated file is now automatically formatted to production standards.
15
+ - **Modular Adapter Architecture**: Introduced `TargetAdapter` base class to easily add new platforms (Flutter, Go, etc.).
16
+ - **Shared CLI Utilities**: Unified common logic into `cli/utils.js` for better maintainability.
17
+
8
18
  ## [0.4.6] - 2025-01-10
9
19
 
10
20
  ### Added
@@ -24,8 +34,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
24
34
  - Improved project naming logic to filter out filler words (e.g., "Can you make a...").
25
35
  - Fixed component integrity check to correctly locate test files in `tests/components/`.
26
36
 
27
- ## [0.4.5] - 2025-01-10
28
- ...
29
37
  ## [0.4.5] - 2025-01-10
30
38
 
31
39
  ### Added
package/MANIFESTO.md CHANGED
@@ -128,18 +128,35 @@ Agent: *Next.js docs'Δ± hatΔ±rla*
128
128
  *500 satΔ±r kod yaz*
129
129
  ```
130
130
 
131
- ### ebade ile
132
- ```
133
- User: "Checkout sayfasΔ± yap"
134
- Agent: *intent tanΔ±mΔ± yaz*
135
- @page('/checkout')
136
- @intent('complete-purchase')
137
- @requires(['cart', 'user', 'payment'])
138
- *bitti*
131
+ ### ebade ile (Hybrid Workflow)
132
+ ```text
133
+ Phase I: Offline Architect (Deterministic)
134
+ Agent: *node cli/scaffold.js build "A green dashboard"*
135
+ -> 0 Tokens spent
136
+ -> Mimar yerel olarak iskeleyi kurar
137
+
138
+ Phase II: Online Engineer (Generative)
139
+ Agent: *Arayüze âzel iş mantığını (Business Logic) yaz*
140
+ -> Düşük token harcaması
141
+ -> Sadece yaratıcı işe odaklanma
139
142
  ```
140
143
 
141
144
  ---
142
145
 
146
+ ## Hibrit Model: Mimar ve MΓΌhendis
147
+
148
+ ebade, yazılım geliştirme sürecini ikiye bâler:
149
+
150
+ ### 1. πŸ›‘οΈ Offline Mimar (Deterministik)
151
+
152
+ Yerel CLI, hiç token harcamadan projenin iskeletini, tasarım sistemini ve dosya düzenini kurar. Bu aşamada "halüsinasyon" yoktur, sadece saf mühendislik kuralları vardır.
153
+
154
+ ### 2. 🧠 Online Mühendis (Generatif)
155
+
156
+ İskelet hazır olduktan sonra AI Ajanı (Cursor/Claude) koltuğa oturur. `project.ebade.yaml` dosyasını "Source of Truth" olarak kullanarak, projenin "ruhunu" (spesifik iş mantığı, API entegrasyonları) kodlar.
157
+
158
+ ---
159
+
143
160
  ## Design Principles
144
161
 
145
162
  1. **Agent-Native**: AI'Δ±n düşünce yapΔ±sΔ±na uygun
package/README.md CHANGED
@@ -9,6 +9,30 @@
9
9
  [![Green AI](https://img.shields.io/badge/🌱_Green_AI-70%25_Less_Tokens-brightgreen)](./docs/GREEN-AI.md)
10
10
  [![Architecture](https://img.shields.io/badge/Architecture-First_Principles-black)](./ARCHITECTURE.md)
11
11
 
12
+ ---
13
+
14
+ ## πŸŒ— Hybrid Workflow: The Best of Both Worlds
15
+
16
+ ebade splits the development process into two distinct, high-efficiency phases:
17
+
18
+ ### 1. πŸ›‘οΈ Offline Architect (Deterministic)
19
+
20
+ The **ebade CLI** runs locally and requires **0 tokens**. It uses pattern matching and predefined architectural rules to scaffold your project's skeleton, design system, and file structure.
21
+
22
+ - **Speed:** Instant results.
23
+ - **Reliability:** 100% deterministic (no hallucinations).
24
+ - **Cost:** Free.
25
+
26
+ ### 2. 🧠 Online Agent (Generative)
27
+
28
+ Once the scaffold is ready, your **AI Agent** (Claude, Cursor, etc.) takes over to fill in the complex business logic using the `project.ebade.yaml` as its source of truth.
29
+
30
+ - **Focus:** AI only works on the "hard parts."
31
+ - **Efficiency:** ~70% token savings by not generating boilerplate.
32
+ - **Alignment:** The agent follows the rules ebade already set in stone.
33
+
34
+ ---
35
+
12
36
  > **"Code is a legacy byproduct. Intent is the source of truth."**
13
37
 
14
38
  **ebade** is not just another framework. It is a **compilation protocol** designed for an era where AI Agents are the primary developers. It shifts the paradigm from "Human-Centric Coding" to "Agentic Intent Modeling."
@@ -19,7 +43,7 @@
19
43
 
20
44
  Watch how **ebade** transforms 20 lines of YAML into a production-ready, full-stack Next.js application.
21
45
 
22
- ![ebade demo](./assets/demo.gif)
46
+ ![ebade demo](./assets/build-demo.gif)
23
47
 
24
48
  ### βš”οΈ The Battle of Entropy
25
49
 
@@ -49,9 +73,39 @@ ebade uses a high-density decorator syntax designed to fit within an Agent's con
49
73
 
50
74
  ---
51
75
 
76
+ ---
77
+
78
+ ## 🧠 The Architect: Prompt-to-Product
79
+
80
+ In **v0.4.7**, we introduced **ebade Forge** (Multi-Target Support). Now you can scaffold entire projects using just natural language for Next.js or Vanilla HTML.
81
+
82
+ ```bash
83
+ # One-shot project creation
84
+ npx ebade build "A luxury concierge service with pricing, testimonials and a gold theme"
85
+ ```
86
+
87
+ - **Intent Intelligence**: Automatically detects app type (SaaS, E-commerce, Blog).
88
+ - **Dynamic Design**: Generates a premium HSL color palette from your prompt.
89
+ - **Smart Scaffolding**: Detects needed components (`auth`, `charts`, `forms`) and dynamically creates routes.
90
+
91
+ ---
92
+
52
93
  ## πŸš€ Quick Start
53
94
 
54
- ### 1. For Agents (MCP)
95
+ ### 1. Build from Prompt (One-Shot)
96
+
97
+ ```bash
98
+ npx ebade build "Create a dark themed eco-monitor with real-time stats"
99
+ ```
100
+
101
+ ### 2. Scaffold from Intent (Professional)
102
+
103
+ ```bash
104
+ # Generate project from an existing .ebade.yaml
105
+ npx ebade scaffold examples/saas-dashboard.ebade.yaml ./my-app
106
+ ```
107
+
108
+ ### 3. For AI Agents (MCP)
55
109
 
56
110
  Add `ebade` to your AI agent (Claude, Cursor, Windsurf) via the Model Context Protocol:
57
111
 
@@ -66,13 +120,6 @@ Add `ebade` to your AI agent (Claude, Cursor, Windsurf) via the Model Context Pr
66
120
  }
67
121
  ```
68
122
 
69
- ### 2. For Humans (CLI)
70
-
71
- ```bash
72
- # Scaffold a full project from an intent file
73
- npx ebade scaffold examples/saas-dashboard.ebade.yaml ./my-app
74
- ```
75
-
76
123
  ---
77
124
 
78
125
  ## πŸ—οΈ Architecture: First Principles
@@ -101,44 +148,33 @@ ebade operates on the principle of **The Online Compiler**. It treats AI as a de
101
148
 
102
149
  ## πŸ“¦ Project Structure
103
150
 
151
+ - **`cli/`**: The core scaffolding engine & EbadeArchitect.
152
+ - **`packages/mcp-server/`**: The bridge for AI agents via MCP.
104
153
  - **`www/`**: The [ebade.dev](https://ebade.dev) landing page & playground.
105
- - **`packages/mcp-server/`**: The bridge for AI agents.
106
- - **`cli/`**: The core scaffolding engine.
107
- - **`examples/`**: Real-world intent templates.
108
-
109
- ---
110
-
111
- ## 🀝 Join the Revolution
112
-
113
- 1. **Star the repo** to show your support ⭐
114
- 2. **Become a Sponsor** to help us build a Green AI future πŸ’–
115
-
116
- ---
117
-
118
- MIT Β© ebade Contributors β€” Made with ❀️ in TΓΌrkiye πŸ‡ΉπŸ‡·
154
+ - **`examples/`**: Real-world intent templates for various app types.
119
155
 
120
156
  ---
121
157
 
122
158
  ## 🀝 Contributing
123
159
 
124
- **ebade** is open source and welcomes contributions!
160
+ **ebade** is open source and welcomes contributions! Whether it's a new adapter, a component template, or a bug fix, we'd love to have you.
125
161
 
126
162
  1. **Star this repo** ⭐
127
163
  2. **Try the MCP server** with your AI agent
128
164
  3. **Open issues** with ideas and feedback
129
165
  4. **Submit PRs** for new features
130
166
 
131
- See [CONTRIBUTING.md](./CONTRIBUTING.md) for guidelines.
167
+ See [CONTRIBUTING.md](./CONTRIBUTING.md) for full guidelines.
132
168
 
133
169
  ---
134
170
 
135
171
  ## πŸ’Ž Support the Movement
136
172
 
137
- **ebade** is an ambitious project aiming to redefine how we build software in the age of AI. Your support helps us move faster, maintain high-quality documentation, and build a more sustainable "Green AI" future.
173
+ **ebade** is an ambitious project aiming to redefine software engineering for the AI age. Your support helps us build a more sustainable "Green AI" future.
138
174
 
139
175
  - **[Become a GitHub Sponsor](https://github.com/sponsors/hasankemaldemirci)** πŸ’–
140
176
  - **Star the repo** to show your support ⭐
141
- - **Share the project** with other AI enthusiasts πŸš€
177
+ - **Share the project** with other enthusiasts πŸš€
142
178
 
143
179
  ---
144
180
 
Binary file
Binary file
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Base TargetAdapter class for ebade.
3
+ * Each platform (Next.js, HTML, Flutter, etc.) must implement this.
4
+ */
5
+ export class TargetAdapter {
6
+ constructor(colors, log) {
7
+ this.colors = colors;
8
+ this.log = log;
9
+ }
10
+
11
+ /**
12
+ * Generates the platform-specific project structure and config files.
13
+ */
14
+ generateBoilerplate(config, targetPath) {
15
+ throw new Error("generateBoilerplate() must be implemented");
16
+ }
17
+
18
+ /**
19
+ * Generates a page using preferred platform syntax.
20
+ */
21
+ generatePage(page, design) {
22
+ throw new Error("generatePage() must be implemented");
23
+ }
24
+
25
+ /**
26
+ * Generates a component using preferred platform syntax.
27
+ */
28
+ generateComponent(componentName, design) {
29
+ throw new Error("generateComponent() must be implemented");
30
+ }
31
+
32
+ /**
33
+ * Generates an API route/handler.
34
+ */
35
+ generateApiRoute(endpoint) {
36
+ throw new Error("generateApiRoute() must be implemented");
37
+ }
38
+ }
@@ -0,0 +1,73 @@
1
+ import fs from "fs";
2
+ import path from "path";
3
+ import { TargetAdapter } from "./base.js";
4
+ import { ensureDir } from "../utils.js";
5
+
6
+ export class HtmlVanillaAdapter extends TargetAdapter {
7
+ generateBoilerplate(config, projectDir) {
8
+ this.log.section("Creating Vanilla HTML project structure");
9
+
10
+ // Simple structure
11
+ const dirs = ["assets", "css", "js"];
12
+ dirs.forEach((dir) => {
13
+ ensureDir(path.join(projectDir, dir));
14
+ this.log.file(`${dir}/`);
15
+ });
16
+
17
+ // Generate style.css
18
+ const cssContent = `
19
+ :root {
20
+ --primary: ${config.design?.colors?.primary || "#6366f1"};
21
+ }
22
+ body {
23
+ font-family: sans-serif;
24
+ background: #0f172a;
25
+ color: white;
26
+ }
27
+ .container { max-width: 1200px; margin: 0 auto; padding: 2rem; }
28
+ `.trim();
29
+
30
+ fs.writeFileSync(path.join(projectDir, "styles.css"), cssContent);
31
+ this.log.file("styles.css");
32
+ }
33
+
34
+ generatePage(page, design) {
35
+ const filename = page.path === "/" ? "index.html" : `${page.intent}.html`;
36
+ const componentsHtml =
37
+ page.components
38
+ ?.map((c) => `<div class="component" id="${c}">${c} Intent</div>`)
39
+ .join("\n") || "";
40
+
41
+ return `
42
+ <!DOCTYPE html>
43
+ <html lang="en">
44
+ <head>
45
+ <meta charset="UTF-8">
46
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
47
+ <title>${page.intent}</title>
48
+ <link rel="stylesheet" href="styles.css">
49
+ </head>
50
+ <body>
51
+ <div class="container">
52
+ <h1>${page.intent} Page</h1>
53
+ <div class="components">
54
+ ${componentsHtml}
55
+ </div>
56
+ </div>
57
+ </body>
58
+ </html>
59
+ `.trim();
60
+ }
61
+
62
+ generateComponent(componentName, design) {
63
+ // For Vanilla HTML, components might just be snippets or fragments
64
+ return {
65
+ content: `<div class="ebade-component">${componentName}</div>`,
66
+ testContent: `// No unit test for vanilla HTML component yet`,
67
+ };
68
+ }
69
+
70
+ generateApiRoute(endpoint) {
71
+ return `// API Route stub for ${endpoint.path}`;
72
+ }
73
+ }