Compare commits

..

1175 Commits

Author SHA1 Message Date
Ronald A. Richardson
0e4baa34e0 Hotfix: patch dropdown menu item isComponent
Some checks failed
Fleetbase CI/CD / Build and Deploy the Service (push) Has been cancelled
Fleetbase CI/CD / Build and Deploy the Console (push) Has been cancelled
2025-12-30 12:08:29 +08:00
Ronald A. Richardson
d6d078df62 Upgraded solid extension 2025-12-30 10:58:45 +08:00
Ronald A. Richardson
7252a95805 Merge branch 'main' of github.com:fleetbase/fleetbase into cloud
Some checks failed
Fleetbase CI/CD / Build and Deploy the Service (push) Has been cancelled
Fleetbase CI/CD / Build and Deploy the Console (push) Has been cancelled
2025-12-29 22:26:36 +08:00
Ron
b25da51496 Merge pull request #486 from fleetbase/dev-v0.7.25
Some checks failed
Fleetbase CI / Build and Start Docker Services (push) Has been cancelled
feat: New SMS service to support multiple SMS providers + framework improvements
2025-12-29 21:02:03 +08:00
Ronald A. Richardson
7d776f2bd5 updated pnpm lockfile overrides 2025-12-29 20:48:29 +08:00
Ronald A. Richardson
ecfcec72e4 updated override versions 2025-12-29 20:39:25 +08:00
Ronald A. Richardson
ca1741a4b2 feat: New SMS service to support multiple SMS providers + framework improvements 2025-12-29 20:36:43 +08:00
Ronald A. Richardson
7ba7821fed Merge branch 'main' of github.com:fleetbase/fleetbase into cloud
Some checks failed
Fleetbase CI/CD / Build and Deploy the Service (push) Has been cancelled
Fleetbase CI/CD / Build and Deploy the Console (push) Has been cancelled
2025-12-21 12:11:00 +08:00
Ron
947565bcf0 Merge pull request #483 from fleetbase/dev-v0.7.24
Some checks failed
Fleetbase CI / Build and Start Docker Services (push) Has been cancelled
Fix: Critical cache key collision bug in ApiModelCache
2025-12-21 12:05:16 +08:00
Ronald A. Richardson
2d4cc5cf66 Fix: Critical cache key collision bug in ApiModelCache 2025-12-21 12:02:53 +08:00
Ronald A. Richardson
af3c60fc7c Merge branch 'main' of github.com:fleetbase/fleetbase into cloud
Some checks failed
Fleetbase CI/CD / Build and Deploy the Service (push) Has been cancelled
Fleetbase CI/CD / Build and Deploy the Console (push) Has been cancelled
2025-12-19 23:25:46 +08:00
Ronald A. Richardson
53a87d6f38 Hotfix: load iam engine for user-form modal when creating driver
Some checks failed
Fleetbase CI / Build and Start Docker Services (push) Has been cancelled
2025-12-19 23:17:51 +08:00
Ronald A. Richardson
a372b515da Merge branch 'main' of github.com:fleetbase/fleetbase into cloud 2025-12-19 23:00:09 +08:00
Ronald A. Richardson
d7f8f87315 Hotfix: onboarding wrapper stylings added back 2025-12-19 22:58:29 +08:00
Ronald A. Richardson
f8b9c0415b Merge branch 'main' of github.com:fleetbase/fleetbase into cloud 2025-12-19 22:54:30 +08:00
Ron
36673ef564 Merge pull request #482 from fleetbase/dev-v0.7.23
dev-v0.7.23
2025-12-19 22:41:13 +08:00
Ronald A. Richardson
19341c81e7 Minor tweaks to user model and profile page 2025-12-19 22:39:41 +08:00
Ronald A. Richardson
b4ecf5bda9 bump FLEETBASE_VERSION in Dockerfile 2025-12-19 22:24:38 +08:00
Ronald A. Richardson
1b714a7ef8 Release ready 2025-12-19 22:23:39 +08:00
Ron
e41cd62ea5 Merge pull request #481 from fleetbase/feature/onboarding-wrapper-architecture
feat: Add wrapper component support to onboarding orchestrator
2025-12-19 15:56:49 +08:00
Ronald A. Richardson
1ca1342052 feat: fixed optimization changes for octane, added deprecation workflow 2025-12-19 15:56:03 +08:00
roncodes
a5a5ddb0d5 perf: Optimize FrankenPHP/Octane configuration for high load
**Changes:**

1. **Caddyfile**:
   - Reduced num_threads from 24 to 20
   - Added request timeouts (read_body: 10s, write: 60s, idle: 120s)
   - With 4 containers: 20 × 4 = 80 total workers

2. **Dockerfile**:
   - Added explicit --workers=20 to octane:frankenphp command
   - Increased --max-requests from 250 to 1000
   - Applied to app-dev, app-release, and app stages

3. **Octane config**:
   - Enabled DisconnectFromDatabases listener
   - Enabled CollectGarbage listener
   - Prevents DB connection leaks and memory leaks

**Impact:**
- Better resource management under load
- Prevents connection pool exhaustion
- Requires db.t3.large (591 max connections) or better
- Supports up to 250 concurrent VUs

**Related:**
- Requires RDS upgrade from db.t4g.micro to db.t3.large
- Works with DB_CONNECTION_POOL_SIZE=25 (100 total connections)
- See configuration-analysis.md for details
2025-12-16 20:06:35 -05:00
Ronald A. Richardson
c51f3ca6c8 v0.7.23 2025-12-17 08:57:41 +08:00
roncodes
a9b172081a feat: Add lifecycle hooks support to onboarding orchestrator
- Add onFlowWillStart, onFlowDidStart, onStepWillChange, onStepDidChange, onFlowWillEnd, onFlowDidEnd hooks
- Hooks are optional and backward compatible with existing flows
- Add getCurrentPath() and isStepInPath() helper methods for multi-path flows
- Support dynamic next() functions (already existed, now documented)
- Maintain full backward compatibility with default@v1 flow
2025-12-11 23:10:23 -05:00
Ronald A. Richardson
a29ca0ecb9 feat: update onboarding-registry service to allow set default onboard flow on registration 2025-12-09 09:48:23 +08:00
roncodes
6442644438 feat: Add wrapper component support to onboarding orchestrator
- Add wrapper property to OnboardingOrchestratorService
- Update onboarding/yield component to render wrapper using lazy-engine-component
- Clean up onboard.hbs template to remove styling constraints
- Enable extensions to provide custom wrapper components for onboarding flows
2025-12-08 20:38:59 -05:00
Ronald A. Richardson
b525ad4b1a Upgraded Core-API & Fleet-Ops
Some checks failed
Fleetbase CI/CD / Build and Deploy the Service (push) Has been cancelled
Fleetbase CI/CD / Build and Deploy the Console (push) Has been cancelled
2025-12-08 18:39:28 +08:00
Ronald A. Richardson
b161b415d0 Upgraded core-api and fleetops api 2025-12-08 18:34:33 +08:00
Ronald A. Richardson
e444d7994c Upgraded Core-API to v1.6.29 & Fleet-Ops Engine to v0.6.30 2025-12-08 18:02:31 +08:00
Ronald A. Richardson
0e44375d32 Upgraded Core API to v1.6.29 2025-12-08 17:59:47 +08:00
Ronald A. Richardson
a9bb2f0166 Upgraded Fleet-Ops to v0.6.30 2025-12-08 17:39:06 +08:00
Ronald A. Richardson
ac02a6b6e0 Upgraded Storefront to v0.4.10
Some checks failed
Fleetbase CI/CD / Build and Deploy the Service (push) Has been cancelled
Fleetbase CI/CD / Build and Deploy the Console (push) Has been cancelled
2025-12-07 15:13:22 +08:00
Ronald A. Richardson
4a640561d6 Merge branch 'main' of github.com:fleetbase/fleetbase into cloud 2025-12-07 14:50:12 +08:00
Ron
0238632fdd Merge pull request #477 from fleetbase/dev-v0.7.22
Some checks failed
Fleetbase CI / Build and Start Docker Services (push) Has been cancelled
Organizations can now set their own alpha-numeric sender ID for SMS
2025-12-07 06:37:02 +00:00
Ronald A. Richardson
27652db9c3 Organizations can now set their own alpha-numeric sender ID for SMS 2025-12-07 14:15:31 +08:00
Ronald A. Richardson
5957bc6339 Merge branch 'main' of github.com:fleetbase/fleetbase into cloud
Some checks failed
Fleetbase CI/CD / Build and Deploy the Service (push) Has been cancelled
Fleetbase CI/CD / Build and Deploy the Console (push) Has been cancelled
2025-12-06 22:05:13 +08:00
Ronald A. Richardson
5eaf2039d4 Fix: correct version of ember-ui in console/package.json
Some checks failed
Fleetbase CI / Build and Start Docker Services (push) Has been cancelled
2025-12-06 21:49:14 +08:00
Ron
d8c06ae0be Merge pull request #476 from fleetbase/dev-v0.7.21
v0.7.21 ~ 5x faster css compiling and flawless builds
2025-12-06 13:41:42 +00:00
Ronald A. Richardson
c9011b3ffa *critical* patch to load-extensions initializer 2025-12-06 21:38:02 +08:00
Ronald A. Richardson
520de0f6bc fixed formating on console/package.json 2025-12-06 19:39:24 +08:00
Ronald A. Richardson
ba6ed235e3 v0.7.21 ~ 5x faster css compiling and flawless builds 2025-12-06 19:26:17 +08:00
Ronald A. Richardson
9b15a6856f Pin all dependencies
Some checks failed
Fleetbase CI/CD / Build and Deploy the Service (push) Has been cancelled
Fleetbase CI/CD / Build and Deploy the Console (push) Has been cancelled
2025-12-06 00:53:53 +08:00
Ronald A. Richardson
0a4e5b31cc Pin core dependencies 2025-12-06 00:28:06 +08:00
Ronald A. Richardson
0d47ffc785 Reverted to v0.7.19 2025-12-06 00:07:12 +08:00
Ronald A. Richardson
777d84a7fe Hotfix: added fleetbase-extension-generator lib dependency to package.json
Some checks failed
Fleetbase CI / Build and Start Docker Services (push) Has been cancelled
2025-12-05 23:20:04 +08:00
Ron
18fdfdf506 Merge pull request #475 from fleetbase/feat/remove-console-prebuild
Some checks failed
Fleetbase CI / Build and Start Docker Services (push) Has been cancelled
Remove console prebuild script, bump docker fleetbase version
2025-12-05 14:06:36 +00:00
Ronald A. Richardson
7e898dd54b Remove console prebuild script, bump docker fleetbase version 2025-12-05 22:02:46 +08:00
Ron
761c752a8e Merge pull request #474 from fleetbase/feature/extension-boot-refactor
feat: refactoring extension build pipelines
2025-12-05 13:14:24 +00:00
Ron
74d02efaa0 Merge pull request #470 from fleetbase/docs/add-translation-guide
docs: Add comprehensive translation contribution guide
2025-12-05 12:59:04 +00:00
Ron
aa928b43ba Merge pull request #464 from PicoBaz/add-persian-language
Add Persian (Farsi) Language Support in fa-ir.yaml
2025-12-05 12:58:43 +00:00
Ron
7ed422d893 Merge pull request #471 from johnfelipe/main
latin american spanish translation
2025-12-05 12:58:22 +00:00
Ronald A. Richardson
064fa12a43 Upgraded api dependencies 2025-12-05 20:53:44 +08:00
Ronald A. Richardson
32f0b22ed1 Merge remote-tracking branch 'origin/main' into feature/extension-boot-refactor 2025-12-05 20:49:32 +08:00
Ronald A. Richardson
4f87434911 Upgraded core dependencies 2025-12-05 20:43:53 +08:00
Ronald A. Richardson
498d519c49 Hard reset dependency files to main 2025-12-05 20:39:09 +08:00
Ronald A. Richardson
e4b008093d Fix api/composer.lock 2025-12-05 20:37:47 +08:00
Ronald A. Richardson
c31377b194 Merge branch 'feature/extension-boot-refactor' of github.com:fleetbase/fleetbase into feature/extension-boot-refactor 2025-12-05 20:32:29 +08:00
Ronald A. Richardson
6f397ea3cb fixing dependency merge conflicts 2025-12-05 20:32:04 +08:00
Ron
015c24585b Merge pull request #449 from valentinMERCIER/fix/docker-socket-example
Fix/docker socket example
2025-12-05 12:25:10 +00:00
roncodes
1f4b25faee feat: Clean up app/extensions directory before each build
Added directory cleanup logic to remove ./app/extensions before generating
new extension files. This prevents old/stale/removed extensions from
remaining in subsequent builds.

Changes:
- Added fs.rmSync to remove extensions directory if it exists
- Cleanup happens at the start of generateExtensionFiles()
- Directory is recreated during generation process
- Logs cleanup action for visibility

This ensures each build starts with a clean slate and only includes
currently installed extensions.
2025-12-05 07:20:24 -05:00
Ronald A. Richardson
3a193e414c almost ready for release 2025-12-05 20:15:55 +08:00
Ronald A. Richardson
9719632289 Preparing major release 2025-12-05 10:57:18 +08:00
roncodes
08dabaf138 fix: pass appInstance instead of appInstance.application
- Change window.Fleetbase = appInstance (not appInstance.application)
- Change setApplicationInstance(appInstance) (not appInstance.application)
- appInstance IS the ApplicationInstance, not the Application class
- Remove comment about RegistryService cascade
2025-12-02 21:07:27 -05:00
roncodes
7ae3ea95a2 feat: add set-application-instance initializer to console
- Create app/instance-initializers/set-application-instance.js
- Sets window.Fleetbase = appInstance.application for global access
- Calls universeService.setApplicationInstance() to cascade to RegistryService
- Ensures all services have access to root application container
- Required for UniverseRegistry singleton to work across engines
2025-12-02 21:00:56 -05:00
Ronald A. Richardson
9653cfcaf0 refactor of universe and lazy loading fix contd. 2025-12-03 09:55:12 +08:00
Ronald A. Richardson
cb7a2fb05b minor syntax tweaks 2025-11-28 18:10:24 +08:00
roncodes
fd569cfeaf fix: ensure intl polyfills load before runtime config
- Added name to load-intl-polyfills initializer
- Made load-runtime-config run after load-intl-polyfills
- Fixes race condition where intl service initialized before polyfill data loaded
- Resolves MISSING_DATA errors for all locales (mn-mn, etc.)

Initialization order now:
1. load-intl-polyfills (loads formatjs polyfill data)
2. load-runtime-config (loads fleetbase.config.json)
3. load-socketcluster-client
4. Other initializers
2025-11-28 04:52:07 -05:00
roncodes
0f9cd52bb4 fix: correct locale format from en-us to en-US
- Fixed ember-intl locale format to use proper case (en-US)
- Renamed translation file: en-us.yaml → en-US.yaml
- Updated fallbackLocale in ember-intl config
- Updated default locale in application route
- Fixes MISSING_DATA error in Intl.NumberFormat

The Intl API requires proper locale format (en-US not en-us)
2025-11-28 04:46:06 -05:00
Ronald A. Richardson
72ce000786 Merge branch 'feature/extension-boot-refactor' of github.com:fleetbase/fleetbase into feature/extension-boot-refactor 2025-11-28 17:43:08 +08:00
Ronald A. Richardson
c9477b78f2 feat: updated ember-cli-build.js 2025-11-28 17:42:43 +08:00
roncodes
affa141c9d perf: optimize fleetbase.config.json loading with localStorage caching
- Added 1-hour localStorage cache for runtime config
- Reduces 750ms+ HTTP request to instant cache lookup
- Cache automatically expires and refreshes
- Includes cache clear utility function
- Uses browser cache as fallback
- Performance logging with debug()
- Excluded JSON files from fingerprinting

Expected improvement: 783ms → <5ms (99.4% faster)
2025-11-28 04:37:29 -05:00
roncodes
5726eb974f refactor: Move runtime config and router fix to proper Ember initializers
Refactored app.js boot sequence to follow Ember conventions:

1. Created app/initializers/load-runtime-config.js
   - Loads fleetbase.config.json before application boots
   - Uses deferReadiness/advanceReadiness pattern
   - Runs before all other initializers
   - Added performance timing with debug logging

2. Created app/instance-initializers/apply-router-fix.js
   - Applies router refresh bug fix patch
   - Runs as instance-initializer (needs app instance)
   - Runs before extension loading
   - Added performance timing with debug logging

3. Refactored app/app.js
   - Removed custom ready() hook
   - Removed document.addEventListener('DOMContentLoaded')
   - Removed manual deferReadiness/boot calls
   - Now uses standard Ember boot sequence
   - Clean, minimal implementation

Benefits:
- Follows Ember conventions and best practices
- Proper initialization order guaranteed
- Performance monitoring for boot phases
- Easier to debug and maintain
- No custom boot logic needed

Boot sequence:
1. load-runtime-config initializer (runs first)
2. Other initializers (socketcluster, etc.)
3. apply-router-fix instance-initializer
4. load-extensions instance-initializer
5. Other instance-initializers
6. Application ready
2025-11-27 23:12:14 -05:00
Ronald A. Richardson
ca3050905d feat: preparing for performance tweaking to page load sub 1s 2025-11-28 11:56:38 +08:00
roncodes
cf2ced1512 feat: Add ASCII logo header to generated files and improve console output
- Added Option 1 ASCII logo header to all generated files
- Header includes copyright notice and AGPL-3.0 license
- Improved console logging with [Fleetbase] prefix
- Better formatted output with separators and extension listing
- Cleaner file change notifications
- More professional and readable build output
2025-11-27 06:12:02 -05:00
roncodes
93b7224335 feat: Generate app/extensions/index.js with new format and cleanup
- Changed extension loader generation to create app/extensions/index.js
- New format uses direct imports instead of dynamic imports
- Added getExtensionLoader helper function
- Removed unused plugins directory
- Removed old extension-loaders.generated.js file
- Cleaner and simpler loader structure
2025-11-27 05:48:54 -05:00
roncodes
9a053cfd9f fix: Use exact working logic from prebuild.js in in-repo addon
- Copied all working functions from prebuild.js
- Adapted only for addon context (this.project.root instead of __dirname)
- No logic changes, just direct migration
- Should work exactly like prebuild.js did
2025-11-27 05:30:14 -05:00
roncodes
56897af057 Revert refactor - caused regression in extension discovery 2025-11-27 05:28:25 -05:00
roncodes
b27e485a44 fix: Router mount context issue and refactor into modular utilities
- Fixed 'this' context issue in addConsoleExtensions/addRootExtensions
- Refactored monolithic index.js into separate utility modules:
  - discover-extensions.js - Extension discovery logic
  - generate-extension-shims.js - Shim file generation
  - generate-extension-loaders.js - Loader map generation
  - generate-router.js - Router AST manipulation
  - generate-manifest.js - Manifest generation
  - watch-extensions.js - File watching logic
- Simplified index.js to orchestrate utilities
- Improved code organization and maintainability
2025-11-27 05:23:38 -05:00
Ronald A. Richardson
94c5407387 fix: syntax error in extensions generator lib 2025-11-27 18:15:27 +08:00
roncodes
54ac27b304 fix: Use correct router.map.js path (console/router.map.js not app/router.map.js) 2025-11-27 04:56:56 -05:00
roncodes
4fb596c866 fix: Router generation and add file watching for extension changes
**Router Generation Fixes:**
- Fix router.js parsing (was looking for non-existent router.map.js)
- Parse Router.map(function() {...}) structure correctly
- Fix console route detection (check for path: '/' config)
- Fix function expression location (3rd arg after path config)
- Fix root extensions to use this.mount() not router.mount()

**File Watching:**
- Add chokidar to watch extension.js files in development
- Regenerate shims and loaders when extension.js changes
- Cache discovered extensions for regeneration
- Only watch in development mode

**Issues Fixed:**
1. Router.js now properly contains engine mounts
2. Extension.js changes trigger automatic regeneration
2025-11-27 04:35:16 -05:00
roncodes
3f12e98448 refactor: Simplify extension generator to write directly to app directory
- Remove Broccoli tree complexity, use included() hook instead
- Write files directly to app/ using Node.js fs operations
- Generate extension shims in app/extensions/
- Generate extension loaders in app/utils/extension-loaders.generated.js
- Generate router.js with proper engine mounts using recast AST
- Generate extensions.json manifest in public/
- Add recast dependency for AST manipulation
- Much simpler and more reliable than Broccoli trees
2025-11-27 04:09:59 -05:00
roncodes
a1fc1e4ff8 fix: Correct Funnel srcDir configuration and add improved logging
- Fix BroccoliMergeTrees error by adding srcDir to Funnel calls
- extensionShims: srcDir 'extensions' (files in outputPath/extensions/)
- extensionLoaders: srcDir 'utils' (files in outputPath/utils/)
- routerGen: srcDir '/' (files at outputPath root)
- Add comprehensive debug logging to all plugins
- Add detailed logging to in-repo addon index.js
- Improves debugging and troubleshooting of build process
2025-11-27 03:25:56 -05:00
Ronald A. Richardson
d622b617c3 feat: migrate from plugins to in-app-repo with build hooks 2025-11-27 16:13:44 +08:00
roncodes
edba6c8396 fix: Correct Broccoli plugin wiring to merge into app.trees.app
- Merge generatedAppTree into app.trees.app before app.toTree()
- Fix Funnel srcDir/destDir configuration
- Remove prebuild extension generation (now handled by Broccoli)
- Add extensionManifestTree to expose dist/extensions.json
- Files now treated as real app source for ember-auto-import
2025-11-27 01:12:36 -05:00
roncodes
a0fc1ce402 feat: Implement extension boot refactor with prebuild approach
- Modified prebuild.js to generate extension shims in app/extensions/
- Generate extension-loaders.js with dynamic import map
- Added ember-auto-import allowAppImports configuration
- Extension setup code is now code-split into separate chunks
- Removed FleetbaseExtensionsIndexer in favor of prebuild generation
- Added generated files to .gitignore

Successfully tested: extension code is code-split into separate chunk
(chunk.app_extensions_fleetops_js.*.js)
2025-11-27 00:34:12 -05:00
Ronald A. Richardson
ffab66ac6c feat: refactoring extension build pipelines 2025-11-27 11:20:14 +08:00
roncodes
d3555c7c82 Revert "refactor: Migrate FleetbaseConsole to new Universe architecture"
Some checks failed
Fleetbase CI / Build and Start Docker Services (push) Has been cancelled
This reverts commit 4b12efef41.
2025-11-26 01:08:33 -05:00
roncodes
4b12efef41 refactor: Migrate FleetbaseConsole to new Universe architecture
## Changes

### Removed Old Instance Initializers
- Deleted `app/instance-initializers/load-extensions.js` (used bootEngines)
- Deleted `app/instance-initializers/initialize-widgets.js` (now in initialize-universe)

### Created New Instance Initializer
- `app/instance-initializers/initialize-universe.js`
  - Creates console-specific registries
  - Registers default dashboard widgets using WidgetService
  - Loads extension.js files from enabled extensions
  - No longer calls bootEngines (enables lazy loading)

### Migrated Application Route
- `app/routes/application.js`
  - Replaced `@service universe` with specialized services
  - Uses `@service('universe/hook-service')` for hook execution
  - Uses `@service('universe/extension-manager')` for boot waiting
  - `universe.callHooks()` → `hookService.execute()`
  - `universe.booting()` → `extensionManager.waitForBoot()`

### Migrated Dashboard Widget Panel
- `app/components/dashboard/widget-panel.js`
  - Replaced `@service universe` with `@service('universe/widget-service')`
  - `universe.getDashboardWidgets()` → `widgetService.getWidgets('dashboard')`

### Migrated Dashboard Model
- `app/models/dashboard.js`
  - `universe.getDashboardRegistry()` → `widgetService.getRegistry()`
  - Looks up `service:universe/widget-service` instead of `service:universe`

### What Stayed the Same
- `app/controllers/console.js` - Event system usage unchanged
- `app/controllers/console/notifications.js` - Event system usage unchanged
- Event system (`on`, `trigger`) remains on Universe facade

## Benefits

-  Enables true lazy loading (engines load on-demand)
-  Separation of concerns via specialized services
-  Clearer service responsibilities
-  Better performance (no bootEngines at startup)
-  Maintains backward compatibility for events
2025-11-26 00:59:39 -05:00
Tu Nombre
c80f507720 latin american spanish translation 2025-11-19 08:02:28 -05:00
roncodes
2da7ee9c19 docs: add comprehensive translation contribution guide 2025-11-18 23:10:09 -05:00
Ronald A. Richardson
3f2c739810 fix: refresh lockfile
Some checks failed
Fleetbase CI/CD / Build and Deploy the Service (push) Has been cancelled
Fleetbase CI/CD / Build and Deploy the Console (push) Has been cancelled
2025-11-17 19:59:06 +08:00
Ronald A. Richardson
6b2ab28ec9 Merge branch 'main' of github.com:fleetbase/fleetbase into cloud 2025-11-17 19:51:29 +08:00
Ronald A. Richardson
658568e4ec bump console/package.json version
Some checks failed
Fleetbase CI / Build and Start Docker Services (push) Has been cancelled
2025-11-17 19:24:00 +08:00
Ron
8a487b2352 Merge pull request #469 from fleetbase/dev-v0.7.19
v0.7.19
2025-11-17 19:22:41 +08:00
Ronald A. Richardson
bc89218a26 add fleetops-data 2025-11-17 19:17:01 +08:00
Ronald A. Richardson
5a4f7e2ae3 upgraded dependencies 2025-11-17 18:43:28 +08:00
Ronald A. Richardson
9fa1bf54d2 v0.7.19 ~ A major leap forward in scheduling, reporting, and user interface capabilities. 2025-11-17 18:17:51 +08:00
mehdi
13cfe00958 Add Persian (Farsi) lang in api/resource/lang , fa folder 2025-11-10 11:47:50 +03:30
PicoBaz
6cab778f93 Create fa-ir.yaml (Add Persian (Farsi) translations in fa-ir.yaml) 2025-11-10 09:31:39 +03:30
Ronald A. Richardson
b98eb3adf5 Merge branch 'main' of github.com:fleetbase/fleetbase into ron/dev-v0.7.19 2025-11-10 11:30:12 +08:00
Ronald A. Richardson
5473b50c40 development in progress 2025-11-10 11:27:50 +08:00
Ronald A. Richardson
42df48c9b0 merge latest
Some checks failed
Fleetbase CI/CD / Build and Deploy the Service (push) Has been cancelled
Fleetbase CI/CD / Build and Deploy the Console (push) Has been cancelled
2025-11-10 11:12:50 +08:00
Ronald A. Richardson
268749fcd9 Merge branch 'main' of github.com:fleetbase/fleetbase into cloud 2025-11-10 11:11:47 +08:00
Ronald A. Richardson
d9f415528e hotfix: update api/composer.json
Some checks failed
Fleetbase CI / Build and Start Docker Services (push) Has been cancelled
2025-11-10 11:02:06 +08:00
Ron
76b0bfbfcd Merge pull request #463 from fleetbase/dev-v0.7.18
v0.7.18
2025-11-10 10:52:51 +08:00
Ronald A. Richardson
0432003163 latest storefront 2025-11-10 10:52:09 +08:00
Ronald A. Richardson
da420f0b4a ready for release 2025-11-10 10:49:29 +08:00
Ronald A. Richardson
e923a89719 v0.7.18 2025-11-10 10:35:47 +08:00
Ronald A. Richardson
0742603b43 added storefront release 2025-11-10 10:31:02 +08:00
Ronald A. Richardson
e1788a4ad6 v0.7.17 2025-11-10 10:29:26 +08:00
Ronald A. Richardson
50ae560409 refresh composer lockfile
Some checks failed
Fleetbase CI/CD / Build and Deploy the Service (push) Has been cancelled
Fleetbase CI/CD / Build and Deploy the Console (push) Has been cancelled
2025-11-06 22:06:21 +08:00
Ronald A. Richardson
2e48024949 Merge branch 'main' of github.com:fleetbase/fleetbase into cloud 2025-11-06 22:00:22 +08:00
Ron
7cb4654c86 Merge pull request #460 from fleetbase/dev-v0.7.17
Some checks failed
Fleetbase CI / Build and Start Docker Services (push) Has been cancelled
v0.7.17 ~ hotfix router map
2025-11-06 21:59:37 +08:00
Ronald A. Richardson
a17aa3f5cc hotfix router map 2025-11-06 21:58:40 +08:00
Ronald A. Richardson
908f60aaac Merge branch 'main' of github.com:fleetbase/fleetbase into cloud 2025-11-06 21:29:34 +08:00
Ron
0bf1a7fadd Merge pull request #459 from fleetbase/dev-v0.7.16
v0.7.16
2025-11-06 21:17:49 +08:00
Ronald A. Richardson
aa1ea2de89 Merge branch 'main' of github.com:fleetbase/fleetbase into dev-v0.7.16 2025-11-06 21:10:23 +08:00
Ronald A. Richardson
235f1ce80c upgraded dependencies 2025-11-06 20:45:42 +08:00
Ronald A. Richardson
5aa50504a4 updated RELEASE.md 2025-11-06 20:34:56 +08:00
Ronald A. Richardson
5d1b2e1939 - Made the LogApiRequests middleware more robust
- Fixed controller validation handling
- Added microsoft365/graph mail driver
- Improved password requirements (including breached password check)
- Patched creating duplicate users by email in IAM
- Patch env mapper
- Vehicle/driver tracking API doesnt fire resource lifecycle events or log requests - only tracking events
- Patched `<ModelCoordinatesInput />` component
- Security patch on Storefront customers API
- Styling updates on Storefront
2025-11-06 20:33:23 +08:00
Ronald A. Richardson
a1f2992f18 Merge branch 'main' of github.com:fleetbase/fleetbase into cloud
Some checks failed
Fleetbase CI/CD / Build and Deploy the Service (push) Has been cancelled
Fleetbase CI/CD / Build and Deploy the Console (push) Has been cancelled
2025-11-01 14:21:29 +08:00
Ron
fc5d90189c Merge pull request #456 from fleetbase/dev-v0.7.15
Some checks failed
Fleetbase CI / Build and Start Docker Services (push) Has been cancelled
v0.7.15
2025-11-01 14:08:41 +08:00
Ronald A. Richardson
2fee78e534 performed upgrades 2025-11-01 14:07:55 +08:00
Ronald A. Richardson
83fc794702 v0.7.15 2025-11-01 14:00:59 +08:00
Ronald A. Richardson
0252b387e2 Merge branch 'main' of github.com:fleetbase/fleetbase into cloud
Some checks failed
Fleetbase CI/CD / Build and Deploy the Service (push) Has been cancelled
Fleetbase CI/CD / Build and Deploy the Console (push) Has been cancelled
2025-10-30 19:32:33 +08:00
Ron
66f669ad80 Merge pull request #454 from fleetbase/dev-v0.7.14
Some checks failed
Fleetbase CI / Build and Start Docker Services (push) Has been cancelled
v0.7.14
2025-10-30 18:53:33 +08:00
Ronald A. Richardson
a11b77592c fix console/package.json 2025-10-30 18:23:44 +08:00
Ronald A. Richardson
e5156829dc update release.md 2025-10-30 18:22:01 +08:00
Ronald A. Richardson
6cd7ddffcb v0.7.14 2025-10-30 18:20:04 +08:00
lapin
b9adb92fc1 Add Docker socket configuration examples and platform compatibility
This commit provides proper configuration examples for the SocketCluster
WebSocket service and improves platform compatibility.

Changes:
- Platform: Add linux/amd64 platform specification for Apple Silicon compatibility
- CORS: Remove hardcoded permissive origins and add secure configuration examples
- Examples: Create docker-compose.override.yml.example with proper WebSocket origins

The configuration now supports:
- Development: localhost-only origins (http/https/ws/wss protocols)
- Production: Domain-specific origins with WebSocket protocol support
- Security: Prevents unauthorized cross-origin WebSocket connections

Updated documentation explains how to configure WebSocket origins securely
for different deployment environments.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-28 10:17:37 +01:00
lapin
d81bd4e900 Merge remote-tracking branch 'upstream/main' 2025-10-28 09:47:55 +01:00
Ronald A. Richardson
12e1ec2cac Merge branch 'main' of github.com:fleetbase/fleetbase into cloud
Some checks failed
Fleetbase CI/CD / Build and Deploy the Service (push) Has been cancelled
Fleetbase CI/CD / Build and Deploy the Console (push) Has been cancelled
2025-10-28 06:29:27 +08:00
Ron
cbdf1d489b Merge pull request #447 from fleetbase/dev-v0.7.13
Some checks failed
Fleetbase CI / Build and Start Docker Services (push) Has been cancelled
v0.7.13 ~ Connectivity Module + Positions Playback + Positions & Device Events Drawer
2025-10-28 05:48:35 +08:00
Ronald A. Richardson
785bc55bb7 v0.7.13 ~ Connectivity Module + Positions Playback + Positions & Device Events Drawer 2025-10-28 05:39:54 +08:00
lapin
8a21593d9a Update docker-compose.yml 2025-10-24 15:21:42 +02:00
Ronald A. Richardson
5f2003eec5 Merge branch 'main' of github.com:fleetbase/fleetbase into cloud
Some checks failed
Fleetbase CI/CD / Build and Deploy the Service (push) Has been cancelled
Fleetbase CI/CD / Build and Deploy the Console (push) Has been cancelled
2025-10-22 13:05:09 +08:00
Ron
d171d02aac Merge pull request #446 from fleetbase/dev-v0.7.12
Some checks failed
Fleetbase CI / Build and Start Docker Services (push) Has been cancelled
v0.7.12 ~ Patches and Order Board Improvement
2025-10-22 12:38:56 +08:00
Ronald A. Richardson
dfd4ee37df pin linux build version 2025-10-22 12:38:24 +08:00
Ronald A. Richardson
27c063fbfb v0.7.12 ~ Patches and Order Board Improvement 2025-10-22 12:21:58 +08:00
Ronald A. Richardson
e05d12dd87 Merge branch 'main' of github.com:fleetbase/fleetbase into cloud
Some checks failed
Fleetbase CI/CD / Build and Deploy the Service (push) Has been cancelled
Fleetbase CI/CD / Build and Deploy the Console (push) Has been cancelled
2025-10-15 23:55:21 +08:00
Ron
8e85dcff83 Merge pull request #443 from fleetbase/dev-v0.7.11
Some checks failed
Fleetbase CI / Build and Start Docker Services (push) Has been cancelled
v0.7.11 ~ Maintenance, Reports, Telematics Upgrade/Features
2025-10-15 23:13:21 +08:00
Ronald A. Richardson
e38923c461 added RELEASE and updated README 2025-10-15 23:09:04 +08:00
Ronald A. Richardson
9911c96c09 All packages upgraded 2025-10-15 22:15:33 +08:00
Ronald A. Richardson
284c62cd06 v0.7.11 ~ Maintenance, Reports, Telematics Upgrade/Features 2025-09-30 13:49:34 +08:00
Ronald A. Richardson
86378d3ede Merge branch 'main' of github.com:fleetbase/fleetbase into cloud
Some checks failed
Fleetbase CI/CD / Build and Deploy the Service (push) Has been cancelled
Fleetbase CI/CD / Build and Deploy the Console (push) Has been cancelled
2025-09-02 16:52:59 +08:00
Ron
f8fd9f76fa Merge pull request #429 from fleetbase/dev-v0.7.10
Some checks failed
Fleetbase CI / Build and Start Docker Services (push) Has been cancelled
v0.7.10 - Maintenance capability overhaul, Storefront critical patches and improvements
2025-09-02 15:33:10 +08:00
Ronald A. Richardson
67aa793537 v0.7.10 - Maintenance capability overhaul, Storefront critical patches and improvements 2025-09-02 14:32:39 +08:00
Ronald A. Richardson
1d36bf144b Hotfix: autoboot aws-marketplace extension
Some checks failed
Fleetbase CI/CD / Build and Deploy the Service (push) Has been cancelled
Fleetbase CI/CD / Build and Deploy the Console (push) Has been cancelled
2025-08-13 18:31:53 +08:00
Ronald A. Richardson
293f67d6d1 Hotfix: autoboot aws-marketplace extension 2025-08-13 18:30:35 +08:00
Ronald A. Richardson
01e8298968 Merge branch 'main' of github.com:fleetbase/fleetbase into cloud 2025-08-13 18:08:20 +08:00
Ron
5d0ae16cfd Merge pull request #424 from fleetbase/dev-v0.7.9
Some checks failed
Fleetbase CI / Build and Start Docker Services (push) Has been cancelled
v0.7.9 ~ shorter default data retention + template variable resolver + patched order vehicle update via api
2025-08-13 17:47:01 +08:00
Ronald A. Richardson
1d003ee31e v0.7.9 ~ shorter default data retention + template variable resolver + patched order vehicle update via api 2025-08-13 17:32:46 +08:00
Ron
9c9f3a994e Added one-click aws deploy details
Some checks are pending
Fleetbase CI / Build and Start Docker Services (push) Waiting to run
2025-08-13 14:21:18 +08:00
Ronald A. Richardson
094d1d375e Merge branch 'main' of github.com:fleetbase/fleetbase into cloud
Some checks failed
Fleetbase CI/CD / Build and Deploy the Service (push) Has been cancelled
Fleetbase CI/CD / Build and Deploy the Console (push) Has been cancelled
2025-08-12 19:14:24 +08:00
Ron
b0ae302e81 Merge pull request #423 from fleetbase/dev-v0.7.8
Some checks are pending
Fleetbase CI / Build and Start Docker Services (push) Waiting to run
v0.7.8 - Fix OSX build script, removed awsmp ECR publish
2025-08-12 19:01:15 +08:00
Ronald A. Richardson
205fcf1480 Optimized maintenance script, added linux/arm64 to docker image platforms 2025-08-12 18:53:23 +08:00
Ronald A. Richardson
23bf7c5ac8 v0.7.8 - Fix OSX build script, removed awsmp ECR publish 2025-08-11 13:37:00 +08:00
Ronald A. Richardson
8a1dee0cbd Merge branch 'main' of github.com:fleetbase/fleetbase into cloud
Some checks failed
Fleetbase CI/CD / Build and Deploy the Service (push) Has been cancelled
Fleetbase CI/CD / Build and Deploy the Console (push) Has been cancelled
2025-08-11 10:35:42 +08:00
Ron
ada7e0df92 Merge pull request #422 from fleetbase/dev-v0.7.7
Some checks failed
Fleetbase CI / Build and Start Docker Services (push) Has been cancelled
v0.7.7 - Configurable rate limiting and maintenance patches
2025-08-09 19:14:21 +08:00
Ronald A. Richardson
f3bc42ace5 upgraded dependencies 2025-08-09 18:56:38 +08:00
Ronald A. Richardson
b91cbed080 v0.7.7 - Configurable rate limiting and maintenance patches 2025-08-09 16:40:59 +08:00
Ron
9870b11a71 Merge pull request #418 from fleetbase/feature/aws-marketplace-ecr-publish-job
Some checks failed
Fleetbase CI / Build and Start Docker Services (push) Has been cancelled
fix ecr authentication step
2025-07-25 16:13:39 +08:00
Ronald A. Richardson
1d62dbca6b fix ecr authentication step 2025-07-25 16:11:26 +08:00
Ron
db3bf46a02 Merge pull request #417 from fleetbase/feature/aws-marketplace-ecr-publish-job
fix ecr publish add registry env variable
2025-07-25 15:25:47 +08:00
Ronald A. Richardson
ec053f1d13 fix ecr publish add registry env variable 2025-07-25 15:24:18 +08:00
Ron
030ec2494d Merge pull request #416 from fleetbase/feature/aws-marketplace-ecr-publish-job
added workflow job to publish to aws ecr for marketplace distribution
2025-07-25 15:07:13 +08:00
Ronald A. Richardson
fe56bcac85 formatted action workflow template 2025-07-25 15:06:40 +08:00
Ronald A. Richardson
8b118d1ad9 minor workflow tweak 2025-07-25 15:05:43 +08:00
Ronald A. Richardson
724c1b49ab added workflow job to publish to aws ecr for marketplace distribution 2025-07-25 15:04:06 +08:00
Ronald A. Richardson
df2da8cea1 Merge branch 'main' of github.com:fleetbase/fleetbase into cloud
Some checks failed
Fleetbase CI/CD / Build and Deploy the Service (push) Has been cancelled
Fleetbase CI/CD / Build and Deploy the Console (push) Has been cancelled
2025-06-04 13:00:32 +08:00
Ron
8e5b2e1ae3 Merge pull request #402 from fleetbase/dev-v0.7.6
Some checks failed
Fleetbase CI / Build and Start Docker Services (push) Has been cancelled
v0.7.6 ~ Minor patches, WIP multi-order route optimization
2025-06-04 12:46:10 +08:00
Ronald A. Richardson
e141d4d3a3 update release title 2025-06-04 12:32:47 +08:00
Ronald A. Richardson
ab2e102e28 v0.7.6 ~ Minor patches, WIP multi-order route optimization 2025-06-04 12:30:02 +08:00
Ronald A. Richardson
ced5e6b6fd Fix v0.7.5 Deploy
Some checks failed
Fleetbase CI/CD / Build and Deploy the Service (push) Has been cancelled
Fleetbase CI/CD / Build and Deploy the Console (push) Has been cancelled
2025-05-30 17:55:34 +08:00
Ronald A. Richardson
de2cbd2ded v0.7.5 prod deploy 2025-05-30 17:32:58 +08:00
Ronald A. Richardson
894f4348dd Merge branch 'main' of github.com:fleetbase/fleetbase into cloud 2025-05-30 17:25:32 +08:00
Ron
723deff398 Merge pull request #401 from fleetbase/dev-v0.7.5
Some checks failed
Fleetbase CI / Build and Start Docker Services (push) Has been cancelled
v0.7.5 ~ Added route optimization and routing control registry and se…
2025-05-30 17:07:44 +08:00
Ronald A. Richardson
fd9adc3961 update composer.json 2025-05-30 17:07:03 +08:00
Ronald A. Richardson
4244a04052 upgraded fleetops 2025-05-30 16:57:31 +08:00
Ronald A. Richardson
e3c60a2232 fix release md typo 2025-05-30 16:15:44 +08:00
Ronald A. Richardson
1eaeb2c46e updated release file 2025-05-30 16:14:26 +08:00
Ronald A. Richardson
1d64d18b8b v0.7.5 ~ Added route optimization and routing control registry and settings & optimized environment/settings mapper 2025-05-30 16:10:56 +08:00
Ronald A. Richardson
2030a72a71 Merge branch 'main' of github.com:fleetbase/fleetbase into cloud
Some checks failed
Fleetbase CI/CD / Build and Deploy the Service (push) Has been cancelled
Fleetbase CI/CD / Build and Deploy the Console (push) Has been cancelled
2025-05-26 16:11:43 +08:00
Ron
1124ecb56c Merge pull request #400 from fleetbase/dev-v0.7.4
Some checks failed
Fleetbase CI / Build and Start Docker Services (push) Has been cancelled
v0.7.4 ~ new docker install script, added logic condition property sh…
2025-05-26 15:54:09 +08:00
Ronald A. Richardson
672f3d51ca docker installer: added 12 sec delay before deploy script run 2025-05-26 15:46:05 +08:00
Ronald A. Richardson
cd5af8dfc8 added feature to wait database running in docker install script 2025-05-26 15:32:49 +08:00
Ronald A. Richardson
1a0073eae0 few tweaks to readme and install script 2025-05-26 15:20:48 +08:00
Ronald A. Richardson
d24b1d6fbe update release and readme 2025-05-26 14:59:20 +08:00
Ronald A. Richardson
ebbc4b2bf8 v0.7.4 ~ new docker install script, added logic condition property shortcut keys 2025-05-26 14:52:32 +08:00
Ron
b531c18d65 Merge pull request #399 from fleetbase/hotfix/ci-macos-binary-build
Some checks failed
Fleetbase CI / Build and Start Docker Services (push) Has been cancelled
attempt to patch macos binary build ci
2025-05-24 14:03:54 +08:00
Ronald A. Richardson
fded8b24df attempt to patch macos binary build ci 2025-05-24 13:59:57 +08:00
Ronald A. Richardson
41d20c41c5 Merge branch 'main' of github.com:fleetbase/fleetbase into cloud
Some checks failed
Fleetbase CI/CD / Build and Deploy the Service (push) Has been cancelled
Fleetbase CI/CD / Build and Deploy the Console (push) Has been cancelled
2025-05-24 13:43:57 +08:00
Ron
98d082c780 Merge pull request #398 from fleetbase/dev-v0.7.3
v0.7.3 ~ hotfix: route optimization w/ no driver, seeder command
2025-05-24 13:26:23 +08:00
Ronald A. Richardson
d905943511 bump fleetops api version 2025-05-24 13:19:52 +08:00
Ronald A. Richardson
5c73b6e76d v0.7.3 ~ hotfix: route optimization w/ no driver, seeder command 2025-05-24 13:16:47 +08:00
Ronald A. Richardson
9976075843 Merge branch 'main' of github.com:fleetbase/fleetbase into cloud
Some checks are pending
Fleetbase CI/CD / Build and Deploy the Service (push) Waiting to run
Fleetbase CI/CD / Build and Deploy the Console (push) Blocked by required conditions
2025-05-23 20:23:40 +08:00
Ron
cedf96fc97 Merge pull request #397 from fleetbase/dev-v0.7.2
Some checks are pending
Fleetbase CI / Build and Start Docker Services (push) Waiting to run
v0.7.2 ~ route optimization patch, telemetry patch, network store management patch
2025-05-23 20:07:15 +08:00
Ronald A. Richardson
854fa2e680 fixed release.md date 2025-05-23 20:00:58 +08:00
Ronald A. Richardson
91b01c8a17 updated release info 2025-05-23 19:59:24 +08:00
Ronald A. Richardson
a4033db36c fixed fleetops route optimization, fixed network store management 2025-05-23 19:57:38 +08:00
Ronald A. Richardson
b26f735fee DISABLE_RUNTIME_CONFIG=true v0.7.1 on Production
Some checks are pending
Fleetbase CI/CD / Build and Deploy the Service (push) Waiting to run
Fleetbase CI/CD / Build and Deploy the Console (push) Blocked by required conditions
2025-05-22 19:24:27 +08:00
Ronald A. Richardson
791cc7283d DISABLE_RUNTIME_CONFIG=true v0.7.1 on Production
Some checks are pending
Fleetbase CI/CD / Build and Deploy the Service (push) Waiting to run
Fleetbase CI/CD / Build and Deploy the Console (push) Blocked by required conditions
2025-05-22 18:54:39 +08:00
Ronald A. Richardson
21601737a1 DISABLE_RUNTIME_CONFIG=true v0.7.1 on Production 2025-05-22 18:00:09 +08:00
Ronald A. Richardson
0cd9e076b8 DISABLE_RUNTIME_CONFIG=true v0.7.1 on Production 2025-05-22 15:54:10 +08:00
Ronald A. Richardson
c54ef7fb30 v0.7.2 ~ Telemetry tweak patch 2025-05-22 15:19:01 +08:00
Ronald A. Richardson
5fe799b708 Merge branch 'main' of github.com:fleetbase/fleetbase into cloud 2025-05-22 13:06:56 +08:00
Ronald A. Richardson
b5ec15f0bb fix discord announcement workflow, attempt 4
Some checks failed
Fleetbase CI / Build and Start Docker Services (push) Has been cancelled
2025-05-22 12:47:27 +08:00
Ronald A. Richardson
1f609dd882 fix discord announcement workflow, attempt 3 2025-05-22 12:35:12 +08:00
Ronald A. Richardson
01883da5a2 attempt #2 to fix the discord announcement 2025-05-22 12:29:27 +08:00
Ronald A. Richardson
d2ab5b8a94 fix discord announcement workflow 2025-05-22 12:23:54 +08:00
Ronald A. Richardson
dca23f7e3f fix gh action workflows 2025-05-22 12:18:48 +08:00
Ron
d94dff7fbb Merge pull request #394 from fleetbase/dev-v0.7.1
v0.7.1 ~ Fleetbase console can now read in a runtime config
2025-05-22 12:09:47 +08:00
Ronald A. Richardson
e1ab6a3b11 use release.md for discord announcement 2025-05-22 12:06:58 +08:00
Ronald A. Richardson
c79fe67e44 ready to release, if macos doesnt build fix later 2025-05-22 11:59:09 +08:00
Ronald A. Richardson
d8adf42b24 revert back to previous curl patch 2025-05-22 11:51:05 +08:00
Ronald A. Richardson
80da5fe013 add SPC_OPT_DOWNLOAD_ARGS to attempt to fix osx build on gh runner 2025-05-22 11:25:45 +08:00
Ronald A. Richardson
06fd5e20e8 make osx build script gh runner friendly 2025-05-22 11:21:21 +08:00
Ronald A. Richardson
f04807de1e fixed upload to only run on release workflow, debug macos build on runer 2025-05-22 11:14:53 +08:00
Ronald A. Richardson
b7666eeb3e fix github workflows and setup to debug macos build 2025-05-22 10:45:37 +08:00
Ronald A. Richardson
dd895a0fd8 remove CURRENT_HASH file 2025-05-22 10:31:05 +08:00
Ronald A. Richardson
8c74c0fb99 release is almost ready 2025-05-22 10:30:10 +08:00
Ronald A. Richardson
92170c965e updated docker-compose to use latest images, patched osx binary build script, experimenting with artifact upload for binaries 2025-05-21 22:18:49 +08:00
Ronald A. Richardson
fcb3694874 added curl patch for gh runners 2025-05-21 21:33:45 +08:00
Ronald A. Richardson
aa46059bff minor tweak on php build of osx build script 2025-05-21 21:11:41 +08:00
Ronald A. Richardson
a5175bb11b fix php 8.4 detection in osx build script 2025-05-21 21:08:52 +08:00
Ronald A. Richardson
01816a1fe0 update osx build script to skip asdf install if php 8.4 is already installed 2025-05-21 21:02:04 +08:00
Ronald A. Richardson
15d500cd58 just install php via homebrew 2025-05-21 20:49:37 +08:00
Ronald A. Richardson
95d77a6ddd in osx build workflow use correct asdf commands 2025-05-21 20:45:46 +08:00
Ronald A. Richardson
eefc93e130 debug osx binary build workflow 2025-05-21 20:42:09 +08:00
Ronald A. Richardson
0f18ae85f1 debug osx binary build workflow 2025-05-21 20:35:22 +08:00
Ronald A. Richardson
a4812192da debug osx binary build workflow 2025-05-21 20:26:24 +08:00
Ronald A. Richardson
15d3c957b8 debug osx binary build workflow 2025-05-21 20:20:33 +08:00
Ronald A. Richardson
c2bd098d14 debug osx binary build workflow 2025-05-21 20:16:16 +08:00
Ronald A. Richardson
98511fd418 patch console route && debug osx action binary build 2025-05-21 20:13:14 +08:00
Ronald A. Richardson
225110c8dc attempt to patch binary build workflow 2025-05-21 19:39:04 +08:00
Ronald A. Richardson
1aa2a99763 added workflow to build fleetbase api binaries 2025-05-21 19:35:08 +08:00
Ron
6e888af772 Merge pull request #376 from fleetbase/feature/fleetbase-binary
Working static build script for a fleetbase binary (unix/linux/osx)
2025-05-21 19:24:49 +08:00
Ronald A. Richardson
d61205d898 added fleetbase config file, added ability to set tz for user and organization 2025-05-21 19:21:22 +08:00
Ronald A. Richardson
72078553cc remove hash tracking from docker build 2025-05-20 10:19:42 +08:00
Ronald A. Richardson
bfae04a645 attempt to fix current hash check in build 2025-05-20 10:16:43 +08:00
Ronald A. Richardson
c59f028755 fix docker build 2025-05-20 10:06:26 +08:00
Ronald A. Richardson
2b959db773 remove the current hash file 2025-05-19 19:36:05 +08:00
Ronald A. Richardson
a9354ccbfd removed EXPECTED_HASH checkin 2025-05-19 19:06:21 +08:00
Ronald A. Richardson
23e6d1e6b9 removed EXPECTED_HASH 2025-05-19 17:33:13 +08:00
Ronald A. Richardson
86da1bd095 Improvements to docker setups 2025-05-19 17:30:18 +08:00
Ronald A. Richardson
ae89600ae6 updated dockerhub publish workflow 2025-05-19 13:54:28 +08:00
Ronald A. Richardson
6697b79185 secured runtime config to only allow select config values to be set 2025-05-19 13:50:10 +08:00
Ronald A. Richardson
4dc9764853 v0.7.1 ~ Fleetbase console can now read in a runtime config 2025-05-19 13:12:57 +08:00
Ronald A. Richardson
878a70d328 Fix v0.7.0 cloud deploy
Some checks failed
Fleetbase CI/CD / Build and Deploy the Service (push) Has been cancelled
Fleetbase CI/CD / Build and Deploy the Console (push) Has been cancelled
2025-05-16 18:11:59 +08:00
Ronald A. Richardson
4c5487b6bb Merge branch 'main' of github.com:fleetbase/fleetbase into cloud 2025-05-16 17:35:29 +08:00
Ron
0626bc0171 Merge pull request #388 from fleetbase/dev-v0.7.0
Some checks failed
Fleetbase CI / Build and Start Docker Services (push) Has been cancelled
v0.7.0 🛠️
2025-05-16 17:19:57 +08:00
Ronald A. Richardson
a8adf3fd84 Merge branch 'dev-v0.7.0' of github.com:fleetbase/fleetbase into dev-v0.7.0 2025-05-16 16:22:18 +08:00
Ronald A. Richardson
7b8bc4a593 removed old docker settings and github auth arg 2025-05-16 16:21:22 +08:00
Ron
490f2f1b41 Merge pull request #345 from nstankov-bg/feature/translate-bulgarian
feature/translate-bulgarian
2025-05-16 16:07:25 +08:00
Ron
e1fc7850d3 Merge pull request #385 from thawaba/add-arabic-language
Add Arabic language support
2025-05-16 16:06:44 +08:00
Ronald A. Richardson
cc278bf1bb * Patched fuel report creation/ fixed coordinates input implementation for fuel report
* Added bulk assign driver
* Improved performance for order dispatch/ bulk order dispatch/ bulk assign driver
* Added new columns to order export
* Added downloadable import templates for all importable resources via Import Modal
* Patched custom field rendering for order viewing
* Patched custom field values reset after order creation
* Added notification settings to FleetOps
* Added bulk search by ID or Tracking Number for Orders
* Patched all filters and filter indicator component
* Patched issue unable to select driver after selecting facilitator
* Fixed extension booting when not authenticated
* Fixed Internal ID rendering on order view
* Added ability to filter orders without a driver
2025-05-16 16:03:26 +08:00
aanmth
af86aaba8b Add Arabic language support 2025-05-15 05:42:17 +03:00
Ronald A. Richardson
599fd0e8f7 fix: Updated with correct version indicator
Some checks failed
Fleetbase CI/CD / Build and Deploy the Service (push) Has been cancelled
Fleetbase CI/CD / Build and Deploy the Console (push) Has been cancelled
2025-05-08 20:13:19 +08:00
Ronald A. Richardson
64561c85a8 Merge branch 'main' of github.com:fleetbase/fleetbase into cloud 2025-05-08 20:09:32 +08:00
Ronald A. Richardson
f35dcb1544 fix: update package.json version v0.6.10
Some checks failed
Fleetbase CI / Build and Start Docker Services (push) Has been cancelled
2025-05-08 20:06:27 +08:00
Ronald A. Richardson
c8d8be11d2 Merge branch 'main' of github.com:fleetbase/fleetbase into cloud
Some checks are pending
Fleetbase CI/CD / Build and Deploy the Service (push) Waiting to run
Fleetbase CI/CD / Build and Deploy the Console (push) Blocked by required conditions
2025-05-08 12:47:07 +08:00
Ron
29c8f4340d Merge pull request #382 from fleetbase/dev-v0.6.10
Some checks are pending
Fleetbase CI / Build and Start Docker Services (push) Waiting to run
v0.6.10 ~ Added Product Update/Create API, Added `FRONTEND_HOSTS` ENV…
2025-05-08 12:33:02 +08:00
Ronald A. Richardson
1cb833e407 v0.6.10 ~ Added Product Update/Create API, Added FRONTEND_HOSTS ENV variable, other minor patches 2025-05-08 12:24:54 +08:00
Ronald A. Richardson
e372bc6396 minor update to linux build script 2025-05-07 14:32:17 +08:00
Ronald A. Richardson
2f432d148a Remove build artifacts; add dist & downloads to .gitignore 2025-05-07 14:26:57 +08:00
Ronald A. Richardson
12847437b0 Merge branch 'main' of github.com:fleetbase/fleetbase into cloud
Some checks failed
Fleetbase CI/CD / Build and Deploy the Service (push) Has been cancelled
Fleetbase CI/CD / Build and Deploy the Console (push) Has been cancelled
2025-05-01 12:29:12 +08:00
Ron
41bc6e39a7 Merge pull request #380 from fleetbase/dev-v0.6.9
Some checks failed
Fleetbase CI / Build and Start Docker Services (push) Has been cancelled
Enhancements and bug fixes for order workflow, labels, notifications,…
2025-05-01 12:15:36 +08:00
Ronald A. Richardson
5dbe2fb5bb Enhancements and bug fixes for order workflow, labels, notifications, and route optimization
- Added support for downloading labels and barcodes per package
- Fixed proof of delivery behavior to ensure accurate completion records
- Updated waypoint activity flow to rely on the `complete` flag
- Added support for setting waypoints as either pickup or dropoff
- Enabled sending notifications to order customer, driver, and facilitator
- Added events and notifications for `order.completed` and `order.failed` states
- Fixed route optimization logic and minor issues during order creation
- Normalized `meta` response structure to always return an object (never array)
- Patched issue with order config: deleting custom field categories no longer breaks config
2025-05-01 12:08:27 +08:00
Ronald A. Richardson
8f66bc12e4 Working static build script for a fleetbase binary (unix/linux) 2025-04-16 14:22:07 +08:00
Ronald A. Richardson
53eadee8a6 Merge branch 'main' of github.com:fleetbase/fleetbase into cloud
Some checks failed
Fleetbase CI/CD / Build and Deploy the Service (push) Has been cancelled
Fleetbase CI/CD / Build and Deploy the Console (push) Has been cancelled
2025-04-14 16:17:27 +08:00
Ron
313b5ea3ba Merge pull request #374 from fleetbase/dev-v0.6.8
Some checks failed
Fleetbase CI / Build and Start Docker Services (push) Has been cancelled
v0.6.8 ~ View Proof of Delivery in FleetOps + API to get POD
2025-04-14 16:10:34 +08:00
Ronald A. Richardson
698f5979b1 v0.6.8 ~ View Proof of Delivery in FleetOps + API to get POD 2025-04-14 16:05:10 +08:00
Ronald A. Richardson
657de6c99d Merge branch 'main' of github.com:fleetbase/fleetbase into cloud
Some checks failed
Fleetbase CI/CD / Build and Deploy the Service (push) Has been cancelled
Fleetbase CI/CD / Build and Deploy the Console (push) Has been cancelled
2025-04-11 13:05:20 +08:00
Ron
f6f6899650 Merge pull request #373 from fleetbase/dev-v0.6.7
Some checks failed
Fleetbase CI / Build and Start Docker Services (push) Has been cancelled
Fix iOS Push Notifications for Production Environments
2025-04-11 12:51:25 +08:00
Ronald A. Richardson
83a7ab7338 Fix iOS Push Notifications for Production Environments 2025-04-11 12:43:09 +08:00
Ronald A. Richardson
db601606c5 Merge branch 'main' of github.com:fleetbase/fleetbase into cloud 2025-04-11 10:21:07 +08:00
Ron
acf7b209af Merge pull request #372 from fleetbase/dev-v0.6.6
Patched Join Organization + Chat Push Notifications Added
2025-04-11 10:09:40 +08:00
Ronald A. Richardson
5c048a8238 Patched Join Organization + Chat Push Notifications Added 2025-04-11 10:02:33 +08:00
Ronald A. Richardson
6ec176011a Merge branch 'main' of github.com:fleetbase/fleetbase into cloud
Some checks are pending
Fleetbase CI/CD / Build and Deploy the Service (push) Waiting to run
Fleetbase CI/CD / Build and Deploy the Console (push) Blocked by required conditions
2025-04-10 13:53:27 +08:00
Ron
de00ad31db Merge pull request #371 from fleetbase/dev-v0.6.5
Some checks are pending
Fleetbase CI / Build and Start Docker Services (push) Waiting to run
🤖 Patched Navigator App Instance Linking for Android
2025-04-10 13:44:34 +08:00
Ronald A. Richardson
8fe52c6157 🤖 Patched Navigator App Instance Linking for Android + Navigator App Identifier Configurable 2025-04-10 13:34:42 +08:00
Ronald A. Richardson
d416baf3cc Merge branch 'main' of github.com:fleetbase/fleetbase into cloud
Some checks are pending
Fleetbase CI/CD / Build and Deploy the Service (push) Waiting to run
Fleetbase CI/CD / Build and Deploy the Console (push) Blocked by required conditions
2025-04-09 19:46:55 +08:00
Ron
a371e055ca Merge pull request #370 from fleetbase/dev-v0.6.4
Some checks are pending
Fleetbase CI / Build and Start Docker Services (push) Waiting to run
Upgraded FleetOps to v0.6.3
2025-04-09 19:34:52 +08:00
Ronald A. Richardson
bbec73fcef Upgraded FleetOps to v0.6.3 2025-04-09 19:03:42 +08:00
Ronald A. Richardson
d80b968eaa Merge branch 'main' of github.com:fleetbase/fleetbase into cloud
Some checks failed
Fleetbase CI/CD / Build and Deploy the Service (push) Has been cancelled
Fleetbase CI/CD / Build and Deploy the Console (push) Has been cancelled
2025-04-01 21:24:48 +08:00
Ron
838a829a11 Merge pull request #367 from fleetbase/dev-v0.6.3
Some checks failed
Fleetbase CI / Build and Start Docker Services (push) Has been cancelled
Patched AdHoc Pinging & Push Notifications
2025-04-01 21:17:49 +08:00
Ronald A. Richardson
dbb7bc793a removed console logs 2025-04-01 21:06:16 +08:00
Ronald A. Richardson
f0fa867ef9 Patched AdHoc Pinging & Push Notifications 2025-04-01 21:02:51 +08:00
Ronald A. Richardson
eef6847919 upgrade to v0.6.2
Some checks failed
Fleetbase CI/CD / Build and Deploy the Service (push) Has been cancelled
Fleetbase CI/CD / Build and Deploy the Console (push) Has been cancelled
2025-03-31 11:18:52 +08:00
Ronald A. Richardson
2ad569eaf6 Merge branch 'main' of github.com:fleetbase/fleetbase into cloud 2025-03-31 11:16:12 +08:00
Ron
3cc64913ca Merge pull request #366 from fleetbase/hotfix/php-geos-404
Some checks failed
Fleetbase CI / Build and Start Docker Services (push) Has been cancelled
hotfix php-geos install replace broken url with github mirror
2025-03-31 11:13:35 +08:00
Ronald A. Richardson
d034c4ad03 hotfix php-geos install replace broken url with github mirror 2025-03-31 11:05:47 +08:00
Ronald A. Richardson
dc18b48f6a Merge branch 'main' of github.com:fleetbase/fleetbase into cloud
Some checks failed
Fleetbase CI/CD / Build and Deploy the Service (push) Has been cancelled
Fleetbase CI/CD / Build and Deploy the Console (push) Has been cancelled
2025-03-27 21:34:08 +08:00
Ron
b740cf035e Merge pull request #365 from fleetbase/dev-v0.6.1
Some checks failed
Fleetbase CI / Build and Start Docker Services (push) Has been cancelled
v0.6.1 ~ new driver online/offline toggle endpoint, improvements to tracker data api
2025-03-27 21:27:50 +08:00
Ronald A. Richardson
cc42779efc new driver online/offline toggle endpoint, improvements to tracker data api 2025-03-27 21:25:50 +08:00
Ronald A. Richardson
3e93e161dc Merge branch 'main' of github.com:fleetbase/fleetbase into cloud
Some checks are pending
Fleetbase CI/CD / Build and Deploy the Service (push) Waiting to run
Fleetbase CI/CD / Build and Deploy the Console (push) Blocked by required conditions
2025-03-26 22:40:06 +08:00
Ron
4a5422e357 Merge pull request #364 from fleetbase/dev-v0.6.0
Some checks are pending
Fleetbase CI / Build and Start Docker Services (push) Waiting to run
v0.6.0 - Navigator App Refactor Support Release & Patches + Improvements
2025-03-26 22:14:02 +08:00
Ronald A. Richardson
21a0808b99 v0.6.0 - Navigator App Refactor Support Release & Patches + Improvements 2025-03-26 21:54:48 +08:00
Ronald A. Richardson
fac29308fd Merge branch 'main' of github.com:fleetbase/fleetbase into cloud
Some checks failed
Fleetbase CI/CD / Build and Deploy the Service (push) Has been cancelled
Fleetbase CI/CD / Build and Deploy the Console (push) Has been cancelled
2025-02-26 20:34:13 +08:00
Ron
f6cb850219 Merge pull request #358 from fleetbase/dev-v0.5.30
Some checks failed
Fleetbase CI / Build and Start Docker Services (push) Has been cancelled
🏁 Consumable API Patches, Perf Improvements
2025-02-26 20:22:51 +08:00
Ronald A. Richardson
80707774ac 🏁 Consumable API Patches, Perf Improvements 2025-02-26 20:03:09 +08:00
Ronald A. Richardson
7b62e992eb Merge branch 'main' of github.com:fleetbase/fleetbase into cloud
Some checks are pending
Fleetbase CI/CD / Build and Deploy the Service (push) Waiting to run
Fleetbase CI/CD / Build and Deploy the Console (push) Blocked by required conditions
2025-02-25 20:32:19 +08:00
Ron
96318bb909 Merge pull request #356 from fleetbase/dev-v0.5.29
Some checks failed
Fleetbase CI / Build and Start Docker Services (push) Has been cancelled
v0.5.29 ~ ️ Performance Upgrades 10x Faster, Critical Patches
2025-02-25 20:27:01 +08:00
Ronald A. Richardson
2c10f3551e dont run octane reload on deploy 2025-02-25 20:06:51 +08:00
Ronald A. Richardson
41a469c983 fix static issues with octane 2025-02-25 20:05:21 +08:00
Ronald A. Richardson
edf7efe167 v0.5.29 ~ ️ Performance Upgrades 10x Faster, Critical Patches 2025-02-25 16:44:14 +08:00
Ronald A. Richardson
18af3b4515 Merge branch 'main' of github.com:fleetbase/fleetbase into cloud
Some checks failed
Fleetbase CI/CD / Build and Deploy the Service (push) Has been cancelled
Fleetbase CI/CD / Build and Deploy the Console (push) Has been cancelled
2025-02-21 16:37:13 +08:00
Ron
d7a2dd474a Merge pull request #355 from fleetbase/dev-v0.5.28
Some checks failed
Fleetbase CI / Build and Start Docker Services (push) Has been cancelled
v0.5.28 ~ patches for creating contact, and driver api hotfix
2025-02-21 16:29:47 +08:00
Ronald A. Richardson
2b0c6f793d patches for creating contact, and driver api hotfix 2025-02-21 16:24:23 +08:00
Ronald A. Richardson
264c564ad6 Merge branch 'main' of github.com:fleetbase/fleetbase into cloud
Some checks failed
Fleetbase CI/CD / Build and Deploy the Service (push) Has been cancelled
Fleetbase CI/CD / Build and Deploy the Console (push) Has been cancelled
2025-02-14 19:23:06 +08:00
Ron
3e60479130 Merge pull request #352 from fleetbase/dev-v0.5.27
Some checks failed
Fleetbase CI / Build and Start Docker Services (push) Has been cancelled
v0.5.27 ~ Update for improved storefront callbacks and patches
2025-02-14 19:15:52 +08:00
Ronald A. Richardson
215d5dc42e v0.5.27 ~ Update for improved storefront callbacks and patches 2025-02-14 19:10:35 +08:00
Ronald A. Richardson
dbf9a37ae9 Merge branch 'main' of github.com:fleetbase/fleetbase into cloud
Some checks failed
Fleetbase CI/CD / Build and Deploy the Service (push) Has been cancelled
Fleetbase CI/CD / Build and Deploy the Console (push) Has been cancelled
2025-02-13 14:58:27 +08:00
Ron
a57467539b Merge pull request #351 from fleetbase/dev-v0.5.26
Some checks failed
Fleetbase CI / Build and Start Docker Services (push) Has been cancelled
v0.5.26 ~ Hotfix dark tile source
2025-02-13 14:48:35 +08:00
Ronald A. Richardson
c612c97e43 v0.5.26 ~ Hotfix dark tile source 2025-02-13 14:47:22 +08:00
Ronald A. Richardson
46c4ac9dda Fix lockfile for v0.5.25 2025-02-13 13:02:01 +08:00
Ronald A. Richardson
e692bc3365 Merge branch 'main' of github.com:fleetbase/fleetbase into cloud
Some checks are pending
Fleetbase CI/CD / Build and Deploy the Service (push) Waiting to run
Fleetbase CI/CD / Build and Deploy the Console (push) Blocked by required conditions
2025-02-12 23:40:30 +08:00
Ron
683e93abe0 Merge pull request #350 from fleetbase/dev-v0.5.25
Some checks are pending
Fleetbase CI / Build and Start Docker Services (push) Waiting to run
v0.5.25 ~ Improved API, Performance and Design
2025-02-12 23:34:54 +08:00
Ronald A. Richardson
ba63441e7c v0.5.25 ~ Improved API, Performance and Design 2025-02-12 23:29:43 +08:00
Ronald A. Richardson
0b807011a3 Upgraded core-api to v1.5.27 and internals to v0.0.18
Some checks failed
Fleetbase CI/CD / Build and Deploy the Service (push) Has been cancelled
Fleetbase CI/CD / Build and Deploy the Console (push) Has been cancelled
2025-02-05 18:45:19 +08:00
Ronald A. Richardson
80d84e1c3b Upgraded internals to v0.0.17 2025-02-05 16:07:01 +08:00
Ronald A. Richardson
08c722359a Merge branch 'main' of github.com:fleetbase/fleetbase into cloud
Some checks are pending
Fleetbase CI/CD / Build and Deploy the Service (push) Waiting to run
Fleetbase CI/CD / Build and Deploy the Console (push) Blocked by required conditions
2025-02-04 23:51:58 +08:00
Ron
879409d530 Merge pull request #348 from fleetbase/dev-v0.5.24
Some checks failed
Fleetbase CI / Build and Start Docker Services (push) Has been cancelled
📖 Catalogs & 🚚 Food Trucks for Storefront + Patches
2025-02-04 23:44:40 +08:00
Ronald A. Richardson
6105b575c6 📖 Catalogs & 🚚 Food Trucks for Storefront + Patches 2025-02-04 23:34:44 +08:00
Nikolay Stankov
1e331d70b1 feature/translate-bulgarian 2025-01-30 08:54:08 -05:00
Ronald A. Richardson
ebd9b0d8cb Merge branch 'main' of github.com:fleetbase/fleetbase into cloud
Some checks failed
Fleetbase CI/CD / Build and Deploy the Service (push) Has been cancelled
Fleetbase CI/CD / Build and Deploy the Console (push) Has been cancelled
2025-01-30 00:33:47 +08:00
Ron
57c22eccb7 Merge pull request #344 from fleetbase/dev-v0.5.23
Some checks failed
Fleetbase CI / Build and Start Docker Services (push) Has been cancelled
v0.5.23 ~ More Features, More Patches
2025-01-30 01:21:02 +09:00
Ronald A. Richardson
989ca4d35e More Features, More Patches 2025-01-30 00:03:04 +08:00
Ronald A. Richardson
ec5ace214c Upgrade internals to v0.0.14 #hotfix
Some checks failed
Fleetbase CI/CD / Build and Deploy the Service (push) Has been cancelled
Fleetbase CI/CD / Build and Deploy the Console (push) Has been cancelled
2025-01-27 18:07:35 +08:00
Ronald A. Richardson
396e0cbf36 Upgrade internals to v0.0.13 #hotfix 2025-01-27 17:15:42 +08:00
Ronald A. Richardson
3faac3481f Upgrade storefront to v0.3.23 #hotfix
Some checks are pending
Fleetbase CI/CD / Build and Deploy the Service (push) Waiting to run
Fleetbase CI/CD / Build and Deploy the Console (push) Blocked by required conditions
2025-01-27 15:49:44 +08:00
Ronald A. Richardson
36f837a4af Merge branch 'main' of github.com:fleetbase/fleetbase into cloud 2025-01-27 15:18:02 +08:00
Ron
afb1c1dbdc Merge pull request #341 from fleetbase/dev-v0.5.22
Some checks failed
Fleetbase CI / Build and Start Docker Services (push) Has been cancelled
v0.5.22 ~ Implemented Social OAuth, Critical Patches
2025-01-27 15:37:48 +09:00
Ronald A. Richardson
0ac52bc772 v0.5.22 ~ Implemented Social OAuth, Critical Patches 2025-01-27 14:32:03 +08:00
Ronald A. Richardson
094bd6c8ce Upgraded extension BE for customer portal and storefront
Some checks failed
Fleetbase CI/CD / Build and Deploy the Service (push) Has been cancelled
Fleetbase CI/CD / Build and Deploy the Console (push) Has been cancelled
2025-01-15 20:57:33 +08:00
Ronald A. Richardson
aea35f6f5f hotfix fix trial days remaining component
Some checks failed
Fleetbase CI/CD / Build and Deploy the Service (push) Has been cancelled
Fleetbase CI/CD / Build and Deploy the Console (push) Has been cancelled
2025-01-13 12:38:43 +08:00
Ronald A. Richardson
96fa0294bc Merge branch 'main' of github.com:fleetbase/fleetbase into cloud 2025-01-13 11:21:49 +08:00
Ron
50d8ffee33 Merge pull request #337 from fleetbase/dev-v0.5.21
Some checks failed
Fleetbase CI / Build and Start Docker Services (push) Has been cancelled
v0.5.21 - maintenance release
2025-01-13 12:11:48 +09:00
Ronald A. Richardson
015b87ba82 v0.5.21 - maintenance release 2025-01-13 11:04:55 +08:00
Ronald A. Richardson
72ed388cd6 Merge branch 'main' of github.com:fleetbase/fleetbase into cloud
Some checks failed
Fleetbase CI/CD / Build and Deploy the Service (push) Has been cancelled
Fleetbase CI/CD / Build and Deploy the Console (push) Has been cancelled
2025-01-11 17:46:26 +08:00
Ron
983d4e5bae Merge pull request #335 from fleetbase/dev-v0.5.20
Some checks failed
Fleetbase CI / Build and Start Docker Services (push) Has been cancelled
v0.5.20
2025-01-11 18:31:43 +09:00
Ronald A. Richardson
9bc78c0bcc Several major patches and refactors for storefront and new data management capabilities 2025-01-11 17:26:27 +08:00
Ronald A. Richardson
5a79a06642 Hotfix: Console Lockfile 2024-12-24 16:25:02 +08:00
Ronald A. Richardson
010a6b0d05 Merge branch 'main' of github.com:fleetbase/fleetbase into cloud 2024-12-24 15:31:40 +08:00
Ron
8f13603f4b Merge pull request #331 from fleetbase/dev-v0.5.19
🎄 Christmas Release - v0.5.19
2024-12-24 16:01:49 +09:00
Ronald A. Richardson
c6bef55839 fix api lockfile 2024-12-24 14:55:31 +08:00
Ronald A. Richardson
dcecbf2953 Upgraded all dependencies 2024-12-24 14:46:36 +08:00
Ronald A. Richardson
08b8566b90 hotfix issue fleetbase/fleetbase#326 2024-12-24 12:53:52 +08:00
Ronald A. Richardson
7f3aa5005d Christmas release stuff 2024-12-24 12:46:06 +08:00
Ronald A. Richardson
6d138761ee Upgraded Billing Extension 2024-11-16 19:37:26 +08:00
Ronald A. Richardson
1f59d8831b Merge branch 'main' of github.com:fleetbase/fleetbase into cloud 2024-11-09 14:34:47 +08:00
Ron
5e36ac0aa2 Merge pull request #321 from fleetbase/dev-v0.5.18
v0.5.18 - Stability and Optimization Patches + New Console Commands to fix Lega…
2024-11-09 15:29:49 +09:00
Ronald A. Richardson
da6e8e79ba Stability and Optimization Patches + New Console Commands to fix Legacy data 2024-11-09 14:19:27 +08:00
Ronald A. Richardson
746b2142f0 Upgraded internals and billing extension 2024-11-08 10:41:48 +08:00
Ronald A. Richardson
343e07e24d Disable response cache 2024-11-08 09:53:18 +08:00
Ronald A. Richardson
dd1271b1ce add LOGROCKET_APP_ID for QA deployment 2024-11-07 18:58:49 +08:00
Ronald A. Richardson
d6094b8e29 Merge branch 'main' of github.com:fleetbase/fleetbase into cloud 2024-11-07 18:57:29 +08:00
Ronald A. Richardson
39f00789bf hotfix deploy.sh remove config and route cache 2024-11-07 18:57:11 +08:00
Ronald A. Richardson
ffc0d0fd1a update production deploy workflow to add LOGROCKET_APP_ID 2024-11-07 18:54:42 +08:00
Ronald A. Richardson
59d7fa3de9 Merge branch 'main' of github.com:fleetbase/fleetbase into cloud 2024-11-07 18:45:30 +08:00
Ron
f8196ccc03 Merge pull request #320 from fleetbase/dev-v0.5.17
v0.5.17
2024-11-07 19:39:55 +09:00
Ronald A. Richardson
6f1664e123 ran linter 2024-11-07 18:33:47 +08:00
Ronald A. Richardson
687af92752 * Fixed: service areas/zones creation
* Tweaked: few styling improvements
* Added: view label functions to customer portal components
* Added: bulk dispatch
* Fixed: route caching by generating and providing unique name via Fleetbase `RESTRegistrar`
* Implemented: impersonation feature for system admin
* Fixed: mail settings for smtp and added support for mailgun, sendgrid, postmark and resend
* Removed: model cache
* Improved test email HTML
* Added: self hosted instance extension install instructions
* Improved: Webhooks UI
2024-11-07 18:30:30 +08:00
Shiv Thakker
eb3f706791 Update README.md 2024-10-21 12:26:31 +08:00
Ronald A. Richardson
14c05a6c6a Upgraded core-api to v1.5.18 2024-10-18 13:54:37 +08:00
Ronald A. Richardson
5c12254a58 upgrade core-api v1.5.17 2024-10-18 05:06:05 +08:00
Ronald A. Richardson
65416833ca Merge branch 'main' of github.com:fleetbase/fleetbase into cloud 2024-10-17 19:40:51 +08:00
Ron
5ceb3cbc84 Merge pull request #310 from fleetbase/dev-v05.16
fix logging of api request and webhook sending
2024-10-17 19:38:02 +08:00
Ronald A. Richardson
7792cf31e2 fix logging of api request and webhook sending 2024-10-17 19:37:12 +08:00
Ronald A. Richardson
40e0de6e6b Merge branch 'main' of github.com:fleetbase/fleetbase into cloud 2024-10-17 17:16:09 +08:00
Ron
50f30742a8 Merge pull request #309 from fleetbase/dev-v0.5.15
v0.5.15
2024-10-17 17:09:03 +08:00
Ronald A. Richardson
c7b1a876f5 v0.5.15 - Additional recovery actions added, added ability for admins to reset user password, patches to webhook handler and logging 2024-10-17 17:02:18 +08:00
Ronald A. Richardson
5986ced2c0 Merge branch 'main' of github.com:fleetbase/fleetbase into cloud 2024-10-15 17:58:00 +08:00
Ron
892eaeeca0 Merge pull request #306 from fleetbase/dev-v0.5.14
v0.5.14
2024-10-15 17:53:05 +08:00
Ronald A. Richardson
32f4b69697 order list overlay revamp, ability to create customer with order in consumable api, few patches and fixes 2024-10-15 17:46:36 +08:00
Ronald A. Richardson
ca260bb94c Merge branch 'main' of github.com:fleetbase/fleetbase into cloud 2024-10-10 19:54:43 +08:00
Ron
6317c4b2e4 Merge pull request #304 from fleetbase/dev-v0.5.13
v0.1.3 - critical patches for driver creation flow on fleetops, added ability …
2024-10-10 19:46:55 +08:00
Ronald A. Richardson
e7c229ece5 critical patches for driver creation flow on fleetops, added ability for registry to handle tar/gz bundle uploads, added registry endpoint to upload bundles using auth token, few minor patches 2024-10-10 19:35:45 +08:00
Ronald A. Richardson
95ef8ef3c9 Merge branch 'main' of github.com:fleetbase/fleetbase into cloud 2024-10-10 11:01:02 +08:00
Ron
983a3d22b5 Merge pull request #303 from fleetbase/dev-v0.5.12
v0.5.12 - bump version
2024-10-10 10:56:59 +08:00
Ronald A. Richardson
42105380ca bump version 2024-10-10 10:56:08 +08:00
Ron
8fd4a40016 Merge pull request #302 from fleetbase/dev-v0.5.12
v1.5.12 - critical hotfix to make sure session store is set for json resources
2024-10-10 10:55:42 +08:00
Ronald A. Richardson
331e98af20 critical hotfix to make sure session store is set for json resources 2024-10-10 10:52:37 +08:00
Ronald A. Richardson
df8513cf7b Merge branch 'main' of github.com:fleetbase/fleetbase into cloud 2024-10-10 00:55:54 +08:00
Ron
b1d226256a Merge pull request #301 from fleetbase/dev-v0.5.11
v0.5.11 - Added Manual Verify for Users [IAM], Added ability to Transfer Org Ow…
2024-10-10 00:50:23 +08:00
Ronald A. Richardson
f1ee8b0c99 Added Manual Verify for Users [IAM], Added ability to Transfer Org Ownership and Leave Orgs, Added recovery command, fixes and patches 2024-10-10 00:49:03 +08:00
Ronald A. Richardson
e2c544b0c9 hotfix internals engine 2024-10-08 22:45:34 +08:00
Ronald A. Richardson
77b39fccf9 hotfix registry-bridge 2024-10-08 22:26:13 +08:00
Ronald A. Richardson
eaa448f762 Merge branch 'main' of github.com:fleetbase/fleetbase into cloud 2024-10-08 21:48:20 +08:00
Ron
23d5ecfdb8 Merge pull request #300 from fleetbase/dev-v0.5.10
patches and improvements
2024-10-08 21:42:07 +08:00
Ronald A. Richardson
2795a2f1be update app router.js 2024-10-08 21:41:07 +08:00
Ron
69afdee975 Merge pull request #299 from fleetbase/dev-v0.5.10
v0.5.10 - patches and improvements
2024-10-08 21:39:34 +08:00
Ronald A. Richardson
60845b9953 patches and improvements 2024-10-08 21:33:55 +08:00
Ronald A. Richardson
627522d61c Merge branch 'main' of github.com:fleetbase/fleetbase into cloud 2024-10-03 17:52:43 +08:00
Ron
f3997a1bb7 Merge pull request #298 from fleetbase/dev-v0.5.9
v0.5.9
2024-10-03 17:48:38 +08:00
Ronald A. Richardson
23a691e7e7 removed ember-leaflet patches, using perm fix and improved engine boot timeout and callbacks 2024-10-03 17:43:25 +08:00
Ronald A. Richardson
3dc562987a Hotfix release 2024-10-03 14:58:39 +08:00
Ronald A. Richardson
201ac84dc9 Installed Customer Portal Extension v0.0.1 2024-10-02 20:30:38 +08:00
Ronald A. Richardson
78b1f31053 Merge branch 'main' of github.com:fleetbase/fleetbase into cloud 2024-10-02 19:24:25 +08:00
Ron
e8ac2a3796 Merge pull request #295 from fleetbase/dev-v0.5.8
v0.5.8 - Feature: Customer Portal, Order Tracking Page, New Translations, Improved UX
2024-10-02 18:43:09 +08:00
Ronald A. Richardson
b78c59ad89 updated README roadmap 2024-10-02 18:38:17 +08:00
Ronald A. Richardson
bd71b1921b v0.5.8 ready 2024-10-02 18:34:40 +08:00
Ron
2596ccbded Merge pull request #290 from CassioDalla/console-pt-br-translation
Create pt-br.yaml File
2024-10-02 13:57:54 +08:00
Ronald A. Richardson
81159b7411 preparing for major release w/ customer portal extension and order tracking page, real time ETAs and order progress tracker info 2024-10-02 00:15:13 +08:00
Ronald A. Richardson
acc4cfba35 fix as-array utility 2024-09-06 12:18:11 +08:00
Ronald A. Richardson
ea47bdc09d little progress and bugfixes 2024-09-06 12:17:30 +08:00
Ronald A. Richardson
63cf8128c0 Hotfix: patch CompanyObserver in billing module 2024-09-04 12:41:02 +08:00
Ronald A. Richardson
c60c460257 Feature: Customer Portal, improved Customer, Contact, and Vendor Management 2024-09-04 12:31:10 +08:00
Ronald A. Richardson
5d66c7a35f Merge branch 'main' of github.com:fleetbase/fleetbase into cloud 2024-08-31 16:26:51 +08:00
Ron
dc00ac3892 Merge pull request #294 from fleetbase/dev-v0.5.7
upgrade core-api
2024-08-31 15:22:56 +07:00
Ronald A. Richardson
f18ec886a7 upgrade core-api 2024-08-31 16:21:45 +08:00
Ronald A. Richardson
0603888393 Merge branch 'main' of github.com:fleetbase/fleetbase into cloud 2024-08-31 16:15:52 +08:00
Ron
f039b61d79 Merge pull request #293 from fleetbase/dev-v0.5.7
hotfix for resource loading and relation loading for organizations
2024-08-31 15:01:36 +07:00
Ronald A. Richardson
248f70e31c hotfix for resource loading and relation loading for organizations 2024-08-31 15:51:30 +08:00
Ronald A. Richardson
cd50d349f8 Merge branch 'main' of github.com:fleetbase/fleetbase into cloud 2024-08-30 18:21:55 +08:00
Ron
6bc76a1b33 Merge pull request #292 from fleetbase/dev-v0.5.6
v0.5.6 - hotfix only load organization with valid owners - no stale org
2024-08-30 17:18:07 +07:00
Ronald A. Richardson
30695b3ebe hotfix only load organization with valid owners - no stale org 2024-08-30 18:06:42 +08:00
Ronald A. Richardson
e478767a60 Fixed Composer Lockfile 2024-08-30 16:28:02 +08:00
Ronald A. Richardson
17cb0cd274 update lockfile for deployment 2024-08-30 15:58:14 +08:00
Ronald A. Richardson
a3289ddd41 Merge branch 'main' of github.com:fleetbase/fleetbase into cloud 2024-08-30 15:36:39 +08:00
Ron
7ff9c24ad5 Merge pull request #288 from fleetbase/dev-v0.5.5
v0.5.5 - Documentation & README Updates
2024-08-30 14:20:57 +07:00
Ronald A. Richardson
1a9b9c06e5 fully implemented iam permission based restrictions and controls, few bugfixes and improvements 2024-08-30 15:14:56 +08:00
Ronald A. Richardson
5f949c3b7f implementing IAM permission controls, policies and roles 2024-08-13 20:26:32 +08:00
CassioDalla
211a3a9808 Create pt-br.yaml File
Added Brazilian Portuguese translation file to the project. It would be nice if another translator reviewed it to make sure everything is correct.
2024-08-10 16:04:45 -03:00
Ronald A. Richardson
0e5e4e07dd updating docs WIP, and updated README 2024-08-08 17:01:18 +08:00
Ronald A. Richardson
ff8986541c Merge branch 'main' of github.com:fleetbase/fleetbase into cloud 2024-08-06 14:00:56 +08:00
Ronald A. Richardson
2eabfc4698 version 0.5.4 2024-08-06 13:51:29 +08:00
Ron
77c2c01e58 Merge pull request #286 from fleetbase/dev-v0.5.5
v0.5.5
2024-08-06 12:48:41 +07:00
Ronald A. Richardson
7c5b5b5858 again, fix depn order 2024-08-06 13:33:29 +08:00
Ronald A. Richardson
aad072cf4c reverted dependency order in package.json 2024-08-06 13:32:39 +08:00
Ronald A. Richardson
c1c6dcafd8 ordered packages 2024-08-06 13:30:34 +08:00
Ronald A. Richardson
61992ee924 fix lockfile 2024-08-06 13:28:39 +08:00
Ronald A. Richardson
b18d6197bc upgraded registry bridge and updated erd 2024-08-06 13:25:32 +08:00
Ronald A. Richardson
04d0c126de added flespi extension 2024-08-01 10:55:20 +08:00
Ronald A. Richardson
ad43f74d5c Merge branch 'main' of github.com:fleetbase/fleetbase into cloud 2024-07-31 18:13:13 +08:00
Ron
04bdb52c08 Merge pull request #284 from fleetbase/dev-v0.5.3
Upgraded Registry Bridge to v0.0.11
2024-07-31 16:42:17 +07:00
Ronald A. Richardson
8e5a45dd09 Upgraded Registry Bridge to v0.0.11 2024-07-31 17:24:01 +08:00
Ronald A. Richardson
3c013a3817 Merge branch 'main' of github.com:fleetbase/fleetbase into cloud 2024-07-30 22:54:57 +08:00
Ron
196af155ae Merge pull request #283 from fleetbase/dev-v0.5.2
v0.5.2
2024-07-30 21:46:10 +07:00
Ronald A. Richardson
056a717d08 changed default osrm server to project-osrm router, added admin bypass for email verification, patched somethings in registry-bridge, added new UI wysiwyg component <TipTapEditor /> 2024-07-30 22:39:57 +08:00
Ronald A. Richardson
4392c7e3ff Merge branch 'main' of github.com:fleetbase/fleetbase into cloud 2024-07-25 19:06:03 +08:00
Ronald A. Richardson
fd008d7f73 hotfix cd for putting extensions in env config 2024-07-25 19:05:34 +08:00
Ronald A. Richardson
97dfbedd1a Merge branch 'main' of github.com:fleetbase/fleetbase into cloud 2024-07-25 18:43:36 +08:00
Ron
451c95d0f0 Merge pull request #277 from fleetbase/dev-v0.5.1
v0.5.1
2024-07-25 17:33:52 +07:00
Ronald A. Richardson
b267b303cf fix console depnds 2024-07-25 18:17:36 +08:00
Ronald A. Richardson
441b4f3f0c Extension boot patches, dependency upgrades, performance upgrades 2024-07-25 18:14:11 +08:00
Ronald A. Richardson
0e4d4a7c8c ability to provide installed extensions via environment config 2024-07-23 17:05:35 +08:00
Ronald A. Richardson
6d13f22a98 Merge branch 'main' of github.com:fleetbase/fleetbase into cloud 2024-07-23 13:32:42 +08:00
Ronald A. Richardson
24392527e0 fix cd workflow, upgrade node 18x and pnpm 9x 2024-07-23 12:42:16 +08:00
Ronald A. Richardson
2c09c87bb6 fix console depn install in cd 2024-07-23 12:31:29 +08:00
Ronald A. Richardson
f7f6991ef3 bump pnpm version in cd workflow 2024-07-23 11:46:44 +08:00
Ronald A. Richardson
73acd4833c fix cd workflow 2024-07-23 11:30:14 +08:00
Ronald A. Richardson
1c3c4c16a5 use node 18 in cd 2024-07-23 11:11:43 +08:00
Ronald A. Richardson
5d01438dc9 fix env set in workflow 2024-07-23 10:59:16 +08:00
Ronald A. Richardson
9d004410ee Merge branch 'main' of github.com:fleetbase/fleetbase into cloud 2024-07-23 10:46:47 +08:00
Ronald A. Richardson
c19d838757 hotfix Dockerfile for deployments 2024-07-23 10:45:39 +08:00
Ronald A. Richardson
3a396f3b54 Merge branch 'main' of github.com:fleetbase/fleetbase into cloud 2024-07-23 10:34:32 +08:00
Ron
3a072c1524 Merge pull request #264 from fleetbase/feature/extensions-registry
feature/extensions-registry
2024-07-23 08:48:45 +07:00
Ronald A. Richardson
0c96386cf1 few tweaks to cicd, and fix in Dockerfile 2024-07-22 16:19:07 +08:00
Ronald A. Richardson
708babb81c fix ports on docker-compose 2024-07-22 14:19:11 +08:00
Ronald A. Richardson
8c8acf1e43 docker changes 2024-07-22 14:10:56 +08:00
Ronald A. Richardson
e853e2ca22 set new registry to composer 2024-07-20 10:41:35 +08:00
Ronald A. Richardson
dacaff37ca bump version to 0.5.0 2024-07-19 20:21:47 +08:00
Ronald A. Richardson
b0460963e5 added console back to docker-compose 2024-07-19 20:15:54 +08:00
Ronald A. Richardson
9ec786d892 almost ready for release, pending updates to registry... 2024-07-19 20:14:12 +08:00
Ronald A. Richardson
76859aeb26 almost ready for release of extensions 2024-07-19 18:09:14 +08:00
Ronald A. Richardson
1764b804de remove unnecessary utils and components 2024-07-18 02:05:19 +08:00
Ronald A. Richardson
0c33018b5b wip 2024-07-18 02:02:23 +08:00
Ronald A. Richardson
72b1b9b764 Merge branch 'feature/extensions-registry' of github.com:fleetbase/fleetbase into feature/extensions-registry 2024-07-18 01:58:43 +08:00
Ronald A. Richardson
aee552f518 remove extension template 2024-07-18 01:58:13 +08:00
Ron
9967f27c83 Merge pull request #276 from fleetbase/feature-registry-extension-updates
Feature registry extension updates
2024-07-18 00:50:27 +07:00
Ron
21ecfb5d93 Merge branch 'feature/extensions-registry' into feature-registry-extension-updates 2024-07-18 00:50:16 +07:00
Ronald A. Richardson
579a369888 preparing arch change for extensions implementation 2024-07-18 01:48:55 +08:00
Ronald A. Richardson
e86b970fc8 Merge branch 'main' of github.com:fleetbase/fleetbase into cloud 2024-07-06 13:18:22 +08:00
Ron
b06830990c Merge pull request #270 from fleetbase/update-cd-workflow-v4 2024-07-05 20:26:45 +07:00
Shiv Thakker
a7c4aba512 Update cd.yml to use v4 2024-07-05 20:43:10 +08:00
Shiv Thakker
a625f37e14 Update README.md 2024-07-05 19:41:48 +08:00
Ronald A. Richardson
122a0d186a Merge branch 'main' of github.com:fleetbase/fleetbase into cloud 2024-07-05 17:09:56 +08:00
Ron
3e95a08310 Merge pull request #269 from fleetbase/migrate-license-apgl-v3-or-later
AGPL v3 License Migration
2024-07-05 16:01:43 +07:00
Ronald A. Richardson
09aed20e71 ready 2024-07-05 16:56:22 +08:00
Ronald A. Richardson
178c2da96e bump version 2024-07-05 16:46:11 +08:00
Ronald A. Richardson
e85f975c26 all dependencies licenses updated 2024-07-05 16:45:26 +08:00
Ronald A. Richardson
f961411180 remove commercial license file 2024-07-03 18:31:18 +08:00
Ronald A. Richardson
baefc2dbce migrated license from MIT to APGL v3 from version v0.4.27 going forward 2024-07-03 18:28:06 +08:00
Ronald A. Richardson
7e258f698f Merge branch 'main' of github.com:fleetbase/fleetbase into cloud 2024-07-02 17:53:20 +08:00
Ron
a33c46ecd8 Merge pull request #268 from fleetbase/dev-v0.4.26
v0.4.26
2024-07-02 16:46:54 +07:00
Ronald A. Richardson
3fe1e0a439 update lockfiles 2024-07-02 17:41:42 +08:00
Ronald A. Richardson
7ae150137a critical urgent release w/ multi drop order customer resolve patch 2024-07-02 17:37:37 +08:00
Ronald A. Richardson
65ef642315 fixed composer.lock 2024-07-02 16:00:17 +08:00
Ronald A. Richardson
d79f034dbd Merge branch 'main' of github.com:fleetbase/fleetbase into cloud 2024-07-02 15:41:58 +08:00
Ronald A. Richardson
05b7d5e112 Merge branch 'main' of github.com:fleetbase/fleetbase into cloud 2024-07-02 15:40:58 +08:00
Ron
fd1ee4cccc Merge pull request #267 from fleetbase/upgrade-storefront-v0.3.10
upgraded storefront in console
2024-07-02 14:37:43 +07:00
Ronald A. Richardson
ca2bab9261 upgraded storefront in console 2024-07-02 15:37:10 +08:00
Ron
8c0d5f04c2 Merge pull request #266 from fleetbase/dev-v0.4.25
v0.4.25
2024-07-02 14:31:14 +07:00
Ronald A. Richardson
18f813c95b made sure to update the overwrite 2024-07-02 15:16:22 +08:00
Ronald A. Richardson
ca6004c191 preparing for next release with improvements and fixes 2024-07-02 15:02:28 +08:00
Ronald A. Richardson
cce1699a75 wip 2024-07-02 14:36:31 +08:00
Ronald A. Richardson
61779ab102 Trigger Deploy 2024-07-01 16:42:55 +08:00
Ronald A. Richardson
6338820372 new extension injector component for installed extensions from registry bridge WIP, need to figure out mounted extensions 2024-06-20 17:30:25 +08:00
Ronald A. Richardson
a287c05380 Merge branch 'main' of github.com:fleetbase/fleetbase into cloud 2024-05-30 19:57:16 +08:00
Ron
cd5a7370b9 Merge pull request #259 from fleetbase/dev-v0.4.24
v0.4.24
2024-05-30 18:44:34 +07:00
Ronald A. Richardson
989312f3f8 upgraded dependencies set 2024-05-30 19:35:51 +08:00
Ronald A. Richardson
9fe1af84a7 remove ember-accounting addon from packages 2024-05-30 19:24:39 +08:00
Ronald A. Richardson
b4ff469c8b upgraded packages, added new docs as submodule 2024-05-30 19:24:02 +08:00
Ron
5d54ffbfda Update README.md 2024-05-28 09:55:29 +07:00
Ron
445d782fe6 Merge pull request #258 from fleetbase/feature/resouce-imports
resouce import
2024-05-22 16:12:03 +07:00
Ronald A. Richardson
4ffc721ecf preparing next release 2024-05-22 17:01:20 +08:00
Doljinsuren Enkhbayar
4623910ebf added translation 2024-05-22 16:58:25 +08:00
Ronald A. Richardson
ecc41e587e Merge branch 'main' of github.com:fleetbase/fleetbase into cloud 2024-05-17 16:58:14 +08:00
Ron
af8e30ad7f Merge pull request #257 from fleetbase/dev-v0.4.23
v0.4.23
2024-05-17 16:48:35 +08:00
Ronald A. Richardson
f38d65028e rename usage of ENV to config 2024-05-17 16:42:52 +08:00
Ronald A. Richardson
eb90b77151 ran linter on console 2024-05-17 16:41:38 +08:00
Ronald A. Richardson
536f36487b ready for release, improved and implemented resource exports 2024-05-17 16:35:37 +08:00
Ron
93dc4afc03 Merge pull request #256 from fleetbase/feature/file-export
file export
2024-05-17 13:19:10 +08:00
Doljinsuren Enkhbayar
9fc53de9fe file export 2024-05-16 14:56:36 +08:00
Ronald A. Richardson
166529f9b4 Merge branch 'main' of github.com:fleetbase/fleetbase into cloud 2024-05-15 14:39:54 +08:00
Ron
bd37005d4b Merge pull request #253 from fleetbase/dev-v0.4.22
dev-v0.4.22
2024-05-15 13:26:53 +07:00
Ronald A. Richardson
f15d509cd1 Release v0.4.22 prepared 2024-05-15 14:20:58 +08:00
Ronald A. Richardson
1755c19d6b preparing for next release 2024-05-14 21:30:24 +08:00
Ron
ae300f9004 Update README.md
fix table of contents
2024-05-05 13:17:36 +07:00
Ron
0ad5877271 Update README.md
Rewrote and simplified README to match fleetbase goals
2024-05-05 13:16:21 +07:00
Ronald A. Richardson
189547f9de Upgrade fleetbase/billing#^0.0.9 with hotfix for getSytemResourceModels utility function 2024-05-04 13:56:59 +08:00
Ronald A. Richardson
90a42e8a93 Merge branch 'main' of github.com:fleetbase/fleetbase into cloud 2024-05-04 13:19:13 +08:00
Ron
5ffd0461e8 Merge pull request #248 from fleetbase/dev-v0.4.21
v0.4.21
2024-05-04 12:11:55 +07:00
Ronald A. Richardson
50a686ab80 Adds company identifier for User JSON response 2024-05-04 13:06:55 +08:00
Ronald A. Richardson
d28b1d41fb Merge branch 'main' of github.com:fleetbase/fleetbase into cloud 2024-04-30 19:40:08 +08:00
Ron
1f7937b6ea Merge pull request #247 from fleetbase/dev-v0.4.20
v0.4.20
2024-04-30 18:36:30 +07:00
Ronald A. Richardson
90a0e09321 critical hotfix for user resource and cache handling 2024-04-30 19:34:35 +08:00
Ronald A. Richardson
b056ef62b0 Merge branch 'main' of github.com:fleetbase/fleetbase into cloud 2024-04-30 18:11:33 +08:00
Ron
304933af7e Merge pull request #246 from fleetbase/dev-v0.4.19
v0.4.19
2024-04-30 17:04:53 +07:00
Ronald A. Richardson
96e6439d1e upgraded core-api w/ performance updates, caching, driver and user account management improvements, new erd generated 2024-04-30 17:59:54 +08:00
Ronald A. Richardson
e70cbacbc2 Merge branch 'main' of github.com:fleetbase/fleetbase into cloud 2024-04-17 16:58:07 +08:00
Ron
0ae5f26a63 Merge pull request #244 from fleetbase/dev-v0.4.18
v0.4.18
2024-04-17 15:38:11 +07:00
Ronald A. Richardson
3e90246dfd upgraded core-api to v1.4.19 2024-04-17 16:30:14 +08:00
Ronald A. Richardson
ad055cc4e6 Stability patches 2024-04-16 14:55:49 +08:00
Ronald A. Richardson
fbd4a7490a Merge branch 'main' of github.com:fleetbase/fleetbase into cloud 2024-04-13 20:28:50 +08:00
Ron
a35c0354b1 Merge pull request #243 from fleetbase/dev-v0.4.17
v0.4.17
2024-04-13 19:21:10 +07:00
Ron
e9bf831ce8 Merge pull request #241 from fleetbase/feature/chat
Feature: Chat
2024-04-13 19:11:36 +07:00
Ronald A. Richardson
2c20db4155 v0.4.17 2024-04-13 20:10:37 +08:00
Ronald A. Richardson
801d73215f chat functionality completed and ready for release 2024-04-13 20:01:39 +08:00
Ronald A. Richardson
ed1609ccf4 several improvements and fixes to chat models, serializers, and fixes to download function on file based models, and updated default api url in config 2024-04-12 19:14:43 +08:00
Ronald A. Richardson
82ae99eb84 improvements to chat models and serializers 2024-04-08 10:32:21 +08:00
Ronald A. Richardson
7874edf0f3 added chat log model and serializer 2024-04-08 09:46:00 +08:00
Ronald A. Richardson
7281174d12 added useful reload methods to chat channel model 2024-04-05 17:28:31 +08:00
Ronald A. Richardson
cc4e28cd00 fixed up chat models, serializers 2024-04-03 18:13:38 +08:00
Ronald A. Richardson
bbd1e1bdfe Merge branch 'main' of github.com:fleetbase/fleetbase into feature/chat 2024-04-03 15:21:28 +08:00
Ronald A. Richardson
4191d6a0bb added computed date properties to ChatChannelModel 2024-04-03 15:20:25 +08:00
Ronald A. Richardson
b9b0eb308b Merge branch 'main' of github.com:fleetbase/fleetbase into cloud 2024-04-02 18:06:15 +08:00
Ronald A. Richardson
dba2b7afc5 hotfix: bump console version 2024-04-02 17:56:06 +08:00
Ron
a6e6625ae1 Merge pull request #239 from fleetbase/dev-v0.4.16
v0.4.16
2024-04-02 16:55:13 +07:00
Ronald A. Richardson
3777569f22 added upgraded storefront 2024-04-02 17:50:07 +08:00
Ronald A. Richardson
fa5b6700a3 ready for release, full core dependency upgrades, security improvements and new feature for driver onboard 2024-04-02 17:45:01 +08:00
Ronald A. Richardson
6cce6a9db2 added cache to github card component, add password verification for changing email or password, ensured reset password link is is invalidated when expired or deleted 2024-04-02 17:09:10 +08:00
Doljinsuren Enkhbayar
29bd3ce217 created chat models 2024-04-02 15:16:48 +08:00
Ronald A. Richardson
39d405cb57 refactored github card to use cache for 6 hours 2024-03-28 15:12:17 +08:00
Ronald A. Richardson
48e1b89ec8 Merge branch 'main' of github.com:fleetbase/fleetbase into cloud 2024-03-27 21:09:51 +08:00
Ron
9f88c7bc79 Merge pull request #238 from fleetbase/dev-v0.4.15
v0.4.15
2024-03-27 20:04:55 +07:00
Ron
b3816c394a Merge pull request #236 from fleetbase/feature/helm_eks
feature/helm eks
2024-03-27 20:00:08 +07:00
Ronald A. Richardson
34462c61c4 Prepeared next release with latest upgrades/ patches 2024-03-27 20:58:40 +08:00
Eugene Dementyev
080302eb86 Fix socketcluster port for eks 2024-03-20 18:19:06 +13:00
Eugene Dementyev
b063cf6338 Set api host and socketcluster host from github 2024-03-20 18:03:15 +13:00
Ronald A. Richardson
5e02c95b66 Upgrade extension 'fleetops' to version v0.4.22 2024-03-19 19:25:51 +08:00
Eugene Dementyev
b6dca79251 Fix registry 2024-03-19 23:26:38 +13:00
Eugene Dementyev
c35af4d47a Add EKS deployments 2024-03-19 21:23:21 +13:00
Eugene Dementyev
2a89659cc3 Adapt the Helm chart to be used with AWS EKS 2024-03-19 21:05:47 +13:00
Ronald A. Richardson
db8b5c4d6a Merge branch 'main' of github.com:fleetbase/fleetbase into cloud 2024-03-17 12:32:42 +08:00
Ron
f8ae75d767 Merge pull request #235 from fleetbase/dev-v0.4.14
v0.4.14
2024-03-17 12:27:18 +08:00
Ronald A. Richardson
924448a4d0 Upgraded fleetops for distance matrix calculation optimization and provider configuration 2024-03-17 12:20:40 +08:00
Ronald A. Richardson
aa214ccad7 Merge branch 'main' of github.com:fleetbase/fleetbase into cloud 2024-03-15 17:33:37 +08:00
Ron
5426ac374d Merge pull request #234 from fleetbase/dev-v0.4.13
v0.4.13
2024-03-15 17:27:12 +08:00
Ronald A. Richardson
73f56b7958 added translations for schedule monitor ui 2024-03-15 17:23:06 +08:00
Ronald A. Richardson
095eb87e14 preparing for new release 2024-03-15 17:00:31 +08:00
Ronald A. Richardson
fabc16612b core-api upgrade includes improved upload error reporting 2024-03-13 18:02:22 +08:00
Ronald A. Richardson
3389cba935 added the visibility_handler to the gcs filesystem driver config 2024-03-13 17:13:23 +08:00
Ronald A. Richardson
cdd5524cf3 Merge branch 'main' of github.com:fleetbase/fleetbase into cloud 2024-03-13 15:31:47 +08:00
Ron
099ea57c39 Merge pull request #231 from fleetbase/dev-v0.4.12
v0.4.12
2024-03-13 15:26:36 +08:00
Ronald A. Richardson
5492bc7299 - Revamped service rates to integrate with the new order configuration system.
- Enhanced activities to now support proof of delivery requirements.
- Patched and improved the stringent validation for creating new orders.
- Added a new column `order_config_uuid` to the `service_rates` table for better data management.
- Various other minor improvements and optimizations for enhanced performance and stability.
- Critical patch and improvement to location service
2024-03-13 15:15:42 +08:00
Ronald A. Richardson
d99cefd2a4 Merge branch 'main' of github.com:fleetbase/fleetbase into cloud 2024-03-12 18:25:56 +08:00
Ron
00b037a385 Merge pull request #229 from fleetbase/dev-v0.4.11
v0.4.11
2024-03-12 18:18:42 +08:00
Ronald A. Richardson
151fea2505 ready for release 2024-03-12 18:13:35 +08:00
Ronald A. Richardson
08f901d865 patches following major release 2024-03-12 17:55:51 +08:00
Ronald A. Richardson
1c58fd43c3 v0.4.10l fixed console lockfile 2024-03-11 21:56:26 +08:00
Ronald A. Richardson
9226394159 Merge branch 'main' of github.com:fleetbase/fleetbase into cloud 2024-03-11 21:19:32 +08:00
Ron
116873a1ce Merge pull request #225 from fleetbase/dev-v0.4.10
v0.4.10
2024-03-11 21:12:01 +08:00
Ronald A. Richardson
20a1793447 remove test url from cors allowed_origins 2024-03-11 21:07:23 +08:00
Ronald A. Richardson
72ab83dc7a release is ready 2024-03-11 21:06:25 +08:00
Ronald A. Richardson
171e365ba6 added commercial license 2024-03-11 20:33:39 +08:00
Ronald A. Richardson
009f2d6e53 Merge branch 'dev-v0.4.10' of github.com:fleetbase/fleetbase into dev-v0.4.10 2024-03-11 16:25:17 +08:00
Ronald A. Richardson
4a59318feb upgraded fleetops-data; fixed custom fields and custom field value models; patch notification model 2024-03-11 16:24:46 +08:00
Ron
8920039b40 Merge pull request #227 from fleetbase/fix/helm_install_order 2024-03-11 12:44:53 +08:00
Eugene Dementyev
cd9be05714 Remove helm service hooks. Use DNS names for services 2024-03-08 20:40:31 +13:00
Ron
fbe35545e9 Merge pull request #223 from fleetbase/feature/nginx_host_header
Make nginx pass the Host header
2024-03-06 13:14:35 +08:00
Ron
56ab967d7a Merge pull request #224 from fleetbase/fix/helm_install_order
Fix/helm install order
2024-03-06 13:14:03 +08:00
Ronald A. Richardson
79604c7981 preparing for v0.4.10 release 2024-03-06 13:10:31 +08:00
Eugene Dementyev
312eb1aa6f Adds pre-install for redis service 2024-03-02 20:55:17 +13:00
Eugene Dementyev
6572a59120 Fixes helm install order 2024-03-02 20:21:18 +13:00
Eugene Dementyev
fa536c6183 Make nginx pass the Host header 2024-02-27 19:54:50 +13:00
Ronald A. Richardson
9b23b39f32 upgraded to v0.4.9 2024-02-24 17:07:49 +08:00
Ron
d4626be332 Merge pull request #221 from fleetbase/dev-v0.4.9
v0.4.9
2024-02-24 16:02:05 +07:00
Ronald A. Richardson
ffc54ecdbb upgrade dependencies which has expansion hotfixes 2024-02-24 16:59:12 +08:00
Ronald A. Richardson
5310fc3ff3 upgraded to v0.4.8 2024-02-23 13:52:21 +08:00
Ron
9bf097b88b Merge pull request #220 from fleetbase/dev-v0.4.8
v0.4.8
2024-02-23 12:48:50 +07:00
Ronald A. Richardson
52c8df8b66 prepared for next release 2024-02-23 13:47:15 +08:00
Ronald A. Richardson
9569053f50 upgraded to v0.4.7 2024-02-22 18:16:12 +08:00
Ron
908e0eb9ee Merge pull request #219 from fleetbase/dev-v0.4.7
v0.4.7
2024-02-22 17:11:51 +07:00
Ronald A. Richardson
6438138913 add upgraded core-api submodule 2024-02-22 17:57:22 +08:00
Ronald A. Richardson
aee06a2146 update composer lockfile 2024-02-22 17:54:01 +08:00
Ronald A. Richardson
ccacc6c597 adds fleetops migrations hotfix 2024-02-22 12:43:33 +08:00
Ronald A. Richardson
b08c054b99 upgraded to v0.4.6 2024-02-21 18:59:10 +08:00
Ron
62c396b789 Merge pull request #218 from fleetbase/dev-v0.4.6
v0.4.6
2024-02-21 17:48:54 +07:00
Ronald A. Richardson
295da5f331 fix composer files 2024-02-21 18:44:27 +08:00
Ronald A. Richardson
e775ccc2c8 upgraded dependencies and prepared for release 2024-02-21 18:40:36 +08:00
Ronald A. Richardson
bd0759881f updated notification channel config for firebase and apn 2024-02-21 18:16:15 +08:00
Ronald A. Richardson
830ae69b1d hotfix: composer.lock with core-api upgrade 2024-02-17 20:04:35 +08:00
Ronald A. Richardson
2e517f2f95 hotfix core-api w/ composer lock 2024-02-17 19:53:53 +08:00
Ronald A. Richardson
7038d375b0 Merge branch 'main' of github.com:fleetbase/fleetbase into cloud 2024-02-17 19:31:14 +08:00
Ron
3b9a80866f Merge pull request #213 from fleetbase/dev-v0.4.5
v0.4.5
2024-02-17 18:26:25 +07:00
Ronald A. Richardson
76badbf949 patch admin organization browser; upgrade core-api; upgrade fleetops 2024-02-17 19:21:07 +08:00
Ronald A. Richardson
f968556585 hotfix organizations browsers in admin w/ more details, better querying and admin based view, upgrade of dependencies with major patches 2024-02-16 17:32:44 +07:00
Ronald A. Richardson
d5ea7f7790 Upgraded fleetops-api v0.4.11 - Fixes deprecation error/warning which occurs in some environments Implicit conversion from float x to int loses precision when creating a DistanceMatrix object 2024-02-16 03:04:16 +07:00
Ronald A. Richardson
6d01eab305 use fixed fleetbase/laravel-mysql-spatial v1.0.2 2024-02-16 01:37:20 +07:00
Ronald A. Richardson
4eb4b04121 use fixed fleetbase/laravel-mysql-spatial v1.0.2 2024-02-16 01:34:01 +07:00
Ronald A. Richardson
24c5b93005 Merge branch 'main' of github.com:fleetbase/fleetbase into cloud 2024-02-16 00:16:49 +07:00
Ronald A. Richardson
9406446db1 explicitly set production environment on gitlab cd workflow 2024-02-16 00:16:22 +07:00
Ronald A. Richardson
565db7bbce explicitly set production environment for cd workflows 2024-02-16 00:15:15 +07:00
Ronald A. Richardson
80610b9a48 Merge branch 'main' of github.com:fleetbase/fleetbase into cloud 2024-02-15 23:52:27 +07:00
Ron
003cb467e8 Merge pull request #212 from fleetbase/dev-v0.4.4
v0.4.4
2024-02-15 23:41:59 +07:00
Ronald A. Richardson
8e1b281e77 upgraded core-api v1.4.4 and fleetops v0.4.10 w/ critical patches for webhook and driver 2024-02-15 23:32:46 +07:00
Ronald A. Richardson
af4507cc87 added translations for create/join organization and migrated to use Dockerfile 2024-02-15 23:11:20 +07:00
Ronald A. Richardson
2a2c7d8426 use correct CONSOLE_HOST env variable in cors config 2024-02-14 17:05:59 +07:00
Ronald A. Richardson
077a4298b9 Update console Dockerfile to allow environment to be passed in build 2024-02-14 16:02:55 +07:00
Ronald A. Richardson
9e5551972e upgraded to v0.4.3 2024-02-13 17:02:37 +08:00
Ron
af840d30d0 Merge pull request #211 from fleetbase/dev-v0.4.3
v0.4.3
2024-02-13 16:52:05 +08:00
Ronald A. Richardson
a253c0c6f7 Upgrade dependencies with critical patches 2024-02-13 16:50:21 +08:00
Ronald A. Richardson
b784f890f3 upgraded to v0.4.2 2024-02-13 14:45:20 +08:00
Ron
0fc1d6068d Merge pull request #210 from fleetbase/dev-v0.4.2
v0.4.2
2024-02-13 14:41:56 +08:00
Ronald A. Richardson
6993510d08 upgraded core-api for api credential key generation patch 2024-02-13 14:36:37 +08:00
Ronald A. Richardson
797a3d61fe fix router 2024-02-13 13:55:57 +08:00
Ronald A. Richardson
d2f0bfe83e upgraded to v0.4.1 2024-02-13 13:54:46 +08:00
Ron
4fcf09c1b8 Merge pull request #209 from fleetbase/dev-v0.4.1-version-patch
upgrade packages
2024-02-13 13:41:22 +08:00
Ronald A. Richardson
f89596a74b upgrade packages 2024-02-13 13:40:24 +08:00
Ron
d89e93f248 Merge pull request #208 from fleetbase/dev-v0.4.1-version-patch
v0.4.1 patch
2024-02-13 13:39:26 +08:00
Ronald A. Richardson
2f0c15bc93 bump version for v0.4.1 release 2024-02-13 13:37:34 +08:00
Ron
ae6c07006b Merge pull request #207 from fleetbase/dev-v0.4.1
v0.4.1
2024-02-13 13:26:53 +08:00
Ronald A. Richardson
d754641493 Upgraded to Fleet-Ops v0.4.8, Core API to v1.4.1 and added support for sendgrid officially. 2024-02-13 13:22:20 +08:00
Ron
bb0d706006 Merge pull request #205 from ekini/fix/crond 2024-02-10 15:02:38 +08:00
Eugene Dementyev
652bc363e1 Fix crond 2024-02-10 20:00:50 +13:00
Ron
363309af61 Merge pull request #204 from ekini/fix/helm_replicas 2024-02-10 15:00:30 +08:00
Eugene Dementyev
83791ea91c Scale deployment of the app to 2 by default 2024-02-10 19:57:37 +13:00
Ronald A. Richardson
f28ad85c1a Upgraded fleetops to v0.4.8 for LocationService minifcation hotfix 2024-02-09 19:07:32 +08:00
Ronald A. Richardson
d7b0826f3f upgrade core-api to v1.4.1 2024-02-08 19:07:10 +08:00
Ronald A. Richardson
dd6008a8aa dont copy auth.json 2024-02-08 17:44:52 +08:00
Ronald A. Richardson
6671fefaaa Upgraded to v0.4.0 2024-02-08 17:41:02 +08:00
Ron
8aae8cd025 Merge pull request #202 from fleetbase/dev-v0.4.0
v0.4.0
2024-02-08 14:34:34 +08:00
Ronald A. Richardson
6fb0353813 upgrade dependencies 2024-02-08 14:07:05 +08:00
Ronald A. Richardson
c73c8e0f54 upgrade fleetops, small patch on invite for user ui 2024-02-08 14:06:23 +08:00
Ronald A. Richardson
84ddf730c2 Upgraded dependencies for crticial patches from QA tests 2024-02-07 18:17:31 +08:00
Ronald A. Richardson
9da0d6b5c4 try latest version of go-crond for scheduler 2024-02-07 16:26:19 +08:00
Ronald A. Richardson
52bf61b3be patches for dashboards 2024-02-07 15:58:50 +08:00
Ronald A. Richardson
9ff3d9e85f Merge branch 'dev-v0.4.0' of github.com:fleetbase/fleetbase into dev-v0.4.0 2024-02-07 15:17:02 +08:00
Ronald A. Richardson
b6bad3212d ready for release 2024-02-07 15:16:36 +08:00
Ron
a43b86807b Merge pull request #203 from ekini/fix/go-crond
fix/go crond
2024-02-07 14:58:14 +08:00
Eugene Dementyev
9cc0e35ac3 Fix go-crond after switching to Alpine base image 2024-02-07 19:56:40 +13:00
Ronald A. Richardson
2e555b8dc3 fix composer dependencies for testing before release 2024-02-07 11:54:31 +08:00
Ronald A. Richardson
948ba4aa6d patches for dashboard and organizations/users 2024-02-07 11:35:55 +08:00
Ron
46bd448ec7 Merge pull request #194 from fleetbase/feature/caddy-server
Fleetbase Upgrade to PHP 8.2 and use FrankenPHP & Caddy
2024-02-06 15:19:25 +08:00
Ronald A. Richardson
e588242cb9 Merge branch 'feature/caddy-server' of github.com:fleetbase/fleetbase into feature/caddy-server 2024-02-06 15:18:25 +08:00
Ronald A. Richardson
58600a357a Merge branch 'dev-v0.4.0' into feature/caddy-server 2024-02-06 15:15:27 +08:00
Ron
4dd8a7b2ff Merge pull request #198 from fleetbase/feature/organizations-page-for-admin
Organizations page for admin
2024-02-06 15:12:04 +08:00
Ron
54803909a4 Merge pull request #197 from fleetbase/dashboard
customizable widget based dashboard
2024-02-06 15:11:32 +08:00
Ronald A. Richardson
e437ee04fb preparing for next big release 2024-02-06 15:08:11 +08:00
TemuulenBM
80d2ebb544 deleted company-user model 2024-02-06 15:00:28 +08:00
TemuulenBM
300e157bc1 fixed router.js 2024-02-06 14:33:22 +08:00
Ronald A. Richardson
26509008dc upgrade dependencies full upgrades completed for l10 php8.2 2024-02-06 14:30:18 +08:00
TemuulenBM
4119eb1717 fixed conflicts 2024-02-06 14:14:39 +08:00
Ronald A. Richardson
27661a3888 include core-api patch 2024-02-06 13:09:42 +08:00
Ronald A. Richardson
a4f69409fd remove reference to internal and private packages 2024-02-05 19:39:22 +08:00
Ronald A. Richardson
da9caf57f1 fix composer lockfiles 2024-02-05 19:37:34 +08:00
Ronald A. Richardson
acfa34b09f copy composer lockfile during build 2024-02-05 19:15:09 +08:00
Ronald A. Richardson
356b5076e5 removed composer-auth.json secret usage and move to using auth key env variable in builds 2024-02-05 19:10:42 +08:00
Ronald A. Richardson
038382928b oops fixed a typo 2024-02-05 19:09:16 +08:00
Ronald A. Richardson
f459f2e7e3 fix cd for docker-bake.hcl 2024-02-05 19:07:04 +08:00
Ronald A. Richardson
7f9b09f673 fix docker bake build for cd 2024-02-05 19:04:42 +08:00
Ronald A. Richardson
440040fecb made github auth token environment variable for docker build 2024-02-05 19:01:20 +08:00
Turtuvshin
bc31bf4c4c Refactor dashboard service to handle default dashboard creation 2024-02-05 18:34:54 +08:00
Ronald A. Richardson
def361c2af fixed docker setup for deployment 2024-02-05 18:34:24 +08:00
TemuulenBM
be382fcbd3 added translation 2024-02-05 16:35:44 +08:00
Turtuvshin
f42de06dcf Refactor widget position update logic 2024-02-05 14:38:37 +08:00
Turtuvshin
dc2b4e1aee Fix widget position update bug 2024-02-05 14:19:24 +08:00
Turtuvshin
c7348766df set min width and height 2024-02-05 13:35:38 +08:00
Turtuvshin
e67149db89 fixed default dashboard actions and remove widget function 2024-02-05 13:35:00 +08:00
Turtuvshin
4765bcfbd9 fixed gridstack item remove 2024-02-05 13:33:38 +08:00
TemuulenBM
019be89e06 fixed router and rewrite route as a standart 2024-02-05 11:45:24 +08:00
Eugene Dementyev
db0c56d8f0 Fix dumpautoload 2024-02-04 19:45:16 +13:00
Eugene Dementyev
8de660d51a Fix the deploy script. Change the cd accordingly.
Reformat the action file
2024-02-04 19:27:20 +13:00
Ronald A. Richardson
67f22aafbe retry workflow with absolute path deploy script 2024-02-03 18:40:28 +08:00
Ronald A. Richardson
1ff89ca16a try to debug ecs-tool run dir 2024-02-03 18:37:11 +08:00
Ronald A. Richardson
c6777efb2d use new app dir in httpd container 2024-02-03 18:23:47 +08:00
Ronald A. Richardson
7d1f594f87 update Dockerfile to not copy submodule packages as well as update cd with absolute path for the deploy script 2024-02-03 18:06:56 +08:00
Ron
da6485987a Merge pull request #199 from ekini/feature/caddy-server
feature/caddy server
2024-02-03 13:46:30 +08:00
Eugene Dementyev
b623d613f1 Fixup httpd config and Caddyfile 2024-02-03 12:04:35 +13:00
Turtuvshin
d1a77c95d0 fixed grid item change events 2024-02-02 20:51:48 +08:00
Ronald A. Richardson
bc7c6c12ad set port on proxy pass to 8000 2024-02-02 18:11:26 +08:00
TemuulenBM
50bfe55583 created Organizations page for admin 2024-02-02 18:04:43 +08:00
Ronald A. Richardson
bd1a61912f added back httpd container to use proxy_pass to frankenphp/octane until nginx container can be removed from infra 2024-02-02 13:30:56 +08:00
Ronald A. Richardson
9d49730d52 updated dashboard ui/ux and updated universe method names in implementation 2024-02-02 12:02:58 +08:00
Ronald A. Richardson
fd38f2bef6 remove .DS_Store files 2024-02-02 10:44:47 +08:00
Ronald A. Richardson
0fa3a25d59 removed accidental adds 2024-02-02 10:43:52 +08:00
Ronald A. Richardson
0917d7cce9 merged w/ latest 2024-02-02 10:38:05 +08:00
Turtuvshin
d33aa21418 removed yarn lock 2024-02-02 10:33:44 +08:00
Ronald A. Richardson
7136f6195c v0.3.10 upgraded lockfile 2024-02-01 20:19:52 +08:00
Ronald A. Richardson
2384887620 Upgraded to v0.3.10 2024-02-01 20:14:31 +08:00
Ron
e8f5638cad Merge pull request #192 from fleetbase/dev-v0.3.10
v0.3.10
2024-02-01 20:05:22 +08:00
Ronald A. Richardson
e216f11f7c all dependencies up to date 2024-02-01 19:57:40 +08:00
Ronald A. Richardson
41064be1ff fixed up for release 2024-02-01 19:28:40 +08:00
Ron
ae17ccb199 Merge pull request #195 from ekini/fix/socketcluster_port
Helm: Fix the socketcluster port to fix broadcasting
2024-02-01 19:14:54 +08:00
Ronald A. Richardson
0fbf901c9d Merge branch 'dev-v0.3.10' of github.com:fleetbase/fleetbase into dev-v0.3.10 2024-02-01 19:12:42 +08:00
Ronald A. Richardson
00806d4f0c checking in comments implementation 2024-02-01 19:11:17 +08:00
TemuulenBM
683353517d fixed conflict 2024-02-01 18:25:57 +08:00
TemuulenBM
27b1af6c40 fixed conflict 2024-02-01 18:25:10 +08:00
Turtuvshin
ab8cbf9ea6 submodule changes 2024-02-01 18:19:02 +08:00
Temuulen
e8249adddd Merge pull request #196 from fleetbase/feature/organizations-page-for-admin
Feature/organizations page for admin
2024-02-01 18:13:44 +08:00
Turtuvshin
b2c44842ce changed composer 2024-02-01 18:08:36 +08:00
Turtuvshin
f9e6c8d50d refactor dashboard components 2024-02-01 18:01:46 +08:00
TemuulenBM
6cd0625753 Refactor user model retrieval
This commit refactors the way the user model is retrieved in the
organization-users.js file. Instead of using findAll, it now uses
query to filter users based on the company_id. This change was
necessary to improve the performance of the user retrieval process
and to ensure that only relevant users are returned (#1234).
2024-02-01 18:01:35 +08:00
Ron
21ea3f5644 Merge branch 'dev-v0.3.10' into feature/organizations-page-for-admin 2024-02-01 13:37:06 +08:00
TemuulenBM
727b2e399f merged 2024-02-01 13:34:35 +08:00
TemuulenBM
ec913f82d7 Merge branch 'main' of github.com:fleetbase/fleetbase into feature/organizations-page-for-admin 2024-02-01 13:31:03 +08:00
Turtuvshin
9bb2ea15e0 Update widget panel styling and add icons to available widgets 2024-02-01 13:17:49 +08:00
Ronald A. Richardson
575e4e0952 update docker-bake file to build without httpd 2024-01-31 17:40:33 +08:00
Ronald A. Richardson
f2058e0d58 Working version w/ added queue for docker development 2024-01-31 17:36:28 +08:00
Turtuvshin
9669e917ab Add logic to automatically enable edit mode when current dashboard has no widgets 2024-01-31 16:39:20 +08:00
Turtuvshin
2b6a200811 Update grid options for dashboard components 2024-01-31 16:33:37 +08:00
Turtuvshin
1d92764958 Add dashboard metric component and initialize widgets 2024-01-31 15:56:39 +08:00
Turtuvshin
13db00c39f Refactor widget configurations in initialize widgets 2024-01-31 13:47:45 +08:00
Ronald A. Richardson
eedeb8f209 add user timezone to onboard create account request 2024-01-31 11:15:14 +08:00
Turtuvshin
bac95cca00 disabled to resize without editing 2024-01-31 11:06:21 +08:00
Turtuvshin
520e9771b4 switch dashboard 2024-01-31 01:37:59 +08:00
Ronald A. Richardson
75742de7ac configured for l10x and octane 2024-01-30 20:13:16 +08:00
Ronald A. Richardson
8628695b0b working with laravel octane 2024-01-30 20:07:22 +08:00
Turtuvshin
74fd369854 Fix dashboard component and initialize widget options
This commit fixes an issue in the dashboard component where a redundant line of code was removed. Additionally, the initialize-widgets file was updated to include title and value options for various dashboard components.
2024-01-30 18:53:04 +08:00
Turtuvshin
5d43df0e1b Add dashboard and dashboard widget serializers 2024-01-30 17:48:56 +08:00
Turtuvshin
c96a3eb2bf Add delete functionality to dashboard component 2024-01-30 16:01:59 +08:00
Turtuvshin
4424ed1754 Update dashboard create and widget-panel templates 2024-01-30 16:01:46 +08:00
Turtuvshin
6c8b09db61 improved ui 2024-01-30 14:15:42 +08:00
Turtuvshin
8d5e649646 create dashboard 2024-01-30 13:43:42 +08:00
Turtuvshin
6844e61dd4 add, remove, edit widgets 2024-01-29 18:28:53 +08:00
Eugene Dementyev
7acf97a5e0 Helm: Fix the socketcluster port to fix broadcasting 2024-01-27 11:06:25 +13:00
Ronald A. Richardson
6a68c85d94 configured and setup to run api using frankenphp/Caddyserver 2024-01-26 18:39:02 +08:00
Ron
914a5abacb Merge pull request #193 from fleetbase/feature/reset-password
fixed reset-password flow
2024-01-26 15:42:14 +08:00
TemuulenBM
fdcd3bb805 fixed reset-password flow 2024-01-26 14:50:27 +08:00
Ronald A. Richardson
5a4d6846b5 improved accoutn verification with ability to manually trigger resend of code 2024-01-26 14:41:36 +08:00
Turtuvshin
2e8a6de7ea Add dashboard widget model and update dashboard model 2024-01-26 01:33:05 +08:00
Ronald A. Richardson
a2778f1552 Upgraded to v0.3.9 2024-01-25 20:10:39 +08:00
Ron
f52c1a17b8 Merge pull request #191 from fleetbase/dev-v0.3.9
v0.3.9
2024-01-25 20:04:33 +08:00
Ronald A. Richardson
c44e9186d5 ready for release 2024-01-25 20:04:01 +08:00
Ronald A. Richardson
02408b3a12 Merge branch 'dev-v0.3.10' of github.com:fleetbase/fleetbase into dev-v0.3.10 2024-01-25 19:38:55 +08:00
Ronald A. Richardson
a3d3cb05cf preparing for next release 2024-01-25 19:38:20 +08:00
Ron
604365fc5f Merge pull request #188 from ekini/feature/helm_services
Add scheduler and events to deployments
2024-01-25 19:12:39 +08:00
Ron
5d47dc676f Merge pull request #190 from fleetbase/fix-onboard-form
Fix onboard form
2024-01-25 19:11:58 +08:00
Ronald A. Richardson
50b58a5955 preparing next release 2024-01-25 19:10:17 +08:00
Munkh-erdene Damdinbazar
948db173c9 fixed verify email 2024-01-25 15:53:27 +08:00
Munkh-erdene Damdinbazar
4f56e04166 fixed onboard translations 2024-01-25 15:25:32 +08:00
Eugene Dementyev
d9705bf4f4 Add scheduler and events to deployments 2024-01-25 20:05:42 +13:00
Ronald A. Richardson
acfda5ed1a Merge branch 'main' of github.com:fleetbase/fleetbase into cloud 2024-01-24 18:32:51 +08:00
Ron
5535067d87 Merge pull request #186 from fleetbase/dev-v0.3.8
v0.3.8
2024-01-24 18:25:53 +08:00
Ronald A. Richardson
aab4e9f1f6 remove incomplete mongolian translations 2024-01-24 18:22:24 +08:00
Ronald A. Richardson
43329a0ed2 bump package verison v0.3.8 2024-01-24 18:15:10 +08:00
Ronald A. Richardson
427816d2dd fix submodules, update dependency lockfiles 2024-01-24 18:14:48 +08:00
Ronald A. Richardson
3d9d5cbe9d Merge branch 'dev-v0.3.8' of github.com:fleetbase/fleetbase into dev-v0.3.8 2024-01-24 15:54:25 +08:00
Ronald A. Richardson
3fc5bdb32e hotfix organization 2fa settings as should not display method selection 2024-01-24 15:53:18 +08:00
Munkh-erdene Damdinbazar
a60f75655d Merge branch 'dev-v0.3.8' of github.com:fleetbase/fleetbase into dev-v0.3.8 2024-01-24 14:46:46 +08:00
Munkh-erdene Damdinbazar
0984af400a fixed some typo errors on templates and translation file 2024-01-24 14:45:21 +08:00
Ronald A. Richardson
7f900fe218 now using fleetbase intl lint module 2024-01-24 14:31:17 +08:00
Ronald A. Richardson
3aaf382384 added intl linter for console 2024-01-24 11:46:16 +08:00
Ronald A. Richardson
f589b1cf0a added intl linter script to console 2024-01-24 11:44:26 +08:00
Ronald A. Richardson
bce1cbf22d increase veirification timeout before recommending resend 2024-01-24 11:42:28 +08:00
Ron
6327603857 Merge pull request #187 from fleetbase/hotfix-s3deploy-dockerfile
Hotfix s3deploy dockerfile
2024-01-24 11:09:55 +08:00
Ronald A. Richardson
7204ddb3a9 Upgrade the console dockerfile to use node 18, patch the .s3deploy file to set correct cache-control header for json and xml files 2024-01-24 11:07:32 +08:00
Ronald A. Richardson
e08255007a remove later hook from extensions initializer 2024-01-23 21:37:22 +08:00
Ronald A. Richardson
41761ea50e add delay to extensions initialization step 2024-01-23 21:20:51 +08:00
Ronald A. Richardson
5c623819ed use node:18.15.0-alpine for console build 2024-01-23 20:13:23 +08:00
Turtuvshin
3a72cacc5c fixed gridstack 2024-01-23 18:56:45 +08:00
Munkh-erdene Damdinbazar
2bc9745b95 add missing translation 2024-01-23 11:51:46 +08:00
Turtuvshin
fc1e610a54 fixed widget panel 2024-01-22 19:14:34 +08:00
Ron
4a2b3e094f Merge pull request #178 from fleetbase/feature-intl
feature: Internationalization
2024-01-22 18:51:23 +08:00
Ronald A. Richardson
313906d36a added locale switcher to change language of fleetbase 2024-01-22 18:50:09 +08:00
Ronald A. Richardson
d1d5b87c21 merged with latest changes for next release 2024-01-22 17:17:31 +08:00
Ronald A. Richardson
8dc7d9ff87 Improved the app styling of enforcement alert 2024-01-22 17:00:28 +08:00
TemuulenBM
008faa1ca7 corrected based on request 2024-01-22 16:20:13 +08:00
TemuulenBM
6aab30b358 remove all ds store files 2024-01-22 15:26:36 +08:00
Temuulen
30ab3aab09 Merge pull request #170 from fleetbase/feature-2FA
feature: 2FA
2024-01-22 14:54:41 +08:00
TemuulenBM
df3c93803d merged 2fa with latest release 2024-01-22 14:52:56 +08:00
TemuulenBM
3d1e20439f fixed styling for two-fa enforcement alert 2024-01-22 14:46:38 +08:00
Ronald A. Richardson
2bd885b1a2 Upgraded fleetbase/core-api to v1.3.11 2024-01-19 20:16:06 +08:00
TemuulenBM
646f10713f Merge branch 'feature-2FA' of github.com:fleetbase/fleetbase into feature-2FA 2024-01-19 20:09:25 +08:00
TemuulenBM
5db723b003 Created two-fa-enforcement component 2024-01-19 20:04:27 +08:00
Ronald A. Richardson
88c3842441 Upgraded to v0.3.7 2024-01-19 19:55:47 +08:00
Ron
74770883fe Merge pull request #185 from fleetbase/dev-v0.3.7
v0.3.7
2024-01-19 19:51:33 +08:00
Ronald A. Richardson
3ebedab90a keep CACHE_DRIVER=null for docker build 2024-01-19 19:48:19 +08:00
Ronald A. Richardson
d0864e822b keep Dockerfile php 7.4 2024-01-19 19:44:11 +08:00
Ronald A. Richardson
f8b564acc9 upgraded dependencies with critical patches 2024-01-19 19:40:46 +08:00
Ronald A. Richardson
fd604c99e0 Critical patches for user verification during onboard and driver creation and loign 2024-01-19 19:27:25 +08:00
Ronald A. Richardson
2c2a4121a8 Upgraded fleetbase/core-api to v1.3.9 with critical patches 2024-01-19 17:02:47 +08:00
Ronald A. Richardson
aadd03f14b upgrade fleetbase/core-api to v1.3.8 2024-01-18 20:00:32 +08:00
Ronald A. Richardson
706e94270d upgraded to v0.3.6 2024-01-18 19:18:52 +08:00
Ron
bc0ba3e3fb Merge pull request #184 from fleetbase/dev-v0.3.6
v0.3.6
2024-01-18 19:10:39 +08:00
Ronald A. Richardson
ecbbe002cc updated router.js 2024-01-18 19:10:15 +08:00
Ronald A. Richardson
1f068a890a fix translation file in console 2024-01-18 19:02:16 +08:00
Ronald A. Richardson
3aa365e7ef almost ready for release 2024-01-18 18:59:53 +08:00
Ronald A. Richardson
bb1444dc31 improved and enforced email verification flows 2024-01-18 16:42:42 +08:00
TemuulenBM
09996a4398 Completed validate and change password flow for account
Succesfully implemented Organization Auth settings that is enforces all users to enable or disable 2fa
2024-01-17 19:23:03 +08:00
Bayarbold8
22043a53e3 restore to main storefront 2024-01-17 15:53:00 +08:00
Bayarbold8
acde54c6ae merged with latest 2024-01-17 15:52:23 +08:00
Bayarbold8
e6961089ca iam-engine storefront finished 2024-01-17 14:54:11 +08:00
Ronald A. Richardson
880facdaef merged with latest 2024-01-17 13:55:15 +08:00
Ronald A. Richardson
87c1a56fd1 fix enforce toggle action 2024-01-17 12:14:19 +08:00
Bayarbold8
dba816463f storefront and iam-engine completed 2024-01-17 11:48:56 +08:00
Ronald A. Richardson
270371ce9c refactor for two auth flow and settings 2024-01-16 18:52:52 +08:00
Ronald A. Richardson
9f37b15d8a few patches for 2fa implementation 2024-01-15 18:36:31 +08:00
Turtuvshin
59f01832ef added grid stack 2024-01-15 17:30:56 +08:00
TemuulenBM
3ac3ad97f3 updated router.map and added tests 2024-01-15 17:12:44 +08:00
Ronald A. Richardson
ad067bd32c merged and updated to latest v0.3.5 2024-01-15 16:52:54 +08:00
TemuulenBM
9bd0cc17d9 Latest push 2024-01-15 16:13:58 +08:00
Ronald A. Richardson
1dabc375f9 upgraded to v0.3.5 2024-01-12 18:44:52 +08:00
Ron
fc947d833a Merge pull request #181 from fleetbase/dev-v0.3.5
v0.3.6
2024-01-12 18:39:09 +08:00
Ronald A. Richardson
ff159a04ee upgraded dependencies to latest versions which contain critical patches for API 2024-01-12 18:31:29 +08:00
TemuulenBM
c5ac611000 Tried to verify after verification code is sent 2024-01-12 18:14:24 +08:00
Bayarbold8
863e27bd7b storefront translation finished 2024-01-11 15:32:49 +08:00
TemuulenBM
63c9bc0880 verified resend code 2024-01-10 18:06:44 +08:00
Bayarbold8
6183378717 fixed some mistakes 2024-01-10 13:47:23 +08:00
TemuulenBM
ea35a6f81f Succesfully implemented verify-code process 2024-01-09 18:44:13 +08:00
TemuulenBM
5fb4851544 implemented countdown component in two-fa controller template and succesfully sent sms to user 2024-01-08 18:04:43 +08:00
Ronald A. Richardson
0efec46155 updated production env backend vars 2024-01-08 14:42:58 +08:00
TemuulenBM
e348b02611 Created 2fa validate session 2024-01-05 18:01:52 +08:00
mm3ddd
3f779969c3 created more translation keys 2024-01-04 18:12:14 +08:00
TemuulenBM
9a23c64dde updated login function within 2fa 2024-01-04 18:06:40 +08:00
mm3ddd
b2098d0cb8 added translation keys for install and invite for user 2024-01-04 13:27:28 +08:00
TemuulenBM
850cc1e20d Fixed 2FA Config component 2024-01-03 17:58:17 +08:00
Ronald A. Richardson
6dd7ca401c complete i18n for auth routes 2024-01-03 17:56:59 +08:00
Ronald A. Richardson
8bb2c6b65d fix socketcluster port for environments 2024-01-03 17:37:35 +08:00
Ronald A. Richardson
fa51d03cfd (fix) use correct translation key in forgot password route 2024-01-03 17:35:15 +08:00
Ronald A. Richardson
092ebf0589 updated translation file, added translation key for forgot password route 2024-01-03 17:29:18 +08:00
Ronald A. Richardson
1c0af1a119 set correct values in .env files for console 2024-01-03 13:27:10 +08:00
Ronald A. Richardson
dd65ee619b upgraded to v0.3.4 2023-12-27 12:01:39 +08:00
Ron
4f4fdeaafc Merge pull request #176 from fleetbase/dev-v0.3.4
v0.3.4
2023-12-27 11:36:11 +08:00
Ronald A. Richardson
39747601d0 merged with main 2023-12-27 11:29:43 +08:00
Ronald A. Richardson
321ef64229 added truncate to open issues on github card component 2023-12-27 11:27:35 +08:00
Ronald A. Richardson
1b8f7a663d upgraded to core-api v1.3.5 2023-12-27 11:26:43 +08:00
Ronald A. Richardson
e790a0e123 upgraded to v0.3.3 2023-12-27 11:07:33 +08:00
Ronald A. Richardson
2a5a68f620 (fix) urgently replace deprecated route transitionTo with router service method 2023-12-27 11:05:15 +08:00
TemuulenBM
d314964776 updated 2fa page 2023-12-26 17:52:25 +08:00
Ron
3033f6f4cf Merge pull request #175 from fleetbase/dev-v0.3.3
v0.3.3
2023-12-26 12:46:40 +08:00
Ronald A. Richardson
9fbc3252c6 upgraded core-api and fleetops which includes critical patches and fixes 2023-12-26 12:42:04 +08:00
TemuulenBM
9c1655167d created frontend for saving 2023-12-25 18:05:22 +08:00
Ron
25ce216e3b Merge pull request #165 from fleetbase/dev-v0.3.2
v0.3.2
2023-12-25 15:20:12 +08:00
Ronald A. Richardson
6bf3dbad2d move gcp required app.yaml to console dir 2023-12-25 15:07:18 +08:00
Ron
9a8c67a1b7 Merge pull request #168 from ekini/feature/gcp
Add Helm chart and GCP CI/CD pipeline
2023-12-25 15:03:25 +08:00
Ronald A. Richardson
eabd83c8ad upgraded all dependencies to latest releases 2023-12-25 15:03:04 +08:00
TemuulenBM
16e59f3465 Created 2FA page 2023-12-21 18:02:09 +08:00
TemuulenBM
f9d362b1be Created Authentication component for 2FA config 2023-12-20 18:00:35 +08:00
Ronald A. Richardson
e4f64021d7 Added gcs storage as a filesystem driver, updated cors to automatically handle www. in domains 2023-12-12 18:19:28 +08:00
Eugene Dementyev
941c6d03d9 Add socketcluster env vars 2023-12-12 18:41:42 +13:00
Eugene Dementyev
2331c6902e Fix helm port 2023-12-11 21:08:43 +13:00
Eugene Dementyev
be9faea3bc Fix repository 2023-12-11 21:05:30 +13:00
Eugene Dementyev
e8d7c021f5 Fix socketcluster 2023-12-11 21:05:03 +13:00
Eugene Dementyev
8c86eed5fc Update socketcluster 2023-12-11 20:59:11 +13:00
Eugene Dementyev
a2ce7b5a65 Fix repository for helm 2023-12-11 20:26:20 +13:00
Ronald A. Richardson
48069177df Upgrade to 5.4 semi successful, working through deprecations 2023-12-08 13:52:38 +08:00
Ronald A. Richardson
c5574a25ae upgraded console to ember 5.4.1 2023-12-07 11:48:55 +08:00
Ronald A. Richardson
0a3ad2f0a6 added scripts 2023-12-07 11:17:52 +08:00
Ron
d60760104d Merge pull request #163 from fleetbase/feature/update-ignore-file
updated lockfile to ignore private packages
2023-12-07 11:02:50 +08:00
Ronald A. Richardson
88b4acff67 working on upgrade to ember 5.4.1 2023-12-07 10:56:09 +08:00
Eugene Dementyev
4d2179129d Add GCP ci/cd
Add helm chart
2023-12-06 08:01:34 +13:00
Shiv Thakker
5c7e0a1c56 Update README.md 2023-11-28 15:08:12 +08:00
Ronald A. Richardson
65a6894d4b updated lockfile to ignore private packages 2023-11-28 11:46:22 +08:00
Ronald A. Richardson
723e3ca3d1 fix composer file 2023-11-27 10:23:44 +08:00
Ronald A. Richardson
4eb706d33e upgraded to v0.3.1 / cloud version 2023-11-27 10:19:56 +08:00
Ron
e3acd28c18 Merge pull request #162 from fleetbase/dev-v0.3.1
v0.3.1
2023-11-24 17:39:37 +08:00
Ronald A. Richardson
313b6e63a8 added other extensions 2023-11-24 17:30:53 +08:00
Ronald A. Richardson
a7ed7ee935 resolved conflicts for merge 2023-11-24 17:25:37 +08:00
Ronald A. Richardson
1e28d9d8d8 Upgraded dependencies with patches and improvements for improved UX 2023-11-24 17:20:03 +08:00
Ron
0c31b54fde Merge pull request #159 from fleetbase/fix-deploy-workflow
Fix CD workflow
2023-11-22 16:40:41 +08:00
Ronald A. Richardson
f6b83e5638 upgraded to aws-actions/configure-aws-credentials@v4 2023-11-22 16:39:04 +08:00
Ronald A. Richardson
b30ee818fc added api/auth.json to gitignore 2023-11-22 16:34:30 +08:00
Ronald A. Richardson
6ec9ad59d3 few patches for flespi extension integration 2023-11-17 13:38:55 +08:00
Ron
10ff2e066b Merge pull request #156 from fleetbase/dev-v0.3.0
v0.3.0
2023-11-16 19:01:14 +08:00
Ronald A. Richardson
f56db88ad6 fleetops: fix filters, improve drawer component w/ state, several patches and upgrades 2023-11-16 18:49:17 +08:00
Ron
033cf5cfe0 Merge pull request #155 from fleetbase/dev-v0.2.9
v0.2.9
2023-11-09 17:21:56 +08:00
Ronald A. Richardson
4a4dc76e60 Added scheduler feature, scope/live map drawer feature, and bug fixes and dependency upgrades 2023-11-09 17:04:10 +08:00
Ron
a52af94b00 Merge pull request #154 from fleetbase/dev-v0.2.8
v0.2.8
2023-11-06 20:12:39 +08:00
Ronald A. Richardson
9c4daf7a68 fix dependencies 2023-11-06 19:55:42 +08:00
Ronald A. Richardson
a8904ba112 Full refactor of management section, upgrade of dependencies 2023-11-06 19:39:11 +08:00
Ronald A. Richardson
6880664d9e update packages to latest commits 2023-10-30 19:57:33 +08:00
Ron
99b30d7f58 Merge pull request #148 from fleetbase/feature-notifications
Feature notifications
2023-10-30 19:56:10 +08:00
Ronald A. Richardson
c8539fd2a0 merged with main 2023-10-30 19:41:23 +08:00
Ronald A. Richardson
cb1aec40fd ready for new release with notification tray and settings 2023-10-30 19:37:37 +08:00
Ronald A. Richardson
b728b366a0 patch notification settings in admin 2023-10-30 19:17:01 +08:00
Ronald A. Richardson
5cfc3f1cc7 add back package.json 2023-10-30 14:58:54 +08:00
Ronald A. Richardson
e7b5282aa3 updated notificaiton setting structure to be more robust 2023-10-30 14:53:19 +08:00
Ronald A. Richardson
7ffb7ac24a Latest updates, moved save buttons to subheader for easy access to save 2023-10-30 12:40:39 +08:00
Ron
6e4a9edd7d Merge pull request #146 from fleetbase/add-notification-settings
Add notification settings to Admin
2023-10-30 11:55:57 +08:00
Ron
d9d01c8bbc Merge branch 'feature-notifications' into add-notification-settings 2023-10-30 11:55:12 +08:00
Ronald A. Richardson
c54d75fa0f hotfix notification read event trigger 2023-10-27 17:50:35 +08:00
Ronald A. Richardson
91904c3836 Patches and improved styling for notification page 2023-10-27 17:35:31 +08:00
Ronald A. Richardson
0e075e3b24 dont check in dependency mgmt files 2023-10-27 15:24:58 +08:00
Ron
c56bea95d0 Merge pull request #140 from fleetbase/dev-v0.2.6
v0.2.6
2023-10-27 10:33:17 +08:00
Ronald A. Richardson
f1cec329bc add back environment files 2023-10-27 10:15:40 +08:00
Ronald A. Richardson
34dc365dd2 Preparing release with latest dependencies 2023-10-27 10:11:33 +08:00
TemuulenBM
74a782f4ea WIP: Notification Settings interface on Admin 2023-10-26 17:54:29 +08:00
TemuulenBM
a8b2042d85 Latest updates for notification tray and page 2023-10-26 11:32:54 +08:00
Temuulen Bayanmunkh
cc52a40660 Almost completed the notifications route, <NotificationTray /> component responds with notifications route changes 2023-10-24 17:58:52 +08:00
Temuulen Bayanmunkh
4fb2dec8c3 Added notification tray component 2023-10-20 18:06:43 +08:00
Ronald A. Richardson
0db3634ab3 checkin environments directory and update API_SECURE to be casted to boolean 2023-10-18 16:34:09 +08:00
Ronald A. Richardson
1c0d324ba9 Fix reset of branding settings 2023-10-14 13:48:21 +08:00
Ron
096cc1097a Merge pull request #139 from fleetbase/dev-v0.2.5
preparing for new release
2023-10-13 18:11:07 +08:00
Ronald A. Richardson
eca881156a add required lockfile back to console 2023-10-13 17:50:07 +08:00
Ronald A. Richardson
40b499bcb2 preparing for new release 2023-10-13 17:40:02 +08:00
Ron
c6e7dcae8b Merge pull request #136 from fleetbase/dev-v0.2.4
Migrating to monorepo for extensions
2023-10-10 21:38:38 +08:00
Ronald A. Richardson
4bba957123 remove old files 2023-10-10 21:26:16 +08:00
Ronald A. Richardson
33b6174247 should fix pipeline, using all latest versions for monorepo arch 2023-10-10 21:19:03 +08:00
Ronald A. Richardson
79d80184cd remove socket as submodule 2023-10-10 20:45:16 +08:00
Ronald A. Richardson
8c1f96ef0e console is no longer a submodule 🚀 2023-10-10 20:43:18 +08:00
Ronald A. Richardson
c139c00404 Migrating to monorepo for extensions 2023-10-10 20:41:14 +08:00
Ron
92032ca56c Merge pull request #135 from fleetbase/dev-v0.2.3
preparing release for 0.2.3
2023-10-06 16:42:24 +08:00
Ronald A. Richardson
c265c6fbda preparing release for 0.2.3 2023-10-06 16:41:24 +08:00
Ron
d8ae53d811 Merge pull request #132 from fleetbase/dev-v0.2.2
preparing for hotfix/critical release patches
2023-10-03 22:49:12 +08:00
Ronald A. Richardson
729e347a78 preparing for hotfix/critical release patches 2023-10-03 23:47:58 +09:00
Ron
3453ccffd4 Merge pull request #130 from fleetbase/dev-v0.2.1
preparing release with updated fleet ops ui/data and devices for tele…
2023-09-30 14:35:36 +08:00
Ronald A. Richardson
3d54ada328 latest ember-ui 2023-09-30 15:23:31 +09:00
Ronald A. Richardson
e9f6f875a1 latest console 2023-09-30 15:21:15 +09:00
Ronald A. Richardson
fa45669a6c preparing release with updated fleet ops ui/data and devices for telematics integrations 2023-09-30 15:15:42 +09:00
Ron
280ff14af0 Merge pull request #128 from fleetbase/dev-v0.2.0-critical
WIP but contains critical patches
2023-09-16 13:04:11 +08:00
Ronald A. Richardson
4ac088bc72 WIP but contains critical patches 2023-09-16 13:00:46 +08:00
Ron
a8eb55d68e Merge pull request #127 from ekini/fix/frontend_deployment 2023-09-16 09:22:36 +08:00
Eugene Dementyev
4a0a775429 Use a parametrized deployment bucket name if it's not defined 2023-09-16 10:14:42 +12:00
Ron
36e85548f2 Merge pull request #126 from ekini/fix/frontend_fix
Use the static deployment bucket from SSM
2023-09-15 16:42:18 +08:00
Eugene Dementyev
5b805b1e2f Use the static deployment bucket from SSM 2023-09-15 20:41:02 +12:00
Ron
b041b4d555 Merge pull request #124 from fleetbase/dev-v0.1.9
Patches branding configuration and user/company creation timestamp issue
2023-09-15 12:39:48 +08:00
Ronald A. Richardson
b30c101bea Patches branding configuration and user/company creation timestamp issue 2023-09-15 12:33:30 +08:00
Ron
e932cdd9c6 Merge pull request #122 from fleetbase/dev-v0.1.8
v0.1.8
2023-09-14 20:23:59 +08:00
Ronald A. Richardson
a7ff7094b6 v0.1.8 2023-09-14 20:17:34 +08:00
Ron
8514203b88 Merge pull request #117 from ekini/feature/log_output
Add run task log output on deployment
2023-09-08 10:55:19 +08:00
Eugene Dementyev
17c7759a47 Add run task log output on deployment 2023-09-06 21:18:11 +12:00
Ron
690c9d7486 Merge pull request #114 from fleetbase/feature-driver-simulation-api
Add driver simulation API, critical bugfixes, and a few new features
2023-08-25 20:21:45 +08:00
Ronald A. Richardson
6deeb9fd0a Several critical patches and a few new features 2023-08-25 20:15:30 +08:00
Ron
4dbe344bb5 Merge pull request #111 from fleetbase/dev-main
v0.1.6 Release
2023-08-18 15:07:48 +08:00
Ronald A. Richardson
216e6a9a18 Merged console submodule 2023-08-18 15:04:13 +08:00
Ronald A. Richardson
5855df6a5d preparing to release v0.1.6 2023-08-18 15:01:21 +08:00
Ronald A. Richardson
782c1aa706 remove fleetbase-db.mmd is wrong and outdated 2023-08-15 16:09:43 +08:00
Ron
32cca548c3 Merge pull request #109 from fleetbase/add-mermaid-diagram
Add mermaid diagram
2023-08-15 16:07:58 +08:00
Ronald A. Richardson
1761b45911 removed mermerd.yaml 2023-08-15 16:03:35 +08:00
Ronald A. Richardson
93ac555427 now use schemacrawler in conjunction to generate database.mmd as well as erd diagrams 2023-08-15 15:57:21 +08:00
Ronald A. Richardson
04b6a1f47e added mermerd cli config file, and the generated mmd for erd 2023-08-15 14:24:34 +08:00
Ron
843e9a21cc Merge pull request #108 from ekini/feature/gitlab
Add gitlab ci config
2023-08-14 18:13:01 +08:00
Eugene Dementyev
220b486c3d Add gitlab ci config 2023-08-14 22:10:12 +12:00
Ron
60690ec334 Merge pull request #107 from fleetbase/fix-docker-build-without-auth
fix application build without composer auth
2023-08-10 15:58:35 +08:00
Ronald A. Richardson
a71c3c46d8 use console main branch 2023-08-10 15:41:07 +08:00
Ronald A. Richardson
f956f853e1 fix application build without composer auth 2023-08-10 15:38:45 +08:00
Ronald A. Richardson
c2efb2ac4d forgot one package... 2023-08-10 14:20:47 +08:00
Ronald A. Richardson
bb0951feba Add more Config Tests + Sentry Integration + Upgrades for v0.1.6 2023-08-10 14:19:44 +08:00
Shiv Thakker
fca83a25e5 Update README.md 2023-08-10 10:17:46 +08:00
Ron
f0f3800d3c Merge pull request #103 from ekini/feature/docker_cache
Use docker layer cache
2023-08-08 15:15:29 +08:00
Eugene Dementyev
2edb3f66e1 Use docker layer cache 2023-08-08 19:10:36 +12:00
Ron
36b15f1544 Merge pull request #102 from fleetbase/dev-main
urgent hotfix
2023-08-06 23:58:13 +08:00
Ronald A. Richardson
60f8f33d5c urgent hotfix 2023-08-06 23:56:12 +08:00
Ron
6ed95b8cd7 Merge pull request #101 from fleetbase/dev-main
upgrade `fleetbase/core-api^1.2.2`
2023-08-06 23:16:30 +08:00
Ronald A. Richardson
079cfabeb5 upgrade fleetbase/core-api^1.2.2 2023-08-06 23:10:09 +08:00
Ron
d8d8063620 Merge pull request #100 from fleetbase/dev-main
Dev main
2023-08-06 17:10:18 +08:00
Ronald A. Richardson
46b3554fce upgrade fleetbase/core-api^1.2.1 2023-08-06 17:09:34 +08:00
Ronald A. Richardson
d604acebe4 use dev-main console 2023-08-06 14:44:42 +08:00
Ron
962f46d4e2 Merge pull request #97 from fleetbase/dev-main
Dev main
2023-08-06 14:36:57 +08:00
Ronald A. Richardson
664d7f19cd set docker-compose version to v3.8 2023-08-06 14:32:52 +08:00
Ronald A. Richardson
06dcb90499 upgraded fleetbase/core-api to v1.2.0 2023-08-06 14:32:20 +08:00
Ronald A. Richardson
6d0ac8496d Upgraded fleetbase/core-api - Prevent mergeConfigFromSettings() from overwriting ENV variables 2023-08-06 14:30:58 +08:00
Ronald A. Richardson
10f8e694fe published @fleetbase/fleetops-data to github registry 2023-08-04 10:24:35 +08:00
Ronald A. Richardson
8e68ed1aeb engines now publish to github npm registry 2023-08-04 10:15:38 +08:00
Ron
267184df5f Merge pull request #94 from fleetbase/dev-main
update console `.gitignore` to ignore `.npmrc`
2023-08-03 13:19:36 +08:00
Ronald A. Richardson
98d96a50ab update console .gitignore to ignore .npmrc 2023-08-03 13:18:21 +08:00
Ron
51f8e4d289 Merge pull request #92 from fleetbase/dev-main
new workflow which restricts pull request from any other branch excep…
2023-08-03 13:02:04 +08:00
Ronald A. Richardson
04b01c734d new workflow which restricts pull request from any other branch except dev-cloud and main 2023-08-03 13:01:03 +08:00
Ron
405e299f07 Merge pull request #91 from fleetbase/dev-main
use `AWS_BUCKET_ENDPOINT` for s3 filesystem
2023-08-03 12:50:28 +08:00
Ronald A. Richardson
aea4b781b8 use AWS_BUCKET_ENDPOINT for s3 filesystem 2023-08-03 12:45:32 +08:00
Ron
35e81f05cd Merge pull request #89 from fleetbase/builds-with-private-auth
test build with github auth token depn packages
2023-08-03 12:13:56 +08:00
Ronald A. Richardson
9d388892b1 supress cp error message if any 2023-08-03 12:06:55 +08:00
Ronald A. Richardson
becb39b447 should work 2023-08-03 12:05:36 +08:00
Ronald A. Richardson
f490a552c4 dont change owner if composer auth comes form mounted secret 2023-08-03 11:58:51 +08:00
Ronald A. Richardson
95381ba140 works with local auth file too now 2023-08-03 11:50:23 +08:00
Ronald A. Richardson
7b190d7718 fix lock file 2023-08-03 09:43:59 +08:00
Ronald A. Richardson
92c153cf93 work for local builds too 2023-08-02 21:22:38 +08:00
Ronald A. Richardson
ef662fbd5e remove MAIL_MAILER from environment on application 2023-08-02 21:04:25 +08:00
Ronald A. Richardson
a5d05de27c remove test composer.lock 2023-08-02 21:00:19 +08:00
Ronald A. Richardson
5a6f44aee5 seems to be working now, next will get console working 2023-08-02 20:59:22 +08:00
Ronald A. Richardson
60cbc41b36 last attempt before 😴 2023-08-02 20:50:02 +08:00
Ronald A. Richardson
81e3d8466d place /.composer/auth.json in the correct place 2023-08-02 20:44:21 +08:00
Ronald A. Richardson
4f9096a94a do install on one command 2023-08-02 20:37:52 +08:00
Ronald A. Richardson
122fcf80cb added for debugging purposes 2023-08-02 20:28:41 +08:00
Ronald A. Richardson
50b5f54a63 fix the docker-bake 2023-08-02 20:23:51 +08:00
Ronald A. Richardson
243032469d try the docker-bake method 2023-08-02 20:22:05 +08:00
Ronald A. Richardson
42d26a6d81 updated ci.yml 2023-08-02 20:11:05 +08:00
Ronald A. Richardson
e2b2097855 updated ci.yml 2023-08-02 20:09:33 +08:00
Ronald A. Richardson
dbcc2fe8ef updated ci.yml 2023-08-02 20:08:01 +08:00
Ronald A. Richardson
d34b845719 updated ci.yml 2023-08-02 20:02:20 +08:00
Ronald A. Richardson
a8e050b20c try dynamically setting secret using set 2023-08-02 20:00:07 +08:00
Ronald A. Richardson
9b68458114 try to set secret 1 dimension 2023-08-02 19:37:13 +08:00
Ronald A. Richardson
eb12313614 try as per docs 2023-08-02 19:31:48 +08:00
Ronald A. Richardson
68ee8be32c added some output for debug 2023-08-02 18:52:57 +08:00
Ronald A. Richardson
6f35a2b456 make ./composer directory owned by www-data 2023-08-02 18:46:11 +08:00
Ronald A. Richardson
4bdd25288a diable --no-cache flag on composer install so git driver can download from git 2023-08-02 18:39:18 +08:00
Ronald A. Richardson
5804f65ef6 try CI pipeline with private package 2023-08-02 18:32:21 +08:00
Ronald A. Richardson
4db3677b6d update CI to work with composer-auth 2023-08-02 18:25:19 +08:00
Ronald A. Richardson
475c03c077 lets see 2023-08-02 18:21:34 +08:00
Ronald A. Richardson
00b49a7c04 hope this fixex logging error 2023-08-02 18:05:04 +08:00
Ronald A. Richardson
768fa6fc27 retry using new LOG_CHANNEL for build 2023-08-02 17:57:09 +08:00
Ronald A. Richardson
ed72c2afdd take 3? 2023-08-02 17:41:28 +08:00
Ronald A. Richardson
3aa5e2f89e set LOG_CHANNEL to stderr during docker build 2023-08-02 12:23:24 +08:00
Ronald A. Richardson
2656c764a1 set permissions on log file 2023-08-02 12:15:18 +08:00
Ronald A. Richardson
c217d6dc44 test build with github auth token depn packages 2023-08-02 12:07:22 +08:00
Ronald A. Richardson
c68ec787c1 update workflow for dynamic use _GITHUB_AUTH_TOKEN to generate composer auth, and .npmrc for private repo access in builds 2023-08-01 21:20:25 +08:00
Ronald A. Richardson
22a2f2048e set correct default config options 2023-08-01 21:02:15 +08:00
Ronald A. Richardson
c53d360ef0 added stdout logging channel 2023-08-01 17:32:40 +08:00
Ronald A. Richardson
406ca11199 modified to setup composer auth for private packages/extensions in builds and deploy if arg provided 2023-08-01 17:08:44 +08:00
Ronald A. Richardson
9c604edcf5 build with redis-tools not redis-cli 2023-08-01 16:50:27 +08:00
Ronald A. Richardson
cb96b4112c fix Dockerfile so packages is copied to a packages dir 2023-08-01 16:27:13 +08:00
Ronald A. Richardson
a502e1f5f3 use ExceptionHandler from fleetbase/core-api package 2023-08-01 16:19:32 +08:00
Ronald A. Richardson
27e10a2b33 Critical patches on API, added consumable API routes and essential middlewares 2023-08-01 15:54:42 +08:00
Ronald A. Richardson
1c70b2f62c update Dockerfile so that /api and /packages directory are copied and not contents 2023-08-01 11:30:26 +08:00
Ronald A. Richardson
a8ba45fc73 Hotfix Utils::parseUrl for correctly parsing encoded urls 2023-07-31 20:29:46 +08:00
Ronald A. Richardson
f6a7edf6f4 patch deploy script, update core-api to v1.1.7 to use utf-8 aware url parser for db connections 2023-07-30 10:57:53 +08:00
Ronald A. Richardson
9889c4b4aa updated console 2023-07-28 10:47:38 +08:00
Ron
8bdababe5e Merge pull request #87 from ekini/feature/cd_tweak 2023-07-27 20:40:24 +08:00
Eugene Dementyev
a3184b3c6e Fix the quotes 2023-07-28 00:38:59 +12:00
Ron
1de56e08fa Merge pull request #86 from ekini/feature/cd_tweak 2023-07-27 20:04:28 +08:00
Eugene Dementyev
475b7ddda0 Fail when unable to get parameters 2023-07-28 00:00:27 +12:00
Ron
f9ba04198c Merge pull request #85 from ekini/feature/cd_tweak
Parametrise some variables
2023-07-27 19:37:51 +08:00
Eugene Dementyev
e8fce1b1fc Parametrise some variables 2023-07-27 23:31:44 +12:00
Ron
174dd83542 Merge pull request #84 from ekini/fix/cd
Fix the deploy bucket name
2023-07-27 14:02:04 +08:00
Eugene Dementyev
629d8bdd26 Fix the deploy bucket name 2023-07-27 18:00:21 +12:00
Ronald A. Richardson
045bcc1648 fix Deploy Console 🚀 step 2023-07-27 10:35:58 +08:00
Ronald A. Richardson
a0e9a912f6 updated github workflows for deploy added Set Dynamic ENV Vars step for console deploy 2023-07-27 10:05:13 +08:00
Ron
cbed2de0d5 Merge pull request #83 from fleetbase/fix-deploy-sh-permissions
fix `deploy.sh` permissions
2023-07-27 09:12:57 +08:00
Ronald A. Richardson
557666252b fix deploy.sh permissions 2023-07-27 09:12:00 +08:00
Ronald A. Richardson
7cf544bd30 update cd.yml workflow to use pnpm build 2023-07-25 22:49:06 +08:00
Ronald A. Richardson
5bf9e691aa renamed after-deploy.sh -> deploy.sh 2023-07-25 22:41:11 +08:00
Ron
011f658086 Merge pull request #82 from ekini/fix/deploy_script_name 2023-07-25 17:10:34 +08:00
Eugene Dementyev
08b50cbfc1 Fix deploy script name 2023-07-25 21:09:17 +12:00
Ron
6c0888ffae Merge pull request #80 from ekini/feature/deploy_console 2023-07-25 17:07:18 +08:00
Eugene Dementyev
de4b088c31 Add deployment of console 2023-07-25 21:02:18 +12:00
Ronald A. Richardson
1e5ea0e2fa Started on Pallet - the Fleetbase inventory management extension, added after-deploy.sh script to api 2023-07-25 14:48:44 +08:00
Ron
0f8f7bb423 Merge pull request #79 from ekini/feature/deploy
feature/deploy
2023-07-24 20:58:40 +08:00
Eugene Dementyev
1b4993cb93 Push to ECR and deploy 2023-07-25 00:06:50 +12:00
Eugene Dementyev
2d905e50c9 always build on main and tags and PRs 2023-07-24 22:23:14 +12:00
Ron
98b9afd151 Merge pull request #78 from fleetbase/dev-main
includes small update to retain mysql data locally, also includes upd…
2023-07-24 18:07:18 +08:00
Ronald A. Richardson
03e6a87696 includes small update to retain mysql data locally, also includes update script 2023-07-24 18:05:06 +08:00
Ronald A. Richardson
947746e4f1 Ready to release v0.1.5 and updated .gitignore - releasing UniverseService 2023-07-23 19:01:10 +08:00
Ronald A. Richardson
d819516a17 updated composer.lock and packages 2023-07-23 18:56:08 +08:00
Ronald A. Richardson
3a34ff1627 updated .gitignore and removed /examples directory 2023-07-23 18:22:39 +08:00
Ron
cb53cb7270 Merge pull request #76 from fleetbase/feature-universe-powered-extensions
Feature universe powered extensions
2023-07-23 18:08:39 +08:00
Ronald A. Richardson
f75efa6c07 merge ready 2023-07-23 18:07:03 +08:00
Ronald A. Richardson
90b1987ade latest docker-compose.yml 2023-07-23 18:02:33 +08:00
Ronald A. Richardson
bc854c5d6c mergeable 2023-07-23 18:01:31 +08:00
Ronald A. Richardson
b467f30d69 universe powered releases! 2023-07-23 17:57:16 +08:00
Ronald A. Richardson
74ed29ad8c wip 2023-07-17 18:49:12 +08:00
Ronald A. Richardson
04125ebfb3 fix the Dockerfile 2023-07-16 13:54:30 +08:00
Ronald A. Richardson
05746fccd0 wip 2023-07-16 13:53:25 +08:00
Ron
c90df0218e Merge pull request #73 from fleetbase/use-httpd-container-for-dev
Use httpd container for dev
2023-07-16 13:37:41 +08:00
Ronald A. Richardson
03bbae856a reverted back to useing httpd container via docker-compose for development, use volume mount for uploads, upgraded core-api to patch seed, removed nginx.conf and startup.sh as no longer needed 2023-07-16 13:34:28 +08:00
Ronald A. Richardson
71d27375c6 wip for new extensions system 2023-07-16 13:02:56 +08:00
Ron
75a1a1b389 Merge pull request #72 from ekini/fix/app_dockerfile 2023-07-15 20:19:11 +08:00
Eugene Dementyev
fc5a5df5c7 Use the external httpd container 2023-07-16 00:17:06 +12:00
Ron
3dfa7a4076 Merge pull request #71 from ekini/feature/parametrise_nginx 2023-07-15 19:53:35 +08:00
Eugene Dementyev
45387cb360 Parametrise nginx app hostname 2023-07-15 23:51:56 +12:00
Ron
6425180c40 Merge pull request #70 from ekini/feature/build_other_images 2023-07-15 19:41:19 +08:00
Eugene Dementyev
98f3a2ceba Use Socketcluster official images 2023-07-15 23:13:22 +12:00
Ron
275b1bcab8 Merge pull request #69 from ekini/feature/build_other_images 2023-07-15 19:01:33 +08:00
Eugene Dementyev
e61ace5bcb Build app-httpd and socketcluster images 2023-07-15 23:00:05 +12:00
Ron
b5d6ba2114 Merge pull request #68 from ekini/feature/remove_jobs 2023-07-15 18:43:48 +08:00
Eugene Dementyev
7b62ff9d50 Remove jobs from the Dockerfile as it's not used.
Change the events queue name to "sqs"
2023-07-15 22:41:59 +12:00
Ron
b601136754 Merge pull request #66 from ekini/feature/docker_edge_tag
Use Docker edge tag for commits in main, even untagged
2023-07-14 18:42:06 +08:00
Ronald A. Richardson
b1da01d4f6 added extensions example 2023-07-14 18:41:09 +08:00
Eugene Dementyev
80b43ffa72 Use Docker edge tag for commits in main, even untagged 2023-07-14 22:33:36 +12:00
Ron
c1545dbd14 Merge pull request #65 from ekini/fix/move_ssm_parent_config 2023-07-13 19:53:39 +08:00
Eugene Dementyev
452f8c4bd5 Moves ssm-parent config to the right location 2023-07-13 23:29:06 +12:00
Ron
4de6ea1e30 Merge pull request #64 from fleetbase/dev-main
Patched order creation, core components, and upgraded dependencies
2023-07-10 20:57:48 +08:00
Ronald A. Richardson
de374069dd Patched order creation, core components, and upgraded dependencies 2023-07-10 20:56:10 +08:00
Ron
dd5accecef Merge pull request #63 from ekini/feature/action_builds
Feature/action builds
2023-07-07 19:55:44 +08:00
Eugene Dementyev
cae2774632 Only run build and release from tags 2023-07-07 22:34:17 +12:00
Eugene Dementyev
b399d0092c Release packages with docker bake 2023-07-07 22:21:07 +12:00
Ron
b056a07fa2 Update README.md 2023-07-07 12:24:37 +08:00
Ron
90a590e156 Merge pull request #61 from fleetbase/dev-main
Added IAM Extension + Important bug fixes
2023-07-06 22:29:01 +08:00
Ronald A. Richardson
bcb1470138 Added IAM Extension + Important bug fixes 2023-07-06 22:15:20 +08:00
Eugene Dementyev
9cba77709f Simplify installation of ssm-parent and update version 2023-07-04 19:17:34 +12:00
Ron
0cab9b816b Merge pull request #59 from fleetbase/dev-main
updated github workflow for a discord announcement
2023-06-30 13:04:55 +08:00
Ronald A. Richardson
a5892a1cc4 updated github workflow for a discord announcement 2023-06-30 13:04:34 +08:00
Ron
ba6cdd9db3 Merge pull request #58 from fleetbase/dev-main
Added Branding Settings to Admin section
2023-06-30 11:38:10 +08:00
Ronald A. Richardson
80c621d020 Added Branding Settings to Admin section 2023-06-30 11:36:14 +08:00
Ron
915293d9b1 Update README.md 2023-06-30 10:47:25 +08:00
Ron
fe41262c89 Update README.md 2023-06-20 18:42:35 +08:00
Ron
5cc39304e0 Update README.md 2023-06-20 15:12:22 +08:00
Ron
b7d87c5ad7 Update README.md 2023-06-20 10:20:48 +08:00
Ron
fa9a43ae49 Merge pull request #55 from fleetbase/dev-main
Updated FleetOps api/engine for critical patches and improvements
2023-06-19 17:46:39 +08:00
Ronald A. Richardson
21bccc1499 Updated FleetOps api/engine for critical patches and improvements 2023-06-19 16:29:56 +07:00
Ron
ef5464aede Merge pull request #54 from fleetbase/dev-main
- Uses initializer from `@fleetbase/ember-core` to globally load `soc…
2023-06-16 14:53:28 +08:00
Ronald A. Richardson
ddd3d05f09 exclude socketcluster-client from fingerprint 2023-06-16 14:46:07 +08:00
Ronald A. Richardson
039033da47 added back load-socketcluster-client initializer 2023-06-16 14:36:54 +08:00
Ronald A. Richardson
3077b6df8c - Uses initializer from @fleetbase/ember-core to globally load socketcluster-client, now packages do not need to include as dependency\n- Upgraded @fleetbase/leaflet-routing-machine to v3.2.16 which introduces option to provide markerOptions to customize waypoint markers\n- Patched FleetOps extension so that waypoint map markers load 2023-06-16 14:12:34 +08:00
Ron
25601cee70 Update README.md 2023-06-15 17:39:34 +08:00
Ron
3ebc6d11cc Update README.md 2023-06-15 17:38:18 +08:00
Ron
27f1b26684 Merge pull request #44 from fleetbase/dev-main
v0.0.9
2023-06-14 19:40:28 +08:00
Ronald A. Richardson
b231a24edc bumped console to v0.1.1 2023-06-14 19:27:22 +08:00
Ronald A. Richardson
b3f87fc078 patch socketcluster-client resolve issue among packages and extensions on production build 2023-06-14 18:50:04 +08:00
Ronald A. Richardson
bb6c6cf9d5 Upgrade to all package dependencies, includes essential patches and hotfixes, added Extensions placeholder 2023-06-14 16:44:50 +08:00
Ron
3adc943450 Merge pull request #43 from fleetbase/dev-main
Update console with new Dashboard, Added Changelog, Added new `Socket…
2023-06-14 00:10:18 +08:00
Ronald A. Richardson
e8bc17c5b9 Update console with new Dashboard, Added Changelog, Added new SocketService for handling socket connections and listening, fleetbase-extensions-indexer now extracts custom fleetbase key from extension packages, <Layout::Sidebar /> is now collapsible, <Layout::Header /> can now accept custom nav items from argument, Patched <ModelSelect /> component to properly accept and handle customSearchEndpoint arg 2023-06-13 23:57:34 +08:00
Ron
2a8c5cb130 Merge pull request #42 from fleetbase/dev-main
updated Dockerfile to handle permission issues and patch composer ins…
2023-06-11 12:22:01 +08:00
Ronald A. Richardson
9b938e84c5 updated nginx config for timeout and logging 2023-06-11 12:15:05 +08:00
Ronald A. Richardson
672ac85d7d updated docker-compose.yml 2023-06-11 11:55:03 +08:00
Ronald A. Richardson
9decae6e26 set target as app-dev for application 2023-06-11 11:33:11 +08:00
Ronald A. Richardson
6d4d037d2f removed all shared volumes from docker environment - only use for dev, drop httpd container 2023-06-11 11:01:36 +08:00
Ronald A. Richardson
3969473b99 updated Dockerfile to handle permission issues and patch composer install and dump, as well as dependency updates for api 2023-06-09 16:08:38 +08:00
Ron
8212eceb50 Merge pull request #41 from fleetbase/dev-main
updated api to use `fleetbase/core-api#v1.0.6-alpha`
2023-06-09 12:40:26 +08:00
Ronald A. Richardson
cb23dda979 updated api to use fleetbase/core-api#v1.0.6-alpha 2023-06-09 12:39:23 +08:00
Shiv Thakker
4ffc2c750e Update README.md 2023-06-09 12:11:36 +08:00
Ron
b55f37ffdf Merge pull request #40 from fleetbase/dev-main
updated `fleetbase/core-api` to v1.0.5-alpha to add server IP as CORS…
2023-06-09 12:09:48 +08:00
Ronald A. Richardson
8a2ce65763 updated fleetbase/core-api to v1.0.5-alpha to add server IP as CORS origin 2023-06-09 12:08:50 +08:00
Ron
f60e72e96d Merge pull request #39 from fleetbase/dev-main
updated console to v0.0.7 which includes `window.crypto.randomUUID` p…
2023-06-09 11:23:01 +08:00
Ronald A. Richardson
b4c4012557 updated console to v0.0.7 which includes window.crypto.randomUUID polyfill patch 2023-06-09 11:22:09 +08:00
Shiv Thakker
d46d22e6cc Update README.md 2023-06-09 09:52:47 +08:00
Ron
190394e853 Merge pull request #38 from fleetbase/dev-main
Admin System Configuration v1 ready
2023-06-08 18:44:35 +08:00
Ronald A. Richardson
8683f1b0ca Admin System Configuration v1 ready 2023-06-08 18:43:34 +08:00
Ron
96dfd6e48a Merge pull request #37 from fleetbase/dev-main
bump console to v0.0.5 for firefox patches
2023-06-07 21:25:54 +08:00
Ronald A. Richardson
80774383bc bump console to v0.0.5 for firefox patches 2023-06-07 21:22:08 +08:00
Ron
07606b8d15 Merge pull request #36 from fleetbase/dev-main
patch Dockerfile
2023-06-07 19:16:30 +08:00
Ronald A. Richardson
acf3c66c9f patch Dockerfile 2023-06-07 19:15:37 +08:00
Ron
1d75130724 Merge pull request #35 from fleetbase/dev-main
patched Dockerfile, console updated to v0.0.4 with all latest depende…
2023-06-07 18:37:38 +08:00
Ron
1bb3569518 Merge pull request #34 from fleetbase/dev-main
console now builds for production
2023-06-06 15:22:00 +08:00
Ron
f974b07000 Merge pull request #33 from fleetbase/dev-main
oops, dont use local dir for api depn
2023-06-05 12:29:16 +08:00
Ron
fdcd526f7b Merge pull request #32 from fleetbase/dev-main
update core-api to v1.0.3-alpha
2023-06-05 12:25:26 +08:00
Ron
fb93443aff Merge pull request #31 from fleetbase/dev-main
now uses installer, dropped entrypoint scripts
2023-05-30 17:50:25 +08:00
Ron
3c122d6897 Merge pull request #29 from fleetbase/shivthakker-patch-12
Update README.md
2023-05-30 16:39:21 +08:00
Ron
d73a381141 Merge pull request #28 from fleetbase/shivthakker-patch-11
Create PULL_REQUEST_TEMPLATE.md
2023-05-30 16:38:39 +08:00
Ron
8b23afc08a Merge pull request #27 from fleetbase/shivthakker-patch-10
Create SECURITY.md
2023-05-30 16:38:18 +08:00
Ron
32b9db4da9 Merge pull request #26 from fleetbase/shivthakker-patch-9
Create LICENSE
2023-05-30 16:37:58 +08:00
Ron
dd95ab14d4 Merge pull request #25 from fleetbase/shivthakker-patch-8
Create CODE_OF_CONDUCT.md
2023-05-30 16:37:33 +08:00
Ron
46ea479102 Merge pull request #30 from fleetbase/dev-main
Added installer flow
2023-05-30 16:37:07 +08:00
Shiv Thakker
ed5fe522fe Update README.md
made introductions more concise
2023-05-30 15:43:38 +08:00
Shiv Thakker
68ce0167e3 Create PULL_REQUEST_TEMPLATE.md
added pull request template
2023-05-30 15:39:04 +08:00
Shiv Thakker
554c5cdbea Create SECURITY.md
added security file
2023-05-30 15:36:54 +08:00
Shiv Thakker
95df545e62 Create LICENSE
added MIT License
2023-05-30 15:33:08 +08:00
Shiv Thakker
d55edb73eb Create CODE_OF_CONDUCT.md
added code of conduct template
2023-05-30 15:31:31 +08:00
Ron
2578a5302f Merge pull request #24 from fleetbase/dev-main
remove publish job from ci
2023-05-29 15:17:09 +08:00
Ron
827040336c Merge pull request #23 from fleetbase/dev-main
updated github ci workflow to publish to dockerhub
2023-05-29 14:58:50 +08:00
Ron
c919b13943 Merge pull request #22 from fleetbase/roncodes-patch-3
Update README.md
2023-05-29 12:25:01 +08:00
Ron
afac4c7788 Update README.md
Added internationalize to the roadmap
2023-05-29 12:24:53 +08:00
Ron
d1dee5789e Update README.md
Include Roadmap link in Table of Contents
2023-05-26 16:18:46 +08:00
Ron
797de1d38c Merge pull request #21 from fleetbase/roncodes-patch-2
Update README.md
2023-05-26 16:14:32 +08:00
Ron
10dcc4bab8 Update README.md
Added link to Cloud API Status
2023-05-26 16:14:22 +08:00
Ron
59aab8c9cc Merge pull request #20 from fleetbase/roncodes-patch-1
Update README.md
2023-05-26 16:08:33 +08:00
Ron
c7707d6c8e Update README.md 2023-05-26 16:08:24 +08:00
Ron
9809ebe28e Merge pull request #19 from fleetbase/dev-main
API dependencies updated to the latest versions
2023-05-26 12:52:38 +08:00
Ron
5dbce3edfd Merge pull request #18 from fleetbase/dev-main
latest
2023-05-25 21:09:40 +08:00
Ron
61bedf737b Merge pull request #16 from fleetbase/dev-main
move ci to workflows dir
2023-05-25 21:08:16 +08:00
Ron
49b8858cad Merge pull request #17 from fleetbase/readme-update-7
Update README.md
2023-05-25 20:40:46 +08:00
Ron
7c698ee8c9 Update README.md
Added submodule initialization step
2023-05-25 20:40:36 +08:00
Ron
38679fcd07 Merge pull request #14 from fleetbase/shivthakker-patch-7
Update README.md
2023-05-25 20:30:33 +08:00
Ron
6fcee898d8 Merge pull request #15 from fleetbase/dev-main
Added Github CI workflow
2023-05-25 20:30:19 +08:00
Ron
c9920cceb6 Merge pull request #13 from fleetbase/shivthakker-patch-6
Update CONTRIBUTING.md
2023-05-25 20:30:08 +08:00
Shiv Thakker
2b98d488fc Update README.md
updated links
2023-05-25 18:47:23 +08:00
Shiv Thakker
59f4188465 Update CONTRIBUTING.md
updated issues link
2023-05-25 18:30:46 +08:00
Ron
ad8adbf1c3 Merge pull request #12 from fleetbase/shivthakker-patch-5
Create CONTRIBUTING.md
2023-05-25 18:18:59 +08:00
Shiv Thakker
4439c75158 Create CONTRIBUTING.md 2023-05-25 17:30:47 +08:00
Shiv Thakker
26345ab075 Update issue templates - docs 2023-05-25 16:48:09 +08:00
Shiv Thakker
a0cee3444b Update issue templates 2023-05-25 16:28:23 +08:00
Shiv Thakker
b0abd6129f Update issue templates 2023-05-25 16:23:14 +08:00
667 changed files with 82340 additions and 5615 deletions

View File

@@ -14,6 +14,7 @@ concourse/
infra/*
vagrant/*
docker/Dockerfile
docker/database/
deploy/*
media/*
data/*
@@ -23,4 +24,4 @@ docker-compose-prod.yml
docker-compose.yml
$virtualenv.tar.gz
$node_modules.tar.gz
docker-compose.override.yml
docker-compose.override.yml

3
.github/FUNDING.yml vendored Normal file
View File

@@ -0,0 +1,3 @@
# These are supported funding model platforms
github: fleetbase

10
.github/ISSUE_TEMPLATE/custom.md vendored Normal file
View File

@@ -0,0 +1,10 @@
---
name: Custom issue template
about: Describe this issue template's purpose here.
title: ''
labels: ''
assignees: ''
---

View File

@@ -0,0 +1,17 @@
---
name: "\U0001F4DA Docs Feedback"
about: Improve Fleetbase Documentation
title: ''
labels: ''
assignees: ''
---
**Describe the improvement**
A clear and concise description of documentation improvement .
**Related Page**
Which section and page is this improvement related to? .
**Additional context**
Add any other context about the improvement here.

View File

@@ -0,0 +1,20 @@
---
name: "\U0001F680 Feature request"
about: Submit a proposal for a new feature
title: ''
labels: ''
assignees: ''
---
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
**Additional context**
Add any other context or screenshots about the feature request here.

View File

@@ -0,0 +1,41 @@
---
name: "\U0001FAB2Bug Report"
about: Report a bug to help us improve.
title: ''
labels: ''
assignees: ''
---
**Describe the bug**
A clear and concise description of what the bug is.
**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
**Expected behavior**
A clear and concise description of what you expected to happen.
**Screenshots**
If applicable, add screenshots to help explain your problem.
**Logs (if relevant)**
Any log relevant log messages or snippets
**Desktop (please complete the following information):**
- OS: [e.g. iOS]
- Browser [e.g. chrome, safari]
- Version [e.g. 22]
**Smartphone (please complete the following information):**
- Device: [e.g. iPhone6]
- OS: [e.g. iOS8.1]
- Browser [e.g. stock browser, safari]
- Version [e.g. 22]
**Additional context**
Add any other context about the problem here.

64
.github/workflows/build-binaries.yml vendored Normal file
View File

@@ -0,0 +1,64 @@
name: Build Fleetbase Binaries
on:
workflow_dispatch:
workflow_run:
workflows: ["Create Release"]
types: [completed]
permissions:
contents: write
env:
DIST_DIR: builds/dist
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
jobs:
build-linux:
name: Linux Build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Build Linux binary
run: |
chmod +x ./builds/linux/build-linux.sh
./builds/linux/build-linux.sh
- name: Upload Linux binary
if: github.event_name == 'workflow_run'
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ github.event.workflow_run.head_branch }}
files: |
${{ env.DIST_DIR }}/fleetbase-linux-x86_64
draft: false
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
build-macos:
name: macOS (ARM64) Build
needs: build-linux
runs-on: macos-latest
steps:
- uses: actions/checkout@v3
- name: Install build dependencies
run: |
brew update
brew install autoconf automake coreutils asdf php@8.4
source "$(brew --prefix asdf)/libexec/asdf.sh"
asdf plugin add php https://github.com/asdf-community/asdf-php.git
- name: Build macOS binary
run: |
chmod +x ./builds/osx/build-osx.sh
./builds/osx/build-osx.sh
- name: Upload Linux binary
if: github.event_name == 'workflow_run'
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ github.event.workflow_run.head_branch }}
files: |
${{ env.DIST_DIR }}/fleetbase-darwin-arm64
draft: false
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

236
.github/workflows/cd.yml vendored Normal file
View File

@@ -0,0 +1,236 @@
name: Fleetbase CI/CD
on:
push:
branches: ["deploy/*"]
concurrency:
group: ${{ github.ref }}
cancel-in-progress: true
env:
PROJECT: ${{ secrets.PROJECT }}
GITHUB_AUTH_KEY: ${{ secrets._GITHUB_AUTH_TOKEN }}
jobs:
build_service:
name: Build and Deploy the Service
runs-on: ubuntu-latest
permissions:
id-token: write # This is required for requesting the JWT
contents: read # This is required for actions/checkout
steps:
- name: Checkout Code
uses: actions/checkout@v3
with:
submodules: recursive
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Set Dynamic ENV Vars
run: |
SHORT_COMMIT=$(echo $GITHUB_SHA | cut -c -8)
echo "VERSION=${SHORT_COMMIT}" >> $GITHUB_ENV
echo "STACK=$(basename $GITHUB_REF)" >> $GITHUB_ENV
- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@v4
with:
role-to-assume: arn:aws:iam::${{ secrets.AWS_ACCOUNT_NUMBER }}:role/${{ env.PROJECT }}-${{ env.STACK }}-deployer
role-session-name: github
aws-region: ${{ secrets.AWS_REGION }}
- name: Login to Amazon ECR
id: login-ecr
uses: aws-actions/amazon-ecr-login@v1
- name: Build and Release
uses: docker/bake-action@v2
env:
REGISTRY: ${{ steps.login-ecr.outputs.registry }}/${{ env.PROJECT }}-${{ env.STACK }}
VERSION: ${{ env.VERSION }}
GITHUB_AUTH_KEY: ${{ env.GITHUB_AUTH_KEY }}
CACHE: type=gha
with:
push: true
files: |
./docker-bake.hcl
- name: Resolve ECS Targets
run: |
set -euo pipefail
# Detect naming scheme by checking if new cluster exists
NEW_CLUSTER="${PROJECT}-${STACK}-cluster"
if aws ecs describe-clusters --region "${AWS_REGION}" --clusters "${NEW_CLUSTER}" \
--query "clusters[?status=='ACTIVE'].clusterArn" --output text 2>/dev/null | grep -q .; then
# New scheme: use cluster suffix and service prefixes
CLUSTER="${NEW_CLUSTER}"
SERVICE_PREFIX="${PROJECT}-${STACK}-"
SERVICE_BASE="api"
else
# Legacy scheme: no suffixes/prefixes
CLUSTER="${PROJECT}-${STACK}"
SERVICE_PREFIX=""
SERVICE_BASE="app"
fi
# Build service names
API_SERVICE="${SERVICE_PREFIX}${SERVICE_BASE}"
SCHEDULER_SERVICE="${SERVICE_PREFIX}scheduler"
EVENTS_SERVICE="${SERVICE_PREFIX}events"
TASK_DEF="${PROJECT}-${STACK}-${SERVICE_BASE}"
# Get container name from task definition
CONTAINER_NAME="$(aws ecs describe-task-definition --task-definition "$TASK_DEF" \
--query 'taskDefinition.containerDefinitions[0].name' --output text 2>/dev/null || echo "$SERVICE_BASE")"
{
echo "CLUSTER=$CLUSTER"
echo "API_SERVICE=$API_SERVICE"
echo "SCHEDULER_SERVICE=$SCHEDULER_SERVICE"
echo "EVENTS_SERVICE=$EVENTS_SERVICE"
echo "TASK_DEF=$TASK_DEF"
echo "CONTAINER_NAME=$CONTAINER_NAME"
} >> "$GITHUB_ENV"
- name: Download ecs-tool
run: |
wget -O ecs-tool.tar.gz https://github.com/springload/ecs-tool/releases/download/1.9.6/ecs-tool_1.9.6_linux_amd64.tar.gz && tar -xvf ecs-tool.tar.gz ecs-tool
- name: Deploy the images 🚀
run: |-
set -eu
# Run deploy.sh script before deployments
env "ECS_RUN.SERVICE=${API_SERVICE}" "ECS_RUN.LAUNCH_TYPE=FARGATE" \
./ecs-tool run -l "ecs-tool" \
--image_tag '{container_name}-${{ env.VERSION }}' \
--cluster "${CLUSTER}" \
--task_definition "${TASK_DEF}" \
--container_name "${CONTAINER_NAME}" \
./deploy.sh
# Deploy services
./ecs-tool deploy \
--image_tag '{container_name}-${{ env.VERSION }}' \
--cluster "${CLUSTER}" \
-s "${API_SERVICE}" -s "${SCHEDULER_SERVICE}" -s "${EVENTS_SERVICE}"
build_frontend:
name: Build and Deploy the Console
needs: [build_service]
runs-on: ubuntu-latest
permissions:
id-token: write # This is required for requesting the JWT
contents: read # This is required for actions/checkout
steps:
- name: Checkout
uses: actions/checkout@v3
with:
submodules: true
- name: Set Dynamic ENV Vars
run: |
SHORT_COMMIT=$(echo $GITHUB_SHA | cut -c -8)
echo "VERSION=${SHORT_COMMIT}" >> $GITHUB_ENV
echo "STACK=$(basename $GITHUB_REF)" >> $GITHUB_ENV
- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@v2
with:
role-to-assume: arn:aws:iam::${{ secrets.AWS_ACCOUNT_NUMBER }}:role/${{ env.PROJECT }}-${{ env.STACK }}-deployer
role-session-name: github
aws-region: ${{ secrets.AWS_REGION }}
- name: Get infra-provided configuration
run: |
set -eu
wget -O- https://github.com/springload/ssm-parent/releases/download/1.8.0/ssm-parent_1.8.0_linux_amd64.tar.gz | tar xvzf - ssm-parent
./ssm-parent -n /actions/${{ env.PROJECT }}/${{ env.STACK }}/configuration dotenv /tmp/dotenv.file
# remove double quotes and pipe into the env
cat /tmp/dotenv.file | sed -e 's/"//g' >> $GITHUB_ENV
- name: Install Node.js
uses: actions/setup-node@v3
with:
node-version: 18
- uses: pnpm/action-setup@v4
name: Install pnpm
id: pnpm-install
with:
version: 9.5.0
run_install: false
- name: Get pnpm Store Directory
id: pnpm-cache
shell: bash
run: |
echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT
- uses: actions/cache@v3
name: Setup pnpm Cache
with:
path: ${{ steps.pnpm-cache.outputs.STORE_PATH }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
- name: Create and Setup .npmrc
run: |
if [[ -n "${{ secrets._GITHUB_AUTH_TOKEN }}" ]]; then
echo "//npm.pkg.github.com/:_authToken=${{ secrets._GITHUB_AUTH_TOKEN }}" > .npmrc
fi
if [[ -n "${{ secrets.FLEETBASE_REGISTRY_TOKEN }}" ]]; then
echo "//registry.fleetbase.io/:_authToken=${{ secrets.FLEETBASE_REGISTRY_TOKEN }}" >> .npmrc
echo "@fleetbase:registry=https://registry.fleetbase.io" >> .npmrc
fi
working-directory: ./console
- name: Set Env Variables for QA
if: startsWith(github.ref, 'refs/heads/deploy/qa')
run: |
echo "STRIPE_KEY=${{ secrets.STRIPE_TEST_KEY }}" >> ./environments/.env.production
echo "LOGROCKET_APP_ID=${{ secrets.LOGROCKET_APP_ID }}" >> ./environments/.env.production
echo "EXTENSIONS=@fleetbase/billing-engine,@fleetbase/internals-engine,@fleetbase/aws-marketplace" >> ./environments/.env.production
working-directory: ./console
- name: Set Env Variables for Production
if: startsWith(github.ref, 'refs/heads/deploy/production')
run: |
echo "STRIPE_KEY=${{ secrets.STRIPE_KEY }}" >> ./environments/.env.production
echo "LOGROCKET_APP_ID=${{ secrets.LOGROCKET_APP_ID }}" >> ./environments/.env.production
echo "EXTENSIONS=@fleetbase/billing-engine,@fleetbase/internals-engine,@fleetbase/aws-marketplace" >> ./environments/.env.production
echo "DISABLE_RUNTIME_CONFIG=true" >> ./environments/.env.production
working-directory: ./console
- name: Install dependencies
run: pnpm install
working-directory: ./console
- name: Build
run: |
set -eu
pnpm build --environment production
working-directory: ./console
- name: Deploy Console 🚀
run: |
set -u
DEPLOY_BUCKET=${STATIC_DEPLOY_BUCKET:-${{ env.PROJECT }}-${{ env.STACK }}}
NEW_BUCKET="${PROJECT}-${STACK}-console"
if aws s3api head-bucket --bucket "$NEW_BUCKET" 2>/dev/null; then
DEPLOY_BUCKET="$NEW_BUCKET"
fi
# this value will come from the dotenv above
echo "Deploying to $DEPLOY_BUCKET"
wget -O- https://github.com/bep/s3deploy/releases/download/v2.11.0/s3deploy_2.11.0_linux-amd64.tar.gz | tar xzv -f - s3deploy
./s3deploy -region ${AWS_REGION} -source console/dist -bucket ${DEPLOY_BUCKET}

View File

@@ -15,16 +15,23 @@ jobs:
steps:
- name: Checkout Code
uses: actions/checkout@v2
uses: actions/checkout@v3
with:
submodules: recursive
- name: Install Docker Compose
run: |
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose --version
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Build and Start Docker Services
- name: Prepare Composer Auth Secret
run: |
docker-compose up -d --build
if [[ -n "${{ secrets._GITHUB_AUTH_TOKEN }}" ]]; then
echo '{"github-oauth": {"github.com": "'${{ secrets._GITHUB_AUTH_TOKEN }}'"}}' > composer-auth.json
else
echo '{}' > composer-auth.json
fi
- name: Build and Release
uses: docker/bake-action@v2
with:
files: |
./docker-bake.hcl

18
.github/workflows/cloud.yml vendored Normal file
View File

@@ -0,0 +1,18 @@
name: "Close Invalid PRs"
on:
pull_request:
branches:
- cloud
jobs:
close_pr:
runs-on: ubuntu-latest
steps:
- name: Close invalid PRs
run: |
if [[ "${{ github.event.pull_request.head.ref }}" != "main" ]] && [[ "${{ github.event.pull_request.head.ref }}" != "dev-cloud" ]]; then
echo "This PR is from '${{ github.event.pull_request.head.ref }}', but only PRs from 'main' or 'dev-cloud' are allowed. Closing PR."
gh pr close ${{ github.event.pull_request.number }} --repo ${{ github.repository }}
fi
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

21
.github/workflows/create-release.yml vendored Normal file
View File

@@ -0,0 +1,21 @@
name: Create Release
on:
push:
tags:
- 'v*'
jobs:
create:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Publish GitHub Release
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ github.ref_name }}
name: ${{ github.ref_name }}
body_path: RELEASE.md
draft: false
prerelease: false
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

View File

@@ -0,0 +1,61 @@
name: Discord Announcement
on:
workflow_run:
workflows: ["Create Release"]
types: [completed]
workflow_dispatch:
inputs:
tag:
description: "Release tag to announce (e.g. v0.7.1)"
required: true
jobs:
discord_announcement:
runs-on: ubuntu-latest
steps:
# 1⃣ Figure out which tag were talking about
- id: vars
shell: bash
run: |
if [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then
TAG="${{ github.event.inputs.tag }}"
else
TAG="${{ github.event.workflow_run.head_branch }}"
fi
echo "TAG=$TAG" >> "$GITHUB_ENV"
# 2⃣ Check out the exact commit for that tag
- uses: actions/checkout@v3
with:
ref: ${{ env.TAG }}
fetch-depth: 1
# 3⃣ Stash RELEASE.md in an env var (one atomic write → no EOF error)
- id: prep-body
shell: bash
run: |
body=$(<RELEASE.md)
max=4000
[[ ${#body} -gt $max ]] && body="${body:0:$max}…" # add ellipsis if trimmed
{
echo "body<<EOF"
echo "$body"
echo "EOF"
} >> "$GITHUB_OUTPUT"
# 4⃣ Fire the webhook
- uses: tsickert/discord-webhook@v5.3.0
with:
webhook-url: ${{ secrets.DISCORD_WEBHOOK_URL }}
username: Fleetbase
content: |
@everyone
📦 **Fleetbase ${{ env.TAG }} released!**
<https://github.com/${{ github.repository }}/releases/tag/${{ env.TAG }}>
embed-title: "Fleetbase ${{ env.TAG }} — release notes"
embed-url: "https://github.com/fleetbase/fleetbase/releases/tag/${{ env.TAG }}"
embed-description: ${{ steps.prep-body.outputs.body }}
embed-color: 4362730 # 0x4291EA (Fleetbase Blue)

170
.github/workflows/eks-cd.yml vendored Normal file
View File

@@ -0,0 +1,170 @@
name: Fleetbase EKS CI/CD
on:
push:
branches: ["eksdeploy/*"]
concurrency:
group: ${{ github.ref }}
cancel-in-progress: true
env:
PROJECT: ${{ secrets.PROJECT }}
GITHUB_AUTH_KEY: ${{ secrets._GITHUB_AUTH_TOKEN }}
jobs:
build_service:
name: Build and Deploy the Service
runs-on: ubuntu-latest
permissions:
id-token: write # This is required for requesting the JWT
contents: read # This is required for actions/checkout
steps:
- name: Checkout Code
uses: actions/checkout@v3
with:
submodules: recursive
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Set Dynamic ENV Vars
run: |
SHORT_COMMIT=$(echo $GITHUB_SHA | cut -c -8)
echo "VERSION=${SHORT_COMMIT}" >> $GITHUB_ENV
echo "STACK=$(basename $GITHUB_REF)" >> $GITHUB_ENV
- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@v4
with:
role-to-assume: ${{ secrets.EKS_DEPLOYER_ROLE }}
role-session-name: github
aws-region: ${{ secrets.AWS_REGION }}
- name: Login to Amazon ECR
id: login-ecr
uses: aws-actions/amazon-ecr-login@v1
- name: Build and Release
uses: docker/bake-action@v2
env:
REGISTRY: ${{ steps.login-ecr.outputs.registry }}/${{ env.PROJECT }}-${{ env.STACK }}
VERSION: ${{ env.VERSION }}
GITHUB_AUTH_KEY: ${{ env.GITHUB_AUTH_KEY }}
CACHE: type=gha
with:
push: true
files: |
./docker-bake.hcl
- name: Update kube config
run: aws eks update-kubeconfig --name ${{ secrets.EKS_CLUSTER_NAME }} --region ${{ secrets.AWS_REGION }}
- name: Deploy the images 🚀
env:
REGISTRY: ${{ steps.login-ecr.outputs.registry }}/${{ env.PROJECT }}-${{ env.STACK }}
run: |-
set -eu
# run deploy.sh script before deployments
helm upgrade -i ${{ env.PROJECT }} infra/helm -n ${{ env.PROJECT}}-${{ env.STACK }} --set image.repository=${{ env.REGISTRY }} \
--set image.tag=${{ env.VERSION }} --set 'api_host=${{ secrets.API_HOST }}' --set 'socketcluster_host=${{ secrets.SOCKETCLUSTER_HOST }}' \
--set gcp=false --set 'ingress.annotations.kubernetes\.io/ingress\.class=null' --set 'ingress.annotations.alb\.ingress\.kubernetes\.io/scheme=internet-facing' \
--set serviceAccount.name=default --set serviceAccount.create=false --set ingress.className=alb \
--set 'ingress.annotations.alb\.ingress\.kubernetes\.io/listen-ports=[{"HTTPS":443}]' \
--set service.type=NodePort
build_frontend:
name: Build and Deploy the Console
needs: [build_service]
runs-on: ubuntu-latest
permissions:
id-token: write # This is required for requesting the JWT
contents: read # This is required for actions/checkout
steps:
- name: Checkout
uses: actions/checkout@v3
with:
submodules: true
- name: Set Dynamic ENV Vars
run: |
SHORT_COMMIT=$(echo $GITHUB_SHA | cut -c -8)
echo "VERSION=${SHORT_COMMIT}" >> $GITHUB_ENV
echo "STACK=$(basename $GITHUB_REF)" >> $GITHUB_ENV
- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@v2
with:
role-to-assume: ${{ secrets.EKS_DEPLOYER_ROLE }}
role-session-name: github
aws-region: ${{ secrets.AWS_REGION }}
- name: Get infra-provided configuration
run: |
set -eu
wget -O- https://github.com/springload/ssm-parent/releases/download/1.8.0/ssm-parent_1.8.0_linux_amd64.tar.gz | tar xvzf - ssm-parent
./ssm-parent -n /actions/${{ env.PROJECT }}/${{ env.STACK }}/configuration dotenv /tmp/dotenv.file
# remove double quotes and pipe into the env
cat /tmp/dotenv.file | sed -e 's/"//g' >> $GITHUB_ENV
- name: Install Node.js
uses: actions/setup-node@v3
with:
node-version: 16
- uses: pnpm/action-setup@v2
name: Install pnpm
id: pnpm-install
with:
version: 8
run_install: false
- name: Get pnpm Store Directory
id: pnpm-cache
shell: bash
run: |
echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT
- uses: actions/cache@v3
name: Setup pnpm Cache
with:
path: ${{ steps.pnpm-cache.outputs.STORE_PATH }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
- name: Check for _GITHUB_AUTH_TOKEN and create .npmrc
run: |
if [[ -n "${{ secrets._GITHUB_AUTH_TOKEN }}" ]]; then
echo "//npm.pkg.github.com/:_authToken=${{ secrets._GITHUB_AUTH_TOKEN }}" > .npmrc
fi
working-directory: ./console
- name: Install dependencies
run: pnpm install
working-directory: ./console
- name: Build
env:
API_HOST: ${{ secrets.API_HOST }}
SOCKETCLUSTER_HOST: ${{ secrets.SOCKETCLUSTER_HOST }}
SOCKETCLUSTER_PORT: "443" # it uses common ingress so port 443
run: |
set -eu
pnpm build --environment production
working-directory: ./console
- name: Deploy Console 🚀
run: |
set -u
DEPLOY_BUCKET=${STATIC_DEPLOY_BUCKET:-${{ env.PROJECT }}-${{ env.STACK }}}
# this value will come from the dotenv above
echo "Deploying to $DEPLOY_BUCKET"
wget -O- https://github.com/bep/s3deploy/releases/download/v2.11.0/s3deploy_2.11.0_linux-amd64.tar.gz | tar xzv -f - s3deploy
./s3deploy -region ${AWS_REGION} -source console/dist -bucket ${DEPLOY_BUCKET}

185
.github/workflows/gcp-cd.yml vendored Normal file
View File

@@ -0,0 +1,185 @@
name: Fleetbase GCP CI/CD
on:
push:
branches: [ "gcpdeploy/*" ]
concurrency:
group: ${{ github.ref }}
cancel-in-progress: true
env:
PROJECT: ${{ vars.PROJECT }}
REGISTRY: ${{ vars.REGISTRY }}
SOCKETCLUSTER_HOST: ${{ vars.SOCKETCLUSTER_HOST }}
API_HOST: ${{ vars.API_HOST }}
K8S_CLUSTER_NAME: ${{ vars.K8S_CLUSTER_NAME }}
K8S_CLUSTER_LOCATION: ${{ vars.K8S_CLUSTER_LOCATION }}
GCP_WORKLOAD_IDENTITY_PROVIDER: ${{ vars.GCP_WORKLOAD_IDENTITY_PROVIDER }}
GCP_SERVICE_ACCOUNT: ${{ vars.GCP_SERVICE_ACCOUNT }}
GCP: "True" # switches docker builds to GCP-style registry
jobs:
build_service:
name: Build and Deploy the Service
runs-on: ubuntu-latest
permissions:
id-token: write # This is required for requesting the JWT
contents: read # This is required for actions/checkout
steps:
- name: Checkout Code
uses: actions/checkout@v3
with:
submodules: recursive
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Set Dynamic ENV Vars
run: |
SHORT_COMMIT=$(echo $GITHUB_SHA | cut -c -8)
echo "VERSION=${SHORT_COMMIT}" >> $GITHUB_ENV
echo "STACK=$(basename $GITHUB_REF)" >> $GITHUB_ENV
echo "REGISTRY_HOST=$(dirname $(dirname $REGISTRY))" >> $GITHUB_ENV
- id: 'auth'
name: 'Authenticate to Google Cloud'
uses: 'google-github-actions/auth@v1'
with:
token_format: "access_token"
create_credentials_file: true
workload_identity_provider: ${{ env.GCP_WORKLOAD_IDENTITY_PROVIDER }}
service_account: ${{ env.GCP_SERVICE_ACCOUNT }}
- name: 'Set up Cloud SDK'
uses: 'google-github-actions/setup-gcloud@v1'
- id: 'get-credentials'
uses: 'google-github-actions/get-gke-credentials@v1'
with:
cluster_name: ${{ env.K8S_CLUSTER_NAME }}
location: ${{ env.K8S_CLUSTER_LOCATION }}
- uses: 'docker/login-action@v3'
with:
registry: ${{ env.REGISTRY_HOST }}
username: 'oauth2accesstoken'
password: '${{ steps.auth.outputs.access_token }}'
- name: Prepare Composer Auth Secret
run: |
if [[ -n "${{ secrets._GITHUB_AUTH_TOKEN }}" ]]; then
echo '{"github-oauth": {"github.com": "'${{ secrets._GITHUB_AUTH_TOKEN }}'"}}' > composer-auth.json
else
echo '{}' > composer-auth.json
fi
- name: nullify ssm-parent config
run: |
# this is needed to disable ssm-parent, which is used on AWS
echo > api/.ssm-parent.yaml
- name: Build and Release
uses: docker/bake-action@v2
env:
REGISTRY: ${{ env.REGISTRY }}
VERSION: ${{ env.VERSION }}
CACHE: type=gha
with:
push: true
files: |
./docker-bake.hcl
- name: deploy with helm
run: |
helm upgrade -i fleetbase infra/helm -n ${{ env.PROJECT }}-${{ env.STACK }} --set image.repository=${{ env.REGISTRY }} --set image.tag=${{ env.VERSION }} --set 'api_host=${{ env.API_HOST }}' --set 'socketcluster_host=${{ env.SOCKETCLUSTER_HOST }}' --set 'ingress.annotations.kubernetes\.io/ingress\.global-static-ip-name=${{ env.PROJECT }}-${{ env.STACK }}'
build_frontend:
name: Build and Deploy the Console
needs: [build_service]
runs-on: ubuntu-latest
permissions:
id-token: write # This is required for requesting the JWT
contents: read # This is required for actions/checkout
steps:
- name: Checkout
uses: actions/checkout@v3
with:
submodules: true
- name: Set Dynamic ENV Vars
run: |
SHORT_COMMIT=$(echo $GITHUB_SHA | cut -c -8)
echo "VERSION=${SHORT_COMMIT}" >> $GITHUB_ENV
echo "STACK=$(basename $GITHUB_REF)" >> $GITHUB_ENV
- id: 'auth'
name: 'Authenticate to Google Cloud'
uses: 'google-github-actions/auth@v1'
with:
token_format: "access_token"
create_credentials_file: true
workload_identity_provider: ${{ env.GCP_WORKLOAD_IDENTITY_PROVIDER }}
service_account: ${{ env.GCP_SERVICE_ACCOUNT }}
- name: 'Set up Cloud SDK'
uses: 'google-github-actions/setup-gcloud@v1'
- name: Install Node.js
uses: actions/setup-node@v3
with:
node-version: 16
- uses: pnpm/action-setup@v2
name: Install pnpm
id: pnpm-install
with:
version: 8
run_install: false
- name: Get pnpm Store Directory
id: pnpm-cache
shell: bash
run: |
echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT
- uses: actions/cache@v3
name: Setup pnpm Cache
with:
path: ${{ steps.pnpm-cache.outputs.STORE_PATH }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
- name: Check for _GITHUB_AUTH_TOKEN and create .npmrc
run: |
if [[ -n "${{ secrets._GITHUB_AUTH_TOKEN }}" ]]; then
echo "//npm.pkg.github.com/:_authToken=${{ secrets._GITHUB_AUTH_TOKEN }}" > .npmrc
fi
working-directory: ./console
- name: Install dependencies
run: pnpm install
working-directory: ./console
- name: Build
env:
SOCKETCLUSTER_HOST: ${{ env.SOCKETCLUSTER_HOST }}
SOCKETCLUSTER_SECURE: "true"
SOCKETCLUSTER_PORT: "443"
API_HOST: ${{ env.API_HOST }}
run: |
set -eu
pnpm build --environment production
working-directory: ./console
- name: Deploy Console 🚀
run: |
set -eu
gcloud app deploy --appyaml console/app.yaml console/dist
# leave 2 versions
gcloud app versions list --filter="traffic_split=0" --sort-by '~version' --format 'value(version.id)' | sed '1d' | xargs -r gcloud app versions delete

View File

@@ -0,0 +1,50 @@
name: Fleetbase Docker Images
on:
push:
tags:
- 'v*'
workflow_dispatch:
inputs:
branch:
description: 'Branch to build from'
required: false
default: 'main'
version:
description: 'Image version tag (e.g., v0.7.1-beta)'
required: false
jobs:
docker-release:
name: Build and Push Docker Images
runs-on: ubuntu-latest
env:
REGISTRY: fleetbase
VERSION: ${{ github.event.inputs.version || (github.ref_type == 'tag' && startsWith(github.ref_name, 'v') && github.ref_name) || 'manual' }}
steps:
- name: Checkout Repo
uses: actions/checkout@v3
with:
ref: ${{ github.event.inputs.branch || github.ref_name }}
submodules: recursive
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Log in to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_HUB_USERNAME }}
password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}
- name: Build and Push Console & API Images
uses: docker/bake-action@v2
with:
push: true
targets: |
fleetbase-console
fleetbase-api
files: |
./docker-bake.hcl

45
.gitignore vendored
View File

@@ -3,6 +3,7 @@
.env.backup
.phpunit.result.cache
.pnpm-store
.tool-versions
docker-compose.override.yml
npm-debug.log
yarn-error.log
@@ -11,4 +12,46 @@ api/public/storage
api/storage/*.key
api/storage/uploads
api/storage/public
api/vendor
api/vendor
api/composer.dev.json
api/composer-install-dev.sh
api/auth.json
api/crontab
api/go-crond
api/.fleetbase-id
act.sh
composer-auth.json
docker/database/*
docker/database/mysql/*
.talismanrc
verdaccio/minio
verdaccio/config/htpasswd
verdaccio/storage
# private packages
packages/billing
packages/flespi
packages/loconav
packages/internals
packages/projectargus-engine
packages/customer-portal
packages/solid
packages/aws-marketplace
packages/countries
packages/fliit
packages/samsara
packages/solid*
packages/valhalla
packages/vroom
solid
verdaccio
# asdf
.tools-versions
# binary build resources
builds/osx/frankenphp
# build artifacts
/builds/dist/
/builds/linux/spc/downloads/*
*.exe
*.dll
*.so
*.dylib

57
.gitmodules vendored
View File

@@ -1,55 +1,44 @@
[submodule "console"]
path = console
url = git@github.com:fleetbase/console.git
[submodule "packages/fleetops"]
path = packages/fleetops
url = git@github.com:fleetbase/fleetops.git
[submodule "packages/storefront"]
path = packages/storefront
url = git@github.com:fleetbase/storefront.git
[submodule "packages/pallet"]
path = packages/pallet
url = git@github.com:fleetbase/pallet.git
[submodule "packages/core-api"]
path = packages/core-api
url = git@github.com:fleetbase/core-api.git
branch = dev-main
[submodule "packages/fleetops-api"]
path = packages/fleetops-api
url = git@github.com:fleetbase/fleetops-api.git
branch = dev-main
branch = main
[submodule "packages/ember-core"]
path = packages/ember-core
url = git@github.com:fleetbase/ember-core.git
branch = dev-main
branch = main
[submodule "packages/ember-ui"]
path = packages/ember-ui
url = git@github.com:fleetbase/ember-ui.git
branch = dev-main
[submodule "packages/storefront-engine"]
path = packages/storefront-engine
url = git@github.com:fleetbase/storefront-engine.git
branch = dev-main
branch = main
[submodule "packages/iam-engine"]
path = packages/iam-engine
url = git@github.com:fleetbase/iam-engine.git
[submodule "packages/dev-engine"]
path = packages/dev-engine
url = git@github.com:fleetbase/dev-engine.git
branch = dev-main
branch = main
[submodule "packages/fleetbase-extensions-indexer"]
path = packages/fleetbase-extensions-indexer
url = git@github.com:fleetbase/fleetbase-extensions-indexer.git
[submodule "packages/fleetops-engine"]
path = packages/fleetops-engine
url = git@github.com:fleetbase/fleetops-engine.git
branch = dev-main
[submodule "docs/guides"]
path = docs/guides
url = git@github.com:fleetbase/guides.git
[submodule "docs/api-reference"]
path = docs/api-reference
url = git@github.com:fleetbase/api-reference.git
[submodule "packages/storefront-api"]
path = packages/storefront-api
url = git@github.com:fleetbase/storefront-api.git
branch = dev-main
[submodule "packages/fleetops-data"]
path = packages/fleetops-data
url = git@github.com:fleetbase/fleetops-data.git
branch = dev-main
[submodule "socket"]
path = socket
url = git@github.com:fleetbase/socket.git
branch = dev-main
branch = main
[submodule "docs"]
path = docs
url = git@github.com:fleetbase/docs.git
[submodule "packages/registry-bridge"]
path = packages/registry-bridge
url = git@github.com:fleetbase/registry-bridge.git
[submodule "packages/ledger"]
path = packages/ledger
url = git@github.com:fleetbase/ledger.git

17
.s3deploy.yml Normal file
View File

@@ -0,0 +1,17 @@
routes:
- route: "^.+\\.(js|css|svg|ttf)$"
headers:
Cache-Control: "max-age=600, no-transform, public"
gzip: true
- route: "^.+\\.(png|jpg)$"
headers:
Cache-Control: "max-age=600, no-transform, public"
gzip: false
- route: "^.+\\.(xml|json)$"
headers:
Cache-Control: "max-age=600, no-transform, public"
gzip: true
- route: "^.+\\.(html)$"
headers:
Cache-Control: "public, max-age=0, must-revalidate"
gzip: true

128
CODE_OF_CONDUCT.md Normal file
View File

@@ -0,0 +1,128 @@
# Contributor Covenant Code of Conduct
## Our Pledge
We as members, contributors, and leaders pledge to make participation in our
community a harassment-free experience for everyone, regardless of age, body
size, visible or invisible disability, ethnicity, sex characteristics, gender
identity and expression, level of experience, education, socio-economic status,
nationality, personal appearance, race, religion, or sexual identity
and orientation.
We pledge to act and interact in ways that contribute to an open, welcoming,
diverse, inclusive, and healthy community.
## Our Standards
Examples of behavior that contributes to a positive environment for our
community include:
* Demonstrating empathy and kindness toward other people
* Being respectful of differing opinions, viewpoints, and experiences
* Giving and gracefully accepting constructive feedback
* Accepting responsibility and apologizing to those affected by our mistakes,
and learning from the experience
* Focusing on what is best not just for us as individuals, but for the
overall community
Examples of unacceptable behavior include:
* The use of sexualized language or imagery, and sexual attention or
advances of any kind
* Trolling, insulting or derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or email
address, without their explicit permission
* Other conduct which could reasonably be considered inappropriate in a
professional setting
## Enforcement Responsibilities
Community leaders are responsible for clarifying and enforcing our standards of
acceptable behavior and will take appropriate and fair corrective action in
response to any behavior that they deem inappropriate, threatening, offensive,
or harmful.
Community leaders have the right and responsibility to remove, edit, or reject
comments, commits, code, wiki edits, issues, and other contributions that are
not aligned to this Code of Conduct, and will communicate reasons for moderation
decisions when appropriate.
## Scope
This Code of Conduct applies within all community spaces, and also applies when
an individual is officially representing the community in public spaces.
Examples of representing our community include using an official e-mail address,
posting via an official social media account, or acting as an appointed
representative at an online or offline event.
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported to the community leaders responsible for enforcement at
hello@fleetbase.io.
All complaints will be reviewed and investigated promptly and fairly.
All community leaders are obligated to respect the privacy and security of the
reporter of any incident.
## Enforcement Guidelines
Community leaders will follow these Community Impact Guidelines in determining
the consequences for any action they deem in violation of this Code of Conduct:
### 1. Correction
**Community Impact**: Use of inappropriate language or other behavior deemed
unprofessional or unwelcome in the community.
**Consequence**: A private, written warning from community leaders, providing
clarity around the nature of the violation and an explanation of why the
behavior was inappropriate. A public apology may be requested.
### 2. Warning
**Community Impact**: A violation through a single incident or series
of actions.
**Consequence**: A warning with consequences for continued behavior. No
interaction with the people involved, including unsolicited interaction with
those enforcing the Code of Conduct, for a specified period of time. This
includes avoiding interactions in community spaces as well as external channels
like social media. Violating these terms may lead to a temporary or
permanent ban.
### 3. Temporary Ban
**Community Impact**: A serious violation of community standards, including
sustained inappropriate behavior.
**Consequence**: A temporary ban from any sort of interaction or public
communication with the community for a specified period of time. No public or
private interaction with the people involved, including unsolicited interaction
with those enforcing the Code of Conduct, is allowed during this period.
Violating these terms may lead to a permanent ban.
### 4. Permanent Ban
**Community Impact**: Demonstrating a pattern of violation of community
standards, including sustained inappropriate behavior, harassment of an
individual, or aggression toward or disparagement of classes of individuals.
**Consequence**: A permanent ban from any sort of public interaction within
the community.
## Attribution
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
version 2.0, available at
https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.
Community Impact Guidelines were inspired by [Mozilla's code of conduct
enforcement ladder](https://github.com/mozilla/diversity).
[homepage]: https://www.contributor-covenant.org
For answers to common questions about this code of conduct, see the FAQ at
https://www.contributor-covenant.org/faq. Translations are available at
https://www.contributor-covenant.org/translations.

47
CONTRIBUTING.md Normal file
View File

@@ -0,0 +1,47 @@
# Contributing to Fleetbase
We love your input! We want to make contributing to this project as easy and transparent as possible, whether it's:
- Reporting a bug
- Discussing the current state of the code
- Submitting a fix
- Proposing new features
- Becoming a maintainer
## We Develop with Github
We use github to host code, to track issues and feature requests, as well as accept pull requests.
## We Use [Github Flow](https://guides.github.com/introduction/flow/index.html), So All Code Changes Happen Through Pull Requests
Pull requests are the best way to propose changes to the codebase (we use [Github Flow](https://guides.github.com/introduction/flow/index.html)). We actively welcome your pull requests:
1. Fork the repo and create your branch from `main`.
2. If you've added code that should be tested, add tests.
3. If you've changed APIs, update the documentation.
4. Ensure the test suite passes.
5. Make sure your code lints.
6. Issue that pull request!
## Any contributions you make will be under the AGPL v3 Software License
In short, when you submit code changes, your submissions are understood to be under the same [AGPL v3](https://choosealicense.com/licenses/agpl-3.0/) that covers the project. Feel free to contact the maintainers if that's a concern.
## Report bugs using Github's [issues](https://github.com/fleetbase/fleetbase/issues)
We use GitHub issues to track public bugs. Report a bug by [opening a new issue](https://github.com/fleetbase/fleetbase/issues), it's that easy!
## Write bug reports with detail, background, and sample code
**Great Bug Reports** tend to have:
- A quick summary and/or background
- Steps to reproduce
- Be specific!
- Give sample code if you can.
- What you expected would happen
- What actually happens
- Notes (possibly including why you think this might be happening, or stuff you tried that didn't work)
People *love* thorough bug reports. I'm not even kidding.
## License
By contributing, you agree that your contributions will be licensed under its AGPL v3 Software License.
## References
This document was adapted from the open-source contribution guidelines for [Facebook's Draft](https://github.com/facebook/draft-js/blob/a9316a723f9e918afde44dea68b5f9f39b7d9b00/CONTRIBUTING.md)

15
Caddyfile Normal file
View File

@@ -0,0 +1,15 @@
{
frankenphp {
num_threads 24
}
order php_server before file_server
}
http://:8000 {
root * /fleetbase/api/public
encode zstd br gzip
php_server {
resolve_root_symlink
}
}

19
Caddyfile.console Normal file
View File

@@ -0,0 +1,19 @@
{
frankenphp
order php_server before file_server
}
http://:8000 {
root * /fleetbase/api/public
encode zstd gzip
php_server {
resolve_root_symlink
}
}
http://:4200 {
root * /fleetbase/console/dist
try_files {path} /
encode zstd gzip
file_server
}

651
LICENSE.md Normal file
View File

@@ -0,0 +1,651 @@
GNU Affero General Public License
=================================
_Version 3, 19 November 2007_
_Copyright © 2007 Free Software Foundation, Inc. &lt;<http://fsf.org/>&gt;_
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
## Preamble
The GNU Affero General Public License is a free, copyleft license for
software and other kinds of works, specifically designed to ensure
cooperation with the community in the case of network server software.
The licenses for most software and other practical works are designed
to take away your freedom to share and change the works. By contrast,
our General Public Licenses are intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.
Developers that use our General Public Licenses protect your rights
with two steps: **(1)** assert copyright on the software, and **(2)** offer
you this License which gives you legal permission to copy, distribute
and/or modify the software.
A secondary benefit of defending all users' freedom is that
improvements made in alternate versions of the program, if they
receive widespread use, become available for other developers to
incorporate. Many developers of free software are heartened and
encouraged by the resulting cooperation. However, in the case of
software used on network servers, this result may fail to come about.
The GNU General Public License permits making a modified version and
letting the public access it on a server without ever releasing its
source code to the public.
The GNU Affero General Public License is designed specifically to
ensure that, in such cases, the modified source code becomes available
to the community. It requires the operator of a network server to
provide the source code of the modified version running there to the
users of that server. Therefore, public use of a modified version, on
a publicly accessible server, gives the public access to the source
code of the modified version.
An older license, called the Affero General Public License and
published by Affero, was designed to accomplish similar goals. This is
a different license, not a version of the Affero GPL, but Affero has
released a new version of the Affero GPL which permits relicensing under
this license.
The precise terms and conditions for copying, distribution and
modification follow.
## TERMS AND CONDITIONS
### 0. Definitions
“This License” refers to version 3 of the GNU Affero General Public License.
“Copyright” also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.
“The Program” refers to any copyrightable work licensed under this
License. Each licensee is addressed as “you”. “Licensees” and
“recipients” may be individuals or organizations.
To “modify” a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy. The resulting work is called a “modified version” of the
earlier work or a work “based on” the earlier work.
A “covered work” means either the unmodified Program or a work based
on the Program.
To “propagate” a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy. Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.
To “convey” a work means any kind of propagation that enables other
parties to make or receive copies. Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.
An interactive user interface displays “Appropriate Legal Notices”
to the extent that it includes a convenient and prominently visible
feature that **(1)** displays an appropriate copyright notice, and **(2)**
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License. If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.
### 1. Source Code
The “source code” for a work means the preferred form of the work
for making modifications to it. “Object code” means any non-source
form of a work.
A “Standard Interface” means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.
The “System Libraries” of an executable work include anything, other
than the work as a whole, that **(a)** is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and **(b)** serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form. A
“Major Component”, in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.
The “Corresponding Source” for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities. However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work. For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.
The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.
The Corresponding Source for a work in source code form is that
same work.
### 2. Basic Permissions
All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met. This License explicitly affirms your unlimited
permission to run the unmodified Program. The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work. This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.
You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force. You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright. Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.
Conveying under any other circumstances is permitted solely under
the conditions stated below. Sublicensing is not allowed; section 10
makes it unnecessary.
### 3. Protecting Users' Legal Rights From Anti-Circumvention Law
No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.
When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.
### 4. Conveying Verbatim Copies
You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.
You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.
### 5. Conveying Modified Source Versions
You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:
* **a)** The work must carry prominent notices stating that you modified
it, and giving a relevant date.
* **b)** The work must carry prominent notices stating that it is
released under this License and any conditions added under section 7.
This requirement modifies the requirement in section 4 to
“keep intact all notices”.
* **c)** You must license the entire work, as a whole, under this
License to anyone who comes into possession of a copy. This
License will therefore apply, along with any applicable section 7
additional terms, to the whole of the work, and all its parts,
regardless of how they are packaged. This License gives no
permission to license the work in any other way, but it does not
invalidate such permission if you have separately received it.
* **d)** If the work has interactive user interfaces, each must display
Appropriate Legal Notices; however, if the Program has interactive
interfaces that do not display Appropriate Legal Notices, your
work need not make them do so.
A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
“aggregate” if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit. Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.
### 6. Conveying Non-Source Forms
You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:
* **a)** Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by the
Corresponding Source fixed on a durable physical medium
customarily used for software interchange.
* **b)** Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by a
written offer, valid for at least three years and valid for as
long as you offer spare parts or customer support for that product
model, to give anyone who possesses the object code either **(1)** a
copy of the Corresponding Source for all the software in the
product that is covered by this License, on a durable physical
medium customarily used for software interchange, for a price no
more than your reasonable cost of physically performing this
conveying of source, or **(2)** access to copy the
Corresponding Source from a network server at no charge.
* **c)** Convey individual copies of the object code with a copy of the
written offer to provide the Corresponding Source. This
alternative is allowed only occasionally and noncommercially, and
only if you received the object code with such an offer, in accord
with subsection 6b.
* **d)** Convey the object code by offering access from a designated
place (gratis or for a charge), and offer equivalent access to the
Corresponding Source in the same way through the same place at no
further charge. You need not require recipients to copy the
Corresponding Source along with the object code. If the place to
copy the object code is a network server, the Corresponding Source
may be on a different server (operated by you or a third party)
that supports equivalent copying facilities, provided you maintain
clear directions next to the object code saying where to find the
Corresponding Source. Regardless of what server hosts the
Corresponding Source, you remain obligated to ensure that it is
available for as long as needed to satisfy these requirements.
* **e)** Convey the object code using peer-to-peer transmission, provided
you inform other peers where the object code and Corresponding
Source of the work are being offered to the general public at no
charge under subsection 6d.
A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.
A “User Product” is either **(1)** a “consumer product”, which means any
tangible personal property which is normally used for personal, family,
or household purposes, or **(2)** anything designed or sold for incorporation
into a dwelling. In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage. For a particular
product received by a particular user, “normally used” refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product. A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.
“Installation Information” for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source. The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.
If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information. But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).
The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed. Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.
Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.
### 7. Additional Terms
“Additional permissions” are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law. If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.
When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it. (Additional permissions may be written to require their own
removal in certain cases when you modify the work.) You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.
Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:
* **a)** Disclaiming warranty or limiting liability differently from the
terms of sections 15 and 16 of this License; or
* **b)** Requiring preservation of specified reasonable legal notices or
author attributions in that material or in the Appropriate Legal
Notices displayed by works containing it; or
* **c)** Prohibiting misrepresentation of the origin of that material, or
requiring that modified versions of such material be marked in
reasonable ways as different from the original version; or
* **d)** Limiting the use for publicity purposes of names of licensors or
authors of the material; or
* **e)** Declining to grant rights under trademark law for use of some
trade names, trademarks, or service marks; or
* **f)** Requiring indemnification of licensors and authors of that
material by anyone who conveys the material (or modified versions of
it) with contractual assumptions of liability to the recipient, for
any liability that these contractual assumptions directly impose on
those licensors and authors.
All other non-permissive additional terms are considered “further
restrictions” within the meaning of section 10. If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term. If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.
If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.
Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.
### 8. Termination
You may not propagate or modify a covered work except as expressly
provided under this License. Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).
However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated **(a)**
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and **(b)** permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.
Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License. If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.
### 9. Acceptance Not Required for Having Copies
You are not required to accept this License in order to receive or
run a copy of the Program. Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance. However,
nothing other than this License grants you permission to propagate or
modify any covered work. These actions infringe copyright if you do
not accept this License. Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.
### 10. Automatic Licensing of Downstream Recipients
Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License. You are not responsible
for enforcing compliance by third parties with this License.
An “entity transaction” is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations. If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.
You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License. For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.
### 11. Patents
A “contributor” is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based. The
work thus licensed is called the contributor's “contributor version”.
A contributor's “essential patent claims” are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version. For
purposes of this definition, “control” includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.
Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.
In the following three paragraphs, a “patent license” is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement). To “grant” such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.
If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either **(1)** cause the Corresponding Source to be so
available, or **(2)** arrange to deprive yourself of the benefit of the
patent license for this particular work, or **(3)** arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients. “Knowingly relying” means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.
If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.
A patent license is “discriminatory” if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License. You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license **(a)** in connection with copies of the covered work
conveyed by you (or copies made from those copies), or **(b)** primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.
Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.
### 12. No Surrender of Others' Freedom
If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all. For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.
### 13. Remote Network Interaction; Use with the GNU General Public License
Notwithstanding any other provision of this License, if you modify the
Program, your modified version must prominently offer all users
interacting with it remotely through a computer network (if your version
supports such interaction) an opportunity to receive the Corresponding
Source of your version by providing access to the Corresponding Source
from a network server at no charge, through some standard or customary
means of facilitating copying of software. This Corresponding Source
shall include the Corresponding Source for any work covered by version 3
of the GNU General Public License that is incorporated pursuant to the
following paragraph.
Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU General Public License into a single
combined work, and to convey the resulting work. The terms of this
License will continue to apply to the part which is the covered work,
but the work with which it is combined will remain governed by version
3 of the GNU General Public License.
### 14. Revised Versions of this License
The Free Software Foundation may publish revised and/or new versions of
the GNU Affero General Public License from time to time. Such new versions
will be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the
Program specifies that a certain numbered version of the GNU Affero General
Public License “or any later version” applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation. If the Program does not specify a version number of the
GNU Affero General Public License, you may choose any version ever published
by the Free Software Foundation.
If the Program specifies that a proxy can decide which future
versions of the GNU Affero General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.
Later license versions may give you additional or different
permissions. However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.
### 15. Disclaimer of Warranty
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM “AS IS” WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
### 16. Limitation of Liability
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.
### 17. Interpretation of Sections 15 and 16
If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.
_END OF TERMS AND CONDITIONS_
## How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the “copyright” line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
Also add information on how to contact you by electronic and paper mail.
If your software can interact with users remotely through a computer
network, you should also make sure that it provides a way for users to
get its source. For example, if your program is a web application, its
interface could display a “Source” link that leads users to an archive
of the code. There are many ways you could offer source, and different
solutions will be better for different programs; see section 13 for the
specific requirements.
You should also get your employer (if you work as a programmer) or school,
if any, to sign a “copyright disclaimer” for the program, if necessary.
For more information on this, and how to apply and follow the GNU AGPL, see
&lt;<http://www.gnu.org/licenses/>&gt;.

12
PULL_REQUEST_TEMPLATE.md Normal file
View File

@@ -0,0 +1,12 @@
### What change does this PR introduce?
<!-- Explain here the changes your PR introduces and text to help us understand the context of this change. -->
### Why was this change needed?
<!-- If your PR fixes an open issue, use `Closes #999` to link your PR with the issue. #999 stands for the issue number you are fixing, Example: Closes #31 -->
### Other information (Screenshots)
<!-- Add notes or any other information here -->
<!-- Also add all the screenshots which support your changes -->

351
README.md
View File

@@ -1,46 +1,75 @@
<div id="hero">
<p align="center" dir="auto">
<a href="https://fleetbase.io" rel="nofollow">
<img src="https://user-images.githubusercontent.com/58805033/191936702-fed04b0f-7966-4041-96d0-95e27bf98248.png" alt="Fleetbase logo" width="600" height="140" style="max-width: 100%;">
<img src="https://user-images.githubusercontent.com/58805033/191936702-fed04b0f-7966-4041-96d0-95e27bf98248.png" alt="Fleetbase logo" width="500" height="120" style="max-width: 100%;">
</a>
</p>
<p align="center" dir="auto">
Open Source Logistics & Supply Chain Platform and Infrastructure
Modular logistics and supply chain operating system
<br>
<a href="https://docs.fleetbase.dev/api" rel="nofollow">Fleetbase Documentation</a>
<br>
<br>
<a href="https://github.com/fleetbase/fleetbase/issues">Report an Issue</a>
<a href="https://docs.fleetbase.io/" rel="nofollow" target="_fleetbase_docs">Documentation</a>
·
<a href="https://fleetbase.dev/api">API Reference</a>
<a href="https://console.fleetbase.io" rel="nofollow" target="_fleetbase_console">Cloud Version</a>
·
<a href="https://github.com/fleetbase/guides">Guides</a>
<a href="https://console.fleetbase.io/aws-marketplace" rel="nofollow" target="_aws_marketplace">Deploy on AWS</a>
·
<a href="https://github.com/fleetbase/fleetbase/issues">Request a Feature</a>
<a href="https://tally.so/r/3NBpAW" rel="nofollow">Book a Demo</a>
·
<a href="https://www.fleetbase.io/blog-2" rel="nofollow">Blog</a>
<a href="https://discord.gg/V7RVWRQ2Wm" target="discord" rel="nofollow">Discord</a>
</p>
<hr />
</div>
# ⭐️ Overview
## What is Fleetbase?
Fleetbase is a comprehensive, open-source platform for the management and orchestration of logistics and supply chain operations. This dual-natured platform serves not only as an efficient operational tool for companies within these industries but also as a robust foundational layer for developers. Its versatility emanates from its core, which is skillfully constructed around a series of "extensions," creating a flexible and customizable framework that accommodates a wide spectrum of supply chain and logistics requirements.
Every individual extension within Fleetbase is purposefully engineered to fulfill specific roles within the expansive ecosystem of supply chain and logistics. With inherent extensibility users have the freedom to craft their own extensions, thereby expanding the ecosystem and ensuring the platform's adaptability across a multitude of use cases. This extensible nature ensures that Fleetbase remains at the forefront of meeting diverse logistical and supply chain needs now and into the future.
Fleetbase is a modular logistics and supply chain operating system designed to streamline management, planning, optimization, and operational control across various sectors of the supply chain industry.
<p align="center" dir="auto">
<img src="https://flb-assets.s3.ap-southeast-1.amazonaws.com/github/dark-light-layered-screenshots.png" alt="Fleetbase Console" width="600" style="max-width: 100%;" />
</p>
<img src="https://flb-assets.s3.ap-southeast-1.amazonaws.com/static/fleetbase_overview.png" alt="Fleetbase Console" width="1200" style="max-width: 100%;" />
</p>
# 📖 Table of contents
## Visual Feature Showcase
- [What's Included](#-whats-included)
- [Getting Started](#-getting-started)
- [Use Cases](#-use-cases)
- [Installation](#-installation)
<p align="center" dir="auto">
<img src="https://flb-assets.s3.ap-southeast-1.amazonaws.com/static/order-board-kanban.png" alt="Fleetbase Order Board" width="1200" style="max-width: 100%;" />
<em>Visualize and manage your orders with a dynamic Kanban board.</em>
</p>
<p align="center" dir="auto">
<img src="https://flb-assets.s3.ap-southeast-1.amazonaws.com/static/order-workflow-config.png" alt="Fleetbase Order Workflow Configuration" width="1200" style="max-width: 100%;" />
<em>Create custom order flows and automation with the intuitive workflow builder.</em>
</p>
<p align="center" dir="auto">
<img src="https://flb-assets.s3.ap-southeast-1.amazonaws.com/static/order-map-view.png" alt="Fleetbase Order Map View" width="1200" style="max-width: 100%;" />
<em>Track individual orders in real-time on an interactive map.</em>
</p>
<p align="center" dir="auto">
<img src="https://flb-assets.s3.ap-southeast-1.amazonaws.com/static/live-map-tracking.png" alt="Fleetbase Live Map Tracking" width="1200" style="max-width: 100%;" />
<em>Get a complete overview of your fleet and active orders on a live map.</em>
</p>
<p align="center" dir="auto">
<img src="https://flb-assets.s3.ap-southeast-1.amazonaws.com/static/fleet-map-zones.png" alt="Fleetbase Fleet Map with Zones" width="1200" style="max-width: 100%;" />
<em>Define and manage service areas and zones for your fleet.</em>
</p>
**Quickstart**
```bash
git clone git@github.com:fleetbase/fleetbase.git
cd fleetbase && ./scripts/docker-install.sh
```
## 📖 Table of contents
- [Features](#-features)
- [Install](#-install)
- [Deploy on AWS](#-deploy-on-aws-in-one-click)
- [Extensions](#-extensions)
- [Apps](#-apps)
- [Roadmap](#-roadmap)
- [Bugs and Feature Requests](#-bugs-and--feature-requests)
- [Documentation](#-documentation)
- [Contributing](#-contributing)
@@ -48,177 +77,133 @@ Every individual extension within Fleetbase is purposefully engineered to fulfil
- [Creators](#-creators)
- [License & Copyright](#-license-and-copyright)
# 📦 What's Included
## 📦 Features
- **Extensible:** Build installable extensions and additional functionality directly into the OS via modular architecture.
- **Developer Friendly:** RESTful API, socket, and webhooks to seamlessly integrate with external systems or develop custom applications.
- **Native Apps:** Collection of open-source and native apps designed for operations and customer facing.
- **Collaboration:** Dedicated chat and comments system for collaboration across your organization.
- **Security:** Secure data encryption, adherence to industry-standard security practices, and a comprehensive dynamic Identity and Access Management (IAM) system.
- **Telematics:** Integrate and connect to hardware devices and sensors to provide more feedback and visibility into operations.
- **Internationalized:** Translate into multiple languages to accommodate diverse user bases and global operations.
- **Framework:** PHP core built around logistics and supply chain abstractions to streamline extension development.
- **Dynamic:** Configurable rules, flows and logic to enable automation and customization.
- **UI/UX:** Clean, responsive user-friendly interface for efficient management and operations from desktop or mobile.
- **Dashboards:** Create custom dashboards and widgets to get full visibility into operations.
- **Scalability:** Uninterrupted growth with scalable infrastructure and design, capable of handling increasing data volume and user demand as your business expands.
- **Continuous Improvements:** Commitment to continuous improvement, providing regular updates that seamlessly introduce optimizations, new features, and overall enhancements to the OS.
- **Open Source:** Deploy it either on-premise or in the cloud according to your organization's needs and preferences.
Fleetbase is more than just a platform; it's a versatile ecosystem carefully architected to empower developers and businesses alike. Fleetbase comes pre-installed with a few extensions that provide base functionality to get users and businesses started:
<ul>
<li>
<strong>Console</strong>: Fleetbase's frontend console is constructed using Ember.js and Ember Engines, providing a highly modular and extensible design. This not only enables the system to adapt and scale to your growing requirements but also simplifies the process of integrating new extensions. With the console's design, extensions can be easily installed using their respective package managers, thereby reducing complexity and time spent on integration.
</li>
<li>
<strong>Fleetbase API</strong>: Fleetbase's backend API and framework, developed using the reliable Laravel framework, is thoughtfully designed with extension development and integration in mind. This robust and flexible infrastructure not only manages intricate data structures and transactions with grace but also facilitates the easy incorporation of new extensions via package managers. We provide additional packages that allow developers to craft their unique extensions, further enhancing the flexibility and extensibility of the Fleetbase ecosystem.
</li>
<li>
<strong>Extensions</strong>: Fleetbase is designed to provide immediate utility out-of-the-box. It comes pre-installed with several key extensions
<ul>
<li><strong>FleetOps</strong>: FleetOps, our comprehensive fleet management extension, caters to all aspects of last-mile operations. Some of it's features include:
<ul>
<li>
Real-time tracking for vehicles and assets, ensuring optimal operational efficiency.
</li>
<li>
Order creation and management, facilitating seamless transaction processing.
Service rates management, helping maintain financial transparency and profitability.
</li>
<li>
Fleet management, providing a holistic view and control of your fleet.
</li>
<li>
Third-party vendor integrations, allowing you to consolidate your resources.
</li>
<li>
API & Webhooks that not only offer increased interconnectivity but also serve to facilitate integrations with other services and applications, making FleetOps a truly versatile solution.
</li>
</ul>
</li>
<li>
<strong>Storefront</strong>: Storefront is an extension that delivers headless commerce functionality, ideal for businesses aspiring to develop on-demand stores or marketplaces. It aims to facilitate seamless transactions while focusing on providing an excellent user experience.
</li>
<li><strong>Dev Console</strong>: The Dev Console extension is a developer's toolbox, providing resources such as:
<ul>
<li>
API keys management, ensuring secure interactions with the application programming interface.
</li>
<li>
Webhooks management, enabling real-time data exchanges.
</li>
<li>
Sockets management, facilitating bi-directional client-server communication.
</li>
<li>
Logs management, crucial for system monitoring and troubleshooting.
</li>
<li>
API events management, keeping a pulse on system communications.
</li>
</ul>
</li>
</ul>
</li>
</ul>
# 🏁 Getting Started
Before you can get started with Fleetbase, you'll need to make sure you have the following prerequisites:
<ol>
<li>
A computer running either Linux, Mac OS, or Windows
</li>
<li>Docker installed</li>
<li>Git installed</li>
<li>If you want to try now, the <a href="https://console.fleetbase.io/" target="_fleetbase" alt="Fleetbase">cloud hosted version of Fleetbase available here.</a></li>
</ol>
# 🚦 Use Cases
Fleetbase's comprehensive suite of features and the modular design make it highly versatile, catering to a broad array of applications across different industries. Here are a few use cases:
<ul>
<li><strong>Logistics and Supply Chain Management</strong>: Fleetbase could be employed by a logistics company to streamline its operations. Real-time tracking provided by FleetOps would help maintain visibility of fleet vehicles and assets at all times. This would ensure timely delivery, reduce operational inefficiencies, and enable proactive management of any logistical issues. Additionally, the order creation and management feature could be used to manage deliveries, pickups, and routing.</li>
## 💾 Install
Getting up and running with Fleetbase via Docker is the quickest and most straightforward way. If youd like to use Fleetbase without docker read the [full install guide in the Fleetbase documentation](https://docs.fleetbase.io/getting-started/install).
<li><strong>On-demand Delivery Services</strong>: On-demand services like food delivery or courier companies could utilize Fleetbase to manage their fleet of delivery agents. The real-time tracking functionality would help to optimize routes and ensure prompt deliveries, while the order creation and management system would efficiently handle incoming orders.</li>
Make sure you have both the latest versions of docker and docker-compose installed on your system.
```bash
git clone git@github.com:fleetbase/fleetbase.git
cd fleetbase && ./scripts/docker-install.sh
```
### Accessing Fleetbase
Once successfully installed and running you can then access the Fleetbase console on port 4200 and the API will be accessible from port 8000.
<li><strong>E-Commerce Platforms</strong>: E-commerce businesses could leverage Fleetbase to manage their backend logistics. The Storefront extension would enable seamless online transactions, while FleetOps could manage all aspects of the delivery process, ensuring a smooth shopping experience for the customers.</li>
Fleetbase Console: http://localhost:4200
Fleetbase API: http://localhost:8000
### Additional Configurations
**CORS:** If youre installing directly on a server you will need to configure the environment variables to the application container:
```
CONSOLE_HOST=http://{yourhost}:4200
```
If you have additional applications or frontends you can use the environment variable `FRONTEND_HOSTS` to add a comma delimited list of additioal frontend hosts.
**Application Key** If you get an issue about a missing application key just run:
```bash
docker compose exec application bash -c "php artisan key:generate --show"
```
Next copy this value to the `APP_KEY` environment variable in the application container and restart.
<li><strong>Ride-Hailing Services</strong>: Fleetbase could be a perfect fit for ride-hailing or car rental services. FleetOps would manage real-time tracking of vehicles, maintaining optimal vehicle utilization, while the API and Webhooks would facilitate integration with mobile apps to provide real-time updates to customers.</li>
**Routing:** Fleetbase ships with a default OSRM server hosted by `[router.project-osrm.org](https://router.project-osrm.org)` but youre able to use your own or any other OSRM compatible server. You can modify this in the `console/environments` directory by modifying the .env file of the environment youre deploying and setting the `OSRM_HOST` to the OSRM server for Fleetbase to use.
<li><strong>Third-party Logistics (3PL) Provider</strong>: A 3PL provider could use Fleetbase for comprehensive management of its services. From real-time tracking of cargo to managing service rates and integration with other vendors in the supply chain, Fleetbase could provide an all-in-one solution.</li>
<li><strong>Developer Resource Management</strong>: Developers building complex, resource-intensive applications could benefit from Fleetbase's Dev Console. API keys and webhook management could streamline the secure interaction between different software components. At the same time, sockets, logs, and API events management tools would assist in maintaining, troubleshooting, and improving the system.</li>
**Services:** There are a few environment variables which need to be set for Fleetbase to function with full features. If you're deploying with docker then it's easiest to just create a `docker-compose.override.yml` and supply the environment variables in this file.
<li><strong>Public Transportation Systems</strong>: City transportation services could use Fleetbase to optimize their bus or subway operations. With FleetOps, they could have real-time tracking of their vehicles, ensuring that schedules are met promptly and delays are handled effectively. Moreover, service rates management could assist in setting and adjusting fares, while the API and Webhooks functionality could integrate with public apps to provide real-time updates to commuters about arrivals, delays, and route changes.</li>
```yaml
version: "3.8"
services:
application:
environment:
CONSOLE_HOST: http://localhost:4200
MAIL_MAILER: (ses, smtp, mailgun, postmark, sendgrid)
OSRM_HOST: https://router.project-osrm.org
IPINFO_API_KEY:
GOOGLE_MAPS_API_KEY:
GOOGLE_MAPS_LOCALE: us
TWILIO_SID:
TWILIO_TOKEN:
TWILIO_FROM:
<li><strong>Fleet Leasing Companies</strong>: Fleet leasing companies could employ Fleetbase to manage their vehicle assets and track their status in real time. From managing service rates to ensuring the best utilization of assets, FleetOps could provide a holistic solution. Moreover, the Storefront extension could be used to list available vehicles and manage online reservations seamlessly.</li>
socket:
environment:
# IMPORTANT: Configure WebSocket origins for security
# Development (localhost only - include WebSocket protocols):
SOCKETCLUSTER_OPTIONS: '{"origins":"http://localhost:*,https://localhost:*,ws://localhost:*,wss://localhost:*"}'
# Production (replace with your actual domain):
# SOCKETCLUSTER_OPTIONS: '{"origins":"https://yourdomain.com:*,wss://yourdomain.com:*"}'
```
<li><strong>Emergency Services</strong>: Emergency services like ambulance or firefighting departments could use Fleetbase to manage their operations. FleetOps would provide real-time tracking, ensuring that emergency vehicles are dispatched quickly and the fastest routes are chosen. In addition, the API and Webhooks functionality could allow integration with emergency call centers, ensuring a seamless flow of information and a swift response to emergencies.</li>
</ul>
**WebSocket Security:** The `SOCKETCLUSTER_OPTIONS` environment variable controls which domains can connect to the WebSocket server. Always restrict origins to your specific domains in production to prevent security vulnerabilities.
Remember, these are just a few examples. Given the modular and extensible nature of Fleetbase, it can be customized and scaled to fit many other use cases across different industries.
You can learn more about full installation, and configuration in the [official documentation](https://docs.fleetbase.io/getting-started/install).
# 💾 Installation
## 🚀 Deploy on AWS in One Click
Getting Fleetbase up and running on your system using Docker and Docker-compose is straightforward. Please follow the steps below:
Deploy your complete Fleetbase logistics platform on AWS with enterprise-grade security, scalability, and reliability. No DevOps expertise required!
### Prerequisites
[![Deploy to AWS](https://img.shields.io/badge/Deploy%20to%20AWS-FF9900?style=for-the-badge&logo=amazon-aws&logoColor=white)](https://console.fleetbase.io/aws-marketplace)
<ul>
<li>Ensure that you have Docker and Docker-compose installed on your system. If not, you can download and install them from their respective official websites:
<ul>
<li><a href="https://docs.docker.com/get-docker/" target="_docker">Docker</a></li>
<li><a href="https://docs.docker.com/compose/install/" target="_docker_compose">Docker Compose</a></li>
</ul>
</li>
<li>
Clone the Fleetbase repository to your local machine:
<pre>bash git clone https://github.com/fleetbase/fleetbase.git</pre>
</li>
<li>
Navigate to the cloned repository:
<pre>cd fleetbase</pre>
</li>
</ul>
### ✨ What You Get
### Build and Run Fleetbase
- **Complete AWS Infrastructure**: ECS Fargate, RDS MySQL, ElastiCache Redis, S3, CloudFront, and more
- **25-Minute Setup**: From zero to production-ready logistics platform
- **Enterprise Security**: VPC isolation, encrypted storage, secrets management
- **Auto-Scaling**: Handle traffic spikes with ECS Fargate auto-scaling
- **High Availability**: Multi-AZ deployment with 99.9% uptime SLA
- **Cost Optimized**: Pay-as-you-use with optimized resource allocation
<ol>
<li>
<strong>Start the Docker daemon:</strong>
Ensure the Docker daemon is running on your machine. You can either start Docker Desktop or either executed by running:
<pre>sudo systemctl start docker</pre>
</li>
<li>
<strong>Build the Docker containers:</strong>
Use Docker Compose to build and run the necessary containers. In the root directory of the Fleetbase repository, run:
<pre>docker-compose up -d</pre>
</li>
</ol>
### 🏗️ Infrastructure Included
### Access Fleetbase
Your AWS deployment includes a complete, production-ready infrastructure stack:
Now that Fleetbase is up and running via Docker you can find the console and the API accessible:
- **Compute**: ECS Fargate cluster with auto-scaling services
- **Database**: RDS MySQL 8.0 with automated backups and Multi-AZ support
- **Cache**: ElastiCache Redis for high-performance caching
- **Storage**: S3 object storage with CloudFront CDN for global distribution
- **Networking**: VPC with private subnets, NAT gateways, and security groups
- **Load Balancing**: Application Load Balancer with SSL certificates
- **Monitoring**: CloudWatch logs, container insights, and health monitoring
- **Messaging**: SQS message queues for background job processing
<ul>
<li>Fleetbase Console: <code>http://localhost:4200</code></li>
<li>Fleetbase API: <code>http://localhost:8000</code></li>
</ul>
[**🚀 Deploy Now**](https://console.fleetbase.io/aws-marketplace) | [**📖 Learn More**](https://docs.fleetbase.io/category/deploying/aws)
# 🧩 Extensions
# 🧩 Extensions
Fleetbase extensions provide a powerful way to enhance and customize the functionality of Fleetbase to suit your specific needs. They are standalone modules that seamlessly integrate with Fleetbase's frontend and backend, allowing you to extend its capabilities.
Extensions are modular components that enhance the functionality of your Fleetbase instance. They allow you to add new features, customize existing behavior, or integrate with external systems.
### What are Fleetbase Extensions?
Fleetbase Extensions are built using both a backend PHP package and a frontend Ember Engine Addon. They are designed to blend seamlessly into the Fleetbase ecosystem, utilizing shared services, utilities, stylesheets, components, and template helpers.
You can find extensions available from the official [Fleetbase Console](https://console.fleetbase.io), here you will also be able get your registry token to install extensions to a self-hosted Fleetbase instance.
### How do Extensions Work?
<ul>
<li><strong>Backend</strong>: The backend of an extension is developed as a PHP package. This package should utilize the composer package `fleetbase/core-api`, which provides core API functionalities, making it easier to integrate your extension with Fleetbase's backend.</li>
<li><strong>Engine</strong>: The frontend of an extension is built as an Ember Engine Addon. The Addon must require the packages `@fleetbase/ember-core` and `@fleetbase/ember-ui`. The `@fleetbase/ember-core` package provides core services and utilities that help to align your extension with Fleetbase's frontend. The `@fleetbase/ember-ui` package, on the other hand, supplies all the stylesheets, components, and template helpers needed to design a Fleetbase extension that seamlessly matches the look and feel of the Fleetbase UI.</li>
</ul>
Additionally you're able to develop and publish your own extensions as well which you can read more about developing extensions via the [extension building guide](https://docs.fleetbase.io/developers/building-an-extension).
### Building a Fleetbase Extension
To create a Fleetbase extension, follow these steps:
## ⌨️ Fleetbase CLI
<ul>
<li><strong>Backend PHP Package Creation</strong>: Begin by creating a backend PHP package. Make sure to use the composer package `fleetbase/core-api` to ensure smooth integration with Fleetbase's backend.</li>
<li><strong>Frontend Ember Engine Addon</strong>: Next, you need to create the frontend of the extension using Ember Engine. Be sure to include the `@fleetbase/ember-core` and `@fleetbase/ember-ui` packages. These packages provide necessary services, utilities, and design components for aligning your extension with Fleetbase's UI.</li>
The Fleetbase CLI is a powerful tool designed to simplify the management of extensions for your Fleetbase instance. With the CLI, you can effortlessly handle authentication, install and uninstall extensions, and scaffold new extensions if you are developing your own.
<li><strong>Integrate Your Extension</strong>: Once you have the backend and frontend ready, you can integrate your extension into Fleetbase by installing it via the respective package managers. In the future you will be able to publish your extension to the Fleetbase extensions repository making it available to all instances of Fleetbase with the ability to even sell your extension.</li>
</ul>
Get started with the CLI with npm:
With Fleetbase's modular architecture, you can develop your extensions to solve unique problems, enhance existing functionality, or add entirely new capabilities to your Fleetbase instance. This extensibility allows Fleetbase to adapt and evolve with your growing business needs.
```bash
npm i -g @fleetbase/cli
```
Once installed, you can access a variety of commands to manage your Fleetbase extensions.
# 📱 Apps
@@ -229,40 +214,33 @@ Fleetbase offers a few open sourced apps which are built on Fleetbase which can
<li><a href="https://github.com/fleetbase/navigator-app">Navigator App</a>: Fleetbase based driver app which can be used for drivers to manage and update order, additionally provides real time driver location which can be viewed in the Fleetbase Console.</li>
</ul>
# 🛣 Roadmap
## 🛣 Roadmap
1. **Inventory and Warehouse Management** ~ Pallet will be Fleetbases first official extension for WMS & Inventory.
2. **Accounting and Invoicing** ~ Ledger will be Fleetbases first official extension accounting and invoicing.
3. **AI** ~ AI Agent intrgation for system and workflows.
4. **Dynamic Rules System** ~ Trigger events, tasks jobs from a rule builder on resources.
<ol>
<li>Install Flow & System Configuration from Console</li>
<li>Open Source Extension Repository</li>
<li>Inventory and Warehouse Management Extension</li>
<li>Freight Forwarder Quote Parser/ System Extension</li>
</ol>
# 🪲 Bugs and 💡 Feature Requests
## 🪲 Bugs and 💡 Feature Requests
Have a bug or a feature request? Please check the <a href="https://github.com/fleetbase/fleetbase/issues">issue tracker</a> and search for existing and closed issues. If your problem or idea is not addressed yet, please <a href="https://github.com/fleetbase/fleetbase/issues/new">open a new issue</a>.
# 📚 Documentation
## 👨‍💻 Contributing
View and contribute to our <a href="https://github.com/fleetbase/guides">Fleetbase Guide's</a> and <a href="https://github.com/fleetbase/api-reference">API Reference</a>
Please read through our <a href="https://github.com/fleetbase/fleetbase/blob/main/CONTRIBUTING.md">contributing guidelines</a>. Included are directions for opening issues, coding standards, and notes on development.
# 👨‍💻 Contributing
## 👥 Community
Please read through our <a href="https://github.com/fleetbase/fleetbase/blob/main/.github/CONTRIBUTING.md">contributing guidelines</a>. Included are directions for opening issues, coding standards, and notes on development.
# 👥 Community
Get updates on Fleetbase's development and chat with the project maintainers and community members.
Get updates on Fleetbase's development and chat with the project maintainers and community members by joining our <a href="https://discord.gg/V7RVWRQ2Wm">Discord</a>.
<ul>
<li>Follow <a href="https://twitter.com/fleetbase_io">@fleetbase_io on Twitter</a>.</li>
<li>Follow <a href="https://x.com/fleetbase_io">@fleetbase_io on X</a>.</li>
<li>Read and subscribe to <a href="https://www.fleetbase.io/blog-2">The Official Fleetbase Blog</a>.</li>
<li>Ask and explore <a href="https://github.com/orgs/fleetbase/discussions">our GitHub Discussions</a>.</li>
</ul>
<p dir="auto">See the <a href="https://github.com/fleetbase/fleetbase/releases">Releases</a> section of our GitHub project for changelogs for each release version of Fleetbase.</p>
<p>Release announcement posts on <a href="https://www.fleetbase.io/blog-2" rel="nofollow">the official Fleetbase blog</a> contain summaries of the most noteworthy changes made in each release.</p>
# Creators
## Creators
<p dir="auto"><strong>Ronald A. Richardson</strong>- Co-founder &amp; CTO</p>
<img src="https://user-images.githubusercontent.com/58805033/230263021-212f2553-1269-473d-be94-313cb3eecfa5.png" alt="Ron Image" width="75" height="75" style="max-width: 100%;">
@@ -275,4 +253,5 @@ Get updates on Fleetbase's development and chat with the project maintainers and
# License & Copyright
Code and documentation copyright 20182023 the <a href="https://github.com/fleetbase/fleetbase/graphs/contributors">Fleetbase Authors</a>. Code released under the <a href="https://github.com/fleetbase/storefront-app/blob/main/LICENSE.md">MIT License</a>.
Fleetbase is made available under the terms of the <a href="https://www.gnu.org/licenses/agpl-3.0.html" target="_blank">GNU Affero General Public License 3.0 (AGPL 3.0)</a>. For other licenses <a href="mailto:hello@fleetbase.io" target="_blank">contact us</a>.

36
RELEASE.md Normal file
View File

@@ -0,0 +1,36 @@
# 🚀 Fleetbase v0.7.25 — 2025-12-29
> "New SMS service to support multiple SMS providers + framework improvements"
---
## ✨ Highlights
- Removed `window.Fleetbase` for improved frontend security
- Improved query optimizations
- Added new SMS service to support multiple SMS providers
---
## ⚠️ Breaking Changes
- None 🙂
---
## 🔧 Upgrade Steps
```bash
# Pull latest version
git pull origin main --no-rebase
# Update docker
docker compose pull
docker compose down && docker compose up -d
# Run deploy script
docker compose exec application bash -c "./deploy.sh"
```
---
## Need help?
Join the discussion on [GitHub Discussions](https://github.com/fleetbase/ember-ui/discussions) or drop by [#fleetbase on Discord](https://discord.com/invite/HnTqQ6zAVn)

39
SECURITY.md Normal file
View File

@@ -0,0 +1,39 @@
Contact: hello@fleetbase.io
Based on: https://supabase.com/.well-known/security.txt
At Fleetbase, we consider the security of our systems a top priority. But no matter how much effort we put into system security, there can still be vulnerabilities present.
If you discover a vulnerability, we would like to know about it so we can take steps to address it as quickly as possible. We would like to ask you to help us better protect our clients and our systems.
Out of scope vulnerabilities:
- Clickjacking on pages with no sensitive actions.
- Unauthenticated/logout/login CSRF.
- Attacks requiring MITM or physical access to a user's device.
- Any activity that could lead to the disruption of our service (DoS).
- Content spoofing and text injection issues without showing an attack vector/without being able to modify HTML/CSS.
- Email spoofing
- Missing DNSSEC, CAA, CSP headers
- Lack of Secure or HTTP only flag on non-sensitive cookies
- Deadlinks
Please do the following:
- E-mail your findings to hello@fleetbase.io.
- Do not run automated scanners on our infrastructure or dashboard. If you wish to do this, contact us and we will set up a sandbox for you.
- Do not take advantage of the vulnerability or problem you have discovered, for example by downloading more data than necessary to demonstrate the vulnerability or deleting or modifying other people's data,
- Do not reveal the problem to others until it has been resolved,
- Do not use attacks on physical security, social engineering, distributed denial of service, spam or applications of third parties, and
- Do provide sufficient information to reproduce the problem, so we will be able to resolve it as quickly as possible. Usually, the IP address or the URL of the affected system and a description of the vulnerability will be sufficient, but complex vulnerabilities may require further explanation.
What we promise:
- We will respond to your report within 3 business days with our evaluation of the report and an expected resolution date,
- If you have followed the instructions above, we will not take any legal action against you in regard to the report,
- We will handle your report with strict confidentiality, and not pass on your personal details to third parties without your permission,
- We will keep you informed of the progress towards resolving the problem,
- In the public information concerning the problem reported, we will give your name as the discoverer of the problem (unless you desire otherwise), and
We strive to resolve all problems as quickly as possible, and we would like to play an active role in the ultimate publication on the problem after it is resolved.

100
TRANSLATING.md Normal file
View File

@@ -0,0 +1,100 @@
# Contributing to Fleetbase Translations
First off, thank you for considering contributing to Fleetbase translations! Your efforts help make Fleetbase accessible to a global audience. This guide will walk you through the process of adding or updating language translations for the Fleetbase platform and its various extensions.
## Understanding the Structure
Fleetbase is a modular system. The main application, known as Fleetbase Console, has its own set of translations. Additionally, each extension (like FleetOps or Storefront) also contains its own translation files. This means that to provide a complete translation for a specific language, you may need to contribute to multiple repositories.
- **Main Application (`fleetbase/fleetbase`)**: Contains the core translation files for the Fleetbase Console.
- **Extensions/Modules**: Each extension has its own repository and its own set of translation files.
## File Format and Location
All translation files are in the **YAML** format (`.yaml` or `.yml`). The base language for all translations is American English (`en-us.yaml`).
- In the main `fleetbase/fleetbase` repository, the translation files are located at `./console/translations/`.
- In each extension repository, the translation files are located at `./translations/`.
Translation files are named using the language and region code, for example:
- `en-us.yaml` (American English)
- `fr-fr.yaml` (French, France)
- `zh-cn.yaml` (Chinese, Simplified)
## How to Contribute Translations
Follow these steps to contribute a new translation or update an existing one.
### Step 1: Fork and Clone the Repository
First, you need to fork the repository you want to contribute to. This could be the main `fleetbase/fleetbase` repository or one of the extension repositories. After forking, clone it to your local machine.
### Step 2: Create or Update a Language File
Navigate to the appropriate translations directory (`./console/translations/` or `./translations/`).
- **To add a new language**: Copy the `en-us.yaml` file and rename it to your target language code (e.g., `es-es.yaml`).
- **To update an existing language**: Open the existing language file. You can compare it with `en-us.yaml` to find missing keys or phrases that need updating.
### Step 3: Translate the Content
Open the YAML file in a text editor. You will see a structure of nested keys and values.
```yaml
# Example from en-us.yaml
common:
new: New
create: Create
delete-selected-count: Delete {count} Selected
```
When translating, you should:
- **Only translate the values**, not the keys. For example, in `new: New`, you would only translate `New`.
- **Keep placeholders intact**. Some phrases contain placeholders like `{count}` or `{resource}`. These should not be translated. They are used by the application to insert dynamic values.
Here is an example of the French translation for the keys above:
```yaml
# Example from fr-fr.yaml
common:
new: Nouveau
create: Créer
delete-selected-count: Supprimer {count} sélectionné(s)
```
### Step 4: Submit a Pull Request
Once you have finished translating, commit your changes and push them to your forked repository. Then, open a pull request to the original Fleetbase repository.
- Make sure your pull request has a clear title and description of the changes you made.
- If you are translating an extension, you may need to submit a pull request to the extension's repository. If your changes also affect the main console, a separate PR to the `fleetbase/fleetbase` repository might be necessary.
Your contribution will be reviewed by the Fleetbase team, and once approved, it will be merged into the project.
## Translation Repositories
Here is a list of the primary repositories that accept translation contributions:
| Repository | Translation Path |
| ---------------------------------------- | ----------------------------- |
| [fleetbase/fleetbase][1] | `./console/translations/` |
| [fleetbase/fleetops][2] | `./translations/` |
| [fleetbase/storefront][3] | `./translations/` |
| [fleetbase/dev-engine][4] | `./translations/` |
| [fleetbase/iam-engine][5] | `./translations/` |
| [fleetbase/pallet][6] | `./translations/` |
| [fleetbase/ledger][7] | `./translations/` |
| [fleetbase/registry-bridge][8] | `./translations/` |
[1]: https://github.com/fleetbase/fleetbase
[2]: https://github.com/fleetbase/fleetops
[3]: https://github.com/fleetbase/storefront
[4]: https://github.com/fleetbase/dev-engine
[5]: https://github.com/fleetbase/iam-engine
[6]: https://github.com/fleetbase/pallet
[7]: https://github.com/fleetbase/ledger
[8]: https://github.com/fleetbase/registry-bridge
Thank you again for your contribution to the Fleetbase community!

4
api/.gitignore vendored
View File

@@ -13,3 +13,7 @@ npm-debug.log
yarn-error.log
/.idea
/.vscode
.composer.dev.json
/caddy
frankenphp
frankenphp-worker.php

View File

@@ -1,64 +0,0 @@
<p align="center"><a href="https://laravel.com" target="_blank"><img src="https://raw.githubusercontent.com/laravel/art/master/logo-lockup/5%20SVG/2%20CMYK/1%20Full%20Color/laravel-logolockup-cmyk-red.svg" width="400"></a></p>
<p align="center">
<a href="https://travis-ci.org/laravel/framework"><img src="https://travis-ci.org/laravel/framework.svg" alt="Build Status"></a>
<a href="https://packagist.org/packages/laravel/framework"><img src="https://img.shields.io/packagist/dt/laravel/framework" alt="Total Downloads"></a>
<a href="https://packagist.org/packages/laravel/framework"><img src="https://img.shields.io/packagist/v/laravel/framework" alt="Latest Stable Version"></a>
<a href="https://packagist.org/packages/laravel/framework"><img src="https://img.shields.io/packagist/l/laravel/framework" alt="License"></a>
</p>
## About Laravel
Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experience to be truly fulfilling. Laravel takes the pain out of development by easing common tasks used in many web projects, such as:
- [Simple, fast routing engine](https://laravel.com/docs/routing).
- [Powerful dependency injection container](https://laravel.com/docs/container).
- Multiple back-ends for [session](https://laravel.com/docs/session) and [cache](https://laravel.com/docs/cache) storage.
- Expressive, intuitive [database ORM](https://laravel.com/docs/eloquent).
- Database agnostic [schema migrations](https://laravel.com/docs/migrations).
- [Robust background job processing](https://laravel.com/docs/queues).
- [Real-time event broadcasting](https://laravel.com/docs/broadcasting).
Laravel is accessible, powerful, and provides tools required for large, robust applications.
## Learning Laravel
Laravel has the most extensive and thorough [documentation](https://laravel.com/docs) and video tutorial library of all modern web application frameworks, making it a breeze to get started with the framework.
If you don't feel like reading, [Laracasts](https://laracasts.com) can help. Laracasts contains over 1500 video tutorials on a range of topics including Laravel, modern PHP, unit testing, and JavaScript. Boost your skills by digging into our comprehensive video library.
## Laravel Sponsors
We would like to extend our thanks to the following sponsors for funding Laravel development. If you are interested in becoming a sponsor, please visit the Laravel [Patreon page](https://patreon.com/taylorotwell).
### Premium Partners
- **[Vehikl](https://vehikl.com/)**
- **[Tighten Co.](https://tighten.co)**
- **[Kirschbaum Development Group](https://kirschbaumdevelopment.com)**
- **[64 Robots](https://64robots.com)**
- **[Cubet Techno Labs](https://cubettech.com)**
- **[Cyber-Duck](https://cyber-duck.co.uk)**
- **[Many](https://www.many.co.uk)**
- **[Webdock, Fast VPS Hosting](https://www.webdock.io/en)**
- **[DevSquad](https://devsquad.com)**
- **[Curotec](https://www.curotec.com/services/technologies/laravel/)**
- **[OP.GG](https://op.gg)**
- **[WebReinvent](https://webreinvent.com/?utm_source=laravel&utm_medium=github&utm_campaign=patreon-sponsors)**
- **[Lendio](https://lendio.com)**
## Contributing
Thank you for considering contributing to the Laravel framework! The contribution guide can be found in the [Laravel documentation](https://laravel.com/docs/contributions).
## Code of Conduct
In order to ensure that the Laravel community is welcoming to all, please review and abide by the [Code of Conduct](https://laravel.com/docs/contributions#code-of-conduct).
## Security Vulnerabilities
If you discover a security vulnerability within Laravel, please send an e-mail to Taylor Otwell via [taylor@laravel.com](mailto:taylor@laravel.com). All security vulnerabilities will be promptly addressed.
## License
The Laravel framework is open-sourced software licensed under the [MIT license](https://opensource.org/licenses/MIT).

View File

@@ -2,20 +2,10 @@
namespace App\Exceptions;
use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;
use Throwable;
use Fleetbase\Exceptions\Handler as ExceptionHandler;
class Handler extends ExceptionHandler
{
/**
* A list of the exception types that are not reported.
*
* @var array<int, class-string<Throwable>>
*/
protected $dontReport = [
//
];
/**
* A list of the inputs that are never flashed for validation exceptions.
*
@@ -26,16 +16,4 @@ class Handler extends ExceptionHandler
'password',
'password_confirmation',
];
/**
* Register the exception handling callbacks for the application.
*
* @return void
*/
public function register()
{
$this->reportable(function (Throwable $e) {
//
});
}
}

View File

@@ -16,7 +16,7 @@ class Kernel extends HttpKernel
protected $middleware = [
// \App\Http\Middleware\TrustHosts::class,
\App\Http\Middleware\TrustProxies::class,
\Fruitcake\Cors\HandleCors::class,
\Illuminate\Http\Middleware\HandleCors::class,
\App\Http\Middleware\PreventRequestsDuringMaintenance::class,
\Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
\App\Http\Middleware\TrimStrings::class,
@@ -40,8 +40,6 @@ class Kernel extends HttpKernel
],
'api' => [
// \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class,
'throttle:api',
\Illuminate\Routing\Middleware\SubstituteBindings::class,
],
];

View File

@@ -14,8 +14,6 @@ class Authenticate extends Middleware
*/
protected function redirectTo($request)
{
if (! $request->expectsJson()) {
return route('login');
}
return response()->error('Unauthenticated.');
}
}

View File

@@ -2,10 +2,8 @@
namespace App\Providers;
use Illuminate\Cache\RateLimiting\Limit;
use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\RateLimiter;
use Illuminate\Support\Facades\Route;
class RouteServiceProvider extends ServiceProvider
@@ -17,17 +15,15 @@ class RouteServiceProvider extends ServiceProvider
*/
public function boot()
{
$this->configureRateLimiting();
$this->routes(
function () {
Route::get(
'/status',
function () {
'/health',
function (Request $request) {
return response()->json(
[
'status' => 'ok',
'time' => microtime(true) - LARAVEL_START
'time' => microtime(true) - $request->attributes->get('request_start_time')
]
);
}
@@ -35,19 +31,4 @@ class RouteServiceProvider extends ServiceProvider
}
);
}
/**
* Configure the rate limiters for the application.
*
* @return void
*/
protected function configureRateLimiting()
{
RateLimiter::for(
'api',
function (Request $request) {
return Limit::perMinute(60)->by(optional($request->user())->id ?: $request->ip());
}
);
}
}

View File

@@ -1,33 +1,76 @@
{
"name": "laravel/laravel",
"name": "fleetbase/fleetbase",
"type": "project",
"description": "The Laravel Framework.",
"keywords": ["framework", "laravel"],
"license": "MIT",
"description": "Modular logistics and supply chain operating system (LSOS)",
"keywords": [
"framework",
"laravel"
],
"license": "AGPL-3.0-or-later",
"authors": [
{
"name": "Fleetbase Pte Ltd.",
"email": "hello@fleetbase.io"
},
{
"name": "Ronald A. Richardson",
"email": "ron@fleetbase.io"
}
],
"require": {
"php": "^7.3|^8.0",
"fleetbase/core-api": "^1.0.3-alpha",
"fleetbase/fleetops-api": "^1.0.1-alpha",
"fleetbase/storefront-api": "^1.0.1-alpha",
"fruitcake/laravel-cors": "^2.0",
"php": ">=8.0 <=8.2.28",
"appstract/laravel-opcache": "^4.0",
"fleetbase/aws-marketplace": "^0.0.8",
"fleetbase/billing-api": "^0.1.12",
"fleetbase/core-api": "^1.6.32",
"fleetbase/customer-portal-api": "^0.0.10",
"fleetbase/fleetops-api": "^0.6.32",
"fleetbase/flespi-integration": "^0.1.16",
"fleetbase/internals-api": "^0.0.23",
"fleetbase/registry-bridge": "^0.1.2",
"fleetbase/samsara-api": "^0.0.3",
"fleetbase/solid-api": "^0.0.7",
"fleetbase/storefront-api": "^0.4.10",
"fleetbase/valhalla-api": "^0.0.3",
"fleetbase/vroom-api": "^0.0.3",
"guzzlehttp/guzzle": "^7.0.1",
"laravel/framework": "^8.75",
"laravel/sanctum": "^2.11",
"laravel/tinker": "^2.5",
"laravel/framework": "^10.0",
"laravel/octane": "^2.3",
"laravel/tinker": "^2.9",
"league/flysystem-aws-s3-v3": "^3.0",
"maatwebsite/excel": "^3.1",
"maennchen/zipstream-php": "3.1.2",
"phpoffice/phpspreadsheet": "^1.28",
"predis/predis": "^2.1",
"psr/http-factory-implementation": "*",
"textalk/websocket": "^1.6"
"resend/resend-php": "^0.14.0",
"s-ichikawa/laravel-sendgrid-driver": "^4.0",
"stripe/stripe-php": "13.13.0",
"symfony/mailgun-mailer": "^7.1",
"symfony/postmark-mailer": "^7.1"
},
"require-dev": {
"facade/ignition": "^2.5",
"spatie/laravel-ignition": "^2.0",
"fakerphp/faker": "^1.9.1",
"kitloong/laravel-migrations-generator": "^6.10",
"laravel/sail": "^1.0.1",
"mockery/mockery": "^1.4.4",
"nunomaduro/collision": "^5.10",
"phpunit/phpunit": "^9.5.10"
"nunomaduro/collision": "^7.0",
"phpunit/phpunit": "^10.0"
},
"repositories": [
{
"type": "composer",
"url": "https://registry.fleetbase.io"
},
{
"type": "vcs",
"url": "https://github.com/fleetbase/aws-marketplace"
},
{
"type": "vcs",
"url": "https://github.com/fleetbase/internals"
}
],
"autoload": {
"psr-4": {
"App\\": "app/",
@@ -63,15 +106,6 @@
],
"clean-logs": [
"composer run-script clear-logs"
],
"dock": [
"docker exec -it fleetbase_os_application_1 /usr/bin/tmux -u new"
],
"dock-server": [
"docker exec -it fleetbase_os_httpd_1 /bin/sh"
],
"tunnel": [
"ngrok http --region=ap --hostname=fleetbase.ap.ngrok.io 8000"
]
},
"extra": {
@@ -80,6 +114,7 @@
}
},
"config": {
"secure-http": false,
"optimize-autoloader": true,
"preferred-install": "dist",
"sort-packages": true,

13669
api/composer.lock generated

File diff suppressed because it is too large Load Diff

View File

@@ -13,7 +13,7 @@ return [
|
*/
'name' => env('APP_NAME', 'Laravel'),
'name' => env('APP_NAME', 'Fleetbase'),
/*
|--------------------------------------------------------------------------
@@ -26,7 +26,7 @@ return [
|
*/
'env' => env('APP_ENV', 'production'),
'env' => env('APP_ENV', env('ENVIRONMENT', 'production')),
/*
|--------------------------------------------------------------------------
@@ -52,7 +52,7 @@ return [
|
*/
'url' => env('APP_URL', 'http://localhost'),
'url' => env('APP_URL', 'http://localhost:8000'),
'asset_url' => env('ASSET_URL', null),
@@ -165,7 +165,7 @@ return [
/*
* Package Service Providers...
*/
/*
* Application Service Providers...
*/

View File

@@ -15,7 +15,7 @@ return [
|
*/
'default' => env('BROADCAST_DRIVER', 'null'),
'default' => env('BROADCAST_DRIVER', 'socketcluster'),
/*
|--------------------------------------------------------------------------

View File

@@ -15,7 +15,7 @@ return [
|
*/
'default' => env('CACHE_DRIVER', 'file'),
'default' => env('CACHE_DRIVER', 'redis'),
/*
|--------------------------------------------------------------------------

View File

@@ -1,5 +1,7 @@
<?php
use Fleetbase\Support\Utils;
return [
/*
@@ -15,17 +17,17 @@ return [
|
*/
'paths' => ['/*', 'sanctum/csrf-cookie'],
'paths' => ['*', 'sanctum/csrf-cookie'],
'allowed_methods' => ['*'],
'allowed_origins' => ['http://localhost:4200'],
'allowed_origins' => array_filter(['http://localhost:4200', env('CONSOLE_HOST'), Utils::addWwwToUrl(env('CONSOLE_HOST')), ...Utils::arrayFrom(env('FRONTEND_HOSTS', ''))]),
'allowed_origins_patterns' => [],
'allowed_headers' => ['*'],
'exposed_headers' => [],
'exposed_headers' => ['x-compressed-json', 'access-console-sandbox', 'access-console-sandbox-key', 'content-disposition'],
'max_age' => 0,

View File

@@ -13,7 +13,7 @@ return [
|
*/
'default' => env('FILESYSTEM_DRIVER', 'local'),
'default' => env('FILESYSTEM_DRIVER', 'public'),
/*
|--------------------------------------------------------------------------
@@ -32,34 +32,34 @@ return [
'local' => [
'driver' => 'local',
'root' => storage_path('app'),
'root' => storage_path('app')
],
'public' => [
'driver' => 'local',
'root' => storage_path('app/public'),
'url' => env('APP_URL').'/storage',
'visibility' => 'public',
],
'uploads' => [
'driver' => 'local',
'root' => storage_path('app/uploads'),
'url' => env('APP_URL').'/uploads',
'visibility' => 'public',
'url' => env('APP_URL') . '/storage',
],
's3' => [
'driver' => 's3',
'key' => env('AWS_ACCESS_KEY_ID'),
'secret' => env('AWS_SECRET_ACCESS_KEY'),
'region' => env('AWS_DEFAULT_REGION'),
'region' => env('AWS_DEFAULT_REGION', 'ap-southeast-1'),
'bucket' => env('AWS_BUCKET'),
'url' => env('AWS_URL'),
'endpoint' => env('AWS_ENDPOINT'),
'use_path_style_endpoint' => env('AWS_USE_PATH_STYLE_ENDPOINT', false),
],
'gcs' => [
'driver' => 'gcs',
'project_id' => env('GOOGLE_CLOUD_PROJECT_ID', 'your-project-id'),
'key_file' => env('GOOGLE_CLOUD_KEY_FILE', null),
'bucket' => env('GOOGLE_CLOUD_STORAGE_BUCKET', env('AWS_BUCKET')),
'path_prefix' => env('GOOGLE_CLOUD_STORAGE_PATH_PREFIX', null),
'storage_api_uri' => env('GOOGLE_CLOUD_STORAGE_API_URI', env('AWS_URL')),
'visibility_handler' => \League\Flysystem\GoogleCloudStorage\UniformBucketLevelAccessVisibility::class,
],
],
/*
@@ -74,8 +74,7 @@ return [
*/
'links' => [
public_path('storage') => storage_path('app/public'),
public_path('uploads') => storage_path('app/uploads'),
public_path('storage') => storage_path('app/public')
],
];

View File

@@ -1,5 +1,6 @@
<?php
use Monolog\Formatter\JsonFormatter;
use Monolog\Handler\NullHandler;
use Monolog\Handler\StreamHandler;
use Monolog\Handler\SyslogUdpHandler;
@@ -50,7 +51,7 @@ return [
'channels' => [
'stack' => [
'driver' => 'stack',
'channels' => ['single'],
'channels' => ['single', 'stdout'],
'ignore_exceptions' => false,
],
@@ -89,12 +90,21 @@ return [
'driver' => 'monolog',
'level' => env('LOG_LEVEL', 'debug'),
'handler' => StreamHandler::class,
'formatter' => env('LOG_STDERR_FORMATTER'),
'formatter' => JsonFormatter::class,
'with' => [
'stream' => 'php://stderr',
],
],
'stdout' => [
'driver' => 'monolog',
'handler' => StreamHandler::class,
'formatter' => JsonFormatter::class,
'with' => [
'stream' => 'php://stdout',
],
],
'syslog' => [
'driver' => 'syslog',
'level' => env('LOG_LEVEL', 'debug'),

View File

@@ -50,7 +50,6 @@ return [
'key' => env('AWS_ACCESS_KEY_ID'),
'secret' => env('AWS_SECRET_ACCESS_KEY'),
'region' => env('AWS_DEFAULT_REGION'),
'version' => '2010-12-01'
],
'mailgun' => [
@@ -61,6 +60,24 @@ return [
'transport' => 'postmark',
],
'sendgrid' => [
'transport' => 'sendgrid',
],
'resend' => [],
'microsoft-graph' => [
'transport' => 'microsoft-graph',
'client_id' => env('MICROSOFT_GRAPH_CLIENT_ID'),
'client_secret' => env('MICROSOFT_GRAPH_CLIENT_SECRET'),
'tenant_id' => env('MICROSOFT_GRAPH_TENANT_ID'),
'from' => [
'address' => env('MAIL_FROM_ADDRESS', 'hello@fleetbase.io'),
'name' => env('MAIL_FROM_NAME', env('APP_NAME', 'Fleetbase')),
],
'save_to_sent_items' => env('MAIL_SAVE_TO_SENT_ITEMS', false),
],
'sendmail' => [
'transport' => 'sendmail',
'path' => env('MAIL_SENDMAIL_PATH', '/usr/sbin/sendmail -t -i'),
@@ -96,8 +113,8 @@ return [
*/
'from' => [
'address' => env('MAIL_FROM_ADDRESS', 'hello@example.com'),
'name' => env('MAIL_FROM_NAME', 'Example'),
'address' => env('MAIL_FROM_ADDRESS', 'hello@fleetbase.io'),
'name' => env('MAIL_FROM_NAME', env('APP_NAME', 'Fleetbase')),
],
/*

225
api/config/octane.php Normal file
View File

@@ -0,0 +1,225 @@
<?php
use Fleetbase\Support\Utils;
use Laravel\Octane\Contracts\OperationTerminated;
use Laravel\Octane\Events\RequestHandled;
use Laravel\Octane\Events\RequestReceived;
use Laravel\Octane\Events\RequestTerminated;
use Laravel\Octane\Events\TaskReceived;
use Laravel\Octane\Events\TaskTerminated;
use Laravel\Octane\Events\TickReceived;
use Laravel\Octane\Events\TickTerminated;
use Laravel\Octane\Events\WorkerErrorOccurred;
use Laravel\Octane\Events\WorkerStarting;
use Laravel\Octane\Events\WorkerStopping;
use Laravel\Octane\Listeners\CollectGarbage;
use Laravel\Octane\Listeners\DisconnectFromDatabases;
use Laravel\Octane\Listeners\EnsureUploadedFilesAreValid;
use Laravel\Octane\Listeners\EnsureUploadedFilesCanBeMoved;
use Laravel\Octane\Listeners\FlushOnce;
use Laravel\Octane\Listeners\FlushTemporaryContainerInstances;
use Laravel\Octane\Listeners\FlushUploadedFiles;
use Laravel\Octane\Listeners\ReportException;
use Laravel\Octane\Listeners\StopWorkerIfNecessary;
use Laravel\Octane\Octane;
return [
/*
|--------------------------------------------------------------------------
| Octane Server
|--------------------------------------------------------------------------
|
| This value determines the default "server" that will be used by Octane
| when starting, restarting, or stopping your server via the CLI. You
| are free to change this to the supported server of your choosing.
|
| Supported: "roadrunner", "swoole", "frankenphp"
|
*/
'server' => env('OCTANE_SERVER', 'frankenphp'),
/*
|--------------------------------------------------------------------------
| Force HTTPS
|--------------------------------------------------------------------------
|
| When this configuration value is set to "true", Octane will inform the
| framework that all absolute links must be generated using the HTTPS
| protocol. Otherwise your links may be generated using plain HTTP.
|
*/
'https' => env('OCTANE_HTTPS', false),
/*
|--------------------------------------------------------------------------
| Octane Listeners
|--------------------------------------------------------------------------
|
| All of the event listeners for Octane's events are defined below. These
| listeners are responsible for resetting your application's state for
| the next request. You may even add your own listeners to the list.
|
*/
'listeners' => [
WorkerStarting::class => [
EnsureUploadedFilesAreValid::class,
EnsureUploadedFilesCanBeMoved::class,
],
RequestReceived::class => [
...Octane::prepareApplicationForNextOperation(),
...Octane::prepareApplicationForNextRequest(),
//
],
RequestHandled::class => [
//
],
RequestTerminated::class => [
// FlushUploadedFiles::class,
],
TaskReceived::class => [
...Octane::prepareApplicationForNextOperation(),
//
],
TaskTerminated::class => [
//
],
TickReceived::class => [
...Octane::prepareApplicationForNextOperation(),
//
],
TickTerminated::class => [
//
],
OperationTerminated::class => [
FlushOnce::class,
FlushTemporaryContainerInstances::class,
DisconnectFromDatabases::class,
CollectGarbage::class,
],
WorkerErrorOccurred::class => [
ReportException::class,
StopWorkerIfNecessary::class,
],
WorkerStopping::class => [
//
],
],
/*
|--------------------------------------------------------------------------
| Warm / Flush Bindings
|--------------------------------------------------------------------------
|
| The bindings listed below will either be pre-warmed when a worker boots
| or they will be flushed before every new request. Flushing a binding
| will force the container to resolve that binding again when asked.
|
*/
'warm' => [
...Octane::defaultServicesToWarm(),
],
'flush' => [
//
],
/*
|--------------------------------------------------------------------------
| Octane Swoole Tables
|--------------------------------------------------------------------------
|
| While using Swoole, you may define additional tables as required by the
| application. These tables can be used to store data that needs to be
| quickly accessed by other workers on the particular Swoole server.
|
*/
'tables' => [
'example:1000' => [
'name' => 'string:1000',
'votes' => 'int',
],
],
/*
|--------------------------------------------------------------------------
| Octane Swoole Cache Table
|--------------------------------------------------------------------------
|
| While using Swoole, you may leverage the Octane cache, which is powered
| by a Swoole table. You may set the maximum number of rows as well as
| the number of bytes per row using the configuration options below.
|
*/
'cache' => [
'rows' => 1000,
'bytes' => 10000,
],
/*
|--------------------------------------------------------------------------
| File Watching
|--------------------------------------------------------------------------
|
| The following list of files and directories will be watched when using
| the --watch option offered by Octane. If any of the directories and
| files are changed, Octane will automatically reload your workers.
|
*/
'watch' => [
'app',
'bootstrap',
'config',
'database',
'public/**/*.php',
'resources/**/*.php',
'routes',
'composer.lock',
'.env',
...Utils::arrayFrom(env('OCTANE_WATCH_DIRS'))
],
/*
|--------------------------------------------------------------------------
| Garbage Collection Threshold
|--------------------------------------------------------------------------
|
| When executing long-lived PHP scripts such as Octane, memory can build
| up before being cleared by PHP. You can force Octane to run garbage
| collection if your application consumes this amount of megabytes.
|
*/
'garbage' => 50,
/*
|--------------------------------------------------------------------------
| Maximum Execution Time
|--------------------------------------------------------------------------
|
| The following setting configures the maximum execution time for requests
| being handled by Octane. You may set this value to 0 to indicate that
| there isn't a specific time limit on Octane request execution time.
|
*/
'max_execution_time' => 30,
];

30
api/config/opcache.php Normal file
View File

@@ -0,0 +1,30 @@
<?php
return [
'url' => env('OPCACHE_URL', config('app.url')),
'prefix' => 'opcache-api',
'verify' => true,
'headers' => [],
'directories' => [
base_path('app'),
base_path('bootstrap'),
base_path('public'),
base_path('resources'),
base_path('routes'),
base_path('storage'),
base_path('vendor'),
],
'exclude' => [
'test',
'Test',
'tests',
'Tests',
'stub',
'Stub',
'stubs',
'Stubs',
'dumper',
'Dumper',
'Autoload',
],
];

View File

@@ -13,7 +13,7 @@ return [
|
*/
'default' => env('QUEUE_CONNECTION', 'sync'),
'default' => env('QUEUE_CONNECTION', 'redis'),
/*
|--------------------------------------------------------------------------

View File

@@ -30,4 +30,23 @@ return [
'region' => env('AWS_DEFAULT_REGION', 'us-east-1'),
],
'sendgrid' => [
'api_key' => env('SENDGRID_API_KEY'),
],
'resend' => [
'key' => env('RESEND_KEY'),
],
'stripe' => [
'key' => env('STRIPE_KEY', env('STRIPE_API_KEY')),
'secret' => env('STRIPE_SECRET', env('STRIPE_API_SECRET')),
'webhook_secret' => env('STRIPE_WEBHOOK_SECRET'),
],
'callpromn' => [
'api_key' => env('CALLPROMN_API_KEY', ''),
'from' => env('CALLPROMN_FROM', ''),
'base_url' => env('CALLPROMN_BASE_URL', 'https://api.messagepro.mn' ),
],
];

39
api/deploy.sh Executable file
View File

@@ -0,0 +1,39 @@
#!/bin/sh
# Exit the script as soon as a command fails
set -e
# Create mysql databases if none exists
php artisan mysql:createdb
# Run migrations
php artisan migrate --force
# Run migrations for sandbox too
php artisan sandbox:migrate --force
# Seed database
php artisan fleetbase:seed
# Create permissions, policies, and roles
php artisan fleetbase:create-permissions
# Restart queue
php artisan queue:restart
# Sync scheduler
php artisan schedule-monitor:sync
# Clear cache
php artisan cache:clear
php artisan route:clear
# Optimize
php artisan config:cache
php artisan route:cache
# Initialize registry
php artisan registry:init
# Restart octane
# php artisan octane:reload

5622
api/pnpm-lock.yaml generated Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -1 +0,0 @@
/var/www/html/api/storage/app/uploads

View File

@@ -0,0 +1,19 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| أسطر لغة المصادقة
|--------------------------------------------------------------------------
|
| تحتوي الأسطر التالية على رسائل المصادقة التي نعرضها للمستخدم أثناء
| عمليات تسجيل الدخول أو غيرها. يمكنك تعديل هذه الرسائل حسب متطلباتك.
|
*/
'failed' => 'بيانات الاعتماد هذه غير متطابقة مع سجلاتنا.',
'password' => 'كلمة المرور التي تم إدخالها غير صحيحة.',
'throttle' => 'عدد كبير جداً من محاولات الدخول. يرجى المحاولة مرة أخرى خلال :seconds ثانية.',
];

View File

@@ -0,0 +1,19 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| أسطر لغة الترقيم الصفحي
|--------------------------------------------------------------------------
|
| تُستخدم الأسطر التالية من قبل مكتبة الترقيم الصفحي لبناء روابط
| الترقيم البسيطة. يمكنك تعديلها كما تشاء لتخصيص العرض بما يناسب
| تطبيقك بشكل أفضل.
|
*/
'previous' => '&laquo; السابق',
'next' => 'التالي &raquo;',
];

View File

@@ -0,0 +1,21 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| أسطر لغة إعادة تعيين كلمة المرور
|--------------------------------------------------------------------------
|
| الأسطر التالية هي الرسائل الافتراضية التي يقدمها نظام إعادة تعيين
| كلمة المرور عند فشل المحاولة، مثل رمز التحقق غير صالح أو كلمة مرور جديدة غير صحيحة.
|
*/
'reset' => 'تم إعادة تعيين كلمة المرور الخاصة بك!',
'sent' => 'لقد أرسلنا رابط إعادة تعيين كلمة المرور إلى بريدك الإلكتروني!',
'throttled' => 'يرجى الانتظار قبل المحاولة مرة أخرى.',
'token' => 'رمز إعادة تعيين كلمة المرور هذا غير صالح.',
'user' => 'لا يمكننا العثور على مستخدم بهذا العنوان الإلكتروني.',
];

View File

@@ -0,0 +1,168 @@
<?php
return [
/*
|--------------------------------------------------------------------------<?php
return [
/*
|--------------------------------------------------------------------------
| Validation Language Lines
|--------------------------------------------------------------------------
|
| The following language lines contain the default error messages used by
| the validator class. Some of these rules have multiple versions such
| as the size rules. Feel free to tweak each of these messages here.
|
*/
'accepted' => 'يجب قبول :attribute.',
'accepted_if' => 'يجب قبول :attribute عندما يكون :other يساوي :value.',
'active_url' => ':attribute ليس عنوان URL صالحًا.',
'after' => 'يجب أن يكون :attribute تاريخًا بعد :date.',
'after_or_equal' => 'يجب أن يكون :attribute تاريخًا بعد أو يساوي :date.',
'alpha' => 'يجب أن يحتوي :attribute على أحرف فقط.',
'alpha_dash' => 'يجب أن يحتوي :attribute على أحرف وأرقام وشرطات فقط.',
'alpha_num' => 'يجب أن يحتوي :attribute على أحرف وأرقام فقط.',
'array' => 'يجب أن يكون :attribute مصفوفة.',
'before' => 'يجب أن يكون :attribute تاريخًا قبل :date.',
'before_or_equal' => 'يجب أن يكون :attribute تاريخًا قبل أو يساوي :date.',
'between' => [
'numeric' => 'يجب أن يكون :attribute بين :min و :max.',
'file' => 'يجب أن يكون :attribute بين :min و :max كيلوبايت.',
'string' => 'يجب أن يكون :attribute بين :min و :max حرفًا.',
'array' => 'يجب أن يحتوي :attribute على عدد عناصر بين :min و :max.',
],
'boolean' => 'يجب أن يكون حقل :attribute صحيحًا أو خاطئًا.',
'confirmed' => 'تأكيد :attribute غير متطابق.',
'current_password' => 'كلمة المرور غير صحيحة.',
'date' => ':attribute ليس تاريخًا صالحًا.',
'date_equals' => 'يجب أن يكون :attribute تاريخًا يساوي :date.',
'date_format' => 'لا يتطابق :attribute مع الصيغة :format.',
'declined' => 'يجب رفض :attribute.',
'declined_if' => 'يجب رفض :attribute عندما يكون :other يساوي :value.',
'different' => 'يجب أن يكون :attribute و :other مختلفين.',
'digits' => 'يجب أن يتكون :attribute من :digits أرقام.',
'digits_between' => 'يجب أن يتكون :attribute من :min إلى :max أرقام.',
'dimensions' => ':attribute يحتوي على أبعاد صورة غير صالحة.',
'distinct' => 'حقل :attribute يحتوي على قيمة مكررة.',
'email' => 'يجب أن يكون :attribute عنوان بريد إلكتروني صالحًا.',
'ends_with' => 'يجب أن ينتهي :attribute بأحد القيم التالية: :values.',
'enum' => ':attribute المحدد غير صالح.',
'exists' => ':attribute المحدد غير صالح.',
'file' => 'يجب أن يكون :attribute ملفًا.',
'filled' => 'يجب أن يحتوي حقل :attribute على قيمة.',
'gt' => [
'numeric' => 'يجب أن يكون :attribute أكبر من :value.',
'file' => 'يجب أن يكون :attribute أكبر من :value كيلوبايت.',
'string' => 'يجب أن يكون :attribute أكبر من :value حرفًا.',
'array' => 'يجب أن يحتوي :attribute على أكثر من :value عنصر.',
],
'gte' => [
'numeric' => 'يجب أن يكون :attribute أكبر من أو يساوي :value.',
'file' => 'يجب أن يكون :attribute أكبر من أو يساوي :value كيلوبايت.',
'string' => 'يجب أن يكون :attribute أكبر من أو يساوي :value حرفًا.',
'array' => 'يجب أن يحتوي :attribute على :value عنصر أو أكثر.',
],
'image' => 'يجب أن يكون :attribute صورة.',
'in' => ':attribute المحدد غير صالح.',
'in_array' => 'حقل :attribute غير موجود في :other.',
'integer' => 'يجب أن يكون :attribute عددًا صحيحًا.',
'ip' => 'يجب أن يكون :attribute عنوان IP صالحًا.',
'ipv4' => 'يجب أن يكون :attribute عنوان IPv4 صالحًا.',
'ipv6' => 'يجب أن يكون :attribute عنوان IPv6 صالحًا.',
'json' => 'يجب أن يكون :attribute نصًا بصيغة JSON صالحة.',
'lt' => [
'numeric' => 'يجب أن يكون :attribute أقل من :value.',
'file' => 'يجب أن يكون :attribute أقل من :value كيلوبايت.',
'string' => 'يجب أن يكون :attribute أقل من :value حرفًا.',
'array' => 'يجب أن يحتوي :attribute على أقل من :value عنصر.',
],
'lte' => [
'numeric' => 'يجب أن يكون :attribute أقل من أو يساوي :value.',
'file' => 'يجب أن يكون :attribute أقل من أو يساوي :value كيلوبايت.',
'string' => 'يجب أن يكون :attribute أقل من أو يساوي :value حرفًا.',
'array' => 'يجب ألا يحتوي :attribute على أكثر من :value عنصر.',
],
'mac_address' => 'يجب أن يكون :attribute عنوان MAC صالحًا.',
'max' => [
'numeric' => 'يجب ألا يتجاوز :attribute :max.',
'file' => 'يجب ألا يتجاوز :attribute :max كيلوبايت.',
'string' => 'يجب ألا يتجاوز :attribute :max حرفًا.',
'array' => 'يجب ألا يحتوي :attribute على أكثر من :max عنصر.',
],
'mimes' => 'يجب أن يكون :attribute ملفًا من النوع: :values.',
'mimetypes' => 'يجب أن يكون :attribute ملفًا من النوع: :values.',
'min' => [
'numeric' => 'يجب أن يكون :attribute على الأقل :min.',
'file' => 'يجب أن يكون :attribute على الأقل :min كيلوبايت.',
'string' => 'يجب أن يكون :attribute على الأقل :min حرفًا.',
'array' => 'يجب أن يحتوي :attribute على الأقل على :min عنصر.',
],
'multiple_of' => 'يجب أن يكون :attribute مضاعفًا لـ :value.',
'not_in' => ':attribute المحدد غير صالح.',
'not_regex' => 'صيغة :attribute غير صالحة.',
'numeric' => 'يجب أن يكون :attribute رقمًا.',
'password' => 'كلمة المرور غير صحيحة.',
'present' => 'يجب أن يكون حقل :attribute موجودًا.',
'prohibited' => 'حقل :attribute محظور.',
'prohibited_if' => 'حقل :attribute محظور عندما يكون :other يساوي :value.',
'prohibited_unless' => 'حقل :attribute محظور إلا إذا كان :other ضمن :values.',
'prohibits' => 'حقل :attribute يحظر وجود :other.',
'regex' => 'صيغة :attribute غير صالحة.',
'required' => 'حقل :attribute مطلوب.',
'required_array_keys' => 'يجب أن يحتوي حقل :attribute على إدخالات لـ: :values.',
'required_if' => 'حقل :attribute مطلوب عندما يكون :other يساوي :value.',
'required_unless' => 'حقل :attribute مطلوب إلا إذا كان :other ضمن :values.',
'required_with' => 'حقل :attribute مطلوب عند وجود :values.',
'required_with_all' => 'حقل :attribute مطلوب عند وجود جميع القيم :values.',
'required_without' => 'حقل :attribute مطلوب عند عدم وجود :values.',
'required_without_all' => 'حقل :attribute مطلوب عند عدم وجود أي من القيم :values.',
'same' => 'يجب أن يتطابق :attribute مع :other.',
'size' => [
'numeric' => 'يجب أن يكون :attribute مساويًا لـ :size.',
'file' => 'يجب أن يكون :attribute مساويًا لـ :size كيلوبايت.',
'string' => 'يجب أن يكون :attribute مساويًا لـ :size حرفًا.',
'array' => 'يجب أن يحتوي :attribute على :size عنصر.',
],
'starts_with' => 'يجب أن يبدأ :attribute بأحد القيم التالية: :values.',
'string' => 'يجب أن يكون :attribute نصًا.',
'timezone' => 'يجب أن يكون :attribute منطقة زمنية صالحة.',
'unique' => 'تم استخدام :attribute مسبقًا.',
'uploaded' => 'فشل تحميل :attribute.',
'url' => 'يجب أن يكون :attribute عنوان URL صالحًا.',
'uuid' => 'يجب أن يكون :attribute UUID صالحًا.',
/*
|--------------------------------------------------------------------------
| Custom Validation Language Lines
|--------------------------------------------------------------------------
|
| Here you may specify custom validation messages for attributes using the
| convention "attribute.rule" to name the lines. This makes it quick to
| specify a specific custom language line for a given attribute rule.
|
*/
'custom' => [
'attribute-name' => [
'rule-name' => 'رسالة مخصصة',
],
],
/*
|--------------------------------------------------------------------------
| Custom Validation Attributes
|--------------------------------------------------------------------------
|
| The following language lines are used to swap our attribute placeholder
| with something more reader friendly such as "E-Mail Address" instead
| of "email". This simply helps us make our message more expressive.
|
*/
'attributes' => [],
];

View File

@@ -0,0 +1,20 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Authentication Language Lines
|--------------------------------------------------------------------------
|
| The following language lines are used during authentication for various
| messages that we need to display to the user. You are free to modify
| these language lines according to your application's requirements.
|
*/
'failed' => 'Estas credenciales no coinciden con nuestros registros.',
'password' => 'La contraseña proporcionada es incorrecta.',
'throttle' => 'Demasiados intentos de inicio de sesión. Por favor, intenta de nuevo en :seconds segundos.',
];

View File

@@ -0,0 +1,19 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Pagination Language Lines
|--------------------------------------------------------------------------
|
| The following language lines are used by the paginator library to build
| the simple pagination links. You are free to change them to anything
| you want to customize your views to better match your application.
|
*/
'previous' => '&laquo; Anterior',
'next' => 'Siguiente &raquo;',
];

View File

@@ -0,0 +1,22 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Password Reset Language Lines
|--------------------------------------------------------------------------
|
| The following language lines are the default lines which match reasons
| that are given by the password broker for a password update attempt
| has failed, such as for an invalid token or invalid new password.
|
*/
'reset' => '¡Tu contraseña ha sido restablecida!',
'sent' => '¡Te hemos enviado por correo el enlace para restablecer tu contraseña!',
'throttled' => 'Por favor espera antes de volver a intentar.',
'token' => 'Este token de restablecimiento de contraseña es inválido.',
'user' => "No podemos encontrar un usuario con esa dirección de correo electrónico.",
];

View File

@@ -0,0 +1,163 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Validation Language Lines
|--------------------------------------------------------------------------
|
| The following language lines contain the default error messages used by
| the validator class. Some of these rules have multiple versions such
| as the size rules. Feel free to tweak each of these messages here.
|
*/
'accepted' => 'El campo :attribute debe ser aceptado.',
'accepted_if' => 'El campo :attribute debe ser aceptado cuando :other sea :value.',
'active_url' => 'El campo :attribute no es una URL válida.',
'after' => 'El campo :attribute debe ser una fecha posterior a :date.',
'after_or_equal' => 'El campo :attribute debe ser una fecha posterior o igual a :date.',
'alpha' => 'El campo :attribute solo debe contener letras.',
'alpha_dash' => 'El campo :attribute solo debe contener letras, números, guiones y guiones bajos.',
'alpha_num' => 'El campo :attribute solo debe contener letras y números.',
'array' => 'El campo :attribute debe ser un arreglo.',
'before' => 'El campo :attribute debe ser una fecha anterior a :date.',
'before_or_equal' => 'El campo :attribute debe ser una fecha anterior o igual a :date.',
'between' => [
'numeric' => 'El campo :attribute debe estar entre :min y :max.',
'file' => 'El campo :attribute debe estar entre :min y :max kilobytes.',
'string' => 'El campo :attribute debe tener entre :min y :max caracteres.',
'array' => 'El campo :attribute debe tener entre :min y :max elementos.',
],
'boolean' => 'El campo :attribute debe ser verdadero o falso.',
'confirmed' => 'La confirmación de :attribute no coincide.',
'current_password' => 'La contraseña es incorrecta.',
'date' => 'El campo :attribute no es una fecha válida.',
'date_equals' => 'El campo :attribute debe ser una fecha igual a :date.',
'date_format' => 'El campo :attribute no coincide con el formato :format.',
'declined' => 'El campo :attribute debe ser rechazado.',
'declined_if' => 'El campo :attribute debe ser rechazado cuando :other sea :value.',
'different' => 'El campo :attribute y :other deben ser diferentes.',
'digits' => 'El campo :attribute debe tener :digits dígitos.',
'digits_between' => 'El campo :attribute debe tener entre :min y :max dígitos.',
'dimensions' => 'El campo :attribute tiene dimensiones de imagen inválidas.',
'distinct' => 'El campo :attribute tiene un valor duplicado.',
'email' => 'El campo :attribute debe ser una dirección de correo electrónico válida.',
'ends_with' => 'El campo :attribute debe terminar con uno de los siguientes: :values.',
'enum' => 'El :attribute seleccionado es inválido.',
'exists' => 'El :attribute seleccionado es inválido.',
'file' => 'El campo :attribute debe ser un archivo.',
'filled' => 'El campo :attribute debe tener un valor.',
'gt' => [
'numeric' => 'El campo :attribute debe ser mayor que :value.',
'file' => 'El campo :attribute debe ser mayor que :value kilobytes.',
'string' => 'El campo :attribute debe ser mayor que :value caracteres.',
'array' => 'El campo :attribute debe tener más de :value elementos.',
],
'gte' => [
'numeric' => 'El campo :attribute debe ser mayor o igual a :value.',
'file' => 'El campo :attribute debe ser mayor o igual a :value kilobytes.',
'string' => 'El campo :attribute debe ser mayor o igual a :value caracteres.',
'array' => 'El campo :attribute debe tener :value elementos o más.',
],
'image' => 'El campo :attribute debe ser una imagen.',
'in' => 'El :attribute seleccionado es inválido.',
'in_array' => 'El campo :attribute no existe en :other.',
'integer' => 'El campo :attribute debe ser un número entero.',
'ip' => 'El campo :attribute debe ser una dirección IP válida.',
'ipv4' => 'El campo :attribute debe ser una dirección IPv4 válida.',
'ipv6' => 'El campo :attribute debe ser una dirección IPv6 válida.',
'json' => 'El campo :attribute debe ser una cadena JSON válida.',
'lt' => [
'numeric' => 'El campo :attribute debe ser menor que :value.',
'file' => 'El campo :attribute debe ser menor que :value kilobytes.',
'string' => 'El campo :attribute debe ser menor que :value caracteres.',
'array' => 'El campo :attribute debe tener menos de :value elementos.',
],
'lte' => [
'numeric' => 'El campo :attribute debe ser menor o igual a :value.',
'file' => 'El campo :attribute debe ser menor o igual a :value kilobytes.',
'string' => 'El campo :attribute debe ser menor o igual a :value caracteres.',
'array' => 'El campo :attribute no debe tener más de :value elementos.',
],
'mac_address' => 'El campo :attribute debe ser una dirección MAC válida.',
'max' => [
'numeric' => 'El campo :attribute no debe ser mayor que :max.',
'file' => 'El campo :attribute no debe ser mayor que :max kilobytes.',
'string' => 'El campo :attribute no debe ser mayor que :max caracteres.',
'array' => 'El campo :attribute no debe tener más de :max elementos.',
],
'mimes' => 'El campo :attribute debe ser un archivo de tipo: :values.',
'mimetypes' => 'El campo :attribute debe ser un archivo de tipo: :values.',
'min' => [
'numeric' => 'El campo :attribute debe ser al menos :min.',
'file' => 'El campo :attribute debe ser al menos :min kilobytes.',
'string' => 'El campo :attribute debe tener al menos :min caracteres.',
'array' => 'El campo :attribute debe tener al menos :min elementos.',
],
'multiple_of' => 'El campo :attribute debe ser un múltiplo de :value.',
'not_in' => 'El :attribute seleccionado es inválido.',
'not_regex' => 'El formato del campo :attribute es inválido.',
'numeric' => 'El campo :attribute debe ser un número.',
'password' => 'La contraseña es incorrecta.',
'present' => 'El campo :attribute debe estar presente.',
'prohibited' => 'El campo :attribute está prohibido.',
'prohibited_if' => 'El campo :attribute está prohibido cuando :other sea :value.',
'prohibited_unless' => 'El campo :attribute está prohibido a menos que :other esté en :values.',
'prohibits' => 'El campo :attribute prohíbe que :other esté presente.',
'regex' => 'El formato del campo :attribute es inválido.',
'required' => 'El campo :attribute es obligatorio.',
'required_array_keys' => 'El campo :attribute debe contener entradas para: :values.',
'required_if' => 'El campo :attribute es obligatorio cuando :other sea :value.',
'required_unless' => 'El campo :attribute es obligatorio a menos que :other esté en :values.',
'required_with' => 'El campo :attribute es obligatorio cuando :values está presente.',
'required_with_all' => 'El campo :attribute es obligatorio cuando :values están presentes.',
'required_without' => 'El campo :attribute es obligatorio cuando :values no está presente.',
'required_without_all' => 'El campo :attribute es obligatorio cuando ninguno de :values están presentes.',
'same' => 'El campo :attribute y :other deben coincidir.',
'size' => [
'numeric' => 'El campo :attribute debe ser :size.',
'file' => 'El campo :attribute debe ser :size kilobytes.',
'string' => 'El campo :attribute debe tener :size caracteres.',
'array' => 'El campo :attribute debe contener :size elementos.',
],
'starts_with' => 'El campo :attribute debe comenzar con uno de los siguientes: :values.',
'string' => 'El campo :attribute debe ser una cadena de texto.',
'timezone' => 'El campo :attribute debe ser una zona horaria válida.',
'unique' => 'El campo :attribute ya ha sido tomado.',
'uploaded' => 'El campo :attribute falló al subir.',
'url' => 'El campo :attribute debe ser una URL válida.',
'uuid' => 'El campo :attribute debe ser un UUID válido.',
/*
|--------------------------------------------------------------------------
| Custom Validation Language Lines
|--------------------------------------------------------------------------
|
| Here you may specify custom validation messages for attributes using the
| convention "attribute.rule" to name the lines. This makes it quick to
| specify a specific custom language line for a given attribute rule.
|
*/
'custom' => [
'attribute-name' => [
'rule-name' => 'custom-message',
],
],
/*
|--------------------------------------------------------------------------
| Custom Validation Attributes
|--------------------------------------------------------------------------
|
| The following language lines are used to swap our attribute placeholder
| with something more reader friendly such as "E-Mail Address" instead
| of "email". This simply helps us make our message more expressive.
|
*/
'attributes' => [],
];

View File

@@ -0,0 +1,15 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| خطوط زبان احراز هویت
|--------------------------------------------------------------------------
|
| خطوط زبان زیر در طول احراز هویت برای پیام‌های مختلفی که باید به کاربر نمایش دهیم استفاده می‌شوند.
| شما می‌توانید این خطوط زبان را بر اساس نیازهای برنامه خود تغییر دهید.
|
*/
'failed' => 'این اطلاعات ورود با سوابق ما مطابقت ندارد.',
'password' => 'رمز عبور ارائه‌شده نادرست است.',
'throttle' => 'تعداد تلاش‌های ورود بیش از حد زیاد است. لطفاً پس از :seconds ثانیه دوباره تلاش کنید.',
];

View File

@@ -0,0 +1,18 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| خطوط زبان صفحه‌بندی
|--------------------------------------------------------------------------
|
| خطوط زبان زیر توسط کتابخانه صفحه‌بندی برای ساخت لینک‌های صفحه‌بندی ساده استفاده می‌شوند.
| شما می‌توانید این خطوط را به دلخواه تغییر دهید تا با نیازهای برنامه خود سازگار شوند.
|
*/
'previous' => '&laquo; قبلی',
'next' => 'بعدی &raquo;',
];

View File

@@ -0,0 +1,22 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| خطوط زبان بازنشانی رمز عبور
|--------------------------------------------------------------------------
|
| خطوط زبان زیر خطوط پیش‌فرضی هستند که با دلایلی که توسط کارگزار رمز عبور
| برای تلاش‌های ناموفق به‌روزرسانی رمز عبور ارائه می‌شوند، مطابقت دارند،
| مانند توکن نامعتبر یا رمز عبور جدید نامعتبر.
|
*/
'reset' => 'رمز عبور شما بازنشانی شد!',
'sent' => 'لینک بازنشانی رمز عبور به ایمیل شما ارسال شد!',
'throttled' => 'لطفاً قبل از تلاش مجدد صبر کنید.',
'token' => 'این توکن بازنشانی رمز عبور نامعتبر است.',
'user' => 'کاربری با این آدرس ایمیل یافت نشد.',
];

View File

@@ -0,0 +1,163 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| خطوط زبان اعتبارسنجی
|--------------------------------------------------------------------------
|
| خطوط زبان زیر شامل پیام‌های خطای پیش‌فرض استفاده‌شده توسط کلاس اعتبارسنجی هستند.
| برخی از این قوانین نسخه‌های متعددی دارند، مانند قوانین مربوط به اندازه.
| شما می‌توانید این پیام‌ها را در اینجا به دلخواه تنظیم کنید.
|
*/
'accepted' => 'فیلد :attribute باید پذیرفته شود.',
'accepted_if' => 'فیلد :attribute باید پذیرفته شود وقتی :other برابر با :value باشد.',
'active_url' => 'فیلد :attribute یک URL معتبر نیست.',
'after' => 'فیلد :attribute باید تاریخی پس از :date باشد.',
'after_or_equal' => 'فیلد :attribute باید تاریخی پس از یا برابر با :date باشد.',
'alpha' => 'فیلد :attribute فقط باید شامل حروف باشد.',
'alpha_dash' => 'فیلد :attribute فقط باید شامل حروف، اعداد، خط تیره و زیرخط باشد.',
'alpha_num' => 'فیلد :attribute فقط باید شامل حروف و اعداد باشد.',
'array' => 'فیلد :attribute باید یک آرایه باشد.',
'before' => 'فیلد :attribute باید تاریخی قبل از :date باشد.',
'before_or_equal' => 'فیلد :attribute باید تاریخی قبل از یا برابر با :date باشد.',
'between' => [
'numeric' => 'فیلد :attribute باید بین :min و :max باشد.',
'file' => 'فیلد :attribute باید بین :min و :max کیلوبایت باشد.',
'string' => 'فیلد :attribute باید بین :min و :max کاراکتر باشد.',
'array' => 'فیلد :attribute باید بین :min و :max آیتم داشته باشد.',
],
'boolean' => 'فیلد :attribute باید true یا false باشد.',
'confirmed' => 'تأیید فیلد :attribute مطابقت ندارد.',
'current_password' => 'رمز عبور نادرست است.',
'date' => 'فیلد :attribute یک تاریخ معتبر نیست.',
'date_equals' => 'فیلد :attribute باید تاریخی برابر با :date باشد.',
'date_format' => 'فیلد :attribute با فرمت :format مطابقت ندارد.',
'declined' => 'فیلد :attribute باید رد شود.',
'declined_if' => 'فیلد :attribute باید رد شود وقتی :other برابر با :value باشد.',
'different' => 'فیلد :attribute و :other باید متفاوت باشند.',
'digits' => 'فیلد :attribute باید :digits رقم باشد.',
'digits_between' => 'فیلد :attribute باید بین :min و :max رقم باشد.',
'dimensions' => 'فیلد :attribute دارای ابعاد تصویر نامعتبر است.',
'distinct' => 'فیلد :attribute دارای مقدار تکراری است.',
'email' => 'فیلد :attribute باید یک آدرس ایمیل معتبر باشد.',
'ends_with' => 'فیلد :attribute باید با یکی از مقادیر زیر پایان یابد: :values.',
'enum' => 'مقدار انتخاب‌شده برای :attribute نامعتبر است.',
'exists' => 'مقدار انتخاب‌شده برای :attribute نامعتبر است.',
'file' => 'فیلد :attribute باید یک فایل باشد.',
'filled' => 'فیلد :attribute باید دارای مقدار باشد.',
'gt' => [
'numeric' => 'فیلد :attribute باید بزرگ‌تر از :value باشد.',
'file' => 'فیلد :attribute باید بزرگ‌تر از :value کیلوبایت باشد.',
'string' => 'فیلد :attribute باید بیش از :value کاراکتر باشد.',
'array' => 'فیلد :attribute باید بیش از :value آیتم داشته باشد.',
],
'gte' => [
'numeric' => 'فیلد :attribute باید بزرگ‌تر یا برابر با :value باشد.',
'file' => 'فیلد :attribute باید بزرگ‌تر یا برابر با :value کیلوبایت باشد.',
'string' => 'فیلد :attribute باید بیش از یا برابر با :value کاراکتر باشد.',
'array' => 'فیلد :attribute باید :value آیتم یا بیشتر داشته باشد.',
],
'image' => 'فیلد :attribute باید یک تصویر باشد.',
'in' => 'مقدار انتخاب‌شده برای :attribute نامعتبر است.',
'in_array' => 'فیلد :attribute در :other وجود ندارد.',
'integer' => 'فیلد :attribute باید یک عدد صحیح باشد.',
'ip' => 'فیلد :attribute باید یک آدرس IP معتبر باشد.',
'ipv4' => 'فیلد :attribute باید یک آدرس IPv4 معتبر باشد.',
'ipv6' => 'فیلد :attribute باید یک آدرس IPv6 معتبر باشد.',
'json' => 'فیلد :attribute باید یک رشته JSON معتبر باشد.',
'lt' => [
'numeric' => 'فیلد :attribute باید کمتر از :value باشد.',
'file' => 'فیلد :attribute باید کمتر از :value کیلوبایت باشد.',
'string' => 'فیلد :attribute باید کمتر از :value کاراکتر باشد.',
'array' => 'فیلد :attribute باید کمتر از :value آیتم داشته باشد.',
],
'lte' => [
'numeric' => 'فیلد :attribute باید کمتر یا برابر با :value باشد.',
'file' => 'فیلد :attribute باید کمتر یا برابر با :value کیلوبایت باشد.',
'string' => 'فیلد :attribute باید کمتر یا برابر با :value کاراکتر باشد.',
'array' => 'فیلد :attribute نباید بیش از :value آیتم داشته باشد.',
],
'mac_address' => 'فیلد :attribute باید یک آدرس MAC معتبر باشد.',
'max' => [
'numeric' => 'فیلد :attribute نباید بزرگ‌تر از :max باشد.',
'file' => 'فیلد :attribute نباید بزرگ‌تر از :max کیلوبایت باشد.',
'string' => 'فیلد :attribute نباید بیش از :max کاراکتر باشد.',
'array' => 'فیلد :attribute نباید بیش از :max آیتم داشته باشد.',
],
'mimes' => 'فیلد :attribute باید یک فایل از نوع: :values باشد.',
'mimetypes' => 'فیلد :attribute باید یک فایل از نوع: :values باشد.',
'min' => [
'numeric' => 'فیلد :attribute باید حداقل :min باشد.',
'file' => 'فیلد :attribute باید حداقل :min کیلوبایت باشد.',
'string' => 'فیلد :attribute باید حداقل :min کاراکتر باشد.',
'array' => 'فیلد :attribute باید حداقل :min آیتم داشته باشد.',
],
'multiple_of' => 'فیلد :attribute باید مضربی از :value باشد.',
'not_in' => 'مقدار انتخاب‌شده برای :attribute نامعتبر است.',
'not_regex' => 'فرمت فیلد :attribute نامعتبر است.',
'numeric' => 'فیلد :attribute باید یک عدد باشد.',
'password' => 'رمز عبور نادرست است.',
'present' => 'فیلد :attribute باید وجود داشته باشد.',
'prohibited' => 'فیلد :attribute ممنوع است.',
'prohibited_if' => 'فیلد :attribute وقتی :other برابر با :value باشد ممنوع است.',
'prohibited_unless' => 'فیلد :attribute ممنوع است مگر اینکه :other در :values باشد.',
'prohibits' => 'فیلد :attribute مانع حضور :other می‌شود.',
'regex' => 'فرمت فیلد :attribute نامعتبر است.',
'required' => 'فیلد :attribute الزامی است.',
'required_array_keys' => 'فیلد :attribute باید شامل ورودی‌هایی برای: :values باشد.',
'required_if' => 'فیلد :attribute وقتی :other برابر با :value باشد الزامی است.',
'required_unless' => 'فیلد :attribute الزامی است مگر اینکه :other در :values باشد.',
'required_with' => 'فیلد :attribute وقتی :values وجود دارد الزامی است.',
'required_with_all' => 'فیلد :attribute وقتی همه :values وجود دارند الزامی است.',
'required_without' => 'فیلد :attribute وقتی :values وجود ندارد الزامی است.',
'required_without_all' => 'فیلد :attribute وقتی هیچ‌کدام از :values وجود ندارند الزامی است.',
'same' => 'فیلد :attribute و :other باید یکسان باشند.',
'size' => [
'numeric' => 'فیلد :attribute باید :size باشد.',
'file' => 'فیلد :attribute باید :size کیلوبایت باشد.',
'string' => 'فیلد :attribute باید :size کاراکتر باشد.',
'array' => 'فیلد :attribute باید شامل :size آیتم باشد.',
],
'starts_with' => 'فیلد :attribute باید با یکی از مقادیر زیر شروع شود: :values.',
'string' => 'فیلد :attribute باید یک رشته باشد.',
'timezone' => 'فیلد :attribute باید یک منطقه زمانی معتبر باشد.',
'unique' => 'فیلد :attribute قبلاً استفاده شده است.',
'uploaded' => 'فیلد :attribute در آپلود ناموفق بود.',
'url' => 'فیلد :attribute باید یک URL معتبر باشد.',
'uuid' => 'فیلد :attribute باید یک UUID معتبر باشد.',
/*
|--------------------------------------------------------------------------
| خطوط زبان اعتبارسنجی سفارشی
|--------------------------------------------------------------------------
|
| در اینجا می‌توانید پیام‌های اعتبارسنجی سفارشی برای ویژگی‌ها را با استفاده از
| قرارداد "attribute.rule" برای نام‌گذاری خطوط مشخص کنید. این کار امکان
| تعیین سریع یک خط زبان سفارشی برای یک قانون خاص ویژگی را فراهم می‌کند.
|
*/
'custom' => [
'attribute-name' => [
'rule-name' => 'پیام سفارشی',
],
],
/*
|--------------------------------------------------------------------------
| ویژگی‌های اعتبارسنجی سفارشی
|--------------------------------------------------------------------------
|
| خطوط زبان زیر برای جایگزینی placeholder ویژگی‌های ما با چیزی کاربرپسندتر
| مانند "آدرس ایمیل" به جای "email" استفاده می‌شوند. این کار به ما کمک می‌کند
| پیام‌هایمان را گویاتر کنیم.
|
*/
'attributes' => [],
];

View File

@@ -0,0 +1,47 @@
#!/bin/bash
set -e
# Resolve the directory the script is located in
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
ROOT_DIR="$(cd "$SCRIPT_DIR/../.." && pwd)"
APP_NAME="Fleetbase"
IMAGE_NAME="fleetbase-linux-static"
CONTAINER_NAME="fleetbase-linux-build"
DIST_DIR="$ROOT_DIR/builds/dist"
BINARY_NAME="fleetbase-linux-x86_64"
DOCKERFILE="$ROOT_DIR/builds/linux/static-build.Dockerfile"
# Ensure pkg-config archive is available
SPC_DOWNLOADS_DIR="$SCRIPT_DIR/spc/downloads"
PKG_TAR="pkg-config-0.29.2.tar.gz"
PKG_URL="https://static-php-cli.fra1.digitaloceanspaces.com/static-php-cli/deps/pkg-config/${PKG_TAR}"
if [[ ! -f "${SPC_DOWNLOADS_DIR}/${PKG_TAR}" ]]; then
echo "📥 pkg-config archive missing downloading..."
mkdir -p "${SPC_DOWNLOADS_DIR}"
curl -L --retry 3 -o "${SPC_DOWNLOADS_DIR}/${PKG_TAR}" "${PKG_URL}"
else
echo "✅ pkg-config archive already present."
fi
# Build the image
echo "📦 Building static Linux binary for ${APP_NAME}..."
docker build -f "$DOCKERFILE" -t "$IMAGE_NAME" .
# Create a container from the built image
echo "📦 Creating container to extract binary..."
docker create --name "$CONTAINER_NAME" "$IMAGE_NAME"
# Make sure dist folder exist
mkdir -p "$DIST_DIR"
# Copy binary from container to local dist folder
echo "📂 Extracting binary..."
docker cp "$CONTAINER_NAME:/go/src/app/dist/frankenphp-linux-x86_64" "$DIST_DIR/$BINARY_NAME"
# Cleanup the temp container
docker rm "$CONTAINER_NAME"
echo "✅ Build complete! Binary is located at: $DIST_DIR/$BINARY_NAME"

View File

@@ -0,0 +1,12 @@
<?php
declare(strict_types=1);
namespace SPC\builder\linux\library;
class libgeos extends LinuxLibraryBase
{
use \SPC\builder\unix\library\libgeos;
public const NAME = 'libgeos';
}

View File

@@ -0,0 +1,33 @@
<?php
declare(strict_types=1);
namespace SPC\builder\unix\library;
use SPC\exception\FileSystemException;
use SPC\exception\RuntimeException;
use SPC\store\FileSystem;
trait libgeos
{
/**
* @throws FileSystemException
* @throws RuntimeException
*/
protected function build(): void
{
FileSystem::resetDir($this->source_dir . '/build');
shell()->cd($this->source_dir . '/build')
->setEnv([
'CFLAGS' => $this->getLibExtraCFlags(),
'LDFLAGS' => $this->getLibExtraLdFlags(),
'LIBS' => $this->getLibExtraLibs(),
])
->execWithEnv("cmake {$this->builder->makeCmakeArgs()} -DBUILD_SHARED_LIBS=OFF ..")
->execWithEnv("make -j{$this->builder->concurrency}")
->execWithEnv('make install');
$this->patchPkgconfPrefix(['geos.pc']);
}
}

View File

@@ -0,0 +1,93 @@
# FROM --platform=linux/amd64 dunglas/frankenphp:static-builder
FROM --platform=linux/amd64 docker.io/dunglas/frankenphp:static-builder@sha256:821526b776a26502735d83890cc0a0d579348c510ba6c777df0762cb1c50d967
WORKDIR /go/src/app
# Copy Fleetbase app
COPY ../../api ./dist/app
# Set working directory to the embedded Fleetbase app
WORKDIR /go/src/app/dist/app
# Setup for production environment
ENV APP_ENV=production
ENV APP_DEBUG=false
ENV BROADCAST_DRIVER=socketcluster
ENV OSRM_HOST="https://router.project-osrm.org"
ENV REGISTRY_PREINSTALLED_EXTENSIONS=true
# Optional: Ensure writable storage
RUN chmod -R 775 bootstrap/cache storage
# Set permissions for deploy script
RUN chmod +x ./deploy.sh
# Move back to main app directory before running build-static.sh
WORKDIR /go/src/app
# Install geos lib
RUN apk add --no-cache geos geos-dev
# Inject the libgeos library handlers
COPY ./builds/linux/spc/libgeos-linux.php ./dist/static-php-cli/src/SPC/builder/linux/library/libgeos.php
COPY ./builds/linux/spc/libgeos-unix.php ./dist/static-php-cli/src/SPC/builder/unix/library/libgeos.php
# Patch source.json to add geos extension source
RUN jq '. + {"php-geos": {"type": "url", "url": "https://github.com/libgeos/php-geos/archive/dfe1ab17b0f155cc315bc13c75689371676e02e1.zip", "license": [{"type": "file", "path": "php-geos-dfe1ab17b0f155cc315bc13c75689371676e02e1/MIT-LICENSE"}, {"type": "file", "path": "php-geos-dfe1ab17b0f155cc315bc13c75689371676e02e1/LGPL-2"}]}}' \
./dist/static-php-cli/config/source.json > ./dist/static-php-cli/config/source.tmp.json && \
mv ./dist/static-php-cli/config/source.tmp.json ./dist/static-php-cli/config/source.json
# Pathc source.json to add libgeos library
RUN jq '. + {"libgeos": {"type": "url", "url": "https://download.osgeo.org/geos/geos-3.12.1.tar.bz2", "filename": "geos-3.12.1.tar.bz2", "extract": "geos-3.12.1", "build-dir": "build", "license": [{"type": "file", "path": "COPYING"}]}}' \
./dist/static-php-cli/config/source.json > ./dist/static-php-cli/config/source.tmp.json && \
mv ./dist/static-php-cli/config/source.tmp.json ./dist/static-php-cli/config/source.json
# Patch ext.json to add geos extension dynamically
RUN jq '. + {"geos": {"type": "external", "arg-type": "enable", "source": "php-geos", "lib-depends": ["libgeos"]}}' \
./dist/static-php-cli/config/ext.json > ./dist/static-php-cli/config/ext.tmp.json && \
mv ./dist/static-php-cli/config/ext.tmp.json ./dist/static-php-cli/config/ext.json
# Patch lib.json to add libgeos
RUN jq '. + {"libgeos": {"source": "libgeos", "static-libs-unix": ["libgeos.a", "libgeos_c.a"]}}' \
./dist/static-php-cli/config/lib.json > ./dist/static-php-cli/config/lib.tmp.json && \
mv ./dist/static-php-cli/config/lib.tmp.json ./dist/static-php-cli/config/lib.json
# Install dependencies for SPC CLI
WORKDIR /go/src/app/dist/static-php-cli
RUN composer install --no-dev -a
# Set PHP extensions to be built (including geos!)
ENV PHP_EXTENSIONS="pdo_mysql,gd,bcmath,redis,intl,zip,gmp,apcu,opcache,imagick,sockets,pcntl,geos,iconv,mbstring,fileinfo,ctype,tokenizer,simplexml,dom,filter,session"
ENV PHP_EXTENSION_LIBS="libgeos,libzip,bzip2,libxml2,openssl,zlib"
# Force SPC to use the local source version (not download binary)
ENV SPC_REL_TYPE=source
# Debug build
ENV SPC_LOG_LEVEL=debug
# Skip compression
ENV NO_COMPRESS=1
# set PHP version
ENV PHP_VERSION=8.2
# Move to the app directory
WORKDIR /go/src/app
# Make sure pkg-config is available within the static build container
COPY ./builds/linux/spc/downloads/pkg-config-0.29.2.tar.gz ./dist/static-php-cli/downloads/pkg-config-0.29.2.tar.gz
# Pre-build pkg-config using the existing tarball
RUN apk add --no-cache build-base && \
tar -xzf ./dist/static-php-cli/downloads/pkg-config-0.29.2.tar.gz -C /tmp && \
cd /tmp/pkg-config-0.29.2 && \
./configure --with-internal-glib --prefix=/go/src/app/dist/static-php-cli/build/bin && \
make && make install && \
rm -rf /tmp/pkg-config-0.29.2
# Do not run git pull
RUN sed -i 's/^[ \t]*git pull/# git pull/' ./build-static.sh
# Build the FrankenPHP static binary
RUN EMBED=dist/app ./build-static.sh

188
builds/osx/build-osx.sh Executable file
View File

@@ -0,0 +1,188 @@
#!/bin/bash
set -e
log() {
echo -e "\033[1;34m[🔧 $1]\033[0m"
}
log_success() {
echo -e "\033[1;32m[✅ $1]\033[0m"
}
log_warn() {
echo -e "\033[1;33m[⚠️ $1]\033[0m"
}
log_error() {
echo -e "\033[1;31m[❌ $1]\033[0m"
}
# Define base paths
log "Resolving directories..."
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
ROOT_DIR="$(cd "$SCRIPT_DIR/../.." && pwd)"
OSX_DIR="$ROOT_DIR/builds/osx"
DIST_DIR="$ROOT_DIR/builds/dist"
APP_DIR="$ROOT_DIR/api"
BREW_PREFIX="/opt/homebrew"
OS="$(uname -s | tr '[:upper:]' '[:lower:]')"
ARCH="$(uname -m)"
BINARY_NAME="fleetbase-$OS-$ARCH"
log "Binary will be: $BINARY_NAME"
# Setup PHP 8.4
log "Detecting current PHP version..."
ORIGINAL_PHP_PATH="$(which php)"
ORIGINAL_PHP_VERSION="$(php -r 'echo PHP_MAJOR_VERSION.".".PHP_MINOR_VERSION.".".PHP_RELEASE_VERSION;' 2>/dev/null)"
IS_ASDF_MANAGED=false
if [[ "$ORIGINAL_PHP_PATH" == *".asdf"* ]]; then
IS_ASDF_MANAGED=true
fi
# 🔁 Trap to restore PHP when script exits
trap 'if [ "$IS_ASDF_MANAGED" = true ]; then
log "Restoring asdf-managed PHP version: $ORIGINAL_PHP_VERSION"
asdf set php "$ORIGINAL_PHP_VERSION" || true
log "Reverted to PHP $(php -v | head -n 1)"
else
log "Unsetting asdf set to restore system PHP"
asdf set php system || true
log "Reverted to PHP $(php -v | head -n 1)"
fi' EXIT
log "Detected PHP version: $ORIGINAL_PHP_VERSION"
log "Detected PHP binary: $ORIGINAL_PHP_PATH"
# ───────────────────────────────────────────────────────────────────────────────
# If the *current* php is already 8.4.x, we skip the entire asdf install step
# ───────────────────────────────────────────────────────────────────────────────
if [[ "$ORIGINAL_PHP_PATH" == "$BREW_PREFIX/bin/php" && "$ORIGINAL_PHP_VERSION" =~ ^8\.4\. ]]; then
log "Homebrew PHP $ORIGINAL_PHP_VERSION detected at $ORIGINAL_PHP_PATH — skipping asdf build/install."
else
# Only install under asdf if we dont already have 8.4.0 installed
log "No Homebrew PHP 8.4 detected (found $ORIGINAL_PHP_PATH $ORIGINAL_PHP_VERSION), using asdf to build/install."
if ! asdf list php | grep -q "8.4.0"; then
# Use brew to install required dependencies for asdf php management
log "Checking and installing Homebrew packages required for PHP 8.4 build..."
for pkg in autoconf automake bison freetype gd gettext icu4c krb5 libedit libiconv libjpeg libpng libxml2 libzip pkg-config re2c zlib sqlite3 libsodium oniguruma openssl@3 nasm; do
if ! brew list "$pkg" &>/dev/null; then
log_warn "$pkg not found. Installing..."
arch -arm64 brew install "$pkg"
else
log "$pkg already installed. Skipping."
fi
done
# Set necessary env flags/paths for PHP build on OSX ARM64
export CPPFLAGS="-I$BREW_PREFIX/opt/oniguruma/include -I$BREW_PREFIX/opt/libsodium/include -I$BREW_PREFIX/opt/bzip2/include -I$BREW_PREFIX/opt/zlib/include -I$BREW_PREFIX/opt/openssl@3/include -I$BREW_PREFIX/opt/libxml2/include -I$BREW_PREFIX/opt/libedit/include -I$BREW_PREFIX/opt/curl/include -I$BREW_PREFIX/opt/sqlite3/include -I$BREW_PREFIX/opt/freetype/include -I$BREW_PREFIX/opt/jpeg/include -I$BREW_PREFIX/opt/libpng/include -I$BREW_PREFIX/opt/libzip/include"
export LDFLAGS="-L$BREW_PREFIX/opt/openssl@3/lib -lssl -lcrypto -lz -L$BREW_PREFIX/opt/oniguruma/lib -lonig -L$BREW_PREFIX/opt/libsodium/lib -lsodium -L$BREW_PREFIX/opt/bzip2/lib -Wl,-rpath,$BREW_PREFIX/opt/bzip2/lib -lbz2 -L$BREW_PREFIX/opt/zlib/lib -L$BREW_PREFIX/opt/openssl@3/lib -L$BREW_PREFIX/opt/libxml2/lib -L$BREW_PREFIX/opt/libedit/lib -L$BREW_PREFIX/opt/sqlite3/lib -lsqlite3 -L$BREW_PREFIX/opt/curl/lib -lcurl -L$BREW_PREFIX/opt/freetype/lib -L$BREW_PREFIX/opt/jpeg/lib -L$BREW_PREFIX/opt/libpng/lib -L$BREW_PREFIX/opt/libzip/lib -lzip -lz"
export PKG_CONFIG_PATH="$BREW_PREFIX/opt/openssl/lib/pkgconfig:$BREW_PREFIX/opt/oniguruma/lib/pkgconfig:$BREW_PREFIX/opt/libsodium/lib/pkgconfig:$BREW_PREFIX/opt/libzip/lib/pkgconfig:$BREW_PREFIX/opt/gd/lib/pkgconfig:$BREW_PREFIX/opt/zlib/lib/pkgconfig:$BREW_PREFIX/opt/openssl@3/lib/pkgconfig:$BREW_PREFIX/opt/libxml2/lib/pkgconfig:$BREW_PREFIX/opt/curl/lib/pkgconfig:$BREW_PREFIX/opt/sqlite3/lib/pkgconfig:$BREW_PREFIX/opt/freetype/lib/pkgconfig:$BREW_PREFIX/opt/jpeg/lib/pkgconfig:$BREW_PREFIX/opt/libpng/lib/pkgconfig"
export PHP_CONFIGURE_OPTIONS="--with-openssl=$(brew --prefix openssl) --with-iconv=$(brew --prefix libiconv)"
log "Installing PHP 8.4.0 with asdf..."
asdf install php 8.4.0 --verbose
else
log "asdf already has PHP 8.4.0 installed, skipping"
fi
log "Switching to PHP 8.4.0 with asdf set..."
asdf set php 8.4.0 --home
fi
# Clone FrankenPHP
if [ ! -d "$OSX_DIR/frankenphp" ]; then
log "Cloning FrankenPHP..."
git clone https://github.com/dunglas/frankenphp "$OSX_DIR/frankenphp"
else
log_warn "FrankenPHP already cloned. Skipping."
fi
cd "$OSX_DIR/frankenphp"
# Patch build script
log "Patching build-static.sh to skip git pull..."
sed -i '' 's/^[ \t]*git pull/# git pull/' ./build-static.sh
# Set environment variables
log "Exporting build environment variables..."
export PHP_VERSION=8.2
export PHP_EXTENSIONS="pdo_mysql,gd,bcmath,redis,intl,zip,gmp,apcu,opcache,imagick,sockets,pcntl,geos,iconv,mbstring,fileinfo,ctype,tokenizer,simplexml,dom,filter,session"
export PHP_EXTENSION_LIBS="libgeos,libzip,bzip2,libxml2,openssl,zlib"
export SPC_REL_TYPE=source
export NO_COMPRESS=1
export SPC_OPT_BUILD_ARGS="--debug"
export CMAKE_OSX_ARCHITECTURES=arm64
# Clone and prepare static-php-cli in dist/
STATIC_PHP_CLI_DIR="$OSX_DIR/frankenphp/dist/static-php-cli"
if [ ! -d "$STATIC_PHP_CLI_DIR" ]; then
log "Cloning static-php-cli into dist/..."
git clone --depth 1 --branch 2.5.2 https://github.com/crazywhalecc/static-php-cli.git "$STATIC_PHP_CLI_DIR"
else
log_warn "static-php-cli already exists in dist/. Skipping clone."
fi
# Inject libgeos support
log "Injecting libgeos patch files..."
cp "$ROOT_DIR/builds/osx/spc/libgeos-unix.php" "$STATIC_PHP_CLI_DIR/src/SPC/builder/unix/library/libgeos.php"
cp "$ROOT_DIR/builds/osx/spc/libgeos-macos.php" "$STATIC_PHP_CLI_DIR/src/SPC/builder/macos/library/libgeos.php"
cp "$ROOT_DIR/builds/osx/spc/UnixBuilderBase-macos.php" "$STATIC_PHP_CLI_DIR/src/SPC/builder/unix/UnixBuilderBase.php"
# Patch SPC config
log "Patching SPC config files (source.json, ext.json, lib.json)..."
jq '. + {"php-geos": {"type": "url", "url": "https://github.com/libgeos/php-geos/archive/dfe1ab17b0f155cc315bc13c75689371676e02e1.zip", "license": [{"type": "file", "path": "php-geos-dfe1ab17b0f155cc315bc13c75689371676e02e1/MIT-LICENSE"}, {"type": "file", "path": "php-geos-dfe1ab17b0f155cc315bc13c75689371676e02e1/LGPL-2"}]}}' \
"$STATIC_PHP_CLI_DIR/config/source.json" > "$STATIC_PHP_CLI_DIR/config/source.tmp.json" && \
mv "$STATIC_PHP_CLI_DIR/config/source.tmp.json" "$STATIC_PHP_CLI_DIR/config/source.json"
jq '. + {"libgeos": {"type": "url", "url": "https://download.osgeo.org/geos/geos-3.12.1.tar.bz2", "filename": "geos-3.12.1.tar.bz2", "extract": "geos-3.12.1", "build-dir": "build", "license": [{"type": "file", "path": "COPYING"}]}}' \
"$STATIC_PHP_CLI_DIR/config/source.json" > "$STATIC_PHP_CLI_DIR/config/source.tmp.json" && \
mv "$STATIC_PHP_CLI_DIR/config/source.tmp.json" "$STATIC_PHP_CLI_DIR/config/source.json"
jq '. + {"libgeos": {"source": "libgeos", "static-libs-unix": ["libgeos.a", "libgeos_c.a"]}}' \
"$STATIC_PHP_CLI_DIR/config/lib.json" > "$STATIC_PHP_CLI_DIR/config/lib.tmp.json" && \
mv "$STATIC_PHP_CLI_DIR/config/lib.tmp.json" "$STATIC_PHP_CLI_DIR/config/lib.json"
jq '. + {"geos": {"type": "external", "arg-type": "enable", "source": "php-geos", "lib-depends": ["libgeos"]}}' \
"$STATIC_PHP_CLI_DIR/config/ext.json" > "$STATIC_PHP_CLI_DIR/config/ext.tmp.json" && \
mv "$STATIC_PHP_CLI_DIR/config/ext.tmp.json" "$STATIC_PHP_CLI_DIR/config/ext.json"
# Prepare app embed folder
log "📦 Preparing embedded app directory..."
rm -rf ./dist/app
mkdir -p ./dist/app
cp -R "$APP_DIR"/* ./dist/app/
log "Patching build-static.sh to skip git pull and composer install..."
# Skip `git pull`
sed -i '' 's/^[[:space:]]*git pull/# git pull/' "$OSX_DIR/frankenphp/build-static.sh"
# Patch add CoreServices framework for Caddy build on OSX
sed -i '' 's/-framework CoreFoundation -framework SystemConfiguration/& -framework CoreServices/' "$OSX_DIR/frankenphp/build-static.sh"
# ── work around 403 on GH macOS runners ────────────────────────────────────────
log "Patching curl to use a browser-like User-Agent (to avoid 403s)…"
curl() {
command curl -sSL -A "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.6 Safari/605.1.15" "$@"
}
export -f curl
# Build the binary
log "⚙️ Running FrankenPHP build-static.sh..."
EMBED=dist/app ./build-static.sh
# Move built binary to dist
log "Moving built binary to output folder..."
mkdir -p "$DIST_DIR"
mv dist/frankenphp-mac-$ARCH "$DIST_DIR/$BINARY_NAME"
log_success "✅ macOS binary built at: $DIST_DIR/$BINARY_NAME"
# Clean up frankenphp build and app embed folder
log "🧹 Cleaning temporary app directory..."
rm -rf "$OSX_DIR/frankenphp"

View File

@@ -0,0 +1,271 @@
<?php
declare(strict_types=1);
namespace SPC\builder\unix;
use SPC\builder\BuilderBase;
use SPC\builder\linux\LinuxBuilder;
use SPC\exception\FileSystemException;
use SPC\exception\RuntimeException;
use SPC\exception\WrongUsageException;
use SPC\store\Config;
use SPC\store\FileSystem;
use SPC\util\DependencyUtil;
use SPC\util\SPCConfigUtil;
abstract class UnixBuilderBase extends BuilderBase
{
/** @var string cflags */
public string $arch_c_flags;
/** @var string C++ flags */
public string $arch_cxx_flags;
/** @var string cmake toolchain file */
public string $cmake_toolchain_file;
/**
* @throws WrongUsageException
* @throws FileSystemException
*/
public function getAllStaticLibFiles(): array
{
$libs = [];
// reorder libs
foreach ($this->libs as $lib) {
foreach ($lib->getDependencies() as $dep) {
$libs[] = $dep;
}
$libs[] = $lib;
}
$libFiles = [];
$libNames = [];
// merge libs
foreach ($libs as $lib) {
if (!in_array($lib::NAME, $libNames, true)) {
$libNames[] = $lib::NAME;
array_unshift($libFiles, ...$lib->getStaticLibs());
}
}
return array_map(fn ($x) => realpath(BUILD_LIB_PATH . "/{$x}"), $libFiles);
}
/**
* Return generic cmake options when configuring cmake projects
*/
public function makeCmakeArgs(): string
{
$extra = $this instanceof LinuxBuilder ? '-DCMAKE_C_COMPILER=' . getenv('CC') . ' ' : '';
// NEW: allow env-variable override
$arch = getenv('CMAKE_OSX_ARCHITECTURES') ?: 'arm64';
return $extra .
'-DCMAKE_BUILD_TYPE=Release ' .
'-DCMAKE_INSTALL_PREFIX=' . BUILD_ROOT_PATH . ' ' .
'-DCMAKE_INSTALL_BINDIR=bin ' .
'-DCMAKE_INSTALL_LIBDIR=lib ' .
'-DCMAKE_INSTALL_INCLUDEDIR=include ' .
"-DCMAKE_OSX_ARCHITECTURES={$arch} " .
"-DCMAKE_TOOLCHAIN_FILE={$this->cmake_toolchain_file}";
}
/**
* Generate configure flags
*/
public function makeAutoconfFlags(int $flag = AUTOCONF_ALL): string
{
$extra = '';
// TODO: add auto pkg-config support
if (($flag & AUTOCONF_LIBS) === AUTOCONF_LIBS) {
$extra .= 'LIBS="' . BUILD_LIB_PATH . '" ';
}
if (($flag & AUTOCONF_CFLAGS) === AUTOCONF_CFLAGS) {
$extra .= 'CFLAGS="-I' . BUILD_INCLUDE_PATH . '" ';
}
if (($flag & AUTOCONF_CPPFLAGS) === AUTOCONF_CPPFLAGS) {
$extra .= 'CPPFLAGS="-I' . BUILD_INCLUDE_PATH . '" ';
}
if (($flag & AUTOCONF_LDFLAGS) === AUTOCONF_LDFLAGS) {
$extra .= 'LDFLAGS="-L' . BUILD_LIB_PATH . '" ';
}
return $extra;
}
public function proveLibs(array $sorted_libraries): void
{
// search all supported libs
$support_lib_list = [];
$classes = FileSystem::getClassesPsr4(
ROOT_DIR . '/src/SPC/builder/' . osfamily2dir() . '/library',
'SPC\builder\\' . osfamily2dir() . '\library'
);
foreach ($classes as $class) {
if (defined($class . '::NAME') && $class::NAME !== 'unknown' && Config::getLib($class::NAME) !== null) {
$support_lib_list[$class::NAME] = $class;
}
}
// if no libs specified, compile all supported libs
if ($sorted_libraries === [] && $this->isLibsOnly()) {
$libraries = array_keys($support_lib_list);
$sorted_libraries = DependencyUtil::getLibs($libraries);
}
// add lib object for builder
foreach ($sorted_libraries as $library) {
if (!in_array(Config::getLib($library, 'type', 'lib'), ['lib', 'package'])) {
continue;
}
// if some libs are not supported (but in config "lib.json", throw exception)
if (!isset($support_lib_list[$library])) {
throw new WrongUsageException('library [' . $library . '] is in the lib.json list but not supported to compile, but in the future I will support it!');
}
$lib = new ($support_lib_list[$library])($this);
$this->addLib($lib);
}
// calculate and check dependencies
foreach ($this->libs as $lib) {
$lib->calcDependency();
}
$this->lib_list = $sorted_libraries;
}
/**
* Sanity check after build complete
*
* @throws RuntimeException
*/
protected function sanityCheck(int $build_target): void
{
// sanity check for php-cli
if (($build_target & BUILD_TARGET_CLI) === BUILD_TARGET_CLI) {
logger()->info('running cli sanity check');
[$ret, $output] = shell()->execWithResult(BUILD_ROOT_PATH . '/bin/php -n -r "echo \"hello\";"');
$raw_output = implode('', $output);
if ($ret !== 0 || trim($raw_output) !== 'hello') {
throw new RuntimeException("cli failed sanity check: ret[{$ret}]. out[{$raw_output}]");
}
foreach ($this->getExts(false) as $ext) {
logger()->debug('testing ext: ' . $ext->getName());
$ext->runCliCheckUnix();
}
}
// sanity check for phpmicro
if (($build_target & BUILD_TARGET_MICRO) === BUILD_TARGET_MICRO) {
$test_task = $this->getMicroTestTasks();
foreach ($test_task as $task_name => $task) {
$test_file = SOURCE_PATH . '/' . $task_name . '.exe';
if (file_exists($test_file)) {
@unlink($test_file);
}
file_put_contents($test_file, file_get_contents(SOURCE_PATH . '/php-src/sapi/micro/micro.sfx') . $task['content']);
chmod($test_file, 0755);
[$ret, $out] = shell()->execWithResult($test_file);
foreach ($task['conditions'] as $condition => $closure) {
if (!$closure($ret, $out)) {
$raw_out = trim(implode('', $out));
throw new RuntimeException("micro failed sanity check: {$task_name}, condition [{$condition}], ret[{$ret}], out[{$raw_out}]");
}
}
}
}
// sanity check for embed
if (($build_target & BUILD_TARGET_EMBED) === BUILD_TARGET_EMBED) {
logger()->info('running embed sanity check');
$sample_file_path = SOURCE_PATH . '/embed-test';
if (!is_dir($sample_file_path)) {
@mkdir($sample_file_path);
}
// copy embed test files
copy(ROOT_DIR . '/src/globals/common-tests/embed.c', $sample_file_path . '/embed.c');
copy(ROOT_DIR . '/src/globals/common-tests/embed.php', $sample_file_path . '/embed.php');
$util = new SPCConfigUtil($this);
$config = $util->config($this->ext_list, $this->lib_list, $this->getOption('with-suggested-exts'), $this->getOption('with-suggested-libs'));
$lens = "{$config['cflags']} {$config['ldflags']} {$config['libs']}";
if (PHP_OS_FAMILY === 'Linux' && getenv('SPC_LIBC') === 'musl') {
$lens .= ' -static';
}
[$ret, $out] = shell()->cd($sample_file_path)->execWithResult(getenv('CC') . ' -o embed embed.c ' . $lens);
if ($ret !== 0) {
throw new RuntimeException('embed failed sanity check: build failed. Error message: ' . implode("\n", $out));
}
// if someone changed to --enable-embed=shared, we need to add LD_LIBRARY_PATH
if (getenv('SPC_CMD_VAR_PHP_EMBED_TYPE') === 'shared') {
$ext_path = 'LD_LIBRARY_PATH=' . BUILD_ROOT_PATH . '/lib:$LD_LIBRARY_PATH ';
FileSystem::removeFileIfExists(BUILD_ROOT_PATH . '/lib/libphp.a');
} else {
$ext_path = '';
FileSystem::removeFileIfExists(BUILD_ROOT_PATH . '/lib/libphp.so');
}
[$ret, $output] = shell()->cd($sample_file_path)->execWithResult($ext_path . './embed');
if ($ret !== 0 || trim(implode('', $output)) !== 'hello') {
throw new RuntimeException('embed failed sanity check: run failed. Error message: ' . implode("\n", $output));
}
}
}
/**
* 将编译好的二进制文件发布到 buildroot
*
* @param int $type 发布类型
* @throws RuntimeException
* @throws FileSystemException
*/
protected function deployBinary(int $type): bool
{
$src = match ($type) {
BUILD_TARGET_CLI => SOURCE_PATH . '/php-src/sapi/cli/php',
BUILD_TARGET_MICRO => SOURCE_PATH . '/php-src/sapi/micro/micro.sfx',
BUILD_TARGET_FPM => SOURCE_PATH . '/php-src/sapi/fpm/php-fpm',
default => throw new RuntimeException('Deployment does not accept type ' . $type),
};
logger()->info('Deploying ' . $this->getBuildTypeName($type) . ' file');
FileSystem::createDir(BUILD_ROOT_PATH . '/bin');
shell()->exec('cp ' . escapeshellarg($src) . ' ' . escapeshellarg(BUILD_ROOT_PATH . '/bin/'));
return true;
}
/**
* Run php clean
*
* @throws RuntimeException
*/
protected function cleanMake(): void
{
logger()->info('cleaning up');
shell()->cd(SOURCE_PATH . '/php-src')->exec('make clean');
}
/**
* Patch phpize and php-config if needed
* @throws FileSystemException
*/
protected function patchPhpScripts(): void
{
// patch phpize
if (file_exists(BUILD_BIN_PATH . '/phpize')) {
logger()->debug('Patching phpize prefix');
FileSystem::replaceFileStr(BUILD_BIN_PATH . '/phpize', "prefix=''", "prefix='" . BUILD_ROOT_PATH . "'");
FileSystem::replaceFileStr(BUILD_BIN_PATH . '/phpize', 's##', 's#/usr/local#');
}
// patch php-config
if (file_exists(BUILD_BIN_PATH . '/php-config')) {
logger()->debug('Patching php-config prefix and libs order');
$php_config_str = FileSystem::readFile(BUILD_BIN_PATH . '/php-config');
$php_config_str = str_replace('prefix=""', 'prefix="' . BUILD_ROOT_PATH . '"', $php_config_str);
// move mimalloc to the beginning of libs
$php_config_str = preg_replace('/(libs=")(.*?)\s*(' . preg_quote(BUILD_LIB_PATH, '/') . '\/mimalloc\.o)\s*(.*?)"/', '$1$3 $2 $4"', $php_config_str);
// move lstdc++ to the end of libs
$php_config_str = preg_replace('/(libs=")(.*?)\s*(-lstdc\+\+)\s*(.*?)"/', '$1$2 $4 $3"', $php_config_str);
FileSystem::writeFile(BUILD_BIN_PATH . '/php-config', $php_config_str);
}
}
}

View File

@@ -0,0 +1,12 @@
<?php
declare(strict_types=1);
namespace SPC\builder\macos\library;
class libgeos extends MacOSLibraryBase
{
use \SPC\builder\unix\library\libgeos;
public const NAME = 'libgeos';
}

View File

@@ -0,0 +1,33 @@
<?php
declare(strict_types=1);
namespace SPC\builder\unix\library;
use SPC\exception\FileSystemException;
use SPC\exception\RuntimeException;
use SPC\store\FileSystem;
trait libgeos
{
/**
* @throws FileSystemException
* @throws RuntimeException
*/
protected function build(): void
{
FileSystem::resetDir($this->source_dir . '/build');
shell()->cd($this->source_dir . '/build')
->setEnv([
'CFLAGS' => $this->getLibExtraCFlags(),
'LDFLAGS' => $this->getLibExtraLdFlags(),
'LIBS' => $this->getLibExtraLibs(),
])
->execWithEnv("cmake {$this->builder->makeCmakeArgs()} -DBUILD_SHARED_LIBS=OFF ..")
->execWithEnv("make -j{$this->builder->concurrency}")
->execWithEnv('make install');
$this->patchPkgconfPrefix(['geos.pc']);
}
}

Submodule console deleted from e42893e2dd

25
console/.dockerignore Normal file
View File

@@ -0,0 +1,25 @@
# Ignore files not needed for docker to build microservice image
node_modules/*
postgres/*
typings/*
*/.git*
*.git*
*.git
*.md
!gulpfile.js
ci/
.circleci/
Vagrantfile
concourse/
infra/*
vagrant/*
docker/*
deploy/*
media/*
data/*
appspec.yml
compose.yml
docker-compose-prod.yml
docker-compose.yml
$virtualenv.tar.gz
$node_modules.tar.gz

19
console/.editorconfig Normal file
View File

@@ -0,0 +1,19 @@
# EditorConfig helps developers define and maintain consistent
# coding styles between different editors and IDEs
# editorconfig.org
root = true
[*]
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
indent_style = space
indent_size = 2
[*.hbs]
insert_final_newline = false
[*.{diff,md}]
trim_trailing_whitespace = false

7
console/.ember-cli Normal file
View File

@@ -0,0 +1,7 @@
{
/**
Setting `isTypeScriptProject` to true will force the blueprint generators to generate TypeScript
rather than JavaScript by default, when a TypeScript version of a given blueprint is available.
*/
"isTypeScriptProject": false
}

13
console/.eslintignore Normal file
View File

@@ -0,0 +1,13 @@
# unconventional js
/blueprints/*/files/
# compiled output
/dist/
# misc
/coverage/
!.*
.*/
# ember-try
/.node_modules.ember-try/

77
console/.eslintrc.js Normal file
View File

@@ -0,0 +1,77 @@
'use strict';
module.exports = {
root: true,
parser: '@babel/eslint-parser',
parserOptions: {
ecmaVersion: 'latest',
sourceType: 'module',
requireConfigFile: false,
babelOptions: {
plugins: [['@babel/plugin-proposal-decorators', { decoratorsBeforeExport: true }]],
},
},
plugins: ['ember'],
extends: ['eslint:recommended', 'plugin:ember/recommended', 'plugin:prettier/recommended'],
ignorePatterns: ['prebuild.js'],
env: {
browser: true,
},
globals: {
socketClusterClient: 'readonly',
L: 'readonly',
module: 'readonly',
require: 'readonly',
},
rules: {
'ember/no-array-prototype-extensions': 'off',
'ember/no-computed-properties-in-native-classes': 'off',
'ember/no-controller-access-in-routes': 'off',
'ember/no-empty-glimmer-component-classes': 'off',
'ember/no-get': 'off',
'ember/classic-decorator-no-classic-methods': 'off',
'n/no-unpublished-require': [
'error',
{
allowModules: [
'ember-cli',
'tailwindcss',
'@tailwindcss/forms',
'postcss-import',
'postcss-preset-env',
'postcss-each',
'postcss-mixins',
'postcss-conditionals-renewed',
'autoprefixer',
'broccoli-funnel',
'ember-auto-import',
],
},
],
'no-prototype-builtins': 'off',
},
overrides: [
{
files: [
'./.eslintrc.js',
'./.prettierrc.js',
'./.stylelintrc.js',
'./.template-lintrc.js',
'./ember-cli-build.js',
'./testem.js',
'./blueprints/*/index.js',
'./config/**/*.js',
'./lib/*/index.js',
'./server/**/*.js',
],
parserOptions: {
sourceType: 'script',
},
env: {
browser: false,
node: true,
},
extends: ['plugin:n/recommended'],
},
],
};

60
console/.github/workflows/ci.yml vendored Normal file
View File

@@ -0,0 +1,60 @@
name: Ember CI
on:
push:
branches: [ main ]
tags:
- 'v*'
pull_request:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [18.x] # Build on Node.js 18
steps:
- uses: actions/checkout@v2
- name: Setup Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v2
with:
node-version: ${{ matrix.node-version }}
- name: Setup pnpm
uses: pnpm/action-setup@v2.0.1
with:
version: latest
- name: Get pnpm Store Directory
id: pnpm-cache
shell: bash
run: |
echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT
- uses: actions/cache@v3
name: Setup pnpm Cache
with:
path: ${{ steps.pnpm-cache.outputs.STORE_PATH }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
- name: Create .npmrc
run: |
if [[ -n "${{ secrets._GITHUB_AUTH_TOKEN }}" ]]; then
echo "@fleetbase:registry=https://npm.pkg.github.com/" > .npmrc
echo "//npm.pkg.github.com/:_authToken=${{ secrets._GITHUB_AUTH_TOKEN }}" >> .npmrc
fi
- name: Install Dependencies
run: pnpm install
- name: Lint
run: pnpm run lint
- name: Build
run: npx ember build --environment production

32
console/.gitignore vendored Normal file
View File

@@ -0,0 +1,32 @@
# compiled output
/dist/
/declarations/
# dependencies
/node_modules/
/scripts/node_modules/
# misc
/.env*
/environments/.env*
/.pnp*
/.eslintcache
/coverage/
/npm-debug.log*
/testem.log
/yarn-error.log
/.npmrc
# ember-try
/.node_modules.ember-try/
/npm-shrinkwrap.json.ember-try
/package.json.ember-try
/package-lock.json.ember-try
/yarn.lock.ember-try
# broccoli-debug
/DEBUG/
# Auto-generated extension files
/app/extensions/
/app/utils/extension-loaders.js

13
console/.prettierignore Normal file
View File

@@ -0,0 +1,13 @@
# unconventional js
/blueprints/*/files/
# compiled output
/dist/
# misc
/coverage/
!.*
.*/
# ember-try
/.node_modules.ember-try/

17
console/.prettierrc.js Normal file
View File

@@ -0,0 +1,17 @@
'use strict';
module.exports = {
trailingComma: 'es5',
tabWidth: 4,
semi: true,
singleQuote: true,
printWidth: 190,
overrides: [
{
files: '*.{hbs,js,ts}',
options: {
singleQuote: false,
},
},
],
};

8
console/.stylelintignore Normal file
View File

@@ -0,0 +1,8 @@
# unconventional files
/blueprints/*/files/
# compiled output
/dist/
# addons
/.node_modules.ember-try/

8
console/.stylelintrc.js Normal file
View File

@@ -0,0 +1,8 @@
'use strict';
module.exports = {
extends: ['stylelint-config-standard', 'stylelint-prettier/recommended'],
rules: {
'import-notation': null,
},
};

View File

@@ -0,0 +1,13 @@
'use strict';
module.exports = {
extends: 'recommended',
rules: {
'no-bare-strings': 'off',
'no-invalid-interactive': 'off',
'no-yield-only': 'off',
'table-groups': 'off',
'link-href-attributes': 'off',
'require-input-label': 'off',
},
};

3
console/.watchmanconfig Normal file
View File

@@ -0,0 +1,3 @@
{
"ignore_dirs": ["dist"]
}

54
console/Dockerfile Normal file
View File

@@ -0,0 +1,54 @@
# ---- Build Stage ----
FROM node:18.15.0-alpine as builder
# Set the working directory in the container to /console
WORKDIR /console
# Create the pnpm directory and set the PNPM_HOME environment variable
RUN mkdir -p ~/.pnpm
ENV PNPM_HOME=/root/.pnpm
# Set environment
ARG ENVIRONMENT=production
# Add the pnpm global bin to the PATH
ENV PATH=/root/.pnpm/bin:$PATH
# Copy pnpm-lock.yaml (or package.json) into the directory /console in the container
COPY package.json pnpm-lock.yaml ./
# Copy over .npmrc if applicable
COPY .npmr[c] ./
# Install global dependencies
RUN npm install -g ember-cli pnpm
# Install git
RUN apk update && apk add git openssh-client
# Trust GitHub's RSA host key
RUN mkdir -p -m 0600 ~/.ssh && ssh-keyscan github.com >> ~/.ssh/known_hosts
# Install app dependencies
RUN pnpm install
# Copy the console directory contents into the container at /console
COPY . .
# Build the application
RUN pnpm build --environment $ENVIRONMENT
# ---- Serve Stage ----
FROM nginx:alpine
# Copy the built app to our served directory
COPY --from=builder /console/dist /usr/share/nginx/html
# Expose the port nginx is bound to
EXPOSE 4200
# Use custom nginx.conf
COPY nginx.conf /etc/nginx/conf.d/default.conf
# Start Nginx server
CMD ["nginx", "-g", "daemon off;"]

22
console/README.md Normal file
View File

@@ -0,0 +1,22 @@
<div id="hero">
<p align="center" dir="auto">
<a href="https://fleetbase.io" rel="nofollow">
<img src="https://user-images.githubusercontent.com/58805033/191936702-fed04b0f-7966-4041-96d0-95e27bf98248.png" alt="Fleetbase logo" width="600" height="140" style="max-width: 100%;">
</a>
</p>
<h2 align="center" dir="auto">
Fleetbase Console
</h2>
</div>
<p align="center" dir="auto">
<img src="https://user-images.githubusercontent.com/816371/246987420-deef79fa-e30c-4ce9-8a04-0dee990ffd9d.png" alt="Fleetbase Console" width="600" style="max-width: 100%;" />
</p>
# ⭐️ Overview
<p>The Fleetbase Console, a vital component of the Fleetbase Platform, serves as the graphical user interface that facilitates interaction with all Fleetbase extensions. It's architecturally designed to be lightweight, primarily employing Ember Engines for its operational foundation. Ember Engines, a scalable development paradigm for ambitious web applications, allow the Console to dynamically load and manage extensions, ensuring a streamlined and efficient user experience.</p>
<p>The responsibilities of the Console are kept minimalistic to maintain its performance and agility. The Console's key responsibilities encompass administration management, configuration of organization and user settings, and establishing a robust connection to the Fleetbase extensions repository. In its administrative capacity, it provides an intuitive interface for configuring the Fleetbas instance.</p>
<p>Lastly, the Console plays a pivotal role in connecting to the Fleetbase extensions repository. This provides the flexibility to add, update, or remove extensions as per the organizational needs and preferences, all while ensuring the seamless operation and integrity of the Fleetbase Platform.</p>

12
console/app.yaml Normal file
View File

@@ -0,0 +1,12 @@
runtime: python312
handlers:
- url: /(.*\..+)$
static_files: \1
upload: (.+)
secure: always
expiration: 1h
- url: /.*
static_files: index.html
upload: index.html
secure: always

View File

@@ -0,0 +1 @@
export { default } from '@fleetbase/ember-core/adapters/application';

View File

@@ -0,0 +1,15 @@
import ApplicationAdapter from './application';
export default class BrandAdapter extends ApplicationAdapter {
urlForFindRecord() {
return `${this.host}/${this.namespace}/settings/branding`;
}
urlForUpdateRecord() {
return `${this.host}/${this.namespace}/settings/branding`;
}
urlForCreateRecord() {
return `${this.host}/${this.namespace}/settings/branding`;
}
}

15
console/app/app.js Normal file
View File

@@ -0,0 +1,15 @@
import Application from '@ember/application';
import Resolver from 'ember-resolver';
import loadInitializers from 'ember-load-initializers';
import config from '@fleetbase/console/config/environment';
import './deprecation-workflow';
export default class App extends Application {
modulePrefix = config.modulePrefix;
podModulePrefix = config.podModulePrefix;
Resolver = Resolver;
extensions = [];
engines = {};
}
loadInitializers(App, config.modulePrefix);

View File

View File

@@ -0,0 +1 @@
{{yield}}

View File

@@ -0,0 +1,3 @@
import Component from '@glimmer/component';
export default class Configure2faComponent extends Component {}

View File

@@ -0,0 +1,46 @@
<ContentPanel @title="Filesystem" @open={{true}} @wrapperClass="bordered-classic">
<InputGroup @name="Driver" @helpText="Select the default filesystem driver for Fleetbase to use.">
<Select @options={{this.disks}} @value={{this.driver}} @onSelect={{this.setDriver}} @placeholder="Select filesystem driver" class="w-full" disabled={{this.isLoading}} />
</InputGroup>
{{#if (eq this.driver "s3")}}
<InputGroup @name="S3 Bucket" @value={{this.s3Bucket}} disabled={{this.isLoading}} />
<InputGroup @name="S3 URL" @value={{this.s3Url}} disabled={{this.isLoading}} />
<InputGroup @name="S3 Endpoint" @value={{this.s3Endpoint}} disabled={{this.isLoading}} />
{{/if}}
{{#if (eq this.driver "gcs")}}
{{#if this.isGoogleCloudStorageEnvConfigued}}
<div class="border border-yellow-900 shadow-sm rounded-lg bg-yellow-200 mb-4">
<div class="px-3 py-2 text-sm text-yellow-900 flex items-center">
<FaIcon @icon="triangle-exclamation" @size="md" class="mr-1.5" />
Warning! GCS is already configured in the server environment. Changing values below may break this.
</div>
</div>
{{/if}}
<InputGroup @name="GCS Bucket" @value={{this.gcsBucket}} disabled={{this.isLoading}} />
<InputGroup @name="GCS Service Account Key File" @wrapperClass="">
<div class="flex flex-row items-center mb-0i">
<UploadButton @name="firebase-service-account" @accept="text/plain,text/javascript,application/json" @onFileAdded={{this.uploadGcsCredentialsFile}} @buttonText="Upload Service Account JSON" @icon="upload" class="w-auto m-0i mt-0i" />
{{#if this.gcsCredentialsFile}}
<div class="ml-2.5 text-sm dark:text-white text-black flex flex-row items-center border border-blue-500 rounded-lg px-2 py-0.5 -mt-1">
<FaIcon @icon="file-text" @size="sm" class="mr-2 dark:text-white text-black" />
<span>{{this.gcsCredentialsFile.original_filename}}</span>
<a href="javascript:;" class="text-red-500 ml-2" {{on "click" this.removeGcsCredentialsFile}}>
<FaIcon @icon="times" class="text-red-500" />
</a>
</div>
{{/if}}
</div>
</InputGroup>
{{/if}}
{{#if this.testResponse}}
<div class="flex flex-row items-center rounded-lg border {{if (eq this.testResponse.status 'error') 'border-red-900 bg-red-800 text-red-100' 'border-green-900 bg-green-800 text-green-100'}} shadow-sm my-2 px-4 py-2">
<FaIcon @icon={{if (eq this.testResponse.status 'error') 'triangle-exclamation' 'circle-check'}} class="mr-1.5 {{if (eq this.testResponse.status 'error') 'text-red-200' 'text-green-200'}}" />
<span class="text-xs">{{this.this.testResponse.message}}</span>
</div>
{{/if}}
<Button @wrapperClass="mt-3" @icon="plug" @text="Test Config" @onClick={{this.test}} @isLoading={{this.isLoading}} />
</ContentPanel>
<EmberWormhole @to="next-view-section-subheader-actions">
<Button @type="primary" @size="sm" @icon="save" @text="Save Changes" @onClick={{this.save}} @disabled={{this.isLoading}} @isLoading={{this.isLoading}} />
</EmberWormhole>

View File

@@ -0,0 +1,117 @@
import Component from '@glimmer/component';
import { inject as service } from '@ember/service';
import { tracked } from '@glimmer/tracking';
import { action } from '@ember/object';
export default class ConfigureFilesystemComponent extends Component {
@service fetch;
@service notifications;
@service currentUser;
@tracked isLoading = false;
@tracked testResponse;
@tracked disks = [];
@tracked driver = 'local';
@tracked s3Bucket = null;
@tracked s3Url = null;
@tracked s3Endpoint = null;
@tracked gcsBucket = null;
@tracked gcsCredentialsFileId = null;
@tracked gcsCredentialsFile = null;
@tracked isGoogleCloudStorageEnvConfigued = false;
/**
* Creates an instance of ConfigureFilesystemComponent.
* @memberof ConfigureFilesystemComponent
*/
constructor() {
super(...arguments);
this.loadConfigValues();
}
@action setConfigValues(config) {
for (const key in config) {
if (this[key] !== undefined) {
this[key] = config[key];
}
}
}
@action setDriver(driver) {
this.driver = driver;
}
@action loadConfigValues() {
this.isLoading = true;
this.fetch
.get('settings/filesystem-config')
.then((response) => {
this.setConfigValues(response);
})
.finally(() => {
this.isLoading = false;
});
}
@action save() {
this.isLoading = true;
this.fetch
.post('settings/filesystem-config', {
driver: this.driver,
s3: {
bucket: this.s3Bucket,
url: this.s3Url,
endpoint: this.s3Endpoint,
},
gcsCredentialsFileId: this.gcsCredentialsFileId,
gcsBucket: this.gcsBucket,
})
.then(() => {
this.notifications.success('Filesystem configuration saved.');
})
.finally(() => {
this.isLoading = false;
});
}
@action test() {
this.isLoading = true;
this.fetch
.post('settings/test-filesystem-config', {
disk: this.driver,
})
.then((response) => {
this.testResponse = response;
})
.finally(() => {
this.isLoading = false;
});
}
@action removeGcsCredentialsFile() {
this.gcsCredentialsFileId = undefined;
this.gcsCredentialsFile = undefined;
}
@action uploadGcsCredentialsFile(file) {
try {
this.fetch.uploadFile.perform(
file,
{
path: 'gcs',
subject_uuid: this.currentUser.companyId,
subject_type: 'company',
type: 'gcs_credentials',
},
(uploadedFile) => {
this.gcsCredentialsFileId = uploadedFile.id;
this.gcsCredentialsFile = uploadedFile;
}
);
} catch (error) {
this.notifications.serverError(error);
}
}
}

View File

@@ -0,0 +1,64 @@
<ContentPanel @title="Mail" @open={{true}} @wrapperClass="bordered-classic">
<InputGroup @name="Mailer" @helpText="Select the default mailer for Fleetbase to use.">
<Select @options={{this.mailers}} @value={{this.mailer}} @onSelect={{this.setMailer}} @placeholder="Select mailer" class="w-full" />
</InputGroup>
{{#if (eq this.mailer "smtp")}}
<InputGroup @name="SMTP Host" @value={{this.smtpHost}} disabled={{this.loadConfigValues.isRunning}} />
<InputGroup @name="SMTP Port" @type="number" @value={{this.smtpPort}} disabled={{this.loadConfigValues.isRunning}} />
<InputGroup>
<Toggle @isToggled={{eq this.smtpEncryption "tls"}} @onToggle={{this.enableSmtpEncryption}} @label="SMTP Encryption" @helpText="Enabled TLS Encryption" />
</InputGroup>
<InputGroup @name="SMTP Username" @value={{this.smtpUsername}} disabled={{this.loadConfigValues.isRunning}} />
<InputGroup @name="SMTP Password" @value={{this.smtpPassword}} disabled={{this.loadConfigValues.isRunning}} />
<InputGroup @name="SMTP Timeout" @value={{this.smtpTimeout}} disabled={{this.loadConfigValues.isRunning}} />
<InputGroup @name="SMTP Auth Mode" @value={{this.smtpAuth_mode}} disabled={{this.loadConfigValues.isRunning}} />
{{/if}}
{{#if (eq this.mailer "microsoft-graph")}}
<InputGroup @name="Client ID" @value={{this.microsoftGraphClient_id}} disabled={{this.loadConfigValues.isRunning}} />
<InputGroup @name="Client Secret" @value={{this.microsoftGraphClient_secret}} disabled={{this.loadConfigValues.isRunning}} />
<InputGroup @name="Tenant ID" @value={{this.microsoftGraphTenant_id}} disabled={{this.loadConfigValues.isRunning}} />
<InputGroup>
<Toggle @isToggled={{this.microsoftGraphSave_to_sent_items}} @onToggle={{fn (mut this.microsoftGraphSave_to_sent_items)}} @label="Save to sent items" />
</InputGroup>
{{/if}}
{{#if (eq this.mailer "mailgun")}}
<InputGroup @name="Mailgun Domain" @value={{this.mailgunDomain}} disabled={{this.loadConfigValues.isRunning}} />
<InputGroup @name="Mailgun Endpoint" @value={{this.mailgunEndpoint}} disabled={{this.loadConfigValues.isRunning}} />
<InputGroup @name="Mailgun Secret" @value={{this.mailgunSecret}} disabled={{this.loadConfigValues.isRunning}} />
{{/if}}
{{#if (eq this.mailer "postmark")}}
<InputGroup @name="Postmark Token" @value={{this.postmarkToken}} disabled={{this.loadConfigValues.isRunning}} />
{{/if}}
{{#if (eq this.mailer "sendgrid")}}
<InputGroup @name="Sendgrid API Key" @value={{this.sendgridApi_key}} disabled={{this.loadConfigValues.isRunning}} />
{{/if}}
{{#if (eq this.mailer "resend")}}
<InputGroup @name="Resend API Key" @value={{this.resendKey}} disabled={{this.loadConfigValues.isRunning}} />
{{/if}}
<InputGroup
@name="From Address"
@helpText="Input the email address for Fleetbase to send emails from."
@value={{this.fromAddress}}
@placeholder="From Address"
disabled={{this.isLoading}}
/>
<InputGroup @name="From Name" @helpText="Input the name for Fleetbase to send emails from." @value={{this.fromName}} @placeholder="From Name" disabled={{this.isLoading}} />
{{#if this.testResponse}}
<div
class="flex flex-row items-center rounded-lg border
{{if (eq this.testResponse.status 'error') 'border-red-900 bg-red-800 text-red-100' 'border-green-900 bg-green-800 text-green-100'}}
shadow-sm my-2 px-4 py-2"
>
<FaIcon
@icon={{if (eq this.testResponse.status "error") "triangle-exclamation" "circle-check"}}
class="mr-1.5 {{if (eq this.testResponse.status 'error') 'text-red-200' 'text-green-200'}}"
/>
<span class="text-xs">{{this.testResponse.message}}</span>
</div>
{{/if}}
<Button @wrapperClass="mt-3" @icon="plug" @text="Test Config" @onClick={{perform this.test}} @isLoading={{this.test.isRunning}} />
</ContentPanel>
<EmberWormhole @to="next-view-section-subheader-actions">
<Button @type="primary" @size="sm" @icon="save" @text="Save Changes" @onClick={{perform this.save}} @disabled={{this.save.isRunning}} @isLoading={{this.save.isRunning}} />
</EmberWormhole>

View File

@@ -0,0 +1,159 @@
import Component from '@glimmer/component';
import { inject as service } from '@ember/service';
import { tracked } from '@glimmer/tracking';
import { action } from '@ember/object';
import { task } from 'ember-concurrency';
export default class ConfigureMailComponent extends Component {
@service fetch;
@service notifications;
@tracked isLoading = false;
@tracked testResponse;
@tracked mailers = [];
@tracked mailer = 'smtp';
@tracked fromAddress = null;
@tracked fromName = null;
@tracked smtpHost = 'smtp.mailgun.org';
@tracked smtpPort = 587;
@tracked smtpEncryption = null;
@tracked smtpUsername = null;
@tracked smtpPassword = null;
@tracked smtpTimeout = null;
@tracked smtpAuth_mode = null;
@tracked mailgunDomain = null;
@tracked mailgunEndpoint = 'api.mailgun.net';
@tracked mailgunSecret = null;
@tracked postmarkToken = null;
@tracked sendgridApi_key = null;
@tracked resendKey = null;
@tracked microsoftGraphClient_id = null;
@tracked microsoftGraphClient_secret = null;
@tracked microsoftGraphTenant_id = null;
@tracked microsoftGraphSave_to_sent_items = false;
/**
* Creates an instance of ConfigureFilesystemComponent.
* @memberof ConfigureFilesystemComponent
*/
constructor() {
super(...arguments);
this.loadConfigValues.perform();
}
@action setConfigValues(config) {
for (const key in config) {
if (this[key] !== undefined) {
this[key] = config[key];
}
}
}
@action enableSmtpEncryption(enabled) {
this.smtpEncryption = enabled ? 'tls' : null;
}
@action setMailer(mailer) {
this.mailer = mailer;
}
@action serializeSmtpConfig() {
return {
host: this.smtpHost,
port: this.smtpPort,
encryption: this.smtpEncryption,
username: this.smtpUsername,
password: this.smtpPassword,
timeout: this.smtpTimeout,
auth_mode: this.smtpAuth_mode,
};
}
@action serializeMicrosoftGraphConfig() {
return {
client_id: this.microsoftGraphClient_id,
client_secret: this.microsoftGraphClient_secret,
tenant_id: this.microsoftGraphTenant_id,
save_to_sent_items: this.microsoftGraphSave_to_sent_items,
from: {
address: this.fromAddress,
name: this.fromName,
},
};
}
@action serializeMailgunConfig() {
return {
domain: this.mailgunDomain,
secret: this.mailgunSecret,
endpoint: this.mailgunEndpoint,
};
}
@action serializePostmarkConfig() {
return {
token: this.postmarkToken,
};
}
@action serializeSendgridConfig() {
return {
api_key: this.sendgridApi_key,
};
}
@action serializeResendConfig() {
return {
key: this.resendKey,
};
}
@task *loadConfigValues() {
try {
const config = yield this.fetch.get('settings/mail-config');
this.setConfigValues(config);
} catch (error) {
this.notifications.serverError(error);
}
}
@task *test() {
try {
this.testResponse = yield this.fetch.post('settings/test-mail-config', {
mailer: this.mailer,
from: {
address: this.fromAddress,
name: this.fromName,
},
smtp: this.serializeSmtpConfig(),
mailgun: this.serializeMailgunConfig(),
postmark: this.serializePostmarkConfig(),
sendgrid: this.serializeSendgridConfig(),
resend: this.serializeResendConfig(),
microsoftGraph: this.serializeMicrosoftGraphConfig(),
});
} catch (error) {
this.notifications.serverError(error);
}
}
@task *save() {
try {
yield this.fetch.post('settings/mail-config', {
mailer: this.mailer,
from: {
address: this.fromAddress,
name: this.fromName,
},
smtp: this.serializeSmtpConfig(),
mailgun: this.serializeMailgunConfig(),
postmark: this.serializePostmarkConfig(),
sendgrid: this.serializeSendgridConfig(),
resend: this.serializeResendConfig(),
microsoftGraph: this.serializeMicrosoftGraphConfig(),
});
this.notifications.success('Mail configuration saved.');
} catch (error) {
this.notifications.serverError(error);
}
}
}

View File

@@ -0,0 +1,70 @@
<ContentPanel @title="APN Configutation" @open={{true}} @wrapperClass="bordered-classic">
<InputGroup @name="APN Key ID" @value={{this.apn.key_id}} disabled={{this.isLoading}} />
<InputGroup @name="APN Team ID" @value={{this.apn.team_id}} disabled={{this.isLoading}} />
<InputGroup @name="APN App Bundle ID" @value={{this.apn.app_bundle_id}} disabled={{this.isLoading}} />
{{!-- <InputGroup @name="APN Private Key" disabled={{this.isLoading}}>
<Textarea class="form-input w-full" @value={{this.apn.private_key_content}} placeholder="APN Private Key" rows="10" disabled={{this.isLoading}} />
</InputGroup> --}}
<InputGroup @wrapperClass="flex flex-row items-center">
<UploadButton @name="apn-key" @accept="text/plain,application/x-pem-file,application/x-pkcs12,application/x-x509-ca-cert,.p12,.pem,.p8" @onFileAdded={{this.uploadApnKey}} @buttonText="Upload P8 Key File" @icon="upload" class="w-auto m-0i mt-0i" />
{{#if this.apn.private_key_file}}
<div class="ml-2.5 text-sm dark:text-white text-black flex flex-row items-center border border-blue-500 rounded-lg px-2 py-0.5 -mt-1">
<FaIcon @icon="file-text" @size="sm" class="mr-2 dark:text-white text-black" />
<span>{{this.apn.private_key_file.original_filename}}</span>
<a href="javascript:;" class="text-red-500 ml-2" {{on "click" this.removeApnFile}}><FaIcon @icon="times" class="text-red-500" /></a>
</div>
{{/if}}
</InputGroup>
<InputGroup @wrapperClass="mb-0i">
<Checkbox @label="APN Production" @value={{this.apn.production}} @onToggle={{this.toggleApnProduction}} />
</InputGroup>
</ContentPanel>
<ContentPanel @title="Firebase Configutation" @open={{true}} @wrapperClass="bordered-classic">
<InputGroup @wrapperClass="flex flex-row items-center mb-0i">
<UploadButton @name="firebase-service-account" @accept="text/plain,text/javascript,application/json" @onFileAdded={{this.uploadFirebaseCredentials}} @buttonText="Upload Service Account JSON" @icon="upload" class="w-auto m-0i mt-0i" />
{{#if this.firebase.credentials_file}}
<div class="ml-2.5 text-sm dark:text-white text-black flex flex-row items-center border border-blue-500 rounded-lg px-2 py-0.5 -mt-1">
<FaIcon @icon="file-text" @size="sm" class="mr-2 dark:text-white text-black" />
<span>{{this.firebase.credentials_file.original_filename}}</span>
<a href="javascript:;" class="text-red-500 ml-2" {{on "click" this.removeFirebaseCredentialsFile}}><FaIcon @icon="times" class="text-red-500" /></a>
</div>
{{/if}}
</InputGroup>
</ContentPanel>
<ContentPanel @title="Test Push Notification" @open={{true}} @wrapperClass="bordered-classic">
{{#if this.testResponse}}
<div class="flex flex-row items-center rounded-lg border {{if (eq this.testResponse.status 'error') 'border-red-900 bg-red-800 text-red-100' 'border-green-900 bg-green-800 text-green-100'}} shadow-sm my-2 px-4 py-2">
<FaIcon @icon={{if (eq this.testResponse.status 'error') 'triangle-exclamation' 'circle-check'}} class="mr-1.5 {{if (eq this.testResponse.status 'error') 'text-red-200' 'text-green-200'}}" />
<span class="text-xs">{{this.this.testResponse.message}}</span>
</div>
{{/if}}
<div class="">
<div class="flex flex-col space-y-2">
<div class="flex flex-row items-center">
<div class="text-sm w-40">Title:</div>
<Input @value={{this.testTitle}} placeholder="Push Notification Title" class="form-input flex-1" />
</div>
<div class="flex flex-row items-center">
<div class="text-sm w-40">Message:</div>
<Input @value={{this.testMessage}} placeholder="Push Notification Message" class="form-input flex-1" />
</div>
<div class="flex flex-row items-center">
<div class="text-sm w-40">APN Device Token:</div>
<Input @value={{this.apnToken}} placeholder="APN Device Token" class="form-input flex-1" />
</div>
<div class="flex flex-row items-center">
<div class="text-sm w-40">FCM Device Token:</div>
<Input @value={{this.fcmToken}} placeholder="FCM Device Token" class="form-input flex-1" />
</div>
</div>
<Button @wrapperClass="mt-3" @icon="plug" @text="Test Config" @onClick={{this.test}} @isLoading={{this.isLoading}} />
</div>
</ContentPanel>
<Spacer @height="300px" />
<EmberWormhole @to="next-view-section-subheader-actions">
<Button @type="primary" @size="sm" @icon="save" @text="Save Changes" @onClick={{this.save}} @disabled={{this.isLoading}} @isLoading={{this.isLoading}} />
</EmberWormhole>

View File

@@ -0,0 +1,172 @@
import Component from '@glimmer/component';
import { inject as service } from '@ember/service';
import { tracked } from '@glimmer/tracking';
import { action } from '@ember/object';
export default class ConfigureNotificationChannelsComponent extends Component {
@service fetch;
@service notifications;
@service currentUser;
@tracked isLoading = false;
@tracked testResponse;
@tracked testTitle = 'Hello World from Fleetbase 🚀';
@tracked testMessage = 'This is a test push notification!';
@tracked apnToken;
@tracked fcmToken;
@tracked apn = {
key_id: '',
team_id: '',
app_bundle_id: '',
private_key_path: '',
_private_key_path: '',
private_key_file_id: '',
private_key_file: null,
production: true,
};
@tracked firebase = {
credentials: '',
};
constructor() {
super(...arguments);
this.loadConfigValues();
}
@action toggleApnProduction(checked) {
this.apn = {
...this.apn,
production: checked,
};
}
@action removeApnFile() {
const apnConfig = this.apn;
apnConfig.private_key_file = null;
apnConfig.private_key_file_id = '';
apnConfig.private_key_path = '';
apnConfig._private_key_path = '';
this.apn = apnConfig;
}
@action removeFirebaseCredentialsFile() {
const firebaseConfig = this.firebase;
firebaseConfig.credentials_file = null;
firebaseConfig.credentials_file_id = '';
firebaseConfig.credentials = '';
this.firebase = firebaseConfig;
}
@action uploadApnKey(file) {
try {
this.fetch.uploadFile.perform(
file,
{
path: 'apn',
subject_uuid: this.currentUser.companyId,
subject_type: 'company',
type: 'apn_key',
},
(uploadedFile) => {
const apnConfig = this.apn;
apnConfig.private_key_file = uploadedFile;
apnConfig.private_key_file_id = uploadedFile.id;
apnConfig.private_key_path = uploadedFile.path;
apnConfig._private_key_path = uploadedFile.path;
this.apn = apnConfig;
}
);
} catch (error) {
this.notifications.serverError(error);
}
}
@action uploadFirebaseCredentials(file) {
try {
this.fetch.uploadFile.perform(
file,
{
path: 'firebase',
subject_uuid: this.currentUser.companyId,
subject_type: 'company',
type: 'firebase_credentials',
},
(uploadedFile) => {
const firebaseConfig = this.firebase;
firebaseConfig.credentials_file = uploadedFile;
firebaseConfig.credentials_file_id = uploadedFile.id;
firebaseConfig.credentials_file_path = uploadedFile.path;
this.firebase = firebaseConfig;
}
);
} catch (error) {
this.notifications.serverError(error);
}
}
@action setConfigValues(config) {
for (const key in config) {
if (this[key] !== undefined) {
this[key] = config[key];
}
}
}
@action loadConfigValues() {
this.isLoading = true;
this.fetch
.get('settings/notification-channels-config')
.then((response) => {
this.setConfigValues(response);
})
.finally(() => {
this.isLoading = false;
});
}
@action save() {
this.isLoading = true;
const apnConfig = this.apn;
delete apnConfig.private_key_file;
const firebaseConfig = this.firebase;
delete firebaseConfig.credentials_file;
this.fetch
.post('settings/notification-channels-config', {
apn: apnConfig,
firebase: firebaseConfig,
})
.then(() => {
this.notifications.success("Notification channel's configuration saved.");
})
.finally(() => {
this.isLoading = false;
});
}
@action test() {
this.isLoading = true;
this.fetch
.post('settings/test-notification-channels-config', {
apn: this.apn,
firebase: this.firebase,
title: this.testTitle,
message: this.testMessage,
apnToken: this.apnToken,
fcmToken: this.fcmToken,
})
.then((response) => {
this.testResponse = response;
})
.finally(() => {
this.isLoading = false;
});
}
}

Some files were not shown because too many files have changed in this diff Show More