mirror of
https://github.com/fleetbase/fleetbase.git
synced 2026-02-24 18:07:06 +00:00
Compare commits
24 Commits
v0.7.26
...
fix/instal
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d50d3ab98b | ||
|
|
7d3b6ed18f | ||
|
|
989fa9a777 | ||
|
|
edec9d02a4 | ||
|
|
a79ebda392 | ||
|
|
66c210f42a | ||
|
|
360f01ebf7 | ||
|
|
e02c8e831a | ||
|
|
2b8af0a47d | ||
|
|
7603c00ab1 | ||
|
|
6cd226b4f9 | ||
|
|
019ca9bc2d | ||
|
|
86a3b339d4 | ||
|
|
f1edcf607b | ||
|
|
44eac77cde | ||
|
|
529f1cfa90 | ||
|
|
517bc7b3bc | ||
|
|
ccf3fc7b31 | ||
|
|
a0febb1cbc | ||
|
|
768d2e3c85 | ||
|
|
6b5bbd1b7c | ||
|
|
e4a8f9519b | ||
|
|
3de9b6fccb | ||
|
|
70c45a34d4 |
3
.github/workflows/cd.yml
vendored
3
.github/workflows/cd.yml
vendored
@@ -210,6 +210,9 @@ jobs:
|
||||
|
||||
- name: Set Env Variables
|
||||
run: |
|
||||
# ensure file ends with a newline
|
||||
printf '\n' >> ./environments/.env.production
|
||||
|
||||
echo "EXTENSIONS=${{ secrets.EXTENSIONS }}" >> ./environments/.env.production
|
||||
echo "LOGROCKET_APP_ID=${{ secrets.LOGROCKET_APP_ID }}" >> ./environments/.env.production
|
||||
echo "STRIPE_KEY=${{ secrets.STRIPE_KEY }}" >> ./environments/.env.production
|
||||
|
||||
1
.gitignore
vendored
1
.gitignore
vendored
@@ -7,6 +7,7 @@
|
||||
docker-compose.override.yml
|
||||
npm-debug.log
|
||||
yarn-error.log
|
||||
console/public/extensions.json
|
||||
api/public/hot
|
||||
api/public/storage
|
||||
api/storage/*.key
|
||||
|
||||
262
README.md
262
README.md
@@ -4,6 +4,13 @@
|
||||
<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">
|
||||
<a href="https://github.com/fleetbase/fleetbase/blob/main/LICENSE"><img src="https://img.shields.io/github/license/fleetbase/fleetbase" alt="License"></a>
|
||||
<a href="https://github.com/fleetbase/fleetbase/releases"><img src="https://img.shields.io/github/v/release/fleetbase/fleetbase" alt="Latest Release"></a>
|
||||
<a href="https://github.com/fleetbase/fleetbase/stargazers"><img src="https://img.shields.io/github/stars/fleetbase/fleetbase?style=social" alt="GitHub Stars"></a>
|
||||
<a href="https://discord.gg/V7RVWRQ2Wm"><img src="https://img.shields.io/discord/699834923032248430?logo=discord&label=Discord" alt="Discord"></a>
|
||||
<a href="https://github.com/fleetbase/fleetbase/issues"><img src="https://img.shields.io/github/issues/fleetbase/fleetbase" alt="GitHub Issues"></a>
|
||||
</p>
|
||||
<p align="center" dir="auto">
|
||||
Modular logistics and supply chain operating system
|
||||
<br>
|
||||
@@ -11,8 +18,6 @@
|
||||
·
|
||||
<a href="https://console.fleetbase.io" rel="nofollow" target="_fleetbase_console">Cloud Version</a>
|
||||
·
|
||||
<a href="https://console.fleetbase.io/aws-marketplace" rel="nofollow" target="_aws_marketplace">Deploy on AWS</a>
|
||||
·
|
||||
<a href="https://tally.so/r/3NBpAW" rel="nofollow">Book a Demo</a>
|
||||
·
|
||||
<a href="https://discord.gg/V7RVWRQ2Wm" target="discord" rel="nofollow">Discord</a>
|
||||
@@ -28,32 +33,26 @@ Fleetbase is a modular logistics and supply chain operating system designed to s
|
||||
<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>
|
||||
|
||||
## 🎯 Who Is Fleetbase For?
|
||||
|
||||
Fleetbase is designed for organizations that need powerful logistics and supply chain management:
|
||||
|
||||
- **E-commerce & Retail** - Manage deliveries, track orders, and optimize last-mile logistics
|
||||
- **Food & Beverage** - Coordinate restaurant deliveries, manage drivers, and track real-time orders
|
||||
- **Courier Services** - Dispatch drivers, optimize routes, and provide customer tracking
|
||||
- **Field Services** - Schedule technicians, manage service areas, and track job completion
|
||||
- **Enterprise Logistics** - Build custom supply chain solutions with full API access
|
||||
- **Developers** - Extend and customize with a modular architecture and comprehensive API
|
||||
|
||||
## Visual Feature Showcase
|
||||
|
||||
<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>
|
||||
| Feature | Screenshot | Description |
|
||||
|---------|------------|-------------|
|
||||
| **Order Board** | <img src="https://flb-assets.s3.ap-southeast-1.amazonaws.com/static/order-board-kanban.png" alt="Fleetbase Order Board" width="600" /> | Visualize and manage your orders with a dynamic Kanban board. |
|
||||
| **Workflow Builder** | <img src="https://flb-assets.s3.ap-southeast-1.amazonaws.com/static/order-workflow-config.png" alt="Fleetbase Order Workflow Configuration" width="600" /> | Create custom order flows and automation with the intuitive workflow builder. |
|
||||
| **Order Tracking** | <img src="https://flb-assets.s3.ap-southeast-1.amazonaws.com/static/order-map-view.png" alt="Fleetbase Order Map View" width="600" /> | Track individual orders in real-time on an interactive map. |
|
||||
| **Live Fleet Map** | <img src="https://flb-assets.s3.ap-southeast-1.amazonaws.com/static/live-map-tracking.png" alt="Fleetbase Live Map Tracking" width="600" /> | Get a complete overview of your fleet and active orders on a live map. |
|
||||
| **Service Zones** | <img src="https://flb-assets.s3.ap-southeast-1.amazonaws.com/static/fleet-map-zones.png" alt="Fleetbase Fleet Map with Zones" width="600" /> | Define and manage service areas and zones for your fleet. |
|
||||
|
||||
**Quickstart**
|
||||
|
||||
@@ -66,35 +65,38 @@ cd fleetbase && ./scripts/docker-install.sh
|
||||
|
||||
- [Features](#-features)
|
||||
- [Install](#-install)
|
||||
- [Deploy on AWS](#-deploy-on-aws-in-one-click)
|
||||
- [Extensions](#-extensions)
|
||||
- [Apps](#-apps)
|
||||
- [Roadmap](#-roadmap)
|
||||
- [Deployment Options](#-deployment-options)
|
||||
- [Bugs and Feature Requests](#-bugs-and--feature-requests)
|
||||
- [Documentation](#-documentation)
|
||||
- [Contributing](#-contributing)
|
||||
- [Community](#-community)
|
||||
- [Creators](#-creators)
|
||||
- [License & Copyright](#-license-and-copyright)
|
||||
- [Creators](#creators)
|
||||
- [License & Copyright](#license--copyright)
|
||||
|
||||
## 📦 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.
|
||||
|
||||
| Feature | Description |
|
||||
|---------|-------------|
|
||||
| 🔌 **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. |
|
||||
|
||||
## 💾 Install
|
||||
Getting up and running with Fleetbase via Docker is the quickest and most straightforward way. If you’d like to use Fleetbase without docker read the [full install guide in the Fleetbase documentation](https://docs.fleetbase.io/getting-started/install).
|
||||
Getting up and running with Fleetbase via Docker is the quickest and most straightforward way. If you'd like to use Fleetbase without docker read the [full install guide in the Fleetbase documentation](https://docs.fleetbase.io/getting-started/install).
|
||||
|
||||
Make sure you have both the latest versions of docker and docker-compose installed on your system.
|
||||
|
||||
@@ -111,11 +113,11 @@ Fleetbase API: http://localhost:8000
|
||||
|
||||
### Additional Configurations
|
||||
|
||||
**CORS:** If you’re installing directly on a server you will need to configure the environment variables to the application container:
|
||||
**CORS:** If you're 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.
|
||||
If you have additional applications or frontends you can use the environment variable `FRONTEND_HOSTS` to add a comma delimited list of additional frontend hosts.
|
||||
|
||||
**Application Key** If you get an issue about a missing application key just run:
|
||||
```bash
|
||||
@@ -123,7 +125,7 @@ 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.
|
||||
|
||||
**Routing:** Fleetbase ships with a default OSRM server hosted by `[router.project-osrm.org](https://router.project-osrm.org)` but you’re 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 you’re deploying and setting the `OSRM_HOST` to the OSRM server for Fleetbase to use.
|
||||
**Routing:** Fleetbase ships with a default OSRM server hosted by [router.project-osrm.org](https://router.project-osrm.org) but you're 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 you're deploying and setting the `OSRM_HOST` to the OSRM server for Fleetbase to use.
|
||||
|
||||
**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.
|
||||
|
||||
@@ -155,36 +157,6 @@ services:
|
||||
|
||||
You can learn more about full installation, and configuration in the [official documentation](https://docs.fleetbase.io/getting-started/install).
|
||||
|
||||
## 🚀 Deploy on AWS in One Click
|
||||
|
||||
Deploy your complete Fleetbase logistics platform on AWS with enterprise-grade security, scalability, and reliability. No DevOps expertise required!
|
||||
|
||||
[](https://console.fleetbase.io/aws-marketplace)
|
||||
|
||||
### ✨ What You Get
|
||||
|
||||
- **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
|
||||
|
||||
### 🏗️ Infrastructure Included
|
||||
|
||||
Your AWS deployment includes a complete, production-ready infrastructure stack:
|
||||
|
||||
- **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
|
||||
|
||||
[**🚀 Deploy Now**](https://console.fleetbase.io/aws-marketplace) | [**📖 Learn More**](https://docs.fleetbase.io/category/deploying/aws)
|
||||
|
||||
# 🧩 Extensions
|
||||
|
||||
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.
|
||||
@@ -207,26 +179,59 @@ Once installed, you can access a variety of commands to manage your Fleetbase ex
|
||||
|
||||
# 📱 Apps
|
||||
|
||||
Fleetbase offers a few open sourced apps which are built on Fleetbase which can be cloned and customized. Every app is built so that the Fleetbase instance can be switched out whether on-premise install or cloud hosted.
|
||||
Fleetbase offers open-source mobile apps that can be customized and deployed:
|
||||
|
||||
<ul>
|
||||
<li><a href="https://github.com/fleetbase/storefront-app">Storefront App</a>: Fleetbase based ecommerce/on-demand app for launching your very own shop or marketplace to Apple or Android playstore.</li>
|
||||
<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>
|
||||
| App | Description | Platform | Repository |
|
||||
|-----|-------------|----------|------------|
|
||||
| **Storefront App** | E-commerce/on-demand app for launching your own shop or marketplace | iOS & Android | [GitHub](https://github.com/fleetbase/storefront-app) |
|
||||
| **Navigator App** | Driver app for managing orders with real-time location tracking | iOS & Android | [GitHub](https://github.com/fleetbase/navigator-app) |
|
||||
|
||||
## 🛣️ Roadmap
|
||||
1. **Inventory and Warehouse Management** ~ Pallet will be Fleetbase’s first official extension for WMS & Inventory.
|
||||
2. **Accounting and Invoicing** ~ Ledger will be Fleetbase’s 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.
|
||||
|
||||
## 🪲 Bugs and 💡 Feature Requests
|
||||
| Feature | Status | Expected Release | Description |
|
||||
|---------|--------|------------------|-------------|
|
||||
| **Pallet (WMS)** | 🚧 In Development | Late Q1 / Early Q2 2026 | Inventory and Warehouse Management extension |
|
||||
| **Ledger** | 🚧 In Development | Late Q1 / Early Q2 2026 | Accounting and Invoicing extension |
|
||||
| **AI Agent** | 🔬 Research | Q4 2026 | AI integration for system and workflow automation |
|
||||
| **Dynamic Rules** | 📋 Planned | 2027 | Rule builder to trigger events, tasks, and jobs |
|
||||
|
||||
Want to influence our roadmap? [Join the discussion](https://github.com/orgs/fleetbase/discussions)
|
||||
|
||||
## 🚀 Deployment Options
|
||||
|
||||
| Option | Best For | Setup Time | Maintenance |
|
||||
|--------|----------|------------|-------------|
|
||||
| **Docker (Local)** | Development & Testing | 5 minutes | Self-managed |
|
||||
| **On-Premise** | Production on your own infrastructure | 30-60 minutes | Self-managed |
|
||||
| **Cloud Self-Hosted** | Production (AWS, GCP, Azure) | 30-60 minutes | Self-managed |
|
||||
| **Fleetbase Cloud** | Quick start, no DevOps | Instant | Fully managed |
|
||||
|
||||
[View detailed deployment guides →](https://docs.fleetbase.io/category/deploying)
|
||||
|
||||
## 🐛 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>.
|
||||
|
||||
## 👨💻 Contributing
|
||||
## 📄 Documentation
|
||||
|
||||
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.
|
||||
Fleetbase has comprehensive documentation to help you get started and make the most of the platform:
|
||||
|
||||
- **Getting Started**: [Installation Guide](https://docs.fleetbase.io/getting-started/install)
|
||||
- **API Reference**: [API Documentation](https://docs.fleetbase.io/api-reference)
|
||||
- **Extension Development**: [Building Extensions](https://docs.fleetbase.io/developers/building-an-extension)
|
||||
- **Deployment**: [Deployment Guides](https://docs.fleetbase.io/deployment)
|
||||
|
||||
## 🤝 Contributing
|
||||
|
||||
We welcome contributions from the community! Here's how you can help:
|
||||
|
||||
- **Report Bugs**: [Open an issue](https://github.com/fleetbase/fleetbase/issues/new)
|
||||
- **Suggest Features**: [Start a discussion](https://github.com/orgs/fleetbase/discussions)
|
||||
- **Submit PRs**: Read our [Contributing Guide](https://github.com/fleetbase/fleetbase/blob/main/CONTRIBUTING.md)
|
||||
- **Write Documentation**: Help improve our [docs](https://docs.fleetbase.io)
|
||||
- **Build Extensions**: Create and share [extensions](https://docs.fleetbase.io/developers/building-an-extension)
|
||||
|
||||
**Development Setup**: See our [Development Installation Guide](https://docs.fleetbase.io/getting-started/install/for-development) for detailed instructions on setting up your local development environment.
|
||||
|
||||
## 👥 Community
|
||||
|
||||
@@ -242,16 +247,79 @@ Get updates on Fleetbase's development and chat with the project maintainers and
|
||||
|
||||
## Creators
|
||||
|
||||
<p dir="auto"><strong>Ronald A. Richardson</strong>- Co-founder & 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%;">
|
||||
<p><a href="https://github.com/orgs/fleetbase/people/roncodes">Github</a> | <a href="https://www.linkedin.com/in/ronald-a-richardson/">LinkedIn</a></p>
|
||||
|
||||
<p dir="auto"><strong>Shiv Thakker</strong> - Co-founder & CEO</p>
|
||||
<img src="https://user-images.githubusercontent.com/58805033/230262598-1ce6d0cc-fb65-41f9-8384-5cf5cbf369c7.png" alt="Shiv Image" width="75" height="75" style="max-width: 100%;">
|
||||
<p><a href="https://github.com/orgs/fleetbase/people/shivthakker">Github</a> | <a href="https://www.linkedin.com/in/shivthakker/">LinkedIn</a></p>
|
||||
<table style="border: none;">
|
||||
<tr>
|
||||
<td align="center" style="border: none;">
|
||||
<img src="https://user-images.githubusercontent.com/58805033/230263021-212f2553-1269-473d-be94-313cb3eecfa5.png" alt="Ronald A. Richardson" width="120" height="120" style="border-radius: 50%;">
|
||||
<br>
|
||||
<strong>Ronald A. Richardson</strong>
|
||||
<br>
|
||||
Co-founder & CTO
|
||||
<br>
|
||||
<a href="https://github.com/orgs/fleetbase/people/roncodes">GitHub</a> | <a href="https://www.linkedin.com/in/ronald-a-richardson/">LinkedIn</a>
|
||||
</td>
|
||||
<td align="center" style="border: none;">
|
||||
<img src="https://user-images.githubusercontent.com/58805033/230262598-1ce6d0cc-fb65-41f9-8384-5cf5cbf369c7.png" alt="Shiv Thakker" width="120" height="120" style="border-radius: 50%;">
|
||||
<br>
|
||||
<strong>Shiv Thakker</strong>
|
||||
<br>
|
||||
Co-founder & CEO
|
||||
<br>
|
||||
<a href="https://github.com/orgs/fleetbase/people/shivthakker">GitHub</a> | <a href="https://www.linkedin.com/in/shivthakker/">LinkedIn</a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
|
||||
# License & Copyright
|
||||
|
||||
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>.
|
||||
Fleetbase is available under a **dual-licensing model** to accommodate both open-source community users and commercial enterprises:
|
||||
|
||||
## Open Source License (AGPL-3.0)
|
||||
|
||||
By default, Fleetbase is licensed under the [GNU Affero General Public License v3.0 (AGPL-3.0)](https://www.gnu.org/licenses/agpl-3.0.html). This license allows you to use, modify, and distribute Fleetbase freely, provided that:
|
||||
|
||||
- Any modifications or derivative works are also made available under AGPL-3.0
|
||||
- If you run a modified version as a network service, you must make the source code available to users
|
||||
|
||||
The AGPL-3.0 is ideal for open-source projects, academic research, and organizations committed to sharing their improvements with the community.
|
||||
|
||||
## Commercial License (FCL)
|
||||
|
||||
For organizations that require more flexibility, Fleetbase offers a **Fleetbase Commercial License (FCL)** that provides:
|
||||
|
||||
- **Freedom from AGPL obligations** – Deploy and modify Fleetbase without source code disclosure requirements
|
||||
- **Proprietary integrations** – Build closed-source extensions and integrations
|
||||
- **Commercial protections** – Warranties, indemnities, and legal assurances not provided under AGPL
|
||||
- **Derivative work ownership** – Retain full ownership of your modifications and customizations
|
||||
- **Flexible licensing options** – Choose from annual, monthly, or perpetual license models
|
||||
|
||||
### Commercial License Options
|
||||
|
||||
| License Type | Price | Support & Updates | Best For |
|
||||
|--------------|-------|-------------------|----------|
|
||||
| **Annual License** | $25,000/year | ✅ All upgrades & Business Support included | Organizations requiring continuous updates and support |
|
||||
| **Monthly License** | $2,500/month | ✅ All upgrades & Business Support included | Pilot projects and short-term deployments |
|
||||
| **Major Version License** | $25,000 (one-time) | ❌ No ongoing support | Stable deployments on a single major version |
|
||||
| **Minor Version License** | $15,000 (one-time) | ❌ No ongoing support | Locked version deployments |
|
||||
|
||||
### When You Need a Commercial License
|
||||
|
||||
You should consider a commercial license if you:
|
||||
|
||||
- Want to build proprietary extensions or integrations without open-sourcing them
|
||||
- Need to embed Fleetbase in a commercial product without AGPL obligations
|
||||
- Require enterprise-grade support, SLAs, and legal protections
|
||||
- Plan to modify Fleetbase without sharing your changes publicly
|
||||
|
||||
### Get a Commercial License
|
||||
|
||||
For more information about commercial licensing options, please contact us:
|
||||
|
||||
- **Email:** [hello@fleetbase.io](mailto:hello@fleetbase.io)
|
||||
- **Website:** [fleetbase.io](https://fleetbase.io)
|
||||
|
||||
---
|
||||
|
||||
**Copyright © 2026 Fleetbase Pte. Ltd.** All rights reserved.
|
||||
|
||||
|
||||
@@ -1,14 +1,11 @@
|
||||
# 🚀 Fleetbase v0.7.26 — 2025-01-16
|
||||
# 🚀 Fleetbase v0.7.28 — 2026-02-05
|
||||
|
||||
> "Improved Driver Validation + API improvements"
|
||||
> "Critical patch: eager load driver and vehicle in consumable orders query API"
|
||||
|
||||
---
|
||||
|
||||
## ✨ Highlights
|
||||
- Improved driver creation validation for internal API
|
||||
- Vehicle and Driver API use explicit `::create` method now
|
||||
- Improved onboarding orchestrator framework and services for history and resume capability
|
||||
- Upgraded Stripe SDK to v17
|
||||
- Critical patch which fixes eager loading relationship when querying orders via the consumable API, this is done to handle the new `whenLoaded` resource conditional methods. [fleetbase/fleetops#203](https://github.com/fleetbase/fleetops/pull/203)
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -20,10 +20,10 @@
|
||||
"require": {
|
||||
"php": ">=8.0 <=8.2.30",
|
||||
"appstract/laravel-opcache": "^4.0",
|
||||
"fleetbase/core-api": "^1.6.34",
|
||||
"fleetbase/fleetops-api": "^0.6.33",
|
||||
"fleetbase/registry-bridge": "^0.1.3",
|
||||
"fleetbase/storefront-api": "^0.4.12",
|
||||
"fleetbase/core-api": "^1.6.35",
|
||||
"fleetbase/fleetops-api": "^0.6.35",
|
||||
"fleetbase/registry-bridge": "^0.1.5",
|
||||
"fleetbase/storefront-api": "^0.4.13",
|
||||
"guzzlehttp/guzzle": "^7.0.1",
|
||||
"laravel/framework": "^10.0",
|
||||
"laravel/octane": "^2.3",
|
||||
|
||||
573
api/composer.lock
generated
573
api/composer.lock
generated
File diff suppressed because it is too large
Load Diff
20
api/resources/lang/uz/auth.php
Normal file
20
api/resources/lang/uz/auth.php
Normal 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' => 'Ushbu hisobga olish maʼlumotlari bizning yozuvlarimizga mos kelmadi.',
|
||||
'password' => 'Taqdim etilgan parol noto‘g‘ri.',
|
||||
'throttle' => 'Kirishga urinishlar juda koʻp. Iltimos, :soniyadan keyin qayta urinib koʻring.',
|
||||
|
||||
];
|
||||
19
api/resources/lang/uz/pagination.php
Normal file
19
api/resources/lang/uz/pagination.php
Normal 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' => '« Oldingi',
|
||||
'next' => 'Keyingi »',
|
||||
|
||||
];
|
||||
22
api/resources/lang/uz/passwords.php
Normal file
22
api/resources/lang/uz/passwords.php
Normal 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' => 'Sizning parolingiz tiklandi!',
|
||||
'sent' => 'Parolni tiklash havolasini elektron pochta orqali yubordik!',
|
||||
'throttled' => 'Qayta urinishdan oldin kuting.',
|
||||
'token' => 'Ushbu parolni tiklash belgisi yaroqsiz.',
|
||||
'user' => "Biz bu elektron pochta manziliga ega foydalanuvchini topa olmadik.",
|
||||
|
||||
];
|
||||
163
api/resources/lang/uz/validation.php
Normal file
163
api/resources/lang/uz/validation.php
Normal 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' => ':attribute qabul qilinishi kerak.',
|
||||
'accepted_if' => ':other :value bo‘lsa, :attribute qabul qilinishi kerak.',
|
||||
'active_url' => ':attribute yaroqli URL emas.',
|
||||
'after' => ':attribute :date dan keyingi sana boʻlishi kerak.',
|
||||
'after_or_equal' => ':attribute :date ga teng yoki undan keyingi sana boʻlishi kerak.',
|
||||
'alpha' => ':attribute faqat harflardan iborat boʻlishi kerak.',
|
||||
'alpha_dash' => ':attribute faqat harflar, raqamlar, chiziqlar va pastki chiziqlardan iborat boʻlishi kerak.',
|
||||
'alpha_num' => ':attribute faqat harflar va raqamlardan iborat boʻlishi kerak.',
|
||||
'array' => ':attribute massiv boʻlishi kerak.',
|
||||
'before' => ':attribute :date gacha boʻlgan sana boʻlishi kerak.',
|
||||
'before_or_equal' => ':attribute :date ga teng yoki undan oldingi sana boʻlishi kerak.',
|
||||
'between' => [
|
||||
'numeric' => ':attribute :min va :max orasida boʻlishi kerak.',
|
||||
'file' => ':attribute :min va :max kilobayt orasida boʻlishi kerak.',
|
||||
'string' => ':attribute :min va :max belgilar orasida boʻlishi kerak.',
|
||||
'array' => ':attribute :min va :max ta element orasida boʻlishi kerak.',
|
||||
],
|
||||
'boolean' => ':attribute maydoni rost yoki yolgʻon boʻlishi kerak.',
|
||||
'confirmed' => ':attribute tasdiqlanishi mos kelmadi.',
|
||||
'current_password' => 'Parol noto‘g‘ri.',
|
||||
'date' => ':attribute yaroqli sana emas.',
|
||||
'date_equals' => ':attribute :date ga teng sana boʻlishi kerak.',
|
||||
'date_format' => ':attribute :format formatiga mos kelmadi.',
|
||||
'declined' => ':attribute rad etilishi kerak.',
|
||||
'declined_if' => ':other :value bo‘lsa, :attribute rad etilishi kerak.',
|
||||
'different' => ':attribute va :other har xil boʻlishi kerak.',
|
||||
'digits' => ':attribute :digits raqamdan iborat boʻlishi kerak.',
|
||||
'digits_between' => ':attribute :min va :max raqamlari orasida boʻlishi kerak.',
|
||||
'dimensions' => ':attribute rasm oʻlchamlari yaroqsiz.',
|
||||
'distinct' => ':attribute maydonida takroriy qiymat mavjud.',
|
||||
'email' => ':attribute yaroqli elektron pochta manzili boʻlishi kerak.',
|
||||
'ends_with' => ':attribute quyidagilardan biri bilan tugashi kerak: :values.',
|
||||
'enum' => 'Tanlangan :attribute yaroqsiz.',
|
||||
'exists' => 'Tanlangan :attribute yaroqsiz.',
|
||||
'file' => ':attribute fayl boʻlishi kerak.',
|
||||
'filled' => ':attribute maydonida qiymat boʻlishi kerak.',
|
||||
'gt' => [
|
||||
'numeric' => ':attribute :value dan katta boʻlishi kerak.',
|
||||
'file' => ':attribute :value kilobaytdan katta boʻlishi kerak.',
|
||||
'string' => ':attribute :value belgidan katta boʻlishi kerak.',
|
||||
'array' => ':attribute :value dan koʻp elementga ega boʻlishi kerak.',
|
||||
],
|
||||
'gte' => [
|
||||
'numeric' => ':attribute :value ga teng yoki undan katta boʻlishi kerak.',
|
||||
'file' => ':attribute :value kilobaytga teng yoki undan katta boʻlishi kerak.',
|
||||
'string' => ':attribute :value belgiga teng yoki undan katta boʻlishi kerak.',
|
||||
'array' => ':attribute :value yoki undan koʻp elementga ega boʻlishi kerak.',
|
||||
],
|
||||
'image' => ':attribute rasm boʻlishi kerak.',
|
||||
'in' => 'Tanlangan :attribute yaroqsiz.',
|
||||
'in_array' => ':attribute maydoni :other da mavjud emas.',
|
||||
'integer' => ':attribute butun son boʻlishi kerak.',
|
||||
'ip' => ':attribute yaroqli IP manzil boʻlishi kerak.',
|
||||
'ipv4' => ':attribute yaroqli IPv4 manzil boʻlishi kerak.',
|
||||
'ipv6' => ':attribute yaroqli IPv6 manzil boʻlishi kerak.',
|
||||
'json' => ':attribute yaroqli JSON qatori boʻlishi kerak.',
|
||||
'lt' => [
|
||||
'numeric' => ':attribute :value dan kichik boʻlishi kerak.',
|
||||
'file' => ':attribute :value kilobaytdan kichik boʻlishi kerak.',
|
||||
'string' => ':attribute :value belgidan kichik boʻlishi kerak.',
|
||||
'array' => ':attribute :value dan kam elementga ega boʻlishi kerak.',
|
||||
],
|
||||
'lte' => [
|
||||
'numeric' => ':attribute :value ga teng yoki undan kichik boʻlishi kerak.',
|
||||
'file' => ':attribute :value kilobaytga teng yoki undan kichik boʻlishi kerak.',
|
||||
'string' => ':attribute :value belgiga teng yoki undan kichik boʻlishi kerak.',
|
||||
'array' => ':attribute :value dan koʻp boʻlmagan elementga ega boʻlishi kerak.',
|
||||
],
|
||||
'mac_address' => ':attribute yaroqli MAC manzil boʻlishi kerak.',
|
||||
'max' => [
|
||||
'numeric' => ':attribute :max dan katta boʻlmasligi kerak.',
|
||||
'file' => ':attribute :max kilobaytdan katta boʻlmasligi kerak.',
|
||||
'string' => ':attribute :max belgidan katta boʻlmasligi kerak.',
|
||||
'array' => ':attribute :max dan koʻp boʻlmagan elementga ega boʻlishi kerak.',
|
||||
],
|
||||
'mimes' => ':attribute :values turidagi fayl boʻlishi kerak.',
|
||||
'mimetypes' => ':attribute :values turidagi fayl boʻlishi kerak.',
|
||||
'min' => [
|
||||
'numeric' => ':attribute kamida :min boʻlishi kerak.',
|
||||
'file' => ':attribute kamida :min kilobayt boʻlishi kerak.',
|
||||
'string' => ':attribute kamida :min belgidan iborat boʻlishi kerak.',
|
||||
'array' => ':attribute kamida :min ta elementga ega boʻlishi kerak.',
|
||||
],
|
||||
'multiple_of' => ':attribute :value ning karrali boʻlishi kerak.',
|
||||
'not_in' => 'Tanlangan :attribute yaroqsiz.',
|
||||
'not_regex' => ':attribute formati yaroqsiz.',
|
||||
'numeric' => ':attribute raqam boʻlishi kerak.',
|
||||
'password' => 'Parol noto‘g‘ri.',
|
||||
'present' => ':attribute maydoni mavjud boʻlishi kerak.',
|
||||
'prohibited' => ':attribute maydoni taqiqlangan.',
|
||||
'prohibited_if' => ':other :value bo‘lsa, :attribute maydoni taqiqlangan.',
|
||||
'prohibited_unless' => ':other :values da boʻlmasa, :attribute maydoni taqiqlangan.',
|
||||
'prohibits' => ':attribute maydoni :other ning mavjud boʻlishini taqiqlaydi.',
|
||||
'regex' => ':attribute formati yaroqsiz.',
|
||||
'required' => ':attribute maydoni toʻldirilishi shart.',
|
||||
'required_array_keys' => ':attribute maydonida :values uchun yozuvlar boʻlishi kerak.',
|
||||
'required_if' => ':other :value bo‘lsa, :attribute maydoni toʻldirilishi shart.',
|
||||
'required_unless' => ':other :values da boʻlmasa, :attribute maydoni toʻldirilishi shart.',
|
||||
'required_with' => ':values mavjud boʻlganda :attribute maydoni toʻldirilishi shart.',
|
||||
'required_with_all' => ':values mavjud boʻlganda :attribute maydoni toʻldirilishi shart.',
|
||||
'required_without' => ':values mavjud boʻlmaganda :attribute maydoni toʻldirilishi shart.',
|
||||
'required_without_all' => ':values ning hech biri mavjud boʻlmaganda :attribute maydoni toʻldirilishi shart.',
|
||||
'same' => ':attribute va :other mos kelishi kerak.',
|
||||
'size' => [
|
||||
'numeric' => ':attribute :size boʻlishi kerak.',
|
||||
'file' => ':attribute :size kilobayt boʻlishi kerak.',
|
||||
'string' => ':attribute :size belgidan iborat boʻlishi kerak.',
|
||||
'array' => ':attribute :size ta elementdan iborat boʻlishi kerak.',
|
||||
],
|
||||
'starts_with' => ':attribute quyidagilardan biri bilan boshlanishi kerak: :values.',
|
||||
'string' => ':attribute qator boʻlishi kerak.',
|
||||
'timezone' => ':attribute yaroqli vaqt mintaqasi boʻlishi kerak.',
|
||||
'unique' => ':attribute allaqachon olingan.',
|
||||
'uploaded' => ':attribute yuklab olinmadi.',
|
||||
'url' => ':attribute yaroqli URL boʻlishi kerak.',
|
||||
'uuid' => ':attribute yaroqli UUID boʻlishi kerak.',
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| 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' => [],
|
||||
|
||||
];
|
||||
@@ -2,6 +2,7 @@ import translations from 'ember-intl/translations';
|
||||
import { all } from 'rsvp';
|
||||
|
||||
const isBrowser = typeof window !== 'undefined';
|
||||
const isValidLang = (lang) => typeof lang === 'string' && /^[a-z]{2,3}$/i.test(lang);
|
||||
|
||||
function langOf(tag = 'en') {
|
||||
return String(tag).toLowerCase().split('-')[0];
|
||||
@@ -15,6 +16,8 @@ async function loadBasePolyfills() {
|
||||
}
|
||||
|
||||
async function loadLocaleData(lang) {
|
||||
if (!isValidLang(lang)) return;
|
||||
|
||||
return all([
|
||||
import(`@formatjs/intl-numberformat/locale-data/${lang}.js`),
|
||||
import(`@formatjs/intl-pluralrules/locale-data/${lang}.js`),
|
||||
@@ -26,11 +29,11 @@ async function loadLocaleData(lang) {
|
||||
export function initialize(application) {
|
||||
if (!isBrowser) return;
|
||||
|
||||
// Build-time list of locales from the generated module
|
||||
const locales = translations.map(([locale]) => String(locale));
|
||||
const langs = [...new Set(locales.map(langOf))];
|
||||
const langs = [...new Set(locales.map(langOf).filter(isValidLang))];
|
||||
|
||||
application.deferReadiness();
|
||||
|
||||
(async () => {
|
||||
await loadBasePolyfills();
|
||||
await all(langs.map(loadLocaleData));
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@fleetbase/console",
|
||||
"version": "0.7.26",
|
||||
"version": "0.7.28",
|
||||
"private": true,
|
||||
"description": "Modular logistics and supply chain operating system (LSOS)",
|
||||
"repository": "https://github.com/fleetbase/fleetbase",
|
||||
@@ -37,11 +37,11 @@
|
||||
"@fleetbase/ember-core": "^0.3.10",
|
||||
"@fleetbase/ember-ui": "^0.3.18",
|
||||
"@fleetbase/fleetops-data": "^0.1.25",
|
||||
"@fleetbase/fleetops-engine": "^0.6.33",
|
||||
"@fleetbase/fleetops-engine": "^0.6.35",
|
||||
"@fleetbase/iam-engine": "^0.1.6",
|
||||
"@fleetbase/leaflet-routing-machine": "^3.2.17",
|
||||
"@fleetbase/registry-bridge-engine": "^0.1.3",
|
||||
"@fleetbase/storefront-engine": "^0.4.12",
|
||||
"@fleetbase/registry-bridge-engine": "^0.1.5",
|
||||
"@fleetbase/storefront-engine": "^0.4.13",
|
||||
"@formatjs/intl-datetimeformat": "^6.18.2",
|
||||
"@formatjs/intl-numberformat": "^8.15.6",
|
||||
"@formatjs/intl-pluralrules": "^5.4.6",
|
||||
@@ -152,7 +152,7 @@
|
||||
"overrides": {
|
||||
"@fleetbase/ember-core": "^0.3.10",
|
||||
"@fleetbase/ember-ui": "^0.3.18",
|
||||
"@fleetbase/fleetops-data": "^0.1.24"
|
||||
"@fleetbase/fleetops-data": "^0.1.25"
|
||||
}
|
||||
},
|
||||
"prettier": {
|
||||
|
||||
3054
console/pnpm-lock.yaml
generated
3054
console/pnpm-lock.yaml
generated
File diff suppressed because it is too large
Load Diff
777
console/translations/uz-uz.yaml
Normal file
777
console/translations/uz-uz.yaml
Normal file
@@ -0,0 +1,777 @@
|
||||
app:
|
||||
name: Fleetbase
|
||||
|
||||
common:
|
||||
new: Yangi
|
||||
create: Yaratish
|
||||
add: Qo'shish
|
||||
edit: Tahrirlash
|
||||
update: Yangilash
|
||||
save: Saqlash
|
||||
save-changes: O'zgarishlarni saqlash
|
||||
delete: O'chirish
|
||||
delete-selected: Tanlanganlarni o'chirish
|
||||
delete-selected-count: "{count} ta tanlanganni o'chirish"
|
||||
your-profile: Sizning profilingiz
|
||||
date-of-birth: Tug'ilgan sana
|
||||
organization: Tashkilot
|
||||
two-factor: Ikki faktorli
|
||||
remove: O'chirish
|
||||
cancel: Bekor qilish
|
||||
confirm: Tasdiqlash
|
||||
close: Yopish
|
||||
open: Ochish
|
||||
view: Ko'rish
|
||||
preview: Ko'rib chiqish
|
||||
upload: Yuklash
|
||||
download: Yuklab olish
|
||||
import: Import qilish
|
||||
export: Eksport qilish
|
||||
print: Chop etish
|
||||
duplicate: Nusxalash
|
||||
copy: Nusxa olish
|
||||
paste: Joylashtirish
|
||||
share: Ulashish
|
||||
refresh: Yangilash
|
||||
reset: Qayta o'rnatish
|
||||
retry: Qayta urinish
|
||||
back: Orqaga
|
||||
next: Keyingisi
|
||||
previous: Oldingisi
|
||||
submit: Yuborish
|
||||
apply: Qo'llash
|
||||
continue: Davom etish
|
||||
proceed: Davom etish
|
||||
select: Tanlash
|
||||
deselect: Tanlovni bekor qilish
|
||||
search: Qidirish
|
||||
filter: Filtr
|
||||
sort: Saralash
|
||||
view-all: Hammasini ko'rish
|
||||
clear: Tozalash
|
||||
done: Bajarildi
|
||||
finish: Tugatish
|
||||
skip: O'tkazib yuborish
|
||||
method: Usul
|
||||
bulk-delete: Ommaviy o'chirish
|
||||
bulk-delete-resource: "{resource} ni ommaviy o'chirish"
|
||||
bulk-cancel: Ommaviy bekor qilish
|
||||
bulk-cancel-resource: "{resource} ni ommaviy bekor qilish"
|
||||
bulk-actions: Ommaviy amallar
|
||||
column: Ustun
|
||||
row: Qator
|
||||
table: Jadval
|
||||
list: Ro'yxat
|
||||
grid: Setka
|
||||
form: Shakl
|
||||
field: Maydon
|
||||
section: Bo'lim
|
||||
panel: Panel
|
||||
card: Karta
|
||||
tab: Varaqa
|
||||
modal: Modal
|
||||
dialog: Dialog
|
||||
menu: Menyu
|
||||
dropdown: Ochiladigan menyu
|
||||
tooltip: Maslahat
|
||||
sidebar: Yon panel
|
||||
toolbar: Asboblar paneli
|
||||
footer: Pastki qism
|
||||
header: Yuqori qism
|
||||
title: Sarlavha
|
||||
subtitle: Kichik sarlavha
|
||||
description: Tavsif
|
||||
placeholder: Joy egallovchi
|
||||
label: Yorliq
|
||||
button: Tugma
|
||||
icon: Belgi
|
||||
avatar: Avatar
|
||||
link: Havola
|
||||
badge: Nishon
|
||||
tag: Teg
|
||||
banner: Banner
|
||||
step: Qadam
|
||||
progress: Jarayon
|
||||
map: Xarita
|
||||
board: Doska
|
||||
loading: Yuklanmoqda
|
||||
loading-resource: "{resource} yuklanmoqda"
|
||||
saving: Saqlanmoqda
|
||||
processing: Ishlanmoqda
|
||||
fetching: Olinmoqda
|
||||
updating: Yangilanmoqda
|
||||
uploading: Yuklanmoqda
|
||||
completed: Bajarildi
|
||||
success: Muvaffaqiyatli
|
||||
failed: Muvaffaqiyatsiz
|
||||
error: Xato
|
||||
warning: Ogohlantirish
|
||||
info: Ma'lumot
|
||||
ready: Tayyor
|
||||
activity: Faoliyat
|
||||
active: Faol
|
||||
inactive: Nofaol
|
||||
enabled: Yoqilgan
|
||||
disabled: O'chirilgan
|
||||
online: Onlayn
|
||||
offline: Oflayn
|
||||
pending: Kutishda
|
||||
archived: Arxivlangan
|
||||
hidden: Yashirin
|
||||
visible: Ko'rinadigan
|
||||
empty: Bo'sh
|
||||
not-found: Topilmadi
|
||||
no-results: Natijalar yo'q
|
||||
try-again: Qayta urinib ko'ring
|
||||
are-you-sure: Ishonchingiz komilmi?
|
||||
changes-saved: O'zgarishlar muvaffaqiyatli saqlandi.
|
||||
saved-successfully: O'zgarishlar muvaffaqiyatli saqlandi.
|
||||
field-saved: >-
|
||||
{field} muvaffaqiyatli saqlandi.
|
||||
changes-discarded: O'zgarishlar bekor qilindi.
|
||||
delete-confirm: Haqiqatan ham bu elementni oʻchirib tashlamoqchimisiz?
|
||||
action-successful: Amal muvaffaqiyatli bajarildi.
|
||||
action-failed: Amal bajarilmadi. Iltimos, qaytadan urining.
|
||||
something-went-wrong: Nimadir noto'g'ri ketdi.
|
||||
please-wait: Iltimos kuting...
|
||||
sign-in: Kirish
|
||||
sign-out: Chiqish
|
||||
sign-up: Ro'yxatdan o'tish
|
||||
log-in: Kirish
|
||||
log-out: Chiqish
|
||||
register: Ro'yxatdan o'tish
|
||||
forgot-password: Parolni unutdingizmi
|
||||
reset-password: Parolni tiklash
|
||||
change-password: Parolni o'zgartirish
|
||||
password: Parol
|
||||
confirm-password: Parolni tasdiqlang
|
||||
email: Elektron pochta
|
||||
username: Foydalanuvchi nomi
|
||||
remember-me: Meni eslab qol
|
||||
welcome: Xush kelibsiz
|
||||
welcome-back: Xush kelibsiz
|
||||
profile: Profil
|
||||
account: Hisob
|
||||
settings: Sozlamalar
|
||||
preferences: Afzalliklar
|
||||
record: Yozuv
|
||||
records: Yozuvlar
|
||||
item: Element
|
||||
items: Elementlar
|
||||
entry: Yozuv
|
||||
entries: Yozuvlar
|
||||
id: ID
|
||||
name: Ism
|
||||
type: Tur
|
||||
category: Kategoriya
|
||||
overview: Umumiy koʻrinish
|
||||
value: Qiymat
|
||||
amount: Miqdor
|
||||
price: Narx
|
||||
quantity: Miqdori
|
||||
status: Holat
|
||||
date: Sana
|
||||
date-created: Yaratilgan sana
|
||||
date-updated: Yangilangan sana
|
||||
time: Vaqt
|
||||
created-at: Yaratilgan vaqti
|
||||
updated-at: Yangilangan vaqti
|
||||
expired-at: Yaroqlilik muddati
|
||||
last-seen-at: Oxirgi marta ko'rilgan
|
||||
last-modified: Oxirgi o'zgartirish
|
||||
last-modified-data: >-
|
||||
Oxirgi o'zgartirish: {date}
|
||||
actions: Amallar
|
||||
details: Tafsilotlar
|
||||
notes: Eslatmalar
|
||||
reference: Malumot
|
||||
filter-by: Filtr bo'yicha
|
||||
filter-by-field: "{field} bo'yicha filtr"
|
||||
sort-by: Saralash
|
||||
ascending: O'sish tartibida
|
||||
descending: Kamayish tartibida
|
||||
all: Hammasi
|
||||
none: Hech qanday
|
||||
select-all: Hammasini tanlash
|
||||
deselect-all: Barchasini bekor qilish
|
||||
show-more: Ko'proq ko'rsatish
|
||||
show-less: Kamroq ko'rsatish
|
||||
page: Sahifa
|
||||
of: ning
|
||||
total: Jami
|
||||
items-per-page: Har bir sahifadagi elementlar
|
||||
showing: Ko'rsatilmoqda
|
||||
to: gacha
|
||||
results: Natijalar
|
||||
load-more: Ko'proq yuklash
|
||||
no-more-results: Boshqa natijalar yo'q
|
||||
today: Bugun
|
||||
yesterday: Kecha
|
||||
tomorrow: Ertaga
|
||||
day: Kun
|
||||
week: Hafta
|
||||
month: Oy
|
||||
year: Yil
|
||||
date-range: Sana oralig'i
|
||||
start-date: Boshlanish sanasi
|
||||
end-date: Tugash sanasi
|
||||
time-zone: Vaqt mintaqasi
|
||||
system: Tizim
|
||||
dashboard: Boshqaruv paneli
|
||||
home: Bosh sahifa
|
||||
analytics: Analitika
|
||||
reports: Hisobotlar
|
||||
logs: Jurnallar
|
||||
help: Yordam
|
||||
support: Qo'llab-quvvatlash
|
||||
contact: Aloqa
|
||||
documentation: Hujjatlar
|
||||
language: Til
|
||||
timezone: Vaqt mintaqasi
|
||||
version: Versiya
|
||||
theme: Mavzu
|
||||
light-mode: Yorug'lik rejimi
|
||||
dark-mode: Qorong'u rejim
|
||||
update-available: Yangilanish mavjud
|
||||
install-update: Yangilanishni o'rnatish
|
||||
maintenance-mode: Texnik xizmat ko'rsatish rejimi
|
||||
notification: Bildirishnoma
|
||||
notifications: Bildirishnomalar
|
||||
mark-as-read: O'qilgan deb belgilash
|
||||
mark-all-as-read: Hammasini o'qilgan deb belgilash
|
||||
clear-notifications: Bildirishnomalarni tozalash
|
||||
company: Kompaniya
|
||||
companies: Kompaniyalar
|
||||
user: Foydalanuvchi
|
||||
users: Foydalanuvchilar
|
||||
role: Rol
|
||||
roles: Rollar
|
||||
permission: Ruxsat
|
||||
permissions: Ruxsatlar
|
||||
group: Guruh
|
||||
groups: Guruhlar
|
||||
unauthorized: Ruxsatsiz
|
||||
forbidden: Taqiqlandi
|
||||
resource-not-found: Resurs topilmadi
|
||||
server-error: Server xatosi
|
||||
validation-error: Tasdiqlash xatosi
|
||||
timeout-error: So'rov vaqti tugadi
|
||||
network-error: Tarmoq xatosi
|
||||
unknown-error: Noma'lum xato
|
||||
file: Fayl
|
||||
files: Fayllar
|
||||
folder: Papka
|
||||
folders: Papkalar
|
||||
upload-file: Fayl yuklash
|
||||
upload-files: Fayllarni yuklash
|
||||
upload-image: Rasm yuklash
|
||||
upload-image-supported: PNG, JPEG va GIF-larni qo'llab-quvvatlaydi
|
||||
choose-file: Faylni tanlang
|
||||
choose-files: Fayllarni tanlang
|
||||
drag-and-drop: Tortib tashlang
|
||||
download-file: Faylni yuklab olish
|
||||
file-size: Fayl hajmi
|
||||
file-type: Fayl turi
|
||||
confirm-delete: O'chirishni tasdiqlang
|
||||
confirm-action: Amalni tasdiqlang
|
||||
confirm-exit: Chiqishni tasdiqlang
|
||||
confirm-and-save-changes: Tasdiqlang va o'zgarishlarni saqlang
|
||||
are-you-sure-exit: Haqiqatan ham chiqmoqchimisiz?
|
||||
unsaved-changes-warning: Sizda saqlanmagan o'zgarishlar mavjud.
|
||||
connected: Ulangan
|
||||
disconnected: Ulanmagan
|
||||
reconnecting: Qayta ulanmoqda
|
||||
connection-lost: Ulanish uzildi
|
||||
connection-restored: Ulanish tiklandi
|
||||
show: Ko'rsatish
|
||||
hide: Yashirish
|
||||
expand: Kengaytirish
|
||||
collapse: Yig'ish
|
||||
enable: Yoqish
|
||||
disable: O'chirish
|
||||
minimize: Kichraytirish
|
||||
maximize: Kattalashtirish
|
||||
restore: Qayta tiklash
|
||||
zoom-in: Kattalashtirish
|
||||
zoom-out: Kichraytirish
|
||||
fullscreen: To'liq ekran
|
||||
exit-fullscreen: To'liq ekrandan chiqish
|
||||
yes: Ha
|
||||
no: Yo'q
|
||||
ok: OK
|
||||
none-available: Mavjud emas
|
||||
default: Standart
|
||||
custom: Maxsus
|
||||
general: Umumiy
|
||||
advanced: Kengaytirilgan
|
||||
placeholder-text: Bu yerga matn kiriting...
|
||||
learn-more: Ko'proq bilish
|
||||
view-resource: "{resource} ni ko'rish"
|
||||
view-resource-details: "{resource} tafsilotlarini ko'rish"
|
||||
create-a-new-resource: "Yangi {resource} yaratish"
|
||||
create-new-resource: "Yangi {resource} yaratish"
|
||||
search-resource: "{resource} ni qidirish"
|
||||
new-resource: "Yangi {resource}"
|
||||
update-resource: "{resource} ni yangilash"
|
||||
save-resource-changes: "{resource} o'zgarishlarini saqlash"
|
||||
creating-resource: "{resource} yaratilmoqda"
|
||||
cancel-resource: "{resource} ni bekor qilish"
|
||||
delete-resource: "{resource} ni o'chirish"
|
||||
delete-resource-name: >-
|
||||
O'chirish: {resourceName}
|
||||
delete-resource-named: "{resource} ({resourceName}) ni o'chirish"
|
||||
delete-resource-prompt: Bu amalni bekor qilib bo'lmaydi. O'chirilgandan so'ng, yozuv butunlay o'chiriladi.
|
||||
delete-cannot-be-undone: Bu amalni bekor qilib bo'lmaydi. O'chirilgandan so'ng, yozuv butunlay o'chiriladi.
|
||||
create-resource: "{resource} yaratish"
|
||||
edit-resource: "{resource} ni tahrirlash"
|
||||
edit-resource-details: "{resource} tafsilotlarini tahrirlash"
|
||||
edit-resource-type-name: >-
|
||||
Tahrirlash {resource}: {resourceName}
|
||||
edit-resource-name: >-
|
||||
Tahrirlash: {resourceName}
|
||||
config: Konfiguratsiya
|
||||
select-field: "{field} ni tanlang"
|
||||
columns: Ustunlar
|
||||
metadata: Metama'lumotlar
|
||||
meta: Meta
|
||||
resource-created-success: "Yangi {resource} muvaffaqiyatli yaratildi."
|
||||
resource-created-success-name: "Yangi {resource} ({resourceName}) muvaffaqiyatli yaratildi."
|
||||
resource-updated-success: >-
|
||||
{resource} ({resourceName}) muvaffaqiyatli yangilandi.
|
||||
resource-action-success: >-
|
||||
{resource} ({resourceName}) {action} muvaffaqiyatli bajarildi.
|
||||
resource-deleted-success: >-
|
||||
{resource} ({resourceName}) muvaffaqiyatli o'chirildi.
|
||||
resource-deleted: >-
|
||||
{resource} ({resourceName}) o'chirildi.
|
||||
continue-without-saving: Saqlamasdan davom etish kerakmi?
|
||||
continue-without-saving-prompt: Sizda bu {resource} ga saqlanmagan o'zgarishlar mavjud. Davom etish ularni bekor qiladi. Davom etish uchun Davom etish tugmasini bosing.
|
||||
changelog: O'zgarishlar jurnali
|
||||
|
||||
resource:
|
||||
alert: Ogohlantirish
|
||||
alerts: Ogohlantirishlar
|
||||
brand: Brend
|
||||
brands: Brendlar
|
||||
category: Kategoriya
|
||||
categories: Kategoriyalar
|
||||
chat-attachment: Chat ilovasi
|
||||
chat-attachments: Chat ilovalari
|
||||
chat-channel: Chat kanali
|
||||
chat-channels: Chat kanallari
|
||||
chat-log: Chat jurnali
|
||||
chat-logs: Chat jurnallari
|
||||
chat-message: Chat xabari
|
||||
chat-messages: Chat xabarlari
|
||||
chat-participant: Chat ishtirokchisi
|
||||
chat-participants: Chat ishtirokchilari
|
||||
chat-receipt: Chat kvitansiyasi
|
||||
chat-receipts: Chat kvitansiyalari
|
||||
comment: Izoh
|
||||
comments: Izohlar
|
||||
company: Kompaniya
|
||||
companies: Kompaniyalar
|
||||
custom-field-value: Maxsus maydon qiymati
|
||||
custom-field-values: Maxsus maydon qiymatlari
|
||||
custom-field: Maxsus maydon
|
||||
custom-fields: Maxsus maydonlar
|
||||
dashboard-widget: Boshqaruv paneli vidjeti
|
||||
dashboard-widgets: Boshqaruv paneli vidjetlari
|
||||
dashboard: Boshqaruv paneli
|
||||
dashboards: Boshqaruv panellari
|
||||
extension: Kengaytma
|
||||
extensions: Kengaytmalar
|
||||
file: Fayl
|
||||
files: Fayllar
|
||||
group: Guruh
|
||||
groups: Guruhlar
|
||||
notification: Bildirishnoma
|
||||
notifications: Bildirishnomalar
|
||||
permission: Ruxsat
|
||||
permissions: Ruxsatlar
|
||||
policy: Siyosat
|
||||
policies: Siyosatlar
|
||||
report: Hisobot
|
||||
reports: Hisobotlar
|
||||
role: Rol
|
||||
roles: Rollar
|
||||
setting: Sozlama
|
||||
settings: Sozlamalar
|
||||
transaction: Tranzaksiya
|
||||
transactions: Tranzaksiyalar
|
||||
user-device: Foydalanuvchi qurilmasi
|
||||
user-devices: Foydalanuvchi qurilmalari
|
||||
user: Foydalanuvchi
|
||||
users: Foydalanuvchilar
|
||||
|
||||
dropzone:
|
||||
file: fayl
|
||||
drop-to-upload: Yuklash uchun tashlang
|
||||
invalid: Noto'g'ri
|
||||
files-ready-for-upload: >-
|
||||
{numOfFiles} ta fayl yuklashga tayyor.
|
||||
upload-images-videos: Rasmlar va videolarni yuklash
|
||||
upload-documents: Hujjatlarni yuklash
|
||||
upload-documents-files: Hujjatlar va fayllarni yuklash
|
||||
upload-avatar-files: Maxsus avatarlarni yuklash
|
||||
dropzone-supported-images-videos: Rasm va video fayllarni bu yerga tortib tashlang
|
||||
dropzone-supported-avatars: SVG yoki PNG fayllarini tortib tashlang
|
||||
dropzone-supported-files: Fayllarni bu yerga tortib tashlang
|
||||
or-select-button-text: yoki yuklash uchun fayllarni tanlang.
|
||||
upload-queue: Yuklash navbati
|
||||
uploading: Yuklanmoqda...
|
||||
|
||||
two-fa-enforcement-alert:
|
||||
message: Hisobingiz xavfsizligini oshirish uchun tashkilotingiz Ikki Faktorli Autentifikatsiyani (2FA) talab qiladi. Qo'shimcha himoya qatlami uchun hisob sozlamalaringizda 2FA-ni yoqing.
|
||||
button-text: 2FA-ni sozlash
|
||||
|
||||
comment-thread:
|
||||
publish-comment-button-text: Izohni chop etish
|
||||
publish-reply-button-text: Javobni chop etish
|
||||
reply-comment-button-text: Javob berish
|
||||
edit-comment-button-text: Tahrirlash
|
||||
delete-comment-button-text: O'chirish
|
||||
comment-published-ago: >-
|
||||
{createdAgo} oldin
|
||||
comment-input-placeholder: Yangi izoh kiriting...
|
||||
comment-reply-placeholder: Javobingizni kiriting...
|
||||
comment-input-empty-notification: Bo'sh izohlarni chop eta olmaysiz...
|
||||
comment-min-length-notification: Izoh kamida 2 ta belgidan iborat bo'lishi kerak
|
||||
|
||||
dashboard:
|
||||
select-dashboard: Boshqaruv panelini tanlang
|
||||
create-new-dashboard: Yangi boshqaruv paneli yaratish
|
||||
create-a-new-dashboard: Yangi boshqaruv paneli yaratish
|
||||
confirm-create-dashboard: Boshqaruv panelini yaratish!
|
||||
edit-layout: Tartibni tahrirlash
|
||||
add-widgets: Vidjetlarni qo'shish
|
||||
delete-dashboard: Boshqaruv panelini o'chirish
|
||||
save-dashboard: Boshqaruv panelini saqlash
|
||||
you-cannot-delete-this-dashboard: Siz bu boshqaruv panelini o'chira olmaysiz.
|
||||
are-you-sure-you-want-delete-dashboard: Haqiqatan ham bu {dashboardName} ni o'chirmoqchimisiz?
|
||||
dashboard-widget-panel:
|
||||
widget-name: >-
|
||||
{widgetName} vidjeti
|
||||
select-widgets: Vidjetlarni tanlang
|
||||
close-and-save: Yopish va saqlash
|
||||
filter-widgets: Vidjetlarni kalit so'z bo'yicha filtrlash
|
||||
|
||||
filters-picker:
|
||||
filters: Filtrlar
|
||||
filter-data: Ma'lumotlarni filtrlash
|
||||
|
||||
visible-column-picker:
|
||||
select-viewable-columns: Ko'rinadigan ustunlarni tanlang
|
||||
customize-columns: Ustunlarni moslashtirish
|
||||
|
||||
component:
|
||||
file:
|
||||
dropdown-label: Fayl amallari
|
||||
import-modal:
|
||||
loading-message: Import qayta ishlanmoqda...
|
||||
drop-upload: Yuklash uchun tashlang
|
||||
invalid: Noto'g'ri
|
||||
ready-upload: yuklashga tayyor.
|
||||
upload-spreadsheets: Jadvallarni yuklash
|
||||
drag-drop: Jadval fayllarini bu yerga tortib tashlang
|
||||
button-text: yoki yuklash uchun jadvallarni tanlang
|
||||
spreadsheets: jadvallar
|
||||
upload-queue: Yuklash navbati
|
||||
dropzone:
|
||||
file: fayl
|
||||
drop-to-upload: Yuklash uchun tashlang
|
||||
invalid: Noto'g'ri
|
||||
files-ready-for-upload: >-
|
||||
{numOfFiles} ta fayl yuklashga tayyor.
|
||||
upload-images-videos: Rasmlar va videolarni yuklash
|
||||
upload-documents: Hujjatlarni yuklash
|
||||
upload-documents-files: Hujjatlar va fayllarni yuklash
|
||||
upload-avatar-files: Maxsus avatarlarni yuklash
|
||||
dropzone-supported-images-videos: Rasm va video fayllarni bu yerga tortib tashlang
|
||||
dropzone-supported-avatars: SVG yoki PNG fayllarini tortib tashlang
|
||||
dropzone-supported-files: Fayllarni bu yerga tortib tashlang
|
||||
or-select-button-text: yoki yuklash uchun fayllarni tanlang.
|
||||
upload-queue: Yuklash navbati
|
||||
uploading: Yuklanmoqda...
|
||||
two-fa-enforcement-alert:
|
||||
message: Hisobingiz xavfsizligini oshirish uchun tashkilotingiz Ikki Faktorli Autentifikatsiyani (2FA) talab qiladi. Qo'shimcha himoya qatlami uchun hisob sozlamalaringizda 2FA-ni yoqing.
|
||||
button-text: 2FA-ni sozlash
|
||||
comment-thread:
|
||||
publish-comment-button-text: Izohni chop etish
|
||||
publish-reply-button-text: Javobni chop etish
|
||||
reply-comment-button-text: Javob berish
|
||||
edit-comment-button-text: Tahrirlash
|
||||
delete-comment-button-text: O'chirish
|
||||
comment-published-ago: >-
|
||||
{createdAgo} oldin
|
||||
comment-input-placeholder: Yangi izoh kiriting...
|
||||
comment-reply-placeholder: Javobingizni kiriting...
|
||||
comment-input-empty-notification: Bo'sh izohlarni chop eta olmaysiz...
|
||||
comment-min-length-notification: Izoh kamida 2 ta belgidan iborat bo'lishi kerak
|
||||
dashboard:
|
||||
select-dashboard: Boshqaruv panelini tanlang
|
||||
create-new-dashboard: Yangi boshqaruv paneli yaratish
|
||||
create-a-new-dashboard: Yangi boshqaruv paneli yaratish
|
||||
confirm-create-dashboard: Boshqaruv panelini yaratish!
|
||||
edit-layout: Tartibni tahrirlash
|
||||
add-widgets: Vidjetlarni qo'shish
|
||||
delete-dashboard: Boshqaruv panelini o'chirish
|
||||
save-dashboard: Boshqaruv panelini saqlash
|
||||
you-cannot-delete-this-dashboard: Siz bu boshqaruv panelini o'chira olmaysiz.
|
||||
are-you-sure-you-want-delete-dashboard: Haqiqatan ham bu {dashboardName} ni o'chirmoqchimisiz?
|
||||
dashboard-widget-panel:
|
||||
widget-name: >-
|
||||
{widgetName} vidjeti
|
||||
select-widgets: Vidjetlarni tanlang
|
||||
close-and-save: Yopish va saqlash
|
||||
|
||||
services:
|
||||
dashboard-service:
|
||||
create-dashboard-success-notification: Yangi `{dashboardName}` boshqaruv paneli muvaffaqiyatli yaratildi.
|
||||
delete-dashboard-success-notification: >-
|
||||
`{dashboardName}` boshqaruv paneli o'chirildi.
|
||||
|
||||
auth:
|
||||
verification:
|
||||
header-title: Hisobni tekshirish
|
||||
title: Elektron pochta manzilingizni tasdiqlang
|
||||
message-text: <strong>Deyarli tayyor!</strong><br> Tasdiqlash kodi uchun elektron pochtangizni tekshiring.
|
||||
verification-code-text: Elektron pochta orqali olgan tasdiqlash kodini kiriting.
|
||||
verification-input-label: Tasdiqlash kodi
|
||||
verify-button-text: Tasdiqlash va davom etish
|
||||
didnt-receive-a-code: Hali kod olmadizmi?
|
||||
not-sent:
|
||||
message: Hali kod olmadizmi?
|
||||
alternative-choice: Hisobingizni tasdiqlash uchun quyidagi muqobil variantlardan foydalaning.
|
||||
resend-email: E-pochtani qayta yuborish
|
||||
send-by-sms: SMS orqali yuborish
|
||||
two-fa:
|
||||
verify-code:
|
||||
verification-code: Tasdiqlash kodi
|
||||
check-title: E-pochtangizni yoki telefoningizni tekshiring
|
||||
check-subtitle: Biz sizga tasdiqlash kodini yubordik. Kirish jarayonini yakunlash uchun quyidagi kodni kiriting.
|
||||
expired-help-text: Sizning 2FA autentifikatsiya kodingiz muddati tugagan. Agar ko'proq vaqt kerak bo'lsa, boshqa kod so'rashingiz mumkin.
|
||||
resend-code: Kodni qayta yuborish
|
||||
verify-code: Kodni tasdiqlash
|
||||
cancel-two-factor: Ikki faktorli autentifikatsiyani bekor qilish
|
||||
invalid-session-error-notification: Noto'g'ri sessiya. Iltimos, qaytadan urining.
|
||||
verification-successful-notification: Tasdiqlash muvaffaqiyatli!
|
||||
verification-code-expired-notification: Tasdiqlash kodi muddati tugagan. Iltimos, yangisini so'rang.
|
||||
verification-code-failed-notification: Tasdiqlash muvaffaqiyatsiz tugadi. Iltimos, qaytadan urining.
|
||||
resend-code:
|
||||
verification-code-resent-notification: Yangi tasdiqlash kodi yuborildi.
|
||||
verification-code-resent-error-notification: Tasdiqlash kodini qayta yuborishda xato. Iltimos, qaytadan urining.
|
||||
forgot-password:
|
||||
success-message: Davom etish uchun elektron pochtangizni tekshiring!
|
||||
is-sent:
|
||||
title: Deyarli tayyor!
|
||||
message: <strong>E-pochtangizni tekshiring!</strong><br> Biz sizga parolingizni tiklash imkonini beruvchi sehrli havolani elektron pochtangizga yubordik. Havola 15 daqiqadan so'ng tugaydi.
|
||||
not-sent:
|
||||
title: Parolingizni unutdingizmi?
|
||||
message: <strong>Xavotir olmang, biz sizga yordam beramiz.</strong><br> {appName} ga kirish uchun foydalanadigan elektron pochta manzilingizni kiriting va biz sizga parolingizni tiklash uchun xavfsiz havola yuboramiz.
|
||||
form:
|
||||
email-label: Sizning elektron pochta manzilingiz
|
||||
submit-button: OK, menga sehrli havola yuboring!
|
||||
nevermind-button: Hechqisi yo'q
|
||||
login:
|
||||
title: Hisobingizga kiring
|
||||
no-identity-notification: E-pochtangizni kiritishni unutdingizmi?
|
||||
no-password-notification: Parolingizni kiritishni unutdingizmi?
|
||||
unverified-notification: Davom etish uchun hisobingiz tasdiqlanishi kerak.
|
||||
password-reset-required: Davom etish uchun parolni tiklash talab qilinadi.
|
||||
failed-attempt:
|
||||
message: <strong>Parolingizni unutdingizmi?</strong><br> Parolingizni tiklash uchun quyidagi tugmani bosing.
|
||||
button-text: Ok, tiklashga yordam bering!
|
||||
form:
|
||||
email-label: Elektron pochta manzili
|
||||
password-label: Parol
|
||||
remember-me-label: Meni eslab qol
|
||||
forgot-password-label: Parolingizni unutdingizmi?
|
||||
sign-in-button: Kirish
|
||||
create-account-button: Yangi hisob yaratish
|
||||
slow-connection-message: Ulanish muammolari yuzaga kelmoqda.
|
||||
reset-password:
|
||||
success-message: Parolingiz tiklandi! Davom etish uchun tizimga kiring.
|
||||
invalid-verification-code: Bu parolni tiklash havolasi yaroqsiz yoki muddati o'tgan.
|
||||
title: Parolingizni tiklang
|
||||
form:
|
||||
code:
|
||||
label: Sizning tiklash kodingiz
|
||||
help-text: E-pochtangizda olgan tasdiqlash kodi.
|
||||
password:
|
||||
label: Yangi parol
|
||||
help-text: Davom etish uchun kamida 6 ta belgidan iborat parol kiriting.
|
||||
confirm-password:
|
||||
label: Yangi parolni tasdiqlang
|
||||
help-text: Davom etish uchun kamida 6 ta belgidan iborat parol kiriting.
|
||||
submit-button: Parolni tiklash
|
||||
back-button: Orqaga
|
||||
|
||||
console:
|
||||
create-or-join-organization:
|
||||
modal-title: Tashkilot yaratish yoki unga qo'shilish
|
||||
join-success-notification: Siz yangi tashkilotga qo'shildingiz!
|
||||
create-success-notification: Siz yangi tashkilot yaratdingiz!
|
||||
switch-organization:
|
||||
modal-title: Haqiqatan ham tashkilotni {organizationName} ga o'zgartirmoqchimisiz?
|
||||
modal-body: Tasdiqlaganingizdan so'ng hisobingiz tizimda qoladi, lekin asosiy tashkilotingiz o'zgaradi.
|
||||
modal-accept-button-text: Ha, men tashkilotni o'zgartirmoqchiman
|
||||
success-notification: Siz tashkilotlarni o'zgartirdingiz
|
||||
account:
|
||||
index:
|
||||
upload-new: Yangisini yuklash
|
||||
phone: Sizning telefon raqamingiz.
|
||||
photos: rasmlar
|
||||
timezone: Vaqt mintaqangizni tanlang.
|
||||
admin:
|
||||
menu:
|
||||
overview: Umumiy ko'rinish
|
||||
organizations: Tashkilotlar
|
||||
branding: Brending
|
||||
"2fa-config": 2FA konfiguratsiyasi
|
||||
schedule-monitor: Jadval monitori
|
||||
services: Xizmatlar
|
||||
mail: Pochta
|
||||
filesystem: Fayl tizimi
|
||||
queue: Navbat
|
||||
socket: Soket
|
||||
push-notifications: Push-bildirishnomalar
|
||||
schedule-monitor:
|
||||
schedule-monitor: Jadval monitori
|
||||
task-logs-for: >-
|
||||
Vazifalar jurnali uchun:
|
||||
showing-last-count: Oxirgi {count} ta jurnal ko'rsatilmoqda
|
||||
name: Nomi
|
||||
type: Turi
|
||||
timezone: Vaqt mintaqasi
|
||||
last-started: Oxirgi boshlangan
|
||||
last-finished: Oxirgi tugallangan
|
||||
last-failure: Oxirgi muvaffaqiyatsizlik
|
||||
date: Sana
|
||||
memory: Xotira
|
||||
runtime: Ish vaqti
|
||||
output: Chiqish
|
||||
no-output: Chiqish yo'q
|
||||
config:
|
||||
database:
|
||||
title: Ma'lumotlar bazasi konfiguratsiyasi
|
||||
filesystem:
|
||||
title: Fayl tizimi konfiguratsiyasi
|
||||
mail:
|
||||
title: Pochta konfiguratsiyasi
|
||||
notification-channels:
|
||||
title: Push-bildirishnomalar konfiguratsiyasi
|
||||
queue:
|
||||
title: Navbat konfiguratsiyasi
|
||||
services:
|
||||
title: Xizmatlar konfiguratsiyasi
|
||||
socket:
|
||||
title: Soket konfiguratsiyasi
|
||||
branding:
|
||||
title: Brending
|
||||
icon-text: Belgi
|
||||
upload-new: Yangisini yuklash
|
||||
reset-default: Standart holatga qaytarish
|
||||
logo-text: Logotip
|
||||
theme: Standart mavzu
|
||||
index:
|
||||
total-users: Jami foydalanuvchilar
|
||||
total-organizations: Jami tashkilotlar
|
||||
total-transactions: Jami tranzaksiyalar
|
||||
notifications:
|
||||
title: Bildirishnomalar
|
||||
notification-settings: Bildirishnomalar sozlamalari
|
||||
organizations:
|
||||
index:
|
||||
title: Tashkilotlar
|
||||
owner-name-column: Egasi
|
||||
owner-phone-column: Egasining telefoni
|
||||
owner-email-column: Egasining telefoni
|
||||
users-count-column: Foydalanuvchilar
|
||||
phone-column: Telefon
|
||||
email-column: Elektron pochta
|
||||
users:
|
||||
title: Foydalanuvchilar
|
||||
settings:
|
||||
index:
|
||||
title: Tashkilot sozlamalari
|
||||
organization-name: Tashkilot nomi
|
||||
organization-description: Tashkilot tavsifi
|
||||
organization-phone: Tashkilot telefon raqami
|
||||
organization-currency: Tashkilot valyutasi
|
||||
organization-id: Tashkilot IDsi
|
||||
organization-branding: Tashkilot brendingi
|
||||
logo: Logotip
|
||||
logo-help-text: Tashkilotingiz uchun logotip.
|
||||
upload-new-logo: Yangi logotip yuklash
|
||||
backdrop: Orqa fon
|
||||
backdrop-help-text: Tashkilotingiz uchun ixtiyoriy banner yoki fon rasmi.
|
||||
upload-new-backdrop: Yangi orqa fon yuklash
|
||||
organization-timezone: Tashkilotingiz uchun standart vaqt mintaqasini tanlang.
|
||||
select-timezone: Vaqt mintaqasini tanlang.
|
||||
extensions:
|
||||
title: Kengaytmalar tez kunda!
|
||||
message: Kengaytmalar ombori va bozorini ishga tushirishga tayyorgarlik ko'rayotganimiz sababli, kelgusi versiyalarda qayta tekshiring.
|
||||
notifications:
|
||||
select-all: Hammasini tanlash
|
||||
mark-as-read: O'qilgan deb belgilash
|
||||
received: >-
|
||||
Qabul qilindi:
|
||||
message: Ko'rsatish uchun bildirishnomalar yo'q.
|
||||
|
||||
invite:
|
||||
for-users:
|
||||
invitation-message: Sizni {companyName} ga qo'shilishga taklif qilishdi
|
||||
invitation-sent-message: Sizni {appName} dagi {companyName} tashkilotiga qo'shilishga taklif qilishdi. Ushbu taklifni qabul qilish uchun elektron pochta orqali olgan taklifnomangiz kodini kiriting va davom etish tugmasini bosing.
|
||||
invitation-code-sent-text: Sizning taklifnoma kodingiz
|
||||
accept-invitation-text: Taklifni qabul qilish
|
||||
|
||||
onboard:
|
||||
index:
|
||||
title: Hisobingizni yarating
|
||||
welcome-title: <strong>{companyName} ga xush kelibsiz!</strong><br />
|
||||
welcome-text: Boshlash uchun quyida talab qilinadigan ma'lumotlarni to'ldiring.
|
||||
full-name: To'liq ism
|
||||
full-name-help-text: Sizning to'liq ismingiz
|
||||
your-email: Elektron pochta manzili
|
||||
your-email-help-text: Sizning elektron pochta manzilingiz
|
||||
phone: Telefon raqami
|
||||
phone-help-text: Sizning telefon raqamingiz
|
||||
organization-name: Tashkilot nomi
|
||||
organization-help-text: Sizning tashkilotingiz nomi, barcha xizmatlaringiz va resurslaringiz ushbu tashkilot ostida boshqariladi, keyinchalik xohlagancha yoki kerak bo'lganda ko'plab tashkilotlar yaratishingiz mumkin.
|
||||
password: Parol kiriting
|
||||
password-help-text: Sizning parolingiz, yaxshi ekanligiga ishonch hosil qiling.
|
||||
confirm-password: Parolingizni tasdiqlang
|
||||
confirm-password-help-text: Yuqorida kiritgan parolingizni tasdiqlash uchun.
|
||||
continue-button-text: Davom etish
|
||||
verify-email:
|
||||
header-title: Hisobni tekshirish
|
||||
title: Elektron pochta manzilingizni tasdiqlang
|
||||
message-text: <strong>Deyarli tayyor!</strong><br> Tasdiqlash kodi uchun elektron pochtangizni tekshiring.
|
||||
verification-code-text: Elektron pochta orqali olgan tasdiqlash kodini kiriting.
|
||||
verification-input-label: Tasdiqlash kodi
|
||||
verify-button-text: Tasdiqlash va davom etish
|
||||
didnt-receive-a-code: Hali kod olmadizmi?
|
||||
not-sent:
|
||||
message: Hali kod olmadizmi?
|
||||
alternative-choice: Hisobingizni tasdiqlash uchun quyidagi muqobil variantlardan foydalaning.
|
||||
resend-email: E-pochtani qayta yuborish
|
||||
send-by-sms: SMS orqali yuborish
|
||||
|
||||
install:
|
||||
installer-header: O'rnatuvchi
|
||||
failed-message-sent: O'rnatish muvaffaqiyatsiz tugadi! O'rnatishni qayta urinish uchun quyidagi tugmani bosing.
|
||||
retry-install: Qayta o'rnatish
|
||||
start-install: O'rnatishni boshlash
|
||||
|
||||
layout:
|
||||
header:
|
||||
menus:
|
||||
organization:
|
||||
settings: Tashkilot sozlamalari
|
||||
create-or-join: Tashkilot yaratish yoki unga qo'shilish
|
||||
explore-extensions: Kengaytmalarni o'rganish
|
||||
user:
|
||||
view-profile: Profilni ko'rish
|
||||
keyboard-shortcuts: Klaviatura yorliqlarini ko'rsatish
|
||||
changelog: O'zgarishlar jurnali
|
||||
@@ -75,7 +75,7 @@ ENV QUEUE_CONNECTION=redis
|
||||
ENV CADDYFILE_PATH=/fleetbase/Caddyfile
|
||||
ENV CONSOLE_PATH=/fleetbase/console
|
||||
ENV OCTANE_SERVER=frankenphp
|
||||
ENV FLEETBASE_VERSION=0.7.26
|
||||
ENV FLEETBASE_VERSION=0.7.28
|
||||
|
||||
# Set environment
|
||||
ARG ENVIRONMENT=production
|
||||
|
||||
Submodule packages/core-api updated: e799c5a3a9...a2e70e1eec
Submodule packages/fleetops updated: 3743542096...05503cee9f
Submodule packages/registry-bridge updated: 959e4baddb...c54b945dc1
Submodule packages/storefront updated: 91415ea273...aa2a2bc0bd
@@ -96,7 +96,7 @@ else
|
||||
fi
|
||||
|
||||
###############################################################################
|
||||
# 6. Write console/fleetbase.config.json atomically
|
||||
# 6. Write console/fleetbase.config.json atomically (for development runtime)
|
||||
###############################################################################
|
||||
CONFIG_DIR="console"
|
||||
CONFIG_PATH="$CONFIG_DIR/fleetbase.config.json"
|
||||
@@ -113,6 +113,36 @@ JSON
|
||||
mv -f "${CONFIG_PATH}.tmp" "$CONFIG_PATH"
|
||||
echo "✔ $CONFIG_PATH updated"
|
||||
|
||||
###############################################################################
|
||||
# 6b. Update console environment files (.env.development and .env.production)
|
||||
###############################################################################
|
||||
ENV_DIR="$CONFIG_DIR/environments"
|
||||
|
||||
# Update .env.development
|
||||
cat > "$ENV_DIR/.env.development" <<ENV_DEV
|
||||
API_HOST=http://$HOST:8000
|
||||
API_NAMESPACE=int/v1
|
||||
SOCKETCLUSTER_PATH=/socketcluster/
|
||||
SOCKETCLUSTER_HOST=$HOST
|
||||
SOCKETCLUSTER_SECURE=false
|
||||
SOCKETCLUSTER_PORT=38000
|
||||
OSRM_HOST=https://router.project-osrm.org
|
||||
ENV_DEV
|
||||
|
||||
# Update .env.production
|
||||
cat > "$ENV_DIR/.env.production" <<ENV_PROD
|
||||
API_HOST=https://$HOST:8000
|
||||
API_NAMESPACE=int/v1
|
||||
API_SECURE=true
|
||||
SOCKETCLUSTER_PATH=/socketcluster/
|
||||
SOCKETCLUSTER_HOST=$HOST
|
||||
SOCKETCLUSTER_SECURE=true
|
||||
SOCKETCLUSTER_PORT=38000
|
||||
OSRM_HOST=https://router.project-osrm.org
|
||||
ENV_PROD
|
||||
|
||||
echo "✔ Console environment files updated"
|
||||
|
||||
###############################################################################
|
||||
# 7. Start stack, wait for DB, then run deploy
|
||||
###############################################################################
|
||||
@@ -125,7 +155,7 @@ docker compose up -d
|
||||
DB_SERVICE="database" # ← change if your docker‑compose uses a different name
|
||||
DB_WAIT_TIMEOUT=60 # seconds
|
||||
|
||||
echo "⏳ Waiting for “$DB_SERVICE” to become ready (timeout: ${DB_WAIT_TIMEOUT}s)…"
|
||||
echo "⏳ Waiting for $DB_SERVICE to become ready (timeout: ${DB_WAIT_TIMEOUT}s)..."
|
||||
DB_CONTAINER=$(docker compose ps -q "$DB_SERVICE")
|
||||
|
||||
if [ -z "$DB_CONTAINER" ]; then
|
||||
|
||||
Reference in New Issue
Block a user