@fleetbase/storefront-engine 0.1.7 → 0.1.9

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 (163) hide show
  1. package/.php-cs-fixer.php +29 -0
  2. package/LICENSE.md +16 -4
  3. package/README.md +106 -13
  4. package/composer.json +88 -0
  5. package/extension.json +10 -0
  6. package/package.json +6 -6
  7. package/phpstan.neon.dist +8 -0
  8. package/phpunit.xml.dist +16 -0
  9. package/server/.gitattributes +14 -0
  10. package/server/README.md +40 -0
  11. package/server/config/api.php +101 -0
  12. package/server/config/database.connections.php +57 -0
  13. package/server/config/storefront.php +19 -0
  14. package/server/config/twilio-notification-channel.php +36 -0
  15. package/server/migrations/2023_05_03_025307_create_carts_table.php +44 -0
  16. package/server/migrations/2023_05_03_025307_create_checkouts_table.php +51 -0
  17. package/server/migrations/2023_05_03_025307_create_gateways_table.php +48 -0
  18. package/server/migrations/2023_05_03_025307_create_network_stores_table.php +36 -0
  19. package/server/migrations/2023_05_03_025307_create_networks_table.php +56 -0
  20. package/server/migrations/2023_05_03_025307_create_notification_channels_table.php +43 -0
  21. package/server/migrations/2023_05_03_025307_create_payment_methods_table.php +44 -0
  22. package/server/migrations/2023_05_03_025307_create_product_addon_categories_table.php +38 -0
  23. package/server/migrations/2023_05_03_025307_create_product_addons_table.php +43 -0
  24. package/server/migrations/2023_05_03_025307_create_product_hours_table.php +37 -0
  25. package/server/migrations/2023_05_03_025307_create_product_store_locations_table.php +34 -0
  26. package/server/migrations/2023_05_03_025307_create_product_variant_options_table.php +40 -0
  27. package/server/migrations/2023_05_03_025307_create_product_variants_table.php +44 -0
  28. package/server/migrations/2023_05_03_025307_create_products_table.php +59 -0
  29. package/server/migrations/2023_05_03_025307_create_reviews_table.php +41 -0
  30. package/server/migrations/2023_05_03_025307_create_store_hours_table.php +37 -0
  31. package/server/migrations/2023_05_03_025307_create_store_locations_table.php +38 -0
  32. package/server/migrations/2023_05_03_025307_create_stores_table.php +57 -0
  33. package/server/migrations/2023_05_03_025307_create_votes_table.php +39 -0
  34. package/server/migrations/2023_05_03_025310_add_foreign_keys_to_carts_table.php +40 -0
  35. package/server/migrations/2023_05_03_025310_add_foreign_keys_to_checkouts_table.php +48 -0
  36. package/server/migrations/2023_05_03_025310_add_foreign_keys_to_gateways_table.php +40 -0
  37. package/server/migrations/2023_05_03_025310_add_foreign_keys_to_network_stores_table.php +40 -0
  38. package/server/migrations/2023_05_03_025310_add_foreign_keys_to_networks_table.php +42 -0
  39. package/server/migrations/2023_05_03_025310_add_foreign_keys_to_notification_channels_table.php +40 -0
  40. package/server/migrations/2023_05_03_025310_add_foreign_keys_to_payment_methods_table.php +40 -0
  41. package/server/migrations/2023_05_03_025310_add_foreign_keys_to_product_addon_categories_table.php +38 -0
  42. package/server/migrations/2023_05_03_025310_add_foreign_keys_to_product_addons_table.php +38 -0
  43. package/server/migrations/2023_05_03_025310_add_foreign_keys_to_product_hours_table.php +32 -0
  44. package/server/migrations/2023_05_03_025310_add_foreign_keys_to_product_store_locations_table.php +34 -0
  45. package/server/migrations/2023_05_03_025310_add_foreign_keys_to_product_variant_options_table.php +32 -0
  46. package/server/migrations/2023_05_03_025310_add_foreign_keys_to_product_variants_table.php +32 -0
  47. package/server/migrations/2023_05_03_025310_add_foreign_keys_to_products_table.php +44 -0
  48. package/server/migrations/2023_05_03_025310_add_foreign_keys_to_reviews_table.php +38 -0
  49. package/server/migrations/2023_05_03_025310_add_foreign_keys_to_store_hours_table.php +32 -0
  50. package/server/migrations/2023_05_03_025310_add_foreign_keys_to_store_locations_table.php +40 -0
  51. package/server/migrations/2023_05_03_025310_add_foreign_keys_to_stores_table.php +42 -0
  52. package/server/migrations/2023_05_03_025310_add_foreign_keys_to_votes_table.php +38 -0
  53. package/server/src/Auth/Schemas/Storefront.php +95 -0
  54. package/server/src/Console/Commands/NotifyStorefrontOrderNearby.php +86 -0
  55. package/server/src/Expansions/EntityExpansion.php +44 -0
  56. package/server/src/Http/Controllers/ActionController.php +119 -0
  57. package/server/src/Http/Controllers/AddonCategoryController.php +13 -0
  58. package/server/src/Http/Controllers/CustomerController.php +13 -0
  59. package/server/src/Http/Controllers/GatewayController.php +13 -0
  60. package/server/src/Http/Controllers/MetricsController.php +71 -0
  61. package/server/src/Http/Controllers/NetworkController.php +170 -0
  62. package/server/src/Http/Controllers/NotificationChannelController.php +13 -0
  63. package/server/src/Http/Controllers/OrderController.php +154 -0
  64. package/server/src/Http/Controllers/ProductAddonCategoryController.php +14 -0
  65. package/server/src/Http/Controllers/ProductAddonController.php +14 -0
  66. package/server/src/Http/Controllers/ProductController.php +123 -0
  67. package/server/src/Http/Controllers/ProductHourController.php +13 -0
  68. package/server/src/Http/Controllers/ProductVariantController.php +13 -0
  69. package/server/src/Http/Controllers/ProductVariantOptionController.php +13 -0
  70. package/server/src/Http/Controllers/ReviewController.php +13 -0
  71. package/server/src/Http/Controllers/StoreController.php +26 -0
  72. package/server/src/Http/Controllers/StoreHourController.php +13 -0
  73. package/server/src/Http/Controllers/StoreLocationController.php +13 -0
  74. package/server/src/Http/Controllers/StorefrontController.php +15 -0
  75. package/server/src/Http/Controllers/VoteController.php +13 -0
  76. package/server/src/Http/Controllers/v1/CartController.php +161 -0
  77. package/server/src/Http/Controllers/v1/CategoryController.php +138 -0
  78. package/server/src/Http/Controllers/v1/CheckoutController.php +957 -0
  79. package/server/src/Http/Controllers/v1/CustomerController.php +482 -0
  80. package/server/src/Http/Controllers/v1/GatewayControllerController.php +11 -0
  81. package/server/src/Http/Controllers/v1/NetworkController.php +281 -0
  82. package/server/src/Http/Controllers/v1/PaymentMethodController.php +11 -0
  83. package/server/src/Http/Controllers/v1/ProductController.php +94 -0
  84. package/server/src/Http/Controllers/v1/ReviewController.php +270 -0
  85. package/server/src/Http/Controllers/v1/ServiceQuoteController.php +402 -0
  86. package/server/src/Http/Controllers/v1/StoreController.php +176 -0
  87. package/server/src/Http/Filter/AddonCategoryFilter.php +19 -0
  88. package/server/src/Http/Filter/CustomerFilter.php +18 -0
  89. package/server/src/Http/Filter/GatewayFilter.php +13 -0
  90. package/server/src/Http/Filter/NetworkFilter.php +18 -0
  91. package/server/src/Http/Filter/NotificationChannelFilter.php +13 -0
  92. package/server/src/Http/Filter/OrderFilter.php +46 -0
  93. package/server/src/Http/Filter/ProductFilter.php +28 -0
  94. package/server/src/Http/Filter/StoreFilter.php +42 -0
  95. package/server/src/Http/Filter/StoreLocationFilter.php +23 -0
  96. package/server/src/Http/Middleware/SetStorefrontSession.php +130 -0
  97. package/server/src/Http/Requests/AddStoreToNetworkCategory.php +45 -0
  98. package/server/src/Http/Requests/CaptureOrderRequest.php +30 -0
  99. package/server/src/Http/Requests/CreateCustomerRequest.php +44 -0
  100. package/server/src/Http/Requests/CreateReviewRequest.php +34 -0
  101. package/server/src/Http/Requests/GetServiceQuoteFromCart.php +40 -0
  102. package/server/src/Http/Requests/InitializeCheckoutRequest.php +38 -0
  103. package/server/src/Http/Requests/NetworkActionRequest.php +43 -0
  104. package/server/src/Http/Requests/VerifyCreateCustomerRequest.php +31 -0
  105. package/server/src/Http/Resources/Cart.php +31 -0
  106. package/server/src/Http/Resources/Category.php +48 -0
  107. package/server/src/Http/Resources/Customer.php +36 -0
  108. package/server/src/Http/Resources/Gateway.php +32 -0
  109. package/server/src/Http/Resources/Media.php +29 -0
  110. package/server/src/Http/Resources/Network.php +48 -0
  111. package/server/src/Http/Resources/Product.php +209 -0
  112. package/server/src/Http/Resources/Review.php +45 -0
  113. package/server/src/Http/Resources/ReviewCustomer.php +60 -0
  114. package/server/src/Http/Resources/Store.php +76 -0
  115. package/server/src/Http/Resources/StoreHour.php +29 -0
  116. package/server/src/Http/Resources/StoreLocation.php +33 -0
  117. package/server/src/Imports/ProductsImport.php +20 -0
  118. package/server/src/Jobs/DownloadProductImageUrl.php +60 -0
  119. package/server/src/Listeners/HandleOrderCompleted.php +31 -0
  120. package/server/src/Listeners/HandleOrderDispatched.php +34 -0
  121. package/server/src/Listeners/HandleOrderDriverAssigned.php +37 -0
  122. package/server/src/Listeners/HandleOrderStarted.php +27 -0
  123. package/server/src/Mail/StorefrontNetworkInvite.php +48 -0
  124. package/server/src/Models/AddonCategory.php +30 -0
  125. package/server/src/Models/Cart.php +691 -0
  126. package/server/src/Models/Checkout.php +166 -0
  127. package/server/src/Models/Customer.php +88 -0
  128. package/server/src/Models/Gateway.php +165 -0
  129. package/server/src/Models/Network.php +300 -0
  130. package/server/src/Models/NetworkStore.php +86 -0
  131. package/server/src/Models/NotificationChannel.php +147 -0
  132. package/server/src/Models/PaymentMethod.php +99 -0
  133. package/server/src/Models/Product.php +315 -0
  134. package/server/src/Models/ProductAddon.php +128 -0
  135. package/server/src/Models/ProductAddonCategory.php +90 -0
  136. package/server/src/Models/ProductHour.php +59 -0
  137. package/server/src/Models/ProductStoreLocation.php +77 -0
  138. package/server/src/Models/ProductVariant.php +125 -0
  139. package/server/src/Models/ProductVariantOption.php +86 -0
  140. package/server/src/Models/Review.php +127 -0
  141. package/server/src/Models/Store.php +478 -0
  142. package/server/src/Models/StoreHour.php +59 -0
  143. package/server/src/Models/StoreLocation.php +126 -0
  144. package/server/src/Models/StorefrontModel.php +22 -0
  145. package/server/src/Models/Vote.php +84 -0
  146. package/server/src/Notifications/StorefrontOrderCanceled.php +196 -0
  147. package/server/src/Notifications/StorefrontOrderCompleted.php +201 -0
  148. package/server/src/Notifications/StorefrontOrderCreated.php +157 -0
  149. package/server/src/Notifications/StorefrontOrderDriverAssigned.php +200 -0
  150. package/server/src/Notifications/StorefrontOrderEnroute.php +199 -0
  151. package/server/src/Notifications/StorefrontOrderNearby.php +201 -0
  152. package/server/src/Notifications/StorefrontOrderPreparing.php +202 -0
  153. package/server/src/Notifications/StorefrontOrderReadyForPickup.php +202 -0
  154. package/server/src/Observers/NetworkObserver.php +40 -0
  155. package/server/src/Observers/ProductObserver.php +118 -0
  156. package/server/src/Providers/EventServiceProvider.php +23 -0
  157. package/server/src/Providers/StorefrontServiceProvider.php +103 -0
  158. package/server/src/Support/Metrics.php +193 -0
  159. package/server/src/Support/OrderConfig.php +13 -0
  160. package/server/src/Support/QPay.php +208 -0
  161. package/server/src/Support/Storefront.php +201 -0
  162. package/server/src/routes.php +180 -0
  163. package/server/tests/Feature.php +5 -0
