create-powerapp 1.0.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.
@@ -0,0 +1,36 @@
1
+ ---
2
+ name: Bug report
3
+ about: Something didn't work as expected
4
+ title: "[Bug] "
5
+ labels: bug
6
+ assignees: ''
7
+ ---
8
+
9
+ ## What happened?
10
+
11
+ <!-- Describe what went wrong. What did you expect to happen instead? -->
12
+
13
+ ## Steps to reproduce
14
+
15
+ 1. Ran `npx create-powerapp`
16
+ 2. Selected app type: <!-- Canvas App / Model-Driven App / PCF / Power Pages / Code App -->
17
+ 3. Selected AI assistant: <!-- GitHub Copilot / Claude Code -->
18
+ 4. ...
19
+
20
+ ## Error message
21
+
22
+ <!-- Paste the full error output here -->
23
+ ```
24
+ paste error here
25
+ ```
26
+
27
+ ## Environment
28
+
29
+ - **OS:** <!-- Windows 11 / macOS 14 / Ubuntu 22.04 -->
30
+ - **Node.js version:** <!-- run: node --version -->
31
+ - **npm version:** <!-- run: npm --version -->
32
+ - **PAC CLI version:** <!-- run: pac --version -->
33
+
34
+ ## Additional context
35
+
36
+ <!-- Anything else that might help — screenshots, partial output, etc. -->
@@ -0,0 +1,23 @@
1
+ ---
2
+ name: Feature request
3
+ about: Suggest an improvement or new app type
4
+ title: "[Feature] "
5
+ labels: enhancement
6
+ assignees: ''
7
+ ---
8
+
9
+ ## What would you like?
10
+
11
+ <!-- Describe the feature clearly. What should it do? -->
12
+
13
+ ## Why would this be useful?
14
+
15
+ <!-- Who benefits and how? -->
16
+
17
+ ## What app type does this relate to?
18
+
19
+ <!-- Canvas App / Model-Driven App / PCF / Power Pages / Code App / All / New type -->
20
+
21
+ ## Any ideas on how to implement it?
22
+
23
+ <!-- Optional — rough ideas, links to docs, examples -->
@@ -0,0 +1,103 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+ branches: [main]
8
+
9
+ jobs:
10
+ test:
11
+ name: Smoke test — scaffold all app types
12
+ runs-on: ${{ matrix.os }}
13
+ strategy:
14
+ matrix:
15
+ os: [ubuntu-latest, windows-latest, macos-latest]
16
+ node-version: [18, 20, 22]
17
+
18
+ steps:
19
+ - name: Checkout
20
+ uses: actions/checkout@v4
21
+
22
+ - name: Set up Node.js ${{ matrix.node-version }}
23
+ uses: actions/setup-node@v4
24
+ with:
25
+ node-version: ${{ matrix.node-version }}
26
+
27
+ - name: Verify Node and npm versions
28
+ run: |
29
+ node --version
30
+ npm --version
31
+
32
+ - name: Scaffold Canvas App (Copilot)
33
+ run: |
34
+ printf 'test-canvas\n1\n1\n\n' | node index.js
35
+ shell: bash
36
+
37
+ - name: Check Canvas App files exist
38
+ run: |
39
+ test -f test-canvas/.gitignore
40
+ test -f test-canvas/.env
41
+ test -f test-canvas/README.md
42
+ test -f test-canvas/instructions/canvas-instructions.md
43
+ test -f test-canvas/prompts/starter.md
44
+ test -f test-canvas/.github/copilot-instructions.md
45
+ test -d test-canvas/canvas-src/Src
46
+ test -d test-canvas/canvas-src/Assets
47
+ shell: bash
48
+
49
+ - name: Scaffold Model-Driven App (Claude Code)
50
+ run: |
51
+ printf 'test-mda\n2\n2\n\n' | node index.js
52
+ shell: bash
53
+
54
+ - name: Check MDA files exist
55
+ run: |
56
+ test -f test-mda/.gitignore
57
+ test -f test-mda/CLAUDE.md
58
+ test -f test-mda/instructions/mda-instructions.md
59
+ test -f test-mda/prompts/starter.md
60
+ shell: bash
61
+
62
+ - name: Scaffold PCF Component
63
+ run: |
64
+ printf 'test-pcf\n3\n1\n\n' | node index.js
65
+ shell: bash
66
+
67
+ - name: Scaffold Power Pages
68
+ run: |
69
+ printf 'test-pages\n4\n2\n\n' | node index.js
70
+ shell: bash
71
+
72
+ - name: Check Power Pages folder structure
73
+ run: |
74
+ test -d test-pages/site/web-files
75
+ test -d test-pages/site/web-pages
76
+ test -d test-pages/site/web-templates
77
+ shell: bash
78
+
79
+ - name: Scaffold Code App
80
+ run: |
81
+ printf 'test-codeapp\n5\n1\n\n' | node index.js
82
+ shell: bash
83
+
84
+ - name: Check Code App files exist
85
+ run: |
86
+ test -f test-codeapp/package.json
87
+ test -f test-codeapp/tsconfig.json
88
+ test -f test-codeapp/src/App.tsx
89
+ node -e "JSON.parse(require('fs').readFileSync('test-codeapp/package.json','utf8'))"
90
+ shell: bash
91
+
92
+ lint:
93
+ name: Check syntax
94
+ runs-on: ubuntu-latest
95
+ steps:
96
+ - uses: actions/checkout@v4
97
+ - uses: actions/setup-node@v4
98
+ with:
99
+ node-version: 20
100
+ - name: Check index.js parses without errors
101
+ run: node --check index.js
102
+ - name: Check package.json is valid JSON
103
+ run: node -e "JSON.parse(require('fs').readFileSync('package.json','utf8')); console.log('package.json OK')"
package/CHANGELOG.md ADDED
@@ -0,0 +1,26 @@
1
+ # Changelog
2
+
3
+ All notable changes to `create-powerapp` will be documented here.
4
+
5
+ Format follows [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
6
+ Version numbers follow [Semantic Versioning](https://semver.org/) — `MAJOR.MINOR.PATCH`.
7
+
8
+ ---
9
+
10
+ ## [1.0.0] — 2026-05-28
11
+
12
+ ### Added
13
+ - Interactive CLI with four questions: project name, app type, AI assistant, environment URL
14
+ - Scaffold support for five Power Apps types: Canvas App, Model-Driven App, PCF Component, Power Pages, Code App
15
+ - Auto-generated `.gitignore`, `.env`, `README.md` for every project
16
+ - `instructions/` folder with AI context files tailored to each app type
17
+ - `prompts/starter.md` with copy-paste first prompts for each app type
18
+ - `CLAUDE.md` generation for Claude Code users
19
+ - `.github/copilot-instructions.md` generation for GitHub Copilot users
20
+ - Automatic `git init` and first commit
21
+ - Automatic `pac auth create` when environment URL is provided
22
+ - Automatic `code .` to open VS Code after scaffolding
23
+ - `package.json` and `tsconfig.json` for Code App projects
24
+ - Full VS Code setup guide in `docs/setup-guide.md`
25
+ - GitHub Actions CI workflow
26
+ - MIT licence
@@ -0,0 +1,130 @@
1
+ # Contributing to create-powerapp
2
+
3
+ Thank you for wanting to help! This project is designed to be easy to contribute to — even if you are new to open-source.
4
+
5
+ ---
6
+
7
+ ## Ways to contribute
8
+
9
+ - **Fix a bug** — something doesn't work as described? Open an issue or a pull request
10
+ - **Improve a template** — the scaffolded files for a specific app type could be better
11
+ - **Improve the docs** — the setup guide or README could be clearer for beginners
12
+ - **Add a new app type** — want to support a new Power Platform project type?
13
+ - **Add starter prompts** — better copy-paste first prompts for each app type
14
+
15
+ ---
16
+
17
+ ## Getting started
18
+
19
+ ### 1. Fork and clone the repo
20
+
21
+ ```bash
22
+ # Fork the repo on GitHub (click Fork at the top right), then:
23
+ git clone https://github.com/YOUR-USERNAME/create-powerapp.git
24
+ cd create-powerapp
25
+ ```
26
+
27
+ ### 2. Make sure Node.js 18+ is installed
28
+
29
+ ```bash
30
+ node --version # should print v18 or higher
31
+ ```
32
+
33
+ No other dependencies are needed — this tool uses only Node.js built-ins.
34
+
35
+ ### 3. Test your changes locally
36
+
37
+ ```bash
38
+ # Run the CLI directly from your local clone
39
+ node index.js
40
+ ```
41
+
42
+ Answer the questions as a user would. Check that the files created in the output folder look correct.
43
+
44
+ ### 4. Create a branch
45
+
46
+ ```bash
47
+ git checkout -b fix/canvas-gitignore
48
+ # or
49
+ git checkout -b feat/add-power-automate-template
50
+ ```
51
+
52
+ Use a descriptive branch name that explains what you changed.
53
+
54
+ ### 5. Make your changes
55
+
56
+ The entire tool lives in `index.js`. It is structured in clearly labelled sections:
57
+
58
+ ```
59
+ // ─── Colour helpers ──────────────────────────────────────────────────────────
60
+ // ─── readline helper ─────────────────────────────────────────────────────────
61
+ // ─── run shell command ────────────────────────────────────────────────────────
62
+ // ─── shared file content ──────────────────────────────────────────────────────
63
+ // ─── App-type scaffolders ─────────────────────────────────────────────────────
64
+ // scaffoldCanvas()
65
+ // scaffoldMDA()
66
+ // scaffoldPCF()
67
+ // scaffoldPowerPages()
68
+ // scaffoldCodeApp()
69
+ // ─── AI context file writer ───────────────────────────────────────────────────
70
+ // ─── Main ─────────────────────────────────────────────────────────────────────
71
+ ```
72
+
73
+ To **add a new app type**, you need to:
74
+ 1. Add a new `scaffold<AppType>()` function in the "App-type scaffolders" section
75
+ 2. Add an entry to the `choose()` call in `main()` under "App type"
76
+ 3. Add a `case` for it in the `switch` statement in `main()`
77
+ 4. Update `README.md` to document the new app type
78
+
79
+ To **improve a template** (e.g. better AI instructions for Canvas Apps), find the relevant `scaffold*()` function and edit the file content strings inside it.
80
+
81
+ To **improve the docs**, edit `docs/setup-guide.md`.
82
+
83
+ ### 6. Commit and push
84
+
85
+ ```bash
86
+ git add .
87
+ git commit -m "fix: improve canvas app gitignore to exclude .msapp files"
88
+ git push origin your-branch-name
89
+ ```
90
+
91
+ **Commit message format** — please use one of these prefixes so the changelog is easy to read:
92
+
93
+ | Prefix | Use for |
94
+ |---|---|
95
+ | `feat:` | A new feature or app type |
96
+ | `fix:` | A bug fix |
97
+ | `docs:` | Documentation changes only |
98
+ | `chore:` | Maintenance (version bumps, CI tweaks) |
99
+ | `refactor:` | Code restructuring with no behaviour change |
100
+
101
+ ### 7. Open a pull request
102
+
103
+ Go to GitHub, open a pull request from your branch to `main`. Describe:
104
+ - What you changed
105
+ - Why you changed it
106
+ - How you tested it (which app types did you scaffold and check?)
107
+
108
+ ---
109
+
110
+ ## Code style
111
+
112
+ - This tool intentionally uses **zero external dependencies** — only Node.js built-ins (`fs`, `path`, `readline`, `child_process`). Please do not add npm dependencies.
113
+ - Keep the file content strings in each `scaffold*()` function **readable and well-commented** — these are the files beginners will see first.
114
+ - Add a plain-English comment above any logic that isn't immediately obvious.
115
+
116
+ ---
117
+
118
+ ## Reporting bugs
119
+
120
+ Open an issue using the **Bug report** template. Include:
121
+ - Your OS (Windows / macOS / Linux)
122
+ - Node.js version (`node --version`)
123
+ - Which app type you selected
124
+ - The full error message or unexpected output
125
+
126
+ ---
127
+
128
+ ## Questions
129
+
130
+ Open an issue with the **Question** label or start a GitHub Discussion. There are no stupid questions.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 create-powerapp contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,137 @@
1
+ # create-powerapp ⚡
2
+
3
+ > One command to scaffold any Power Apps project — ready to vibe-code with GitHub Copilot or Claude Code.
4
+
5
+ ```bash
6
+ npx create-powerapp
7
+ ```
8
+
9
+ No config files to write. No folder structure to figure out. Just answer four questions and your project is ready to open in VS Code with your AI assistant.
10
+
11
+ ---
12
+
13
+ ## What it does
14
+
15
+ Running `npx create-powerapp` asks you four questions:
16
+
17
+ ```
18
+ ▶ Project name: employee-leave-app
19
+
20
+ ▶ App type:
21
+ 1. Canvas App — Design every screen. Best for custom employee tools & mobile apps
22
+ 2. Model-Driven App — Database-first. Great for CRM / record management
23
+ 3. PCF Component — A reusable custom control to embed inside other Power Apps
24
+ 4. Power Pages — A public-facing website connected to Dataverse
25
+ 5. Code App — A full custom web app (React/TypeScript) on Power Platform
26
+
27
+ ▶ AI assistant:
28
+ 1. GitHub Copilot
29
+ 2. Claude Code
30
+
31
+ ▶ Power Platform environment URL (optional): https://yourorg.crm.dynamics.com
32
+ ```
33
+
34
+ Then it automatically creates everything in under 10 seconds:
35
+
36
+ | What gets created | Why |
37
+ |---|---|
38
+ | Project folder with correct structure | Right layout for your app type from day one |
39
+ | `.gitignore` | Passwords and generated files never get uploaded by accident |
40
+ | `.env` | Safe place for your environment URL and secrets |
41
+ | `README.md` | Project overview with useful PAC CLI commands |
42
+ | `instructions/` | AI context files that teach your AI how this app type works |
43
+ | `prompts/starter.md` | Copy-paste first prompts to build your first screens immediately |
44
+ | `CLAUDE.md` or `.github/copilot-instructions.md` | Your AI reads this to understand the project |
45
+ | Git initialised + first commit | Version control ready immediately |
46
+ | `pac auth create` (if URL given) | Signs you into your Power Platform environment |
47
+ | VS Code opened automatically | Jump straight into building |
48
+
49
+ ---
50
+
51
+ ## Prerequisites
52
+
53
+ You need these installed once on your machine. The [VS Code Setup Guide](docs/setup-guide.md) walks through every step in plain English.
54
+
55
+ | Tool | What it is | Install |
56
+ |---|---|---|
57
+ | **Node.js 18+** | Required to run this tool | [nodejs.org](https://nodejs.org) → download LTS |
58
+ | **Git** | Version control | [git-scm.com](https://git-scm.com) |
59
+ | **PAC CLI** | Connects to Power Apps | `npm install -g pac` |
60
+ | **VS Code** | Your coding editor | [code.visualstudio.com](https://code.visualstudio.com) |
61
+ | **GitHub Copilot** or **Claude Code** | Your AI assistant | See setup guide |
62
+
63
+ ---
64
+
65
+ ## Quick start
66
+
67
+ ```bash
68
+ # Run directly — no install needed, always uses latest version
69
+ npx create-powerapp
70
+
71
+ # Or install globally so you can run it anytime
72
+ npm install -g create-powerapp
73
+ create-powerapp
74
+ ```
75
+
76
+ After the command finishes:
77
+
78
+ 1. VS Code opens automatically with your project
79
+ 2. Open `prompts/starter.md` — copy-paste prompts for your first screens
80
+ 3. Open your AI assistant (Copilot Chat icon, or `claude` in the terminal)
81
+ 4. Paste a prompt and start building
82
+
83
+ ---
84
+
85
+ ## Full setup guide
86
+
87
+ New to VS Code, Power Apps, or vibe coding entirely? Read the full step-by-step guide:
88
+
89
+ **[📖 VS Code Setup Guide for Vibe Coding](docs/setup-guide.md)**
90
+
91
+ It covers everything from installing VS Code for the first time to writing your first AI prompt — with plain-English explanations and a glossary of every technical term.
92
+
93
+ ---
94
+
95
+ ## Supported app types
96
+
97
+ | App type | Best for | Key files created |
98
+ |---|---|---|
99
+ | **Canvas App** | Custom employee tools, mobile apps, branded interfaces | `canvas-src/` (unpacked YAML), instructions, starter prompts |
100
+ | **Model-Driven App** | CRM tools, record management, data-heavy apps | `solutions/` placeholder, MDA instructions, starter prompts |
101
+ | **PCF Component** | Custom interactive controls embedded in other Power Apps | PCF instructions, starter prompts with `pac pcf init` command |
102
+ | **Power Pages** | External customer/partner portals | `site/` folder structure, Power Pages instructions |
103
+ | **Code App** | Full custom React/TypeScript web apps on Power Platform | `src/`, `package.json`, `tsconfig.json`, Code App instructions |
104
+
105
+ ---
106
+
107
+ ## Repository structure
108
+
109
+ ```
110
+ create-powerapp/
111
+ ├── index.js ← CLI entry point (the tool itself)
112
+ ├── package.json ← npm package config
113
+ ├── LICENSE ← MIT licence
114
+ ├── README.md ← This file
115
+ ├── CONTRIBUTING.md ← How to contribute
116
+ ├── CHANGELOG.md ← Version history
117
+ ├── docs/
118
+ │ └── setup-guide.md ← Full beginner VS Code + vibe coding guide
119
+ └── .github/
120
+ ├── workflows/
121
+ │ └── ci.yml ← Automated tests on every pull request
122
+ └── ISSUE_TEMPLATE/
123
+ ├── bug_report.md
124
+ └── feature_request.md
125
+ ```
126
+
127
+ ---
128
+
129
+ ## Contributing
130
+
131
+ Contributions are welcome — whether that's fixing a bug, adding a new app type template, or improving the beginner docs. See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.
132
+
133
+ ---
134
+
135
+ ## Licence
136
+
137
+ MIT — see [LICENSE](LICENSE).