Prathamesh2403 commited on
Commit
e17c25d
·
1 Parent(s): 05fbed5

FIX: Add missing SendGrid dependency to package.json

Browse files
Files changed (3) hide show
  1. README_HF.md +0 -48
  2. package-lock.json +202 -0
  3. package.json +2 -0
README_HF.md DELETED
@@ -1,48 +0,0 @@
1
- ---
2
- title: RetroTech Inventory API
3
- emoji: 🎮
4
- colorFrom: cyan
5
- colorTo: blue
6
- sdk: docker
7
- pinned: false
8
- license: mit
9
- short_description: A retro-themed inventory management system API
10
- ---
11
-
12
- # RetroTech Inventory API
13
-
14
- A beautiful retro-themed inventory management system backend built with Node.js, Express, and MongoDB.
15
-
16
- ## Features
17
-
18
- - 🔐 JWT Authentication
19
- - 📦 Product Management (CRUD operations)
20
- - 📊 Low Stock Alerts with Email Notifications
21
- - 🎮 Retro Tech Theme
22
- - 📱 RESTful API
23
-
24
- ## API Endpoints
25
-
26
- ### Authentication
27
- - `POST /api/users` - Register a new user
28
- - `POST /api/users/login` - Login user
29
-
30
- ### Products
31
- - `GET /api/products` - Get all products (requires auth)
32
- - `POST /api/products` - Create new product (requires auth)
33
- - `PUT /api/products/:id` - Update product (requires auth)
34
- - `DELETE /api/products/:id` - Delete product (requires auth)
35
-
36
- ## Environment Variables
37
-
38
- Set these in your Hugging Face Spaces secrets:
39
-
40
- - `MONGODB_URI` - Your MongoDB connection string
41
- - `JWT_SECRET` - Your JWT secret key
42
- - `EMAIL_USER` - Email for notifications (optional)
43
- - `EMAIL_PASS` - Email password (optional)
44
- - `EMAIL_TO` - Admin email for alerts (optional)
45
-
46
- ## Usage
47
-
48
- The API is now running! You can test it by visiting the root endpoint or use it with the RetroTech Inventory frontend.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
package-lock.json CHANGED
@@ -9,7 +9,9 @@
9
  "version": "1.0.0",
10
  "license": "ISC",
11
  "dependencies": {
 
12
  "bcryptjs": "^3.0.2",
 
13
  "dotenv": "^17.2.3",
14
  "express": "^5.1.0",
15
  "jsonwebtoken": "^9.0.2",
@@ -30,6 +32,44 @@
30
  "sparse-bitfield": "^3.0.3"
31
  }
32
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
33
  "node_modules/@types/webidl-conversions": {
34
  "version": "7.0.3",
35
  "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.3.tgz",
@@ -72,6 +112,23 @@
72
  "node": ">= 8"
73
  }
74
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
75
  "node_modules/balanced-match": {
76
  "version": "1.0.2",
77
  "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
@@ -223,6 +280,18 @@
223
  "fsevents": "~2.3.2"
224
  }
225
  },
 
 
 
 
 
 
 
 
 
 
 
 
226
  "node_modules/concat-map": {
227
  "version": "0.0.1",
228
  "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
@@ -269,6 +338,19 @@
269
  "node": ">=6.6.0"
270
  }
271
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
272
  "node_modules/debug": {
273
  "version": "4.4.3",
274
  "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
@@ -286,6 +368,24 @@
286
  }
287
  }
288
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
289
  "node_modules/depd": {
290
  "version": "2.0.0",
291
  "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
@@ -375,6 +475,21 @@
375
  "node": ">= 0.4"
376
  }
377
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
378
  "node_modules/escape-html": {
379
  "version": "1.0.3",
380
  "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
@@ -462,6 +577,63 @@
462
  "node": ">= 0.8"
463
  }
464
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
465
  "node_modules/forwarded": {
466
  "version": "0.2.0",
467
  "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
@@ -588,6 +760,21 @@
588
  "url": "https://github.com/sponsors/ljharb"
589
  }
590
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
591
  "node_modules/hasown": {
592
  "version": "2.0.2",
593
  "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
@@ -1046,6 +1233,15 @@
1046
  "node": ">=0.10.0"
1047
  }
1048
  },
 
 
 
 
 
 
 
 
 
1049
  "node_modules/object-inspect": {
1050
  "version": "1.13.4",
1051
  "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz",
@@ -1124,6 +1320,12 @@
1124
  "node": ">= 0.10"
1125
  }
1126
  },
 
 
 
 
 
 
1127
  "node_modules/pstree.remy": {
1128
  "version": "1.1.8",
1129
  "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz",
 
9
  "version": "1.0.0",
10
  "license": "ISC",
11
  "dependencies": {
12
+ "@sendgrid/mail": "^8.1.6",
13
  "bcryptjs": "^3.0.2",
14
+ "cors": "^2.8.5",
15
  "dotenv": "^17.2.3",
16
  "express": "^5.1.0",
17
  "jsonwebtoken": "^9.0.2",
 
32
  "sparse-bitfield": "^3.0.3"
33
  }
34
  },