@@ -0,0 +1,29 @@
1
+ <?php
2
+
3
+ $finder = PhpCsFixer\Finder::create()
4
+ ->in(__DIR__ . DIRECTORY_SEPARATOR . 'server' . DIRECTORY_SEPARATOR . 'tests')
5
+ ->in(__DIR__ . DIRECTORY_SEPARATOR . 'server' . DIRECTORY_SEPARATOR . 'src')
6
+ ->append(['.php-cs-fixer.php']);
7
+
8
+ $rules = [
9
+ '@Symfony' => true,
10
+ 'phpdoc_no_empty_return' => false,
11
+ 'array_syntax' => ['syntax' => 'short'],
12
+ 'yoda_style' => false,
13
+ 'binary_operator_spaces' => [
14
+ 'operators' => [
15
+ '=>' => 'align',
16
+ '=' => 'align',
17
+ ],
18
+ ],
19
+ 'concat_space' => ['spacing' => 'one'],
20
+ 'not_operator_with_space' => false,
21
+ 'increment_style' => ['style' => 'post'],
22
+ 'indentation_type' => true,
23
+ 'single_quote' => true,
24
+ ];
25
+
26
+ return (new PhpCsFixer\Config())
27
+ ->setUsingCache(true)
28
+ ->setRules($rules)
29
+ ->setFinder($finder);
package/LICENSE.md CHANGED
@@ -1,9 +1,21 @@
1
1
  The MIT License (MIT)
