vasuzex 2.0.6 → 2.0.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.
package/README.md
CHANGED
|
@@ -579,10 +579,22 @@ pnpm start
|
|
|
579
579
|
|
|
580
580
|
## 📚 Documentation
|
|
581
581
|
|
|
582
|
-
|
|
583
|
-
- [
|
|
584
|
-
- [
|
|
585
|
-
- [
|
|
582
|
+
### Getting Started
|
|
583
|
+
- 🚀 [**Full Stack Setup**](./docs/FULL_STACK_SETUP.md) - Quick reference for fullstack apps
|
|
584
|
+
- 📖 [Full Stack Guide](./docs/getting-started/fullstack-guide.md) - Complete fullstack tutorial
|
|
585
|
+
- 📦 [Installation](./docs/getting-started/installation.md) - Detailed setup guide
|
|
586
|
+
- 🏗️ [Project Structure](./docs/getting-started/project-structure.md) - Understanding the structure
|
|
587
|
+
|
|
588
|
+
### Advanced
|
|
589
|
+
- 🔄 [Migration Results](./MIGRATION_RESULTS.md) - V2 migration details
|
|
590
|
+
- 📦 [Dependency Strategy](./docs/DEPENDENCY_MANAGEMENT_STRATEGY.md) - Why hybrid approach?
|
|
591
|
+
- 🔗 [Import Aliases](./docs/IMPORT_ALIASES.md) - How to import modules
|
|
592
|
+
- 🗄️ [Database Guide](./docs/database/getting-started.md) - Database & migrations
|
|
593
|
+
|
|
594
|
+
### Configuration
|
|
595
|
+
All 26 config files are in `./config/` directory:
|
|
596
|
+
- `auth.cjs`, `database.cjs`, `mail.cjs`, `sms.cjs`, `payment.cjs`, etc.
|
|
597
|
+
- See [Full Stack Setup](./docs/FULL_STACK_SETUP.md) for complete list
|
|
586
598
|
|
|
587
599
|
---
|
|
588
600
|
|
package/bin/create-vasuzex.js
CHANGED
|
@@ -197,6 +197,7 @@ async function createPackageJson(projectName, targetDir, spinner) {
|
|
|
197
197
|
},
|
|
198
198
|
keywords: ['vasuzex', 'nodejs', 'framework', 'v2'],
|
|
199
199
|
dependencies: {
|
|
200
|
+
vasuzex: isLocalDev ? `file:${frameworkRoot}` : '^2.0.6',
|
|
200
201
|
axios: '^1.13.2',
|
|
201
202
|
bcrypt: '^6.0.0',
|
|
202
203
|
bcryptjs: '^2.4.3',
|
|
@@ -218,6 +219,8 @@ async function createPackageJson(projectName, targetDir, spinner) {
|
|
|
218
219
|
sharp: '^0.33.5',
|
|
219
220
|
react: '^18.2.0',
|
|
220
221
|
'react-dom': '^18.2.0',
|
|
222
|
+
'react-redux': '^9.1.0',
|
|
223
|
+
'@reduxjs/toolkit': '^2.0.1',
|
|
221
224
|
vue: '^3.4.0',
|
|
222
225
|
svelte: '^4.2.0'
|
|
223
226
|
},
|
|
@@ -11,20 +11,14 @@ import {
|
|
|
11
11
|
import {
|
|
12
12
|
generateBaseControllerTemplate,
|
|
13
13
|
generateAuthControllerTemplate,
|
|
14
|
-
generatePostControllerTemplate,
|
|
15
|
-
generateCommentControllerTemplate,
|
|
16
|
-
generateUserModelTemplate,
|
|
17
14
|
generateAuthServiceTemplate,
|
|
18
15
|
generateAuthMiddlewareTemplate,
|
|
19
16
|
generateErrorHandlerTemplate,
|
|
20
17
|
generateAuthRequestsTemplate,
|
|
21
18
|
generateAuthRoutesTemplate,
|
|
22
|
-
generatePostRoutesTemplate,
|
|
23
19
|
generateRoutesIndexTemplate,
|
|
24
20
|
generateDatabaseConfigTemplate,
|
|
25
21
|
generateEnvHelperTemplate,
|
|
26
|
-
generateUsersMigrationTemplate,
|
|
27
|
-
generateUserSeederTemplate,
|
|
28
22
|
generateApiEnvTemplate,
|
|
29
23
|
} from './apiTemplates.js';
|
|
30
24
|
|
|
@@ -34,15 +28,12 @@ import {
|
|
|
34
28
|
export async function createAPIDirectoryStructure(targetDir) {
|
|
35
29
|
const directories = [
|
|
36
30
|
'src/controllers',
|
|
37
|
-
'src/models',
|
|
38
31
|
'src/services',
|
|
39
32
|
'src/middleware',
|
|
40
33
|
'src/routes',
|
|
41
34
|
'src/requests',
|
|
42
35
|
'src/helpers',
|
|
43
36
|
'config',
|
|
44
|
-
'database/migrations',
|
|
45
|
-
'database/seeders',
|
|
46
37
|
];
|
|
47
38
|
|
|
48
39
|
await createDirectories(targetDir, directories);
|
|
@@ -64,28 +55,8 @@ export async function generateAPIControllers(targetDir) {
|
|
|
64
55
|
generateAuthControllerTemplate()
|
|
65
56
|
);
|
|
66
57
|
|
|
67
|
-
//
|
|
68
|
-
|
|
69
|
-
join(targetDir, 'src/controllers/PostController.js'),
|
|
70
|
-
generatePostControllerTemplate()
|
|
71
|
-
);
|
|
72
|
-
|
|
73
|
-
// CommentController
|
|
74
|
-
await writeFileContent(
|
|
75
|
-
join(targetDir, 'src/controllers/CommentController.js'),
|
|
76
|
-
generateCommentControllerTemplate()
|
|
77
|
-
);
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
/**
|
|
81
|
-
* Generate all API models
|
|
82
|
-
*/
|
|
83
|
-
export async function generateAPIModels(targetDir) {
|
|
84
|
-
// User model
|
|
85
|
-
await writeFileContent(
|
|
86
|
-
join(targetDir, 'src/models/User.js'),
|
|
87
|
-
generateUserModelTemplate()
|
|
88
|
-
);
|
|
58
|
+
// Note: Post and Comment controllers removed - no models generated
|
|
59
|
+
// Users can create their own with: pnpm make:controller PostController
|
|
89
60
|
}
|
|
90
61
|
|
|
91
62
|
/**
|
|
@@ -137,13 +108,7 @@ export async function generateAPIRoutes(targetDir) {
|
|
|
137
108
|
generateAuthRoutesTemplate()
|
|
138
109
|
);
|
|
139
110
|
|
|
140
|
-
//
|
|
141
|
-
await writeFileContent(
|
|
142
|
-
join(targetDir, 'src/routes/post.routes.js'),
|
|
143
|
-
generatePostRoutesTemplate()
|
|
144
|
-
);
|
|
145
|
-
|
|
146
|
-
// Routes index
|
|
111
|
+
// Routes index (no post routes - users can add their own)
|
|
147
112
|
await writeFileContent(
|
|
148
113
|
join(targetDir, 'src/routes/index.js'),
|
|
149
114
|
generateRoutesIndexTemplate()
|
|
@@ -156,18 +121,19 @@ export async function generateAPIRoutes(targetDir) {
|
|
|
156
121
|
export async function generateCompleteAPIStructure(targetDir) {
|
|
157
122
|
await createAPIDirectoryStructure(targetDir);
|
|
158
123
|
await generateAPIControllers(targetDir);
|
|
159
|
-
|
|
124
|
+
// Models are in centralized database/models/ at project root
|
|
160
125
|
await generateAPIServices(targetDir);
|
|
161
126
|
await generateAPIMiddleware(targetDir);
|
|
162
127
|
await generateAPIRequests(targetDir);
|
|
163
128
|
await generateAPIRoutes(targetDir);
|
|
164
|
-
await
|
|
129
|
+
await generateDatabaseConfig(targetDir);
|
|
165
130
|
}
|
|
166
131
|
|
|
167
132
|
/**
|
|
168
|
-
* Generate database configuration
|
|
133
|
+
* Generate database configuration only
|
|
134
|
+
* Note: migrations and seeders are in centralized database/ at project root
|
|
169
135
|
*/
|
|
170
|
-
export async function
|
|
136
|
+
export async function generateDatabaseConfig(targetDir) {
|
|
171
137
|
// Config files
|
|
172
138
|
await writeFileContent(
|
|
173
139
|
join(targetDir, 'config/database.js'),
|
|
@@ -180,18 +146,9 @@ export async function generateDatabaseFiles(targetDir) {
|
|
|
180
146
|
generateEnvHelperTemplate()
|
|
181
147
|
);
|
|
182
148
|
|
|
183
|
-
// Migrations
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
join(targetDir, `database/migrations/${timestamp}_create_users_table.js`),
|
|
187
|
-
generateUsersMigrationTemplate()
|
|
188
|
-
);
|
|
189
|
-
|
|
190
|
-
// Seeders
|
|
191
|
-
await writeFileContent(
|
|
192
|
-
join(targetDir, 'database/seeders/UserSeeder.js'),
|
|
193
|
-
generateUserSeederTemplate()
|
|
194
|
-
);
|
|
149
|
+
// Note: Migrations and seeders should be created at project root using:
|
|
150
|
+
// pnpm make:migration create_posts_table
|
|
151
|
+
// pnpm make:seeder PostSeeder
|
|
195
152
|
|
|
196
153
|
// .env.example
|
|
197
154
|
await writeFileContent(
|
|
@@ -226,7 +226,7 @@ export function generateAuthServiceTemplate() {
|
|
|
226
226
|
|
|
227
227
|
import bcrypt from 'bcryptjs';
|
|
228
228
|
import jwt from 'jsonwebtoken';
|
|
229
|
-
import
|
|
229
|
+
import User from '../../../database/models/User.js';
|
|
230
230
|
|
|
231
231
|
export class AuthService {
|
|
232
232
|
/**
|
|
@@ -327,7 +327,7 @@ export function generateAuthMiddlewareTemplate() {
|
|
|
327
327
|
*/
|
|
328
328
|
|
|
329
329
|
import { AuthService } from '../services/AuthService.js';
|
|
330
|
-
import
|
|
330
|
+
import User from '../../../database/models/User.js';
|
|
331
331
|
|
|
332
332
|
export async function authMiddleware(req, res, next) {
|
|
333
333
|
try {
|
|
@@ -469,7 +469,6 @@ export function generateRoutesIndexTemplate() {
|
|
|
469
469
|
*/
|
|
470
470
|
|
|
471
471
|
import { authRoutes } from './auth.routes.js';
|
|
472
|
-
import postRoutes from './post.routes.js';
|
|
473
472
|
|
|
474
473
|
/**
|
|
475
474
|
* Health check route (can be used separately)
|
|
@@ -491,9 +490,8 @@ export function getAllRoutes() {
|
|
|
491
490
|
return [
|
|
492
491
|
{ path: '/health', handler: healthRoutes },
|
|
493
492
|
{ path: '/api/auth', router: authRoutes },
|
|
494
|
-
{ path: '/api/posts', router: postRoutes },
|
|
495
493
|
// Add more routes here as your app grows
|
|
496
|
-
// { path: '/api/
|
|
494
|
+
// Example: { path: '/api/posts', router: postRoutes },
|
|
497
495
|
];
|
|
498
496
|
}
|
|
499
497
|
`;
|