express-todo 1.2.1 → 1.3.1

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 (33) hide show
  1. package/README.md +123 -0
  2. package/bin/cli.js +1 -1
  3. package/bin/v3/commands/exportCommands/express.js +9 -0
  4. package/bin/v3/commands/simple/steps/announce.js +3 -0
  5. package/bin/v3/commands/simple/steps/createProject.js +7 -0
  6. package/bin/v3/commands/simple/steps/locateDestination.js +5 -0
  7. package/bin/v3/commands/simple/steps/locateSource.js +16 -0
  8. package/bin/v3/commands/simple/template/v1/.env +9 -0
  9. package/bin/v3/commands/simple/template/v1/.env.local +7 -0
  10. package/bin/v3/commands/simple/template/v1/.vscode/launch.json +12 -0
  11. package/bin/v3/commands/simple/template/v1/Config/Schemas/BillsTable.json +165 -0
  12. package/bin/v3/commands/simple/template/v1/Config/Schemas/ItemsTable.json +200 -0
  13. package/bin/v3/commands/simple/template/v1/Config/Schemas/LedgerNames.json +60 -0
  14. package/bin/v3/commands/simple/template/v1/Config/Schemas/StockItems.json +50 -0
  15. package/bin/v3/commands/simple/template/v1/Config/api.json +8 -0
  16. package/bin/v3/commands/simple/template/v1/Config/schema.json +8 -0
  17. package/bin/v3/commands/simple/template/v1/Config/ui.json +8 -0
  18. package/bin/v3/commands/simple/template/v1/Public/index.html +129 -0
  19. package/bin/v3/commands/simple/template/v1/app.js +19 -0
  20. package/bin/v3/commands/simple/template/v1/config.json +4 -0
  21. package/bin/v3/commands/simple/template/v1/configLoader.js +6 -0
  22. package/bin/v3/commands/simple/template/v1/package-lock.json +834 -0
  23. package/bin/v3/commands/simple/template/v1/package.json +22 -0
  24. package/bin/v3/commands/simple/template/v1/port.js +6 -0
  25. package/bin/v3/commands/simple/template/v1/routes.js +5 -0
  26. package/bin/v3/commands/simple/template/v1/server.js +13 -0
  27. package/bin/v3/commands/simple.js +19 -0
  28. package/bin/v3/core/parseInput.js +10 -0
  29. package/bin/v3/core/resolveCommand.js +10 -0
  30. package/bin/v3/core/resolveFolderName.js +17 -0
  31. package/bin/v3/core/showUsage.js +39 -0
  32. package/bin/v3/start.js +22 -0
  33. package/package.json +1 -1
package/README.md ADDED
@@ -0,0 +1,123 @@
1
+ # express-todo
2
+
3
+ Simple Express boilerplate generator for quickly starting Express applications.
4
+
5
+ ---
6
+
7
+ # Installation
8
+
9
+ ## Using NPX (Recommended)
10
+
11
+ ```bash
12
+ npx express-todo simple
13
+ ```
14
+
15
+ ---
16
+
17
+ # What It Does
18
+
19
+ The command:
20
+
21
+ ```bash
22
+ npx express-todo simple
23
+ ```
24
+
25
+ automatically creates a ready-to-use Express project with basic structure and starter configuration.
26
+
27
+ ---
28
+
29
+ # Generated Structure
30
+
31
+ ```txt
32
+ project-name/
33
+
34
+ ├── .vscode/
35
+ ├── Config/
36
+ ├── Public/
37
+ ├── .env
38
+ ├── .env.local
39
+ ├── app.js
40
+ ├── config.json
41
+ ├── configLoader.js
42
+ ├── package.json
43
+ ├── package-lock.json
44
+ ├── port.js
45
+ ├── routes.js
46
+ └── server.js
47
+ ```
48
+
49
+ ---
50
+
51
+ # Example
52
+
53
+ ## Command
54
+
55
+ ```bash
56
+ npx express-todo simple
57
+ ```
58
+
59
+ ## Output
60
+
61
+ ```txt
62
+ [keshavsoft] Project created: your-project-name
63
+ ```
64
+
65
+ ---
66
+
67
+ # Quick Start
68
+
69
+ ## Step 1
70
+
71
+ Create project:
72
+
73
+ ```bash
74
+ npx express-todo simple
75
+ ```
76
+
77
+ ## Step 2
78
+
79
+ Move into project folder:
80
+
81
+ ```bash
82
+ cd your-project-name
83
+ ```
84
+
85
+ ## Step 3
86
+
87
+ Install dependencies:
88
+
89
+ ```bash
90
+ npm install
91
+ ```
92
+
93
+ ## Step 4
94
+
95
+ Start server:
96
+
97
+ ```bash
98
+ npm start
99
+ ```
100
+
101
+ ---
102
+
103
+ # Why express-todo?
104
+
105
+ - Fast Express setup
106
+ - Clean starter structure
107
+ - Beginner friendly
108
+ - Reduces repetitive boilerplate work
109
+ - Simple command line usage
110
+
111
+ ---
112
+
113
+ # Command Reference
114
+
115
+ ```bash
116
+ npx express-todo simple
117
+ ```
118
+
119
+ ---
120
+
121
+ # License
122
+
123
+ MIT
package/bin/cli.js CHANGED
@@ -1,4 +1,4 @@
1
- #!/usr/bin/env node
1
+ #!/usr/bin/env node
2
2
 