2
2
 
3
- Copyright (c) 2022
3
+ Copyright (c) 2023 Fleetbase
4
4
 
5
- Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
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:
6
11
 
7
- The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
8
14
 
9
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
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 CHANGED
@@ -1,32 +1,125 @@
1
- # @fleetbase/storefront-engine
1
+ <p align="center">
2
+ <p align="center">
3
+ <img src="https://camo.githubusercontent.com/870812d4ebe999bd1434db7ffcb27c2f347f1c2c6af1842e59ae8b28855b4b42/68747470733a2f2f666c622d6173736574732e73332e61702d736f757468656173742d312e616d617a6f6e6177732e636f6d2f7374617469632f73746f726566726f6e742d6c6f676f2e737667" width="380" height="100" />
4
+ </p>
5
+ <p align="center">
6
+ Open-source Headless Commerce & Marketplace Extension for Fleetbase
7
+ </p>
8
+ </p>
2
9
 
3
- [Short description of the addon.]
10
+ ---
4
11
 
12
+ ## Overview
5
13
 
6
- ## Compatibility
14
+ This monorepo contains both the frontend and backend components of the Storefront extension for Fleetbase. The frontend is built using Ember.js and the backend is implemented in PHP.
7
15
 
8
- * Ember.js v3.24 or above
9
- * Ember CLI v3.24 or above
10
- * Node.js v14 or above
16
+ ### Requirements
11
17
 