35
+ "node_modules/@sendgrid/client": {
36
+ "version": "8.1.6",
37
+ "resolved": "https://registry.npmjs.org/@sendgrid/client/-/client-8.1.6.tgz",
38
+ "integrity": "sha512-/BHu0hqwXNHr2aLhcXU7RmmlVqrdfrbY9KpaNj00KZHlVOVoRxRVrpOCabIB+91ISXJ6+mLM9vpaVUhK6TwBWA==",
39
+ "license": "MIT",
40
+ "dependencies": {
41
+ "@sendgrid/helpers": "^8.0.0",
42
+ "axios": "^1.12.0"
43
+ },
44
+ "engines": {
45
+ "node": ">=12.*"
46
+ }
47
+ },
48
+ "node_modules/@sendgrid/helpers": {
49
+ "version": "8.0.0",
50
+ "resolved": "https://registry.npmjs.org/@sendgrid/helpers/-/helpers-8.0.0.tgz",
51
+ "integrity": "sha512-Ze7WuW2Xzy5GT5WRx+yEv89fsg/pgy3T1E3FS0QEx0/VvRmigMZ5qyVGhJz4SxomegDkzXv/i0aFPpHKN8qdAA==",
52
+ "license": "MIT",
53
+ "dependencies": {
54
+ "deepmerge": "^4.2.2"
55
+ },
56
+ "engines": {
57
+ "node": ">= 12.0.0"
58
+ }
59
+ },
60
+ "node_modules/@sendgrid/mail": {
61
+ "version": "8.1.6",
62
+ "resolved": "https://registry.npmjs.org/@sendgrid/mail/-/mail-8.1.6.tgz",
63
+ "integrity": "sha512-/ZqxUvKeEztU9drOoPC/8opEPOk+jLlB2q4+xpx6HVLq6aFu3pMpalkTpAQz8XfRfpLp8O25bh6pGPcHDCYpqg==",
64
+ "license": "MIT",
65
+ "dependencies": {
66
+ "@sendgrid/client": "^8.1.5",
67
+ "@sendgrid/helpers": "^8.0.0"
68
+ },
69
+ "engines": {
70
+ "node": ">=12.*"
71
+ }
72
+ },
73
  "node_modules/@types/webidl-conversions": {
74
  "version": "7.0.3",
75
  "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.3.tgz",
 
112
  "node": ">= 8"
113
  }
114
  },
115
+ "node_modules/asynckit": {
116
+ "version": "0.4.0",
117
+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
118
+ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
119
+ "license": "MIT"
120
+ },
121
+ "node_modules/axios": {
122
+ "version": "1.12.2",
123
+ "resolved": "https://registry.npmjs.org/axios/-/axios-1.12.2.tgz",
124
+ "integrity": "sha512-vMJzPewAlRyOgxV2dU0Cuz2O8zzzx9VYtbJOaBgXFeLc4IV/Eg50n4LowmehOOR61S8ZMpc2K5Sa7g6A4jfkUw==",
125
+ "license": "MIT",
126
+ "dependencies": {
127
+ "follow-redirects": "^1.15.6",
128
+ "form-data": "^4.0.4",
129
+ "proxy-from-env": "^1.1.0"
130
+ }
131
+ },
132
  "node_modules/balanced-match": {
133
  "version": "1.0.2",
134
  "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
 
280
  "fsevents": "~2.3.2"
281
  }
282
  },
283
+ "node_modules/combined-stream": {
284
+ "version": "1.0.8",
285
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
286
+ "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
287
+ "license": "MIT",
288
+ "dependencies": {
289
+ "delayed-stream": "~1.0.0"
290
+ },
291
+ "engines": {
292
+ "node": ">= 0.8"
293
+ }
294
+ },
295
  "node_modules/concat-map": {
296
  "version": "0.0.1",
297
  "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
 
338
  "node": ">=6.6.0"
339
  }
340
  },
341
+ "node_modules/cors": {
342
+ "version": "2.8.5",
343
+ "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz",
344
+ "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==",
345
+ "license": "MIT",
346
+ "dependencies": {
347
+ "object-assign": "^4",
348
+ "vary": "^1"
349
+ },
350
+ "engines": {
351
+ "node": ">= 0.10"
352
+ }
353
+ },
354
  "node_modules/debug": {
355
  "version": "4.4.3",
356
  "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
 
368
  }
369
  }
370
  },
371
+ "node_modules/deepmerge": {
372
+ "version": "4.3.1",
373
+ "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz",
374
+ "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==",
375
+ "license": "MIT",
376
+ "engines": {
377
+ "node": ">=0.10.0"
378
+ }
379
+ },
380
+ "node_modules/delayed-stream": {
381
+ "version": "1.0.0",
382
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
383
+ "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
384
+ "license": "MIT",
385
+ "engines": {
386
+ "node": ">=0.4.0"
387
+ }
388
+ },
389
  "node_modules/depd": {
390
  "version": "2.0.0",
391
  "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
 
475
  "node": ">= 0.4"
476
  }