3
3
  import getLatestVersion from "./core/getLatestVersion.js";
4
4
  import loadRunner from "./core/loadRunner.js";
@@ -0,0 +1,9 @@
1
+ import fs from "fs";
2
+
3
+ import { locateSource } from "../express/steps/locateSource.js";
4
+
5
+ export default (inDestination) => {
6
+ const source = locateSource();
7
+
8
+ fs.cpSync(source, inDestination, { recursive: true });
9
+ };
@@ -0,0 +1,3 @@
1
+ export const announce = ({ inResolvedFolderName }) => {
2
+ console.log(`[keshavsoft] Project created: ${inResolvedFolderName}`);
3
+ };
@@ -0,0 +1,7 @@
1
+ import fs from "fs";
2
+
3
+ export const createProject = ({ source, destination }) => {
4
+ fs.mkdirSync(destination, { recursive: true });
5
+
6
+ fs.cpSync(source, destination, { recursive: true });
7
+ };
@@ -0,0 +1,5 @@
1
+ import path from "path";
2
+
3
+ export const locateDestination = ({ inResolvedFolderName }) => {
4
+ return path.join(process.cwd(), inResolvedFolderName);
5
+ };
@@ -0,0 +1,16 @@
1
+ import path from "path";
2
+ import { fileURLToPath } from "url";
3
+
4
+ const __filename = fileURLToPath(import.meta.url);
5
+ const __dirname = path.dirname(__filename);
6
+
7
+ const sourceVersion = "v1";
8
+
9
+ export const locateSource = () => {
10
+ return path.join(
11
+ __dirname,
12
+ "..",
13
+ "template",
14
+ sourceVersion
15
+ );
16
+ };
@@ -0,0 +1,9 @@
1
+ DataPath=Data
2
+ PORT=3000
3
+ VERSION= V3
4
+ TimeSpan=20
5
+ RepoType="GenWMailAndWs"
6
+ TablePath=Data/Ledgers.json
7
+ SchemaPath=Config/Schemas
8
+ KSSource=ConfigJson
9
+ OPEN_BROWSER=true
@@ -0,0 +1,7 @@
1
+ DataPath=Data
2
+ PORT=3000
3
+ VERSION= V3
4
+ TimeSpan=20
5
+ RepoType="GenWMailAndWs"
6
+ TablePath=Data/Ledgers.json
7
+ SchemaPath=Config/Schemas
@@ -0,0 +1,12 @@
1
+ {
2
+ "version": "0.2.0",
3
+ "configurations": [
4
+ {
5
+ "type": "node",
6
+ "request": "launch",
7
+ "name": "Debug App",
8
+ "program": "${workspaceFolder}/app.js",
9
+ "envFile": "${workspaceFolder}/.env"
10
+ }
11
+ ]
12
+ }
@@ -0,0 +1,165 @@
1
+ {
2
+ "tableName": "BillsTable",
3
+ "columns": [
4
+ {
5
+ "field": "LedgerName",
6
+ "title": "LedgerName",
7
+ "type": "text",
8
+ "isInput": false,
9
+ "isAutoFocus": true,
10
+ "WidthOptions": {
11
+ "inPx": 200
12
+ },
13
+ "defaultvalue": "Keshav",
14
+ "isDataList": true,
15
+ "dataListId": "LedgerNames",
16
+ "isConsider": true
17
+ },
18
+ {
19
+ "field": "LedgerParentName",
20
+ "title": "LedgerParentName",
21
+ "type": "text",
22
+ "isInput": true,
23
+ "WidthOptions": {
24
+ "inPx": 200
25
+ },
26
+ "isConsider": true,
27
+ "showInUi": false
28
+ },
29
+ {
30
+ "field": "LedgerGST",
31
+ "title": "LedgerGST",
32
+ "type": "text",
33
+ "isInput": true,
34
+ "isAutoFocus": true,
35
+ "WidthOptions": {
36
+ "inPx": 200
37
+ },
38
+ "isConsider": true,
39
+ "showInUi": false
40
+ },
41
+ {
42
+ "field": "InvoiceNo",
43
+ "title": "InvoiceNo",
44
+ "type": "number",
45
+ "isInput": true,
46
+ "WidthOptions": {
47
+ "inPx": 200
48
+ },
49
+ "isConsider": true
50
+ },
51
+ {
52
+ "field": "InvoiceDate",
53
+ "title": "InvoiceDate",
54
+ "isDate": true,
55
+ "type": "date",
56
+ "WidthOptions": {
57
+ "inPx": 200
58
+ },
59
+ "defaultvalue": "today",
60
+ "isConsider": true
61
+ },
62
+ {
63
+ "field": "InvoiceStateCode",
64
+ "title": "InvoiceStateCode",
65
+ "defaultvalue": "37",
66
+ "isInput": true,
67
+ "WidthOptions": {
68
+ "inPx": 200
69
+ },
70
+ "isConsider": true,
71
+ "showInUi": false
72
+ },
73
+ {
74
+ "field": "pk",
75
+ "title": "pk",
76
+ "primary": true
77
+ }
78
+ ],
79
+ "data": [],
80
+ "Vertical": [
81
+ {
82
+ "field": "LedgerName",
83
+ "title": "LedgerName",
84
+ "type": "text",
85
+ "isInput": false,
86
+ "isAutoFocus": true,
87
+ "WidthOptions": {
88
+ "inPx": 200
89
+ },
90
+ "defaultvalue": "Keshav",
91
+ "isDataList": true,
92
+ "dataListId": "LedgerNames"
93
+ },
94
+ {
95
+ "field": "LedgerParentName",
96
+ "title": "LedgerParentName",
97
+ "type": "text",
98
+ "isInput": true,
99
+ "WidthOptions": {
100
+ "inPx": 200
101
+ }
102
+ },
103
+ {
104
+ "field": "LedgerGST",
105
+ "title": "LedgerGST",
106
+ "type": "text",
107
+ "isInput": true,
108
+ "isAutoFocus": true,
109
+ "WidthOptions": {
110
+ "inPx": 200
111
+ }
112
+ },
113
+ {
114
+ "field": "InvoiceNo",
115
+ "title": "InvoiceNo",
116
+ "type": "number",
117
+ "isInput": true,
118
+ "WidthOptions": {
119
+ "inPx": 200
120
+ }
121
+ },
122
+ {
123
+ "field": "InvoiceDate",
124
+ "title": "InvoiceDate",
125
+ "isDate": true,
126
+ "type": "date",
127
+ "WidthOptions": {
128
+ "inPx": 200
129
+ },
130
+ "defaultvalue": "today"
131
+ },
132
+ {
133
+ "field": "InvoiceStateCode",
134
+ "title": "InvoiceStateCode",
135
+ "defaultvalue": "37",
136
+ "isInput": true,
137
+ "WidthOptions": {
138
+ "inPx": 200
139
+ }
140
+ }
141
+ ],
142
+ "DataTableOptions": {
143
+ "Header": {
144
+ "autoFocus": "LedgerName"
145
+ }
146
+ },
147
+ "ForeignkeyTables": [
148
+ "ItemsTable"
149
+ ],
150
+ "DependantTables": [
151
+ "LedgerNames"
152
+ ],
153
+ "NonSecured": {
154
+ "SubRoutes": [
155
+ "ShowAll",
156
+ "Insert",
157
+ "Find",
158
+ "InsertAndReturnPk",
159
+ "FindWithForeignData",
160
+ "InsertToTally"
161
+ ]
162
+ },
163
+ "PrimarykeyTableNames": [],
164
+ "PrimarykeyTables": []
165
+ }
@@ -0,0 +1,200 @@
1
+ {
2
+ "tableName": "ItemsTable",
3
+ "columns": [
4
+ {
5
+ "field": "StockItemName",
6
+ "title": "StockItemName",
7
+ "unique": false,
8
+ "type": "text",
9
+ "isInput": false,
10
+ "isAutoFocus": true,
11
+ "WidthOptions": {
12
+ "inPx": 300
13
+ },
14
+ "isDataList": true,
15
+ "dataListId": "StockItems",
16
+ "isConsider": true,
17
+ "showInUi": true
18
+ },
19
+ {
20
+ "field": "Rate",
21
+ "title": "Rate",
22
+ "unique": false,
23
+ "type": "number",
24
+ "isNumber": true,
25
+ "ShowTotal": false,
26
+ "footerFormatter": "",
27
+ "showRupee": true,
28
+ "align": "right",
29
+ "WidthOptions": {
30
+ "inPx": 250
31
+ },
32
+ "isConsider": true,
33
+ "showInUi": true
34
+ },
35
+ {
36
+ "field": "Qty",
37
+ "title": "Qty",
38
+ "unique": false,
39
+ "type": "number",
40
+ "isNumber": true,
41
+ "ShowTotal": true,
42
+ "footerFormatter": "TotalFormatter",
43
+ "showRupee": false,
44
+ "WidthOptions": {
45
+ "inPx": 200
46
+ },
47
+ "isConsider": true,
48
+ "showInUi": true
49
+ },
50
+ {
51
+ "field": "Amount",
52
+ "title": "Amount",
53
+ "unique": false,
54
+ "type": "number",
55
+ "isNumber": true,
56
+ "ShowTotal": true,
57
+ "footerFormatter": "TotalFormatter",
58
+ "enterCal": "Rate*Qty",
59
+ "showRupee": true,
60
+ "align": "right",
61
+ "WidthOptions": {
62
+ "inPx": 250
63
+ },
64
+ "isConsider": true,
65
+ "showInUi": false
66
+ },
67
+ {
68
+ "field": "TaxPer",
69
+ "title": "TaxPer",
70
+ "unique": false,
71
+ "type": "number",
72
+ "isNumber": true,
73
+ "defaultvalue": 18,
74
+ "isConsider": true,
75
+ "showInUi": true
76
+ },
77
+ {
78
+ "field": "Uom",
79
+ "title": "Uom",
80
+ "unique": false,
81
+ "type": "number",
82
+ "isNumber": true,
83
+ "defaultvalue": 18,
84
+ "isConsider": true,
85
+ "showInUi": true
86
+ },
87
+ {
88
+ "field": "ParentPk",
89
+ "title": "ParentPk",
90
+ "unique": false,
91
+ "isConsider": true,
92
+ "showInUi": true
93
+ },
94
+ {
95
+ "field": "pk",
96
+ "title": "pk",
97
+ "primary": true
98
+ }
99
+ ],
100
+ "data": [],
101
+ "Vertical": [
102
+ {
103
+ "field": "StockItemName",
104
+ "title": "StockItemName",
105
+ "unique": false,
106
+ "type": "text",
107
+ "isInput": false,
108
+ "isAutoFocus": true,
109
+ "WidthOptions": {
110
+ "inPx": 300
111
+ },
112
+ "isDataList": true,
113
+ "dataListId": "StockItems"
114
+ },
115
+ {
116
+ "field": "Rate",
117
+ "title": "Rate",
118
+ "unique": false,
119
+ "type": "number",
120
+ "isNumber": true,
121
+ "ShowTotal": false,
122
+ "footerFormatter": "",
123
+ "showRupee": true,
124
+ "align": "right",
125
+ "WidthOptions": {
126
+ "inPx": 250
127
+ }
128
+ },
129
+ {
130
+ "field": "Qty",
131
+ "title": "Qty",
132
+ "unique": false,
133
+ "type": "number",
134
+ "isNumber": true,
135
+ "ShowTotal": true,
136
+ "footerFormatter": "TotalFormatter",
137
+ "showRupee": false,
138
+ "WidthOptions": {
139
+ "inPx": 200
140
+ }
141
+ },
142
+ {
143
+ "field": "Amount",
144
+ "title": "Amount",
145
+ "unique": false,
146
+ "type": "number",
147
+ "isNumber": true,
148
+ "ShowTotal": true,
149
+ "footerFormatter": "TotalFormatter",
150
+ "showRupee": true,
151
+ "align": "right",
152
+ "WidthOptions": {
153
+ "inPx": 250
154
+ }
155
+ },
156
+ {
157
+ "field": "TaxPer",
158
+ "title": "TaxPer",
159
+ "unique": false,
160
+ "type": "number",
161
+ "isNumber": true,
162
+ "defaultvalue": 18,
163
+ "isConsider": true,
164
+ "showInUi": true
165
+ },
166
+ {
167
+ "field": "Uom",
168
+ "title": "Uom",
169
+ "unique": false,
170
+ "type": "number",
171
+ "isNumber": true,
172
+ "defaultvalue": 18,
173
+ "isConsider": true,
174
+ "showInUi": true
175
+ }
176
+ ],
177
+ "DataTableOptions": {
178
+ "Header": {
179
+ "autoFocus": "StockItemName"
180
+ }
181
+ },
182
+ "NonSecured": {
183
+ "SubRoutes": [
184
+ "ShowAll",
185
+ "Insert",
186
+ "InsertAndReturnPk",
187
+ "InsertWithDefaults"
188
+ ]
189
+ },
190
+ "DependantTables": [
191
+ "StockItems"
192
+ ],
193
+ "ForeignkeyTables": [
194
+ "BillsTable"
195
+ ],
196
+ "PrimarykeyTableNames": [
197
+ "BillsTable"
198
+ ],
199
+ "PrimarykeyTables": []
200
+ }
@@ -0,0 +1,60 @@
1
+ {
2
+ "tableName": "LedgerNames",
3
+ "columns": [
4
+ {
5
+ "field": "LedgerName",
6
+ "title": "LedgerName",
7
+ "unique": true,
8
+ "type": "text",
9
+ "isInput": true,
10
+ "isAutoFocus": true,
11
+ "defaultvalue": "KeshavSoft",
12
+ "isConsider": true
13
+ },
14
+ {
15
+ "field": "LedgerParentName",
16
+ "title": "LedgerParentName",
17
+ "type": "text",
18
+ "isInput": true,
19
+ "isConsider": true
20
+ },
21
+ {
22
+ "field": "LedgerType",
23
+ "title": "LedgerType",
24
+ "type": "text",
25
+ "isInput": true,
26
+ "isConsider": true
27
+ },
28
+ {
29
+ "field": "pk",
30
+ "title": "pk",
31
+ "primary": true
32
+ },
33
+ {
34
+ "field": "GstRegistrationType",
35
+ "title": "GstRegistrationType",
36
+ "isConsider": true
37
+ },
38
+ {
39
+ "field": "PartyGSTIN",
40
+ "title": "PartyGSTIN",
41
+ "isConsider": true
42
+ }
43
+ ],
44
+ "data": [],
45
+ "Vertical": [],
46
+ "DataTableOptions": {
47
+ "Header": {
48
+ "autoFocus": "LedgerName"
49
+ }
50
+ },
51
+ "NonSecured": {
52
+ "SubRoutes": [
53
+ "ShowAll",
54
+ "Insert",
55
+ "Pipe"
56
+ ]
57
+ },
58
+ "PrimarykeyTableNames": [],
59
+ "PrimarykeyTables": []
60
+ }
@@ -0,0 +1,50 @@
1
+ {
2
+ "tableName": "StockItems",
3
+ "columns": [
4
+ {
5
+ "field": "StockItemName",
6
+ "title": "StockItemName",
7
+ "unique": true,
8
+ "type": "text",
9
+ "isInput": true,
10
+ "isAutoFocus": true,
11
+ "defaultvalue": "KeshavSoft",
12
+ "isConsider": true
13
+ },
14
+ {
15
+ "field": "StockItemReservedName",
16
+ "title": "StockItemReservedName",
17
+ "type": "text",
18
+ "isInput": true,
19
+ "isConsider": true
20
+ },
21
+ {
22
+ "field": "StockItemType",
23
+ "title": "StockItemType",
24
+ "type": "text",
25
+ "isInput": true,
26
+ "isConsider": true
27
+ },
28
+ {
29
+ "field": "pk",
30
+ "title": "pk",
31
+ "primary": true
32
+ }
33
+ ],
34
+ "data": [],
35
+ "Vertical": [],
36
+ "DataTableOptions": {
37
+ "Header": {
38
+ "autoFocus": "StockItemName"
39
+ }
40
+ },
41
+ "NonSecured": {
42
+ "SubRoutes": [
43
+ "ShowAll",
44
+ "Pipe",
45
+ "Insert"
46
+ ]
47
+ },
48
+ "PrimarykeyTableNames": [],
49
+ "PrimarykeyTables": []
50
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "Tables": [
3
+ "BillsTable",
4
+ "ItemsTable",
5
+ "LedgerNames",
6
+ "StockItems"
7
+ ]
8
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "Tables": [
3
+ "BillsTable",
4
+ "ItemsTable",
5
+ "LedgerNames",
6
+ "StockItems"
7
+ ]
8
+ }