18
+ - PHP 7.3.0 or above
19
+ - Ember.js v3.24 or above
20
+ - Ember CLI v3.24 or above
21
+ - Node.js v14 or above
12
22
 
13
- ## Installation
23
+ ## Structure
14
24
 
15
25
  ```
16
- ember install @fleetbase/storefront-engine
26
+ ├── addon
27
+ ├── app
28
+ ├── assets
29
+ ├── translations
30
+ ├── config
31
+ ├── node_modules
32
+ ├── server
33
+ │ ├── config
34
+ │ ├── data
35
+ │ ├── migrations
36
+ │ ├── resources
37
+ │ ├── src
38
+ │ ├── tests
39
+ │ └── vendor
40
+ ├── tests
41
+ ├── testem.js
42
+ ├── index.js
43
+ ├── package.json
44
+ ├── phpstan.neon.dist
45
+ ├── phpunit.xml.dist
46
+ ├── pnpm-lock.yaml
47
+ ├── ember-cli-build.js
48
+ ├── composer.json
49
+ ├── CONTRIBUTING.md
50
+ ├── LICENSE.md
51
+ ├── README.md
52
+ ```
53
+
54
+ ## Installation
55
+
56
+ ### Backend
57
+
58
+ Install the PHP packages using Composer:
59
+
60
+ ```bash
61
+ composer require fleetbase/core-api
62
+ composer require fleetbase/fleetops-api
63
+ composer require fleetbase/storefront-api
17
64
  ```
65
+ ### Frontend
18
66
 
67
+ Install the Ember.js Engine/Addon:
68
+
69
+ ```bash
70
+ pnpm install @fleetbase/storefront-engine
71
+ ```
19
72
 
20
73
  ## Usage
21
74
 
22
- [Longer description of how to use the addon in apps.]
75
+ ### Backend
76
+
77
+ 🧹 Keep a modern codebase with **PHP CS Fixer**:
78
+ ```bash
79
+ composer lint
80
+ ```
23
81
 
82
+ ⚗️ Run static analysis using **PHPStan**:
83
+ ```bash
84
+ composer test:types
85
+ ```
24
86
 
25
- ## Contributing
87
+ Run unit tests using **PEST**
88
+ ```bash
89
+ composer test:unit
90
+ ```
26
91
 
27
- See the [Contributing](CONTRIBUTING.md) guide for details.
92
+ 🚀 Run the entire test suite:
93
+ ```bash
94
+ composer test
95
+ ```
28
96
 
97
+ ### Frontend
29
98
 
30
- ## License
99
+ 🧹 Keep a modern codebase with **ESLint**:
100
+ ```bash
101
+ pnpm lint
102
+ ```
31
103
 
32
- This project is licensed under the [MIT License](LICENSE.md).
104
+ Run unit tests using **Ember/QUnit**
105
+ ```bash
106
+ pnpm test
107
+ pnpm test:ember
108
+ pnpm test:ember-compatibility
109
+ ```
110
+
111
+ 🚀 Start the Ember Addon/Engine
112
+ ```bash
113
+ pnpm start
114
+ ```
115
+
116
+ 🔨 Build the Ember Addon/Engine
117
+ ```bash
118
+ pnpm build
119
+ ```
120
+
121
+ ## Contributing
122
+ See the Contributing Guide for details on how to contribute to this project.
123
+
124
+ ## License
125
+ This project is licensed under the MIT License.
package/composer.json ADDED
@@ -0,0 +1,88 @@
1
+ {
2
+ "name": "fleetbase/storefront-api",
3
+ "version": "0.1.9",
4
+ "description": "Headless Commerce & Marketplace Extension for Fleetbase",
5
+ "keywords": [
6
+ "fleetbase-extension",
7
+ "storefront",
8
+ "headless commerce",
9
+ "marketplace",
10
+ "e-commerce"
11
+ ],
12
+ "license": "MIT",
13
+ "authors": [
14
+ {
15
+ "name": "Fleetbase Pte Ltd.",
16
+ "email": "hello@fleetbase.io"
17
+ },
18
+ {
19
+ "name": "Ronald A. Richardson",
20
+ "email": "ron@fleetbase.io"
21
+ }
22
+ ],
23
+ "require": {
24
+ "php": "^7.4|^8.0",
25
+ "fleetbase/core-api": "^1.2.6",
26
+ "fleetbase/fleetops-api": "^0.2.7",
27
+ "geocoder-php/google-maps-places-provider": "^1.4",
28
+ "laravel-notification-channels/apn": "^3.8",
29
+ "laravel-notification-channels/fcm": "^2.7",
30
+ "laravel-notification-channels/twilio": "^3.3",
31
+ "milon/barcode": "^9.0",
32
+ "php-http/guzzle7-adapter": "^1.0",
33
+ "psr/http-factory-implementation": "*",
34
+ "toin0u/geocoder-laravel": "^4.4"
35
+ },
36
+ "require-dev": {
37
+ "friendsofphp/php-cs-fixer": "^3.34.1",
38
+ "nunomaduro/collision": "^5.11.0|^6.4.0",
39
+ "pestphp/pest": "^1.22.6",
40
+ "phpstan/phpstan": "^1.10.38",
41
+ "symfony/var-dumper": "^5.4.29"
42
+ },
43
+ "autoload": {
44
+ "psr-4": {
45
+ "Fleetbase\\Storefront\\": "src/"
46
+ }
47
+ },
48
+ "autoload-dev": {
49
+ "psr-4": {
50
+ "Fleetbase\\Storefront\\Tests\\": "tests/"
51
+ }
52
+ },
53
+ "minimum-stability": "dev",
54
+ "prefer-stable": true,
55
+ "extra": {
56
+ "laravel": {
57
+ "providers": [
58
+ "Fleetbase\\Storefront\\Providers\\StorefrontServiceProvider",
59
+ "Fleetbase\\Storefront\\Providers\\EventServiceProvider"
60
+ ]
61
+ },
62
+ "fleetbase": {
63
+ "create-database": "storefront",
64
+ "order-config": "Fleetbase\\Storefront\\Support\\OrderConfig",
65
+ "sandbox-migrations": false
66
+ }
67
+ },
68
+ "config": {
69
+ "vendor-dir": "./server_vendor",
70
+ "sort-packages": true,
71
+ "preferred-install": "dist",
72
+ "allow-plugins": {
73
+ "pestphp/pest-plugin": true,
74
+ "php-http/discovery": true
75
+ }
76
+ },
77
+ "scripts": {
78
+ "lint": "php-cs-fixer fix -v",
79
+ "test:lint": "php-cs-fixer fix -v --dry-run",
80
+ "test:types": "phpstan analyse --ansi --memory-limit=0",
81
+ "test:unit": "pest --colors=always",
82
+ "test": [
83
+ "@test:lint",
84
+ "@test:types",
85
+ "@test:unit"
86
+ ]
87
+ }
88
+ }
package/extension.json ADDED
@@ -0,0 +1,10 @@
1
+ {
2
+ "name": "Storefront",
3
+ "version": "0.1.9",
4
+ "description": "Headless Commerce & Marketplace Extension for Fleetbase",
5
+ "repository": "https://github.com/fleetbase/storefront",
6
+ "license": "MIT",
7
+ "author": "Fleetbase Pte Ltd <hello@fleetbase.io>",
8
+ "engine": "package.json",
9
+ "api": "composer.json"
10
+ }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@fleetbase/storefront-engine",
3
- "version": "0.1.7",
4
- "description": "Fleetbase Storefront extension provides a headless commerce module for launching e-commerce stores, on-demand apps, or marketplaces.",
3
+ "version": "0.1.9",
4
+ "description": "Headless Commerce & Marketplace Extension for Fleetbase",
5
5
  "fleetbase": {
6
6
  "route": "storefront",
7
7
  "dashboard": "storefront/int/v1/dashboard"
@@ -16,7 +16,7 @@
16
16
  "ember-engine",
17
17
  "ember-addon"
18
18
  ],
