boilercraft 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.
- package/LICENSE +21 -0
- package/README.md +171 -0
- package/bin/boilercraft.js +110 -0
- package/cli/app.js +596 -0
- package/cli/ui.js +356 -0
- package/docs/STACK_ENGINE.md +93 -0
- package/docs/assets/cli-create.svg +52 -0
- package/docs/assets/cli-menu.svg +47 -0
- package/docs/stacks/dotnet-core.md +69 -0
- package/docs/stacks/laravel-vue.md +46 -0
- package/docs/stacks/nextjs.md +58 -0
- package/docs/stacks/node-express.md +58 -0
- package/docs/stacks/raw-php.md +130 -0
- package/main.js +82 -0
- package/package.json +86 -0
- package/public/index.html +721 -0
- package/public/logo.png +17 -0
- package/public/logo.svg +17 -0
- package/server.js +84 -0
- package/services/componentGenerator.js +195 -0
- package/services/engine/scaffoldEngine.js +517 -0
- package/services/engine/toolInstaller.js +232 -0
- package/services/engine/versionCatalog.js +115 -0
- package/services/generate.js +46 -0
- package/services/projectGenerator.js +686 -0
- package/services/readmeGenerator.js +221 -0
- package/services/themeGenerator.js +150 -0
- package/services/versionResolver.js +176 -0
- package/stacks/dotnet-core/overlays/api/Controllers/ProductsController.cs +33 -0
- package/stacks/dotnet-core/overlays/api/Program.cs +33 -0
- package/stacks/dotnet-core/overlays/api/wwwroot/index.html +38 -0
- package/stacks/dotnet-core/overlays/api-auth/Controllers/AuthController.cs +87 -0
- package/stacks/dotnet-core/overlays/common/Data/ApplicationDbContext.cs +25 -0
- package/stacks/dotnet-core/overlays/common/Models/Product.cs +19 -0
- package/stacks/dotnet-core/overlays/mvc/Controllers/ProductsController.cs +84 -0
- package/stacks/dotnet-core/overlays/mvc/Views/Home/Index.cshtml +23 -0
- package/stacks/dotnet-core/overlays/mvc/Views/Products/Create.cshtml +16 -0
- package/stacks/dotnet-core/overlays/mvc/Views/Products/Delete.cshtml +16 -0
- package/stacks/dotnet-core/overlays/mvc/Views/Products/Edit.cshtml +17 -0
- package/stacks/dotnet-core/overlays/mvc/Views/Products/Index.cshtml +46 -0
- package/stacks/dotnet-core/overlays/mvc/Views/Products/_Form.cshtml +19 -0
- package/stacks/dotnet-core/overlays/mvc-auth/Controllers/AccountController.cs +98 -0
- package/stacks/dotnet-core/overlays/mvc-auth/Models/AppUser.cs +48 -0
- package/stacks/dotnet-core/overlays/mvc-auth/Views/Account/Login.cshtml +35 -0
- package/stacks/dotnet-core/overlays/mvc-auth/Views/Account/Register.cshtml +41 -0
- package/stacks/dotnet-core/overlays/mvc-auth/Views/Shared/_AuthNav.cshtml +22 -0
- package/stacks/dotnet-core/snippets/packages-auth.xml +4 -0
- package/stacks/dotnet-core/snippets/packages-common.xml +5 -0
- package/stacks/dotnet-core/snippets/packages-ef.xml +4 -0
- package/stacks/dotnet-core/snippets/packages-mssql.xml +4 -0
- package/stacks/dotnet-core/snippets/packages-mysql.xml +4 -0
- package/stacks/dotnet-core/snippets/packages-swagger.xml +4 -0
- package/stacks/dotnet-core/stack.json +426 -0
- package/stacks/laravel/overlays/auth/app/Http/Controllers/Api/AuthController.php +67 -0
- package/stacks/laravel/overlays/common/app/Http/Controllers/BoilerCraftController.php +14 -0
- package/stacks/laravel/overlays/common/resources/views/boilercraft.blade.php +36 -0
- package/stacks/laravel/overlays/inertia-common/resources/views/app.blade.php +15 -0
- package/stacks/laravel/overlays/inertia-react/resources/js/Pages/Welcome.jsx +18 -0
- package/stacks/laravel/overlays/inertia-react/resources/js/app.jsx +13 -0
- package/stacks/laravel/overlays/inertia-vue/resources/js/Pages/Welcome.vue +23 -0
- package/stacks/laravel/overlays/inertia-vue/resources/js/app.js +13 -0
- package/stacks/laravel/snippets/api-routes.php +9 -0
- package/stacks/laravel/snippets/web-routes-inertia.php +7 -0
- package/stacks/laravel/snippets/web-routes.php +4 -0
- package/stacks/laravel/stack.json +477 -0
- package/stacks/nextjs/overlays/auth/src/lib/auth.js +36 -0
- package/stacks/nextjs/overlays/auth-app/src/app/api/auth/login/route.js +11 -0
- package/stacks/nextjs/overlays/auth-app/src/app/api/auth/register/route.js +14 -0
- package/stacks/nextjs/overlays/auth-pages/src/pages/api/auth/login.js +14 -0
- package/stacks/nextjs/overlays/auth-pages/src/pages/api/auth/register.js +17 -0
- package/stacks/nextjs/overlays/common/.env.example +3 -0
- package/stacks/nextjs/overlays/common/.env.local +3 -0
- package/stacks/nextjs/overlays/db/mongodb/src/lib/db.js +12 -0
- package/stacks/nextjs/overlays/db/mssql/src/lib/db.js +17 -0
- package/stacks/nextjs/overlays/db/mysql/src/lib/db.js +13 -0
- package/stacks/nextjs/overlays/router-app/src/app/api/health/route.js +10 -0
- package/stacks/nextjs/overlays/router-app/src/app/layout.js +16 -0
- package/stacks/nextjs/overlays/router-app/src/app/page.js +19 -0
- package/stacks/nextjs/overlays/router-pages/src/pages/_app.js +7 -0
- package/stacks/nextjs/overlays/router-pages/src/pages/_document.js +13 -0
- package/stacks/nextjs/overlays/router-pages/src/pages/api/health.js +8 -0
- package/stacks/nextjs/overlays/router-pages/src/pages/index.js +27 -0
- package/stacks/nextjs/stack.json +257 -0
- package/stacks/node-express/overlays/auth/src/controllers/authController.js +53 -0
- package/stacks/node-express/overlays/auth/src/middlewares/auth.js +36 -0
- package/stacks/node-express/overlays/auth/src/routes/authRoutes.js +16 -0
- package/stacks/node-express/overlays/common/.env.example +5 -0
- package/stacks/node-express/overlays/common/public/index.html +31 -0
- package/stacks/node-express/overlays/common/src/server.js +32 -0
- package/stacks/node-express/overlays/db/mongodb/src/db.js +13 -0
- package/stacks/node-express/overlays/db/mssql/src/db.js +22 -0
- package/stacks/node-express/overlays/db/mysql/src/db.js +22 -0
- package/stacks/node-express/stack.json +165 -0
- package/templates/dotnet-bootstrap-mssql/Controllers/AuthController.cs +74 -0
- package/templates/dotnet-bootstrap-mssql/Controllers/ProductsController.cs +33 -0
- package/templates/dotnet-bootstrap-mssql/Data/ApplicationDbContext.cs +24 -0
- package/templates/dotnet-bootstrap-mssql/Models/Product.cs +10 -0
- package/templates/dotnet-core/Controllers/AuthController.cs +74 -0
- package/templates/laravel-full/app/Http/Controllers/AuthController.php +79 -0
- package/templates/laravel-full/app/Http/Controllers/HomeController.php +22 -0
- package/templates/laravel-full/app/Models/User.php +49 -0
- package/templates/laravel-full/artisan +22 -0
- package/templates/laravel-full/bootstrap/app.php +21 -0
- package/templates/laravel-full/config/database.php +54 -0
- package/templates/laravel-full/database/migrations/2024_01_01_000001_create_users_table.php +27 -0
- package/templates/laravel-full/public/index.php +17 -0
- package/templates/laravel-full/resources/css/app.css +3 -0
- package/templates/laravel-full/resources/js/Pages/Home.vue +76 -0
- package/templates/laravel-full/resources/js/app.js +21 -0
- package/templates/laravel-full/resources/js/bootstrap.js +3 -0
- package/templates/laravel-full/resources/views/app.blade.php +15 -0
- package/templates/laravel-full/routes/api.php +8 -0
- package/templates/laravel-full/routes/console.php +7 -0
- package/templates/laravel-full/routes/web.php +24 -0
- package/templates/laravel-full/tailwind.config.js +12 -0
- package/templates/laravel-full/vite.config.js +20 -0
- package/templates/laravel-vue/app/Http/Controllers/Auth/AuthenticatedSessionController.php +43 -0
- package/templates/laravel-vue-mysql/app/Http/Controllers/HomeController.php +25 -0
- package/templates/laravel-vue-mysql/resources/js/Pages/Home.vue +70 -0
- package/templates/nextjs/src/app/api/auth/login/route.js +28 -0
- package/templates/nextjs-mongodb/src/app/api/health/route.js +17 -0
- package/templates/nextjs-mongodb/src/lib/mongodb.js +18 -0
- package/templates/nextjs-mssql/src/app/api/health/route.js +24 -0
- package/templates/nextjs-mssql/src/lib/mssql.js +38 -0
- package/templates/node-express/src/controllers/authController.js +53 -0
- package/templates/node-express/src/middlewares/auth.js +36 -0
- package/templates/node-express/src/routes/authRoutes.js +16 -0
- package/templates/node-mongodb/src/controllers/userController.js +30 -0
- package/templates/node-mongodb/src/middlewares/errorHandler.js +8 -0
- package/templates/node-mongodb/src/models/User.js +23 -0
- package/templates/node-mongodb/src/routes/api.js +9 -0
- package/templates/raw-php-mysql/app/Controllers/AuthController.php +73 -0
- package/templates/raw-php-mysql/app/Controllers/HomeController.php +65 -0
- package/templates/raw-php-mysql/app/Models/User.php +60 -0
- package/templates/raw-php-mysql/app/Views/404.php +15 -0
- package/templates/raw-php-mysql/app/Views/auth/login.php +66 -0
- package/templates/raw-php-mysql/app/Views/auth/register.php +71 -0
- package/templates/raw-php-mysql/app/Views/dashboard.php +50 -0
- package/templates/raw-php-mysql/app/Views/home.php +83 -0
- package/templates/raw-php-mysql/config/Auth.php +62 -0
- package/templates/raw-php-mysql/config/Database.php +100 -0
- package/templates/raw-php-mysql/config/Env.php +30 -0
- package/templates/raw-php-mysql/config/Middleware.php +53 -0
- package/templates/raw-php-mysql/config/QueryBuilder.php +109 -0
- package/templates/raw-php-mysql/config/Router.php +33 -0
- package/templates/raw-php-mysql/public/index.php +57 -0
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# 🚀 Next.js (App Router) Full Documentation & Maintenance Guide
|
|
2
|
+
|
|
3
|
+
## 📌 Overview
|
|
4
|
+
Modern **Next.js 14/15 App Router** enterprise boilerplate supporting React Server Components (RSC), Server Actions, dynamic database connections (**MongoDB**, **MSSQL**, or **MySQL**), and theming.
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## 📂 Architecture & Directory Tree
|
|
9
|
+
```text
|
|
10
|
+
├── src/
|
|
11
|
+
│ ├── app/
|
|
12
|
+
│ │ ├── api/
|
|
13
|
+
│ │ │ ├── health/route.js # System health check route handler
|
|
14
|
+
│ │ │ └── auth/login/route.js# Next.js authentication handler
|
|
15
|
+
│ │ ├── layout.jsx # Root layout with HTML data-theme injection
|
|
16
|
+
│ │ └── page.jsx # Landing page with interactive components
|
|
17
|
+
│ ├── lib/
|
|
18
|
+
│ │ └── db.js # Database connection pool / client
|
|
19
|
+
│ └── styles/
|
|
20
|
+
│ └── theme.css # Curated CSS Variable palette
|
|
21
|
+
├── package.json
|
|
22
|
+
└── .env
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## ⚡ Quick Start & Running
|
|
28
|
+
1. Install dependencies:
|
|
29
|
+
```bash
|
|
30
|
+
npm install
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
2. Start development server with hot-reload:
|
|
34
|
+
```bash
|
|
35
|
+
npm run dev
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
3. Build and run production server:
|
|
39
|
+
```bash
|
|
40
|
+
npm run build
|
|
41
|
+
npm start
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## 🗄️ Database Usage in Server Components & Routes
|
|
47
|
+
|
|
48
|
+
### Example: Querying in Route Handler (`src/app/api/users/route.js`):
|
|
49
|
+
```javascript
|
|
50
|
+
import { NextResponse } from 'next/server';
|
|
51
|
+
import { connectDB } from '@/lib/db';
|
|
52
|
+
|
|
53
|
+
export async function GET() {
|
|
54
|
+
const db = await connectDB();
|
|
55
|
+
// Execute database queries here
|
|
56
|
+
return NextResponse.json({ success: true });
|
|
57
|
+
}
|
|
58
|
+
```
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# ⚡ Node.js + Express Full Documentation & Maintenance Guide
|
|
2
|
+
|
|
3
|
+
## 📌 Overview
|
|
4
|
+
Production-ready **Node.js Express Clean Architecture** boilerplate featuring modular controllers, routes, global error handling middlewares, **JWT Authentication**, and database drivers (**MongoDB Mongoose**, **MySQL2**, or **MSSQL**).
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## 📂 Architecture & Directory Tree
|
|
9
|
+
```text
|
|
10
|
+
├── src/
|
|
11
|
+
│ ├── controllers/
|
|
12
|
+
│ │ └── authController.js # User registration, login, and profiles
|
|
13
|
+
│ ├── middlewares/
|
|
14
|
+
│ │ ├── auth.js # JWT verification & role authorization guard
|
|
15
|
+
│ │ └── errorHandler.js # Centralized error handler
|
|
16
|
+
│ ├── routes/
|
|
17
|
+
│ │ ├── authRoutes.js # Authentication endpoints
|
|
18
|
+
│ │ └── api.js # Resource endpoints
|
|
19
|
+
│ ├── db.js # Unified database connection connector
|
|
20
|
+
│ └── server.js # Express server configuration
|
|
21
|
+
├── public/ # Static assets & theme files
|
|
22
|
+
├── package.json
|
|
23
|
+
└── .env
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## ⚡ Quick Start & Running
|
|
29
|
+
1. Install dependencies:
|
|
30
|
+
```bash
|
|
31
|
+
npm install
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
2. Start development server (with hot auto-reload):
|
|
35
|
+
```bash
|
|
36
|
+
npm run dev
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## 🔐 Route Authentication & Role Guards
|
|
42
|
+
Protecting endpoints in `src/routes/api.js`:
|
|
43
|
+
|
|
44
|
+
```javascript
|
|
45
|
+
const express = require('express');
|
|
46
|
+
const router = express.Router();
|
|
47
|
+
const { auth, role } = require('../middlewares/auth');
|
|
48
|
+
|
|
49
|
+
// Protected for any authenticated user
|
|
50
|
+
router.get('/profile', auth, (req, res) => {
|
|
51
|
+
res.json({ user: req.user });
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
// Protected for 'admin' role only
|
|
55
|
+
router.delete('/user/:id', auth, role('admin'), (req, res) => {
|
|
56
|
+
res.json({ message: 'User deleted' });
|
|
57
|
+
});
|
|
58
|
+
```
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
# 🐘 Raw PHP (MVC) Full Documentation & Maintenance Guide
|
|
2
|
+
|
|
3
|
+
## 📌 Overview
|
|
4
|
+
This boilerplate provides a production-grade, zero-dependency MVC framework in pure PHP, featuring a **Singleton Multi-Driver PDO**, **Fluent QueryBuilder**, **Session Authentication with Role Guards**, and **Native .env parsing**.
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## 📂 Architecture & Directory Tree
|
|
9
|
+
```text
|
|
10
|
+
├── app/
|
|
11
|
+
│ ├── Controllers/
|
|
12
|
+
│ │ ├── HomeController.php # Landing page, health check, AJAX demo
|
|
13
|
+
│ │ └── AuthController.php # Register, Login, Session handling
|
|
14
|
+
│ ├── Models/
|
|
15
|
+
│ │ └── User.php # User model leveraging QueryBuilder & Auto-Schema
|
|
16
|
+
│ └── Views/
|
|
17
|
+
│ ├── home.php # Dynamic Landing view (AJAX + jQuery demo)
|
|
18
|
+
│ ├── dashboard.php # Protected Dashboard with role badges
|
|
19
|
+
│ ├── 404.php # Error page
|
|
20
|
+
│ └── auth/
|
|
21
|
+
│ ├── login.php # AJAX login interface
|
|
22
|
+
│ └── register.php # AJAX register interface
|
|
23
|
+
├── config/
|
|
24
|
+
│ ├── Database.php # Multi-driver PDO (MySQL, MSSQL, SQLite, Postgres)
|
|
25
|
+
│ ├── QueryBuilder.php # Fluent SQL Query Builder
|
|
26
|
+
│ ├── Auth.php # Session authentication & Role manager
|
|
27
|
+
│ ├── Middleware.php # Route guards (auth, guest, role)
|
|
28
|
+
│ ├── Router.php # Lightweight custom URL dispatcher
|
|
29
|
+
│ └── Env.php # Native .env parser (No composer needed)
|
|
30
|
+
├── public/ # Web Document Root
|
|
31
|
+
│ ├── index.php # Front Controller & Route dispatcher
|
|
32
|
+
│ ├── css/theme.css # Theme variable stylesheet
|
|
33
|
+
│ └── js/theme.js # Theme switching script
|
|
34
|
+
└── .env # Local Environment configuration
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
## ⚡ Quick Start & Running
|
|
40
|
+
1. Open your terminal in the generated project root.
|
|
41
|
+
2. Run the built-in PHP development server:
|
|
42
|
+
```bash
|
|
43
|
+
php -S localhost:8000 -t public
|
|
44
|
+
```
|
|
45
|
+
3. Open your browser at: `http://localhost:8000`
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## 🔐 Authentication & Route Guards
|
|
50
|
+
Protecting routes in `public/index.php`:
|
|
51
|
+
|
|
52
|
+
```php
|
|
53
|
+
use App\Config\Middleware;
|
|
54
|
+
|
|
55
|
+
// 1. Authenticated Users Only:
|
|
56
|
+
$router->get('/dashboard', function() {
|
|
57
|
+
Middleware::auth(); // Redirects unauthenticated visitors to /login
|
|
58
|
+
require __DIR__ . '/../app/Views/dashboard.php';
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
// 2. Specific Role Guard (e.g. 'admin'):
|
|
62
|
+
$router->get('/admin', function() {
|
|
63
|
+
Middleware::role('admin'); // Returns 403 Forbidden if not admin
|
|
64
|
+
require __DIR__ . '/../app/Views/admin.php';
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
// 3. Guest Only (Redirects logged-in users away from login/register):
|
|
68
|
+
$router->get('/login', function() {
|
|
69
|
+
Middleware::guest();
|
|
70
|
+
(new AuthController())->showLogin();
|
|
71
|
+
});
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
## 🗄️ QueryBuilder Usage Guide
|
|
77
|
+
|
|
78
|
+
### Fetch Records:
|
|
79
|
+
```php
|
|
80
|
+
use App\Config\QueryBuilder;
|
|
81
|
+
|
|
82
|
+
// Select specific columns with conditions & ordering
|
|
83
|
+
$users = QueryBuilder::table('users')
|
|
84
|
+
->select(['id', 'name', 'email'])
|
|
85
|
+
->where('role', 'user')
|
|
86
|
+
->orderBy('id', 'DESC')
|
|
87
|
+
->limit(10)
|
|
88
|
+
->get();
|
|
89
|
+
|
|
90
|
+
// Find single record
|
|
91
|
+
$user = QueryBuilder::table('users')->where('id', 1)->first();
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### Insert & Update:
|
|
95
|
+
```php
|
|
96
|
+
// Insert
|
|
97
|
+
QueryBuilder::table('users')->insert([
|
|
98
|
+
'name' => 'John Doe',
|
|
99
|
+
'email' => 'john@example.com',
|
|
100
|
+
'role' => 'user'
|
|
101
|
+
]);
|
|
102
|
+
|
|
103
|
+
// Update
|
|
104
|
+
QueryBuilder::table('users')
|
|
105
|
+
->where('id', 1)
|
|
106
|
+
->update(['name' => 'Updated Name']);
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
---
|
|
110
|
+
|
|
111
|
+
## 🗄️ Database Configuration (.env)
|
|
112
|
+
Edit your `.env` file to switch databases seamlessly:
|
|
113
|
+
|
|
114
|
+
```ini
|
|
115
|
+
# MySQL
|
|
116
|
+
DB_CONNECTION=mysql
|
|
117
|
+
DB_HOST=127.0.0.1
|
|
118
|
+
DB_PORT=3306
|
|
119
|
+
DB_NAME=my_app_db
|
|
120
|
+
DB_USER=root
|
|
121
|
+
DB_PASS=
|
|
122
|
+
|
|
123
|
+
# OR Microsoft SQL Server (MSSQL)
|
|
124
|
+
# DB_CONNECTION=mssql
|
|
125
|
+
# DB_HOST=127.0.0.1
|
|
126
|
+
# DB_PORT=1433
|
|
127
|
+
# DB_NAME=my_app_db
|
|
128
|
+
# DB_USER=sa
|
|
129
|
+
# DB_PASS=YourStrong@Password
|
|
130
|
+
```
|
package/main.js
ADDED
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
const { app, BrowserWindow, dialog, ipcMain } = require('electron');
|
|
2
|
+
const path = require('path');
|
|
3
|
+
const { autoUpdater } = require('electron-updater');
|
|
4
|
+
const { startServer } = require('./server');
|
|
5
|
+
|
|
6
|
+
let mainWindow;
|
|
7
|
+
|
|
8
|
+
autoUpdater.autoDownload = true;
|
|
9
|
+
autoUpdater.autoInstallOnAppQuit = true;
|
|
10
|
+
|
|
11
|
+
function setupAutoUpdater() {
|
|
12
|
+
autoUpdater.on('update-downloaded', (info) => {
|
|
13
|
+
dialog.showMessageBox({
|
|
14
|
+
type: 'info',
|
|
15
|
+
title: 'Update Ready — BoilerCraft Studio',
|
|
16
|
+
message: `A brand new version (${info.version}) of BoilerCraft Studio has been downloaded automatically.`,
|
|
17
|
+
buttons: ['Restart Now to Update', 'Later']
|
|
18
|
+
}).then((buttonIndex) => {
|
|
19
|
+
if (buttonIndex.response === 0) {
|
|
20
|
+
autoUpdater.quitAndInstall();
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
function createWindow(port) {
|
|
27
|
+
mainWindow = new BrowserWindow({
|
|
28
|
+
width: 1380,
|
|
29
|
+
height: 920,
|
|
30
|
+
minWidth: 1080,
|
|
31
|
+
minHeight: 720,
|
|
32
|
+
title: 'BoilerCraft Studio',
|
|
33
|
+
icon: path.join(__dirname, 'assets', 'icon.png'),
|
|
34
|
+
backgroundColor: '#ffffff',
|
|
35
|
+
autoHideMenuBar: true,
|
|
36
|
+
show: false,
|
|
37
|
+
webPreferences: {
|
|
38
|
+
nodeIntegration: true,
|
|
39
|
+
contextIsolation: false
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
mainWindow.loadURL(`http://localhost:${port}`);
|
|
44
|
+
|
|
45
|
+
mainWindow.once('ready-to-show', () => {
|
|
46
|
+
mainWindow.show();
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
mainWindow.on('closed', function () {
|
|
50
|
+
mainWindow = null;
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
// IPC handler to open native Windows Folder Picker dialog
|
|
55
|
+
ipcMain.handle('select-directory', async () => {
|
|
56
|
+
const result = await dialog.showOpenDialog(mainWindow, {
|
|
57
|
+
properties: ['openDirectory', 'createDirectory'],
|
|
58
|
+
title: 'Select Destination Folder for Your Project'
|
|
59
|
+
});
|
|
60
|
+
if (result.canceled || !result.filePaths || result.filePaths.length === 0) {
|
|
61
|
+
return null;
|
|
62
|
+
}
|
|
63
|
+
return result.filePaths[0];
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
app.whenReady().then(() => {
|
|
67
|
+
startServer((port) => {
|
|
68
|
+
createWindow(port);
|
|
69
|
+
if (app.isPackaged) {
|
|
70
|
+
setupAutoUpdater();
|
|
71
|
+
autoUpdater.checkForUpdatesAndNotify();
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
app.on('activate', function () {
|
|
76
|
+
if (BrowserWindow.getAllWindows().length === 0) createWindow(4800);
|
|
77
|
+
});
|
|
78
|
+
});
|
|
79
|
+
|
|
80
|
+
app.on('window-all-closed', function () {
|
|
81
|
+
if (process.platform !== 'darwin') app.quit();
|
|
82
|
+
});
|
package/package.json
ADDED
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "boilercraft",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Create Laravel, Next.js, Express and .NET projects with the official tooling — any version, auth, themes. Run: npx boilercraft",
|
|
5
|
+
"main": "main.js",
|
|
6
|
+
"scripts": {
|
|
7
|
+
"start": "node server.js",
|
|
8
|
+
"desktop": "electron .",
|
|
9
|
+
"dev": "node server.js",
|
|
10
|
+
"build:exe": "electron-builder --win portable",
|
|
11
|
+
"cli": "node bin/boilercraft.js"
|
|
12
|
+
},
|
|
13
|
+
"build": {
|
|
14
|
+
"appId": "com.argrabbi.boilercraft",
|
|
15
|
+
"productName": "BoilerCraft Studio",
|
|
16
|
+
"publish": {
|
|
17
|
+
"provider": "github",
|
|
18
|
+
"owner": "itrabbi24",
|
|
19
|
+
"repo": "BoilerCraft"
|
|
20
|
+
},
|
|
21
|
+
"win": {
|
|
22
|
+
"icon": "assets/icon.png",
|
|
23
|
+
"target": [
|
|
24
|
+
"nsis",
|
|
25
|
+
"portable"
|
|
26
|
+
],
|
|
27
|
+
"requestedExecutionLevel": "asInvoker"
|
|
28
|
+
},
|
|
29
|
+
"directories": {
|
|
30
|
+
"output": "dist"
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
"keywords": [
|
|
34
|
+
"boilerplate",
|
|
35
|
+
"scaffolding",
|
|
36
|
+
"nextjs",
|
|
37
|
+
"laravel",
|
|
38
|
+
"nodejs",
|
|
39
|
+
"dotnet",
|
|
40
|
+
"generator",
|
|
41
|
+
"cli",
|
|
42
|
+
"scaffold",
|
|
43
|
+
"create-app",
|
|
44
|
+
"npx"
|
|
45
|
+
],
|
|
46
|
+
"author": "ARG RABBI",
|
|
47
|
+
"license": "MIT",
|
|
48
|
+
"type": "commonjs",
|
|
49
|
+
"dependencies": {
|
|
50
|
+
"archiver": "^8.0.0",
|
|
51
|
+
"axios": "^1.20.0",
|
|
52
|
+
"cors": "^2.8.6",
|
|
53
|
+
"ejs": "^6.0.1",
|
|
54
|
+
"express": "^5.2.1"
|
|
55
|
+
},
|
|
56
|
+
"devDependencies": {
|
|
57
|
+
"concurrently": "^10.0.5",
|
|
58
|
+
"electron": "^44.4.5",
|
|
59
|
+
"electron-builder": "^26.15.3",
|
|
60
|
+
"wait-on": "^9.1.0",
|
|
61
|
+
"electron-updater": "^6.8.9"
|
|
62
|
+
},
|
|
63
|
+
"bin": {
|
|
64
|
+
"boilercraft": "bin/boilercraft.js"
|
|
65
|
+
},
|
|
66
|
+
"engines": {
|
|
67
|
+
"node": ">=18.3"
|
|
68
|
+
},
|
|
69
|
+
"files": [
|
|
70
|
+
"bin/",
|
|
71
|
+
"cli/",
|
|
72
|
+
"services/",
|
|
73
|
+
"stacks/",
|
|
74
|
+
"templates/",
|
|
75
|
+
"public/",
|
|
76
|
+
"docs/",
|
|
77
|
+
"server.js",
|
|
78
|
+
"README.md",
|
|
79
|
+
"LICENSE"
|
|
80
|
+
],
|
|
81
|
+
"repository": {
|
|
82
|
+
"type": "git",
|
|
83
|
+
"url": "git+https://github.com/itrabbi24/BoilerCraft.git"
|
|
84
|
+
},
|
|
85
|
+
"homepage": "https://github.com/itrabbi24/BoilerCraft#readme"
|
|
86
|
+
}
|