477
  },
478
+ "node_modules/es-set-tostringtag": {
479
+ "version": "2.1.0",
480
+ "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz",
481
+ "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==",
482
+ "license": "MIT",
483
+ "dependencies": {
484
+ "es-errors": "^1.3.0",
485
+ "get-intrinsic": "^1.2.6",
486
+ "has-tostringtag": "^1.0.2",
487
+ "hasown": "^2.0.2"
488
+ },
489
+ "engines": {
490
+ "node": ">= 0.4"
491
+ }
492
+ },
493
  "node_modules/escape-html": {
494
  "version": "1.0.3",
495
  "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
 
577
  "node": ">= 0.8"
578
  }
579
  },
580
+ "node_modules/follow-redirects": {
581
+ "version": "1.15.11",
582
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz",
583
+ "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==",
584
+ "funding": [
585
+ {
586
+ "type": "individual",
587
+ "url": "https://github.com/sponsors/RubenVerborgh"
588
+ }
589
+ ],
590
+ "license": "MIT",
591
+ "engines": {
592
+ "node": ">=4.0"
593
+ },
594
+ "peerDependenciesMeta": {
595
+ "debug": {
596
+ "optional": true
597
+ }
598
+ }
599
+ },
600
+ "node_modules/form-data": {
601
+ "version": "4.0.4",
602
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz",
603
+ "integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==",
604
+ "license": "MIT",
605
+ "dependencies": {
606
+ "asynckit": "^0.4.0",
607
+ "combined-stream": "^1.0.8",
608
+ "es-set-tostringtag": "^2.1.0",
609
+ "hasown": "^2.0.2",
610
+ "mime-types": "^2.1.12"
611
+ },
612
+ "engines": {
613
+ "node": ">= 6"
614
+ }
615
+ },
616
+ "node_modules/form-data/node_modules/mime-db": {
617
+ "version": "1.52.0",
618
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
619
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
620
+ "license": "MIT",
621
+ "engines": {
622
+ "node": ">= 0.6"
623
+ }
624
+ },
625
+ "node_modules/form-data/node_modules/mime-types": {
626
+ "version": "2.1.35",
627
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
628
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
629
+ "license": "MIT",
630
+ "dependencies": {
631
+ "mime-db": "1.52.0"
632
+ },
633
+ "engines": {
634
+ "node": ">= 0.6"
635
+ }
636
+ },
637
  "node_modules/forwarded": {
638
  "version": "0.2.0",
639
  "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
 
760
  "url": "https://github.com/sponsors/ljharb"
761
  }
762
  },
763
+ "node_modules/has-tostringtag": {
764
+ "version": "1.0.2",
765
+ "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
766
+ "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
767
+ "license": "MIT",
768
+ "dependencies": {
769
+ "has-symbols": "^1.0.3"
770
+ },
771
+ "engines": {
772
+ "node": ">= 0.4"
773
+ },
774
+ "funding": {
775
+ "url": "https://github.com/sponsors/ljharb"
776
+ }
777
+ },
778
  "node_modules/hasown": {
779
  "version": "2.0.2",
780
  "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
 
1233
  "node": ">=0.10.0"
1234
  }
1235
  },
1236
+ "node_modules/object-assign": {
1237
+ "version": "4.1.1",
1238
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
1239
+ "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
1240
+ "license": "MIT",
1241
+ "engines": {
1242
+ "node": ">=0.10.0"
1243
+ }
1244
+ },
1245
  "node_modules/object-inspect": {
1246
  "version": "1.13.4",
1247
  "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz",
 
1320
  "node": ">= 0.10"
1321
  }
1322
  },
1323
+ "node_modules/proxy-from-env": {
1324
+ "version": "1.1.0",
1325
+ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
1326
+ "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
1327
+ "license": "MIT"
1328
+ },
1329
  "node_modules/pstree.remy": {
1330
  "version": "1.1.8",
1331
  "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz",
package.json CHANGED
@@ -13,7 +13,9 @@
13
  "license": "ISC",
14
  "description": "",
15
  "dependencies": {
 
16
  "bcryptjs": "^3.0.2",
 
17
  "dotenv": "^17.2.3",
18
  "express": "^5.1.0",
19
  "jsonwebtoken": "^9.0.2",
 
13
  "license": "ISC",
14
  "description": "",
15
  "dependencies": {
16
+ "@sendgrid/mail": "^8.1.6",
17
  "bcryptjs": "^3.0.2",
18
+ "cors": "^2.8.5",
19
  "dotenv": "^17.2.3",
20
  "express": "^5.1.0",
21
  "jsonwebtoken": "^9.0.2",