19
- "repository": "https://github.com/fleetbase/storefront-engine",
19
+ "repository": "https://github.com/fleetbase/storefront",
20
20
  "license": "MIT",
21
21
  "author": "Fleetbase Pte Ltd <hello@fleetbase.io>",
22
22
  "directories": {
@@ -40,9 +40,9 @@
40
40
  "publish:github": "npm config set '@fleetbase:registry' https://npm.pkg.github.com/ && npm publish"
41
41
  },
42
42
  "dependencies": {
43
- "@fleetbase/ember-core": "^0.1.2",
44
- "@fleetbase/ember-ui": "^0.1.8",
45
- "@fleetbase/fleetops-data": "^0.0.6",
43
+ "@fleetbase/ember-core": "^0.1.3",
44
+ "@fleetbase/ember-ui": "^0.1.9",
45
+ "@fleetbase/fleetops-data": "^0.1.0",
46
46
  "@fortawesome/ember-fontawesome": "^0.4.1",
47
47
  "@fortawesome/fontawesome-svg-core": "^6.4.0",
48
48
  "@fortawesome/free-solid-svg-icons": "^6.4.0",
@@ -0,0 +1,8 @@
1
+ parameters:
2
+ level: max
3
+ paths:
4
+ - src
5
+
6
+ checkMissingIterableValueType: true
7
+ checkGenericClassInNonGenericObjectType: false
8
+ reportUnmatchedIgnoredErrors: true
@@ -0,0 +1,16 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3
+ xsi:noNamespaceSchemaLocation="./vendor/phpunit/phpunit/phpunit.xsd"
4
+ colors="true"
5
+ >
6
+ <testsuites>
7
+ <testsuite name="default">
8
+ <directory suffix=".php">./tests</directory>
9
+ </testsuite>
10
+ </testsuites>
11
+ <filter>
12
+ <whitelist processUncoveredFilesFromWhitelist="true">
13
+ <directory suffix=".php">./src</directory>
14
+ </whitelist>
15
+ </filter>
16
+ </phpunit>
@@ -0,0 +1,14 @@
1
+ /art export-ignore
2
+ /docs export-ignore
3
+ /tests export-ignore
4
+ /scripts export-ignore
5
+ /.github export-ignore
6
+ /.php_cs export-ignore
7
+ .editorconfig export-ignore
8
+ .gitattributes export-ignore
9
+ .gitignore export-ignore
10
+ phpstan.neon.dist export-ignore
11
+ phpunit.xml.dist export-ignore
12
+ CHANGELOG.md export-ignore
13
+ CONTRIBUTING.md export-ignore
14
+ README.md export-ignore
@@ -0,0 +1,40 @@
1
+ <p align="center">
2
+ <p align="center">
3
+ <img src="https://camo.githubusercontent.com/870812d4ebe999bd1434db7ffcb27c2f347f1c2c6af1842e59ae8b28855b4b42/68747470733a2f2f666c622d6173736574732e73332e61702d736f757468656173742d312e616d617a6f6e6177732e636f6d2f7374617469632f73746f726566726f6e742d6c6f676f2e737667" width="380" height="100" />
4
+ </p>
5
+ <p align="center">
6
+ Open-source headless commerce & marketplace extension for Fleetbase
7
+ </p>
8
+ </p>
9
+
10
+ ------
11
+ This package provides the Storefront extension API resources required by Fleetbase API.
12
+
13
+ > **Requires [PHP 7.3.0+](https://php.net/releases/)**
14
+
15
+ ⚡️ Install Storefront [Composer](https://getcomposer.org):
16
+
17
+ ```bash
18
+ composer require fleetbase/fleetops-api
19
+ composer require fleetbase/storefront-api
20
+ ```
21
+
22
+ 🧹 Keep a modern codebase with **PHP CS Fixer**:
23
+ ```bash
24
+ composer lint
25
+ ```
26
+
27
+ ⚗️ Run static analysis using **PHPStan**:
28
+ ```bash
29
+ composer test:types
30
+ ```
31
+
32
+ ✅ Run unit tests using **PEST**
33
+ ```bash
34
+ composer test:unit
35
+ ```
36
+
37
+ 🚀 Run the entire test suite:
38
+ ```bash
39
+ composer test
40
+ ```
@@ -0,0 +1,101 @@
1
+ <?php
2
+
3
+ $storefrontFlow = [
4
+ 'created' => [
5
+ 'sequence' => 0,
6
+ 'color' => 'green',
7
+ 'events' => [
8
+ [
9
+ 'status' => 'Order is being prepared',
10
+ 'details' => 'Order has been received by {storefront.name} and is being prepared',
11
+ 'code' => 'preparing',
12
+ ],
13
+ [
14
+ 'status' => 'Order canceled',
15
+ 'details' => 'Order could not be accepted',
16
+ 'code' => 'canceled',
17
+ ],
18
+ ],
19
+ ],
20
+ 'preparing' => [
21
+ 'sequence' => 1,
22
+ 'color' => 'orange',
23
+ 'events' => [
24
+ [
25
+ 'if' => [['meta.is_pickup', '=', true]],
26
+ 'status' => 'Order is ready for pickup',
27
+ 'details' => 'Order is ready to be picked up by customer.',
28
+ 'code' => 'ready',
29
+ ],
30
+ [
31
+ 'status' => 'Order dispatched',
32
+ 'details' => 'Order has been dispatched to driver',
33
+ 'code' => 'dispatched',
34
+ ],
35
+ ]
36
+ ],
37
+ 'ready' => [
38
+ 'sequence' => 2,
39
+ 'color' => 'green',
40
+ 'events' => [
41
+ [
42
+ 'status' => 'Order picked up',
43
+ 'details' => 'Order has been picked up by customer.',
44
+ 'code' => 'completed',
45
+ ]
46
+ ]
47
+ ],
48
+ 'dispatched' => [
49
+ 'sequence' => 2,
50
+ 'color' => 'blue',
51
+ 'events' => [
52
+ [
53
+ 'status' => 'Driver en-route',
54
+ 'details' => 'Driver en-route to location',
55
+ 'code' => 'driver_enroute',
56
+ ]
57
+ ]
58
+ ],
59
+ 'driver_enroute' => [
60
+ 'sequence' => 3,
61
+ 'color' => 'green',
62
+ 'events' => [
63
+ [
64
+ 'status' => 'Order completed',
65
+ 'details' => 'Driver has completed order',
66
+ 'code' => 'completed',
67
+ ],
68
+ ]
69
+ ],
70
+ ];
71
+
72
+
73
+ return [
74
+ /*
75
+ |--------------------------------------------------------------------------
76
+ | API Events
77
+ |--------------------------------------------------------------------------
78
+ */
79
+
80
+ 'events' => [],
81
+
82
+ /*
83
+ |--------------------------------------------------------------------------
84
+ | API Resource Types
85
+ |--------------------------------------------------------------------------
86
+ */
87
+
88
+ 'types' => [
89
+ 'order' => [
90
+ [
91
+ 'name' => 'Storefront',
92
+ 'description' => 'Operational flow for storefront apps.',
93
+ 'key' => 'storefront',
94
+ 'meta_type' => 'order_config',
95
+ 'meta' => [
96
+ 'flow' => $storefrontFlow,
97
+ ],
98
+ ],
99
+ ]
100
+ ]
101
+ ];
@@ -0,0 +1,57 @@
1
+ <?php
2
+
3
+ use Fleetbase\Support\Utils;
4
+
5
+ $host = env('DB_HOST', '127.0.0.1');
6
+ $database = env('DB_DATABASE', 'fleetbase');
7
+ $username = env('DB_USERNAME', 'fleetbase');
8
+ $password = env('DB_PASSWORD', '');
9
+
10
+ if ($databaseUrl = getenv('DATABASE_URL')) {
11
+ $url = Utils::parseUrl($databaseUrl);
12
+
13
+ $host = $url['host'];
14
+ $username = $url['user'];
15
+ if (isset($url['pass'])) {
16
+ $password = $url['pass'];
17
+ }
18
+ $database = substr($url['path'], 1);
19
+ }
20
+
21
+ $mysql_options = [];
22
+
23
+ if (env('APP_ENV') === 'local') {
24
+ $mysql_options[PDO::ATTR_EMULATE_PREPARES] = true;
25
+ }
26
+
27
+ /*
28
+ |--------------------------------------------------------------------------
29
+ | Database Connections
30
+ |--------------------------------------------------------------------------
31
+ |
32
+ | Here are each of the database connections setup for your application.
33
+ | Of course, examples of configuring each database platform that is
34
+ | supported by Laravel is shown below to make development simple.
35
+ |
36
+ |
37
+ | All database work in Laravel is done through the PHP PDO facilities
38
+ | so make sure you have the driver for your particular database of
39
+ | choice installed on your machine before you begin development.
40
+ |
41
+ */
42
+ return [
43
+ 'storefront' => [
44
+ 'driver' => 'mysql',
45
+ 'host' => $host,
46
+ 'port' => env('STOREFRONT_DB_PORT', '3306'),
47
+ 'database' => $database . '_storefront',
48
+ 'username' => $username,
49
+ 'password' => $password,
50
+ 'charset' => 'utf8mb4',
51
+ 'collation' => 'utf8mb4_unicode_ci',
52
+ 'prefix' => '',
53
+ 'strict' => true,
54
+ 'engine' => null,
55
+ 'options' => $mysql_options,
56
+ ],
57
+ ];
@@ -0,0 +1,19 @@
1
+ <?php
2
+
3
+ /**
4
+ * -------------------------------------------
5
+ * Fleetbase Core API Configuration
6
+ * -------------------------------------------
7
+ */
8
+ return [
9
+ 'api' => [
10
+ 'version' => '0.0.1',
11
+ 'routing' => [
12
+ 'prefix' => 'storefront',
13
+ 'internal_prefix' => 'int'
14
+ ],
15
+ ],
16
+ 'connection' => [
17
+ 'db' => env('STOREFRONT_DB_CONNECTION', 'storefront')
18
+ ]
19
+ ];
@@ -0,0 +1,36 @@
1
+ <?php
2
+
3
+ return [
4
+ 'username' => env('TWILIO_USERNAME'), // optional when using auth token
5
+ 'password' => env('TWILIO_PASSWORD'), // optional when using auth token
6
+ 'auth_token' => env('TWILIO_TOKEN'), // optional when using username and password
7
+ 'account_sid' => env('TWILIO_SID'),
8
+
9
+ 'from' => env('TWILIO_FROM'), // optional
10
+ 'alphanumeric_sender' => env('TWILIO_ALPHA_SENDER'),
11
+
12
+ /**
13
+ * See https://www.twilio.com/docs/sms/services.
14
+ */
15
+ 'sms_service_sid' => env('TWILIO_SMS_SERVICE_SID'),
16
+
17
+ /**
18
+ * Specify a number where all calls/messages should be routed. This can be used in development/staging environments
19
+ * for testing.
20
+ */
21
+ 'debug_to' => env('TWILIO_DEBUG_TO'),
22
+
23
+ /**
24
+ * If an exception is thrown with one of these error codes, it will be caught & suppressed.
25
+ * To replicate the 2.x behaviour, specify '*' in the array, which will cause all exceptions to be suppressed.
26
+ * Suppressed errors will not be logged or reported, but the `NotificationFailed` event will be emitted.
27
+ *
28
+ * @see https://www.twilio.com/docs/api/errors
29
+ */
30
+ 'ignored_error_codes' => [
31
+ 21608, // The 'to' phone number provided is not yet verified for this account.
32
+ 21211, // Invalid 'To' Phone Number
33
+ 21614, // 'To' number is not a valid mobile number
34
+ 21408, // Permission to send an SMS has not been enabled for the region indicated by the 'To' number
35
+ ],
36
+ ];
@@ -0,0 +1,44 @@
1
+ <?php
2
+
3
+ use Illuminate\Database\Migrations\Migration;
4
+ use Illuminate\Database\Schema\Blueprint;
5
+ use Illuminate\Support\Facades\Schema;
6
+
7
+ return new class extends Migration
8
+ {
9
+ /**
10
+ * Run the migrations.
11
+ *
12
+ * @return void
13
+ */
14
+ public function up()
15
+ {
16
+ Schema::connection(config('storefront.connection.db'))->create('carts', function (Blueprint $table) {
17
+ $table->bigIncrements('id');
18
+ $table->char('uuid', 36)->nullable()->unique();
19
+ $table->string('public_id')->nullable()->index();
20
+ $table->char('company_uuid', 36)->nullable()->index('carts_company_uuid_foreign');
21
+ $table->char('user_uuid', 36)->nullable()->index('carts_user_uuid_foreign');
22
+ $table->char('checkout_uuid', 36)->nullable()->index('carts_checkout_uuid_foreign');
23
+ $table->string('customer_id')->nullable();
24
+ $table->string('unique_identifier')->nullable();
25
+ $table->string('currency')->nullable();
26
+ $table->string('discount_code')->nullable();
27
+ $table->json('items')->nullable();
28
+ $table->json('events')->nullable();
29
+ $table->dateTime('expires_at')->nullable()->index();
30
+ $table->softDeletes();
31
+ $table->timestamps();
32
+ });
33
+ }
34
+
35
+ /**
36
+ * Reverse the migrations.
37
+ *
38
+ * @return void
39
+ */
40
+ public function down()
41
+ {
42
+ Schema::connection(config('storefront.connection.db'))->dropIfExists('carts');
43
+ }
44
+ };