<p align="center">
  <a href="https://unopim.com/">
    <picture>
      <source media="(prefers-color-scheme: dark)" srcset="https://github.com/user-attachments/assets/5001c5b0-1ef3-4887-a907-f9c20082b0e6">
      <source media="(prefers-color-scheme: light)" srcset="https://github.com/user-attachments/assets/a1e6793d-376e-4452-925b-c72b7d07389a">
      <img src="https://github.com/user-attachments/assets/a1e6793d-376e-4452-925b-c72b7d07389a" alt="UnoPim logo" width="320">
    </picture>
  </a>
</p>

<p align="center">
  <a href="https://packagist.org/packages/unopim/unopim"><img src="https://poser.pugx.org/unopim/unopim/d/total.svg" alt="Total Downloads"></a>
  <a href="https://packagist.org/packages/unopim/unopim"><img src="https://poser.pugx.org/unopim/unopim/v/stable.svg" alt="Latest Stable Version"></a>
  <a href="https://packagist.org/packages/unopim/unopim"><img src="https://poser.pugx.org/unopim/unopim/license.svg" alt="License"></a>
  <a href="https://github.com/unopim/unopim/actions"><img src="https://img.shields.io/github/actions/workflow/status/unopim/unopim/linting_tests.yml?branch=master&label=tests" alt="Tests"></a>
</p>

<p align="center">
  <a href="https://github.com/unopim/unopim/stargazers"><img src="https://img.shields.io/github/stars/unopim/unopim?style=social" alt="GitHub Stars"></a>
  <a href="https://github.com/unopim/unopim/network/members"><img src="https://img.shields.io/github/forks/unopim/unopim?style=social" alt="GitHub Forks"></a>
</p>

<p align="center">
  <a href="https://x.com/uno_pim"><img src="https://img.shields.io/twitter/follow/uno_pim?style=social" alt="Follow on X"></a>
  <a href="https://www.youtube.com/@UnoPIM"><img src="https://img.shields.io/badge/YouTube-@UnoPIM-red?logo=youtube&logoColor=white" alt="YouTube @UnoPIM"></a>
  <a href="https://www.facebook.com/unopim/"><img src="https://img.shields.io/badge/Facebook-unopim-1877F2?logo=facebook&logoColor=white" alt="Facebook unopim"></a>
</p>

<p align="center">
  <a href="https://unopim.com/">🌐&nbsp;Website</a>
  &nbsp;·&nbsp;
  <a href="https://devdocs.unopim.com/">📘&nbsp;Documentation</a>
  &nbsp;·&nbsp;
  <a href="https://devdocs.unopim.com/2.0.x/introduction/installation.html">🚀&nbsp;Installation</a>
  &nbsp;·&nbsp;
  <a href="https://devdocs.unopim.com/2.0.x/introduction/installation.html#install-using-docker">🐳&nbsp;Docker&nbsp;Installation</a>
  &nbsp;·&nbsp;
  <a href="https://demo.unopim.com/">🎯&nbsp;Live&nbsp;Demo</a>
</p>

<p align="center">
  <!-- 33 locales shipped in packages/Webkul/Admin/src/Resources/lang (ca_ES + es_ES share the Spain flag) -->
  🇦🇪 🇪🇸 🇩🇰 🇩🇪 🇦🇺 🇬🇧 🇳🇿 🇺🇸 🇻🇪 🇫🇮 🇫🇷 🇮🇳 🇭🇷 🇮🇩 🇮🇹 🇯🇵
  🇰🇷 🇲🇳 🇳🇱 🇳🇴 🇵🇱 🇧🇷 🇵🇹 🇷🇴 🇷🇺 🇸🇪 🇵🇭 🇹🇷 🇺🇦 🇻🇳 🇨🇳 🇹🇼
</p>

UnoPim is an open-source Product Information Management (PIM) system built on Laravel 12. It helps businesses organize, manage, and enrich their product information in one central repository — now with built-in AI agent capabilities for conversational product management.

---

## 🎥 Watch & Learn

<table>
  <tr>
    <td align="center" width="33%">
      <a href="https://www.youtube.com/watch?v=_P1zt4BxJK0">
        <img src="https://img.youtube.com/vi/_P1zt4BxJK0/mqdefault.jpg" width="280" height="158" alt="Introducing Open Source PIM — UnoPim"><br>
        <sub><b>Introducing Open Source PIM — UnoPim</b></sub>
      </a>
    </td>
    <td align="center" width="33%">
      <a href="https://www.youtube.com/watch?v=n76bJmdZkL8">
        <img src="https://img.youtube.com/vi/n76bJmdZkL8/mqdefault.jpg" width="280" height="158" alt="Can an Open Source PIM Handle 10M Products? — Meet UnoPIM"><br>
        <sub><b>10M Products? Meet UnoPim</b></sub>
      </a>
    </td>
    <td align="center" width="33%">
      <a href="https://www.youtube.com/watch?v=y6SA4Aip1ow">
        <img src="https://img.youtube.com/vi/y6SA4Aip1ow/mqdefault.jpg" width="280" height="158" alt="UnoPim CSV Import Optimization — 10x Faster"><br>
        <sub><b>CSV Import 10x Faster</b></sub>
      </a>
    </td>
  </tr>
</table>

> Upgrading from v1.0.0? See the [Upgrade Guide](UPGRADE-1.0.0-2.0.0.md) and [CHANGELOG](CHANGELOG.md) for full release notes.

## ⚙️ Scalability

UnoPim is engineered for high-volume catalogues. Read [how UnoPim scales to handle over 10 million products](https://unopim.com/scaling-unopim-for-10-million-products/).

<p align="center">
  <a href="https://unopim.com/scaling-unopim-for-10-million-products/">
    <img src="https://github.com/user-attachments/assets/c264d658-3723-46ff-8b60-2b9506a7a412" alt="UnoPim scaling to 10 million products" width="720">
  </a>
</p>


## ✨ Features

- **AI Agent Chat**
  Manage products through natural language — search, create, update, bulk edit, export, categorize, and generate content via conversational AI with multi-step tool calling.
    <p><img src="https://raw.githubusercontent.com/unopim/temp-media/main/ai-agent-chat.png" alt="AI Agent Chat" width="720"></p>
    
- **Magic AI with Multi-Platform Support**
  Generate product content, images, and translations using 10+ AI providers. Configure and manage AI platforms with encrypted credential storage, connection testing, and dynamic model selection.
  <p><img src="https://raw.githubusercontent.com/unopim/temp-media/main/magic-ai-with-multi-platform-support.png" alt="Magic AI with Multi-Platform Support" width="720"></p>

- **Advanced AI-Powered Product Management**
    Create compelling product content, generate high-quality images, and gain actionable insights with intelligent automation. Leverage customizable dashboards, seamless multi-user collaboration, and smart reporting tools to streamline workflows and boost productivity across your entire platform.
  <p><img src="https://raw.githubusercontent.com/unopim/temp-media/main/advanced-features.png" alt="AI-powered Product Content Generation" width="720"></p>

- **Centralized Product Management**
  Manage all your product data in one place.

  <p><img src="https://raw.githubusercontent.com/unopim/temp-media/main/catalog-management.png" alt="Centralized Product Management Interface" width="720"></p>

- **Data Enrichment**
  Enhance your product information with detailed attributes and descriptions.

  <p><img src="https://raw.githubusercontent.com/unopim/temp-media/main/data-enrichment.png" alt="Data Enrichment Interface" width="720"></p>

- **Dashboard with Analytics**
  Monitor channel readiness, product trends, recent activity, and items needing attention at a glance.

    <p><img src="https://raw.githubusercontent.com/unopim/temp-media/main/dashboard-with-analytics.png" alt="Dashboard with Analytics" width="720"></p>
- **User Management**
  Control user access and permissions.

  <p><img src="https://raw.githubusercontent.com/unopim/temp-media/main/access-control.png" alt="User Management Interface" width="720"></p>

- **API Integration**
  Seamlessly integrate with other systems via RESTful APIs. Import our official [Postman collection](https://www.postman.com/unopim/unopim-apis/collection/kzy03uh/official-unopim-apis?ctx=info) or browse the [full API documentation](https://documenter.getpostman.com/view/37137259/2sBXVhEWjS).

  <p><img src="https://raw.githubusercontent.com/unopim/temp-media/main/api-integration.png" alt="API Integration Interface" width="720"></p>

- **Localization**
  Support for 33 languages and locales out of the box.

  <p><img src="https://raw.githubusercontent.com/unopim/temp-media/main/localization-and-channels.png" alt="Localization Support" width="720"></p>

- **Multi-Channel**
  Support for multiple sales channels.

  <p><img src="https://raw.githubusercontent.com/unopim/temp-media/main/multi-channel-support.png" alt="Multi-Channel Support" width="720"></p>

- **Multi-Currency**
  Support for multiple currencies.

  <p><img src="https://raw.githubusercontent.com/unopim/temp-media/main/multi-currency-support.png" alt="Multi-Currency Support" width="720"></p>

- **Import/Export with Real-Time Tracker**
  Import and export product data using CSV, XLSX, and ZIP formats with real-time step-by-step progress tracking, pipeline visualization, and job-specific logging. Optimized for high-volume data handling with eager loading, increased batch sizes, and deferred indexing.

  <p><img src="https://raw.githubusercontent.com/unopim/temp-media/main/data-transfer.png" alt="Data Import/Export Interface" width="720"></p>

- **Themes**
  UI compatible with both Light and Dark themes.

  <p><img src="https://raw.githubusercontent.com/unopim/temp-media/main/user-interface.png" alt="Light/Dark Theme Interface" width="720"></p>

- **Version Control**
  Track the history of changes in your product data.

  <p><img src="https://raw.githubusercontent.com/unopim/temp-media/main/version-control.png" alt="Version Control Interface" width="720"></p>

## 🚀 Installation

> **Requirements:** Nginx/Apache2, PHP 8.3+, Node 20 LTS+, Composer 2.5+, and MySQL 8.0.32+ or PostgreSQL 14+ *(recommended)*.

Full [Installation Guide](https://devdocs.unopim.com/2.0.x/introduction/installation.html) on devdocs — or pick a quick path below.

### Composer

```bash
composer create-project unopim/unopim
cd unopim
php artisan unopim:install
php artisan serve
```

Open `http://localhost:8000` in your browser. To execute imports/exports, AI agent tasks, completeness jobs, and webhook deliveries, start the queue worker:

```bash
php artisan queue:work --queue=webhooks,system,default,completeness
```

> **Note:** The `webhooks` queue is required for outgoing webhook delivery. The `Webkul\Webhook\Listeners\Product` listener is dispatched asynchronously to this queue so product save/update requests are not blocked by HTTP calls to subscribers. If you omit `webhooks` from the `--queue` list, webhook events will queue up but never be processed.

### Docker

Requires Docker + Docker Compose v2+. See the full [Docker guide](https://devdocs.unopim.com/2.0.x/introduction/installation.html#install-using-docker) for advanced configuration.

```bash
git clone https://github.com/unopim/unopim.git
cd unopim
cp .env.docker .env
docker compose up -d
```

Wait ~90 seconds for first-time migrations/seeding, then open `http://localhost:8000/admin` and log in with `admin@example.com` / `admin123`.

**Apache alternative** (instead of Nginx):

```bash
docker compose -f docker-compose.yml -f docker-compose.apache.yml up -d
```

> **Port conflicts?** If you already have MySQL, Redis, or Elasticsearch running locally, edit the `FORWARD_*` ports in `.env` and restart. See `.env.docker` for details.

### ☁️ AWS Marketplace

Deploy UnoPim on a pre-configured Amazon Machine Image (AMI) without any manual setup — ideal for scalable production or testing environments.

[**Launch UnoPim on AWS**](https://aws.amazon.com/marketplace/pp/prodview-fdyosdv7k3cgw)

## 🤝 Contributing

Found a bug or want to add a feature? Open an issue or submit a pull request — see [CONTRIBUTING.md](.github/CONTRIBUTING.md) for the full flow.

## 👥 Community

<p align="center">
  <a href="https://unopim.com/"><img src="https://img.shields.io/badge/Website-unopim.com-2563eb?style=for-the-badge&logo=google-chrome&logoColor=white" alt="Website"></a>
  <a href="https://devdocs.unopim.com/"><img src="https://img.shields.io/badge/Docs-devdocs-059669?style=for-the-badge&logo=gitbook&logoColor=white" alt="Documentation"></a>
  <a href="https://www.youtube.com/@UnoPIM"><img src="https://img.shields.io/badge/YouTube-@UnoPIM-FF0000?style=for-the-badge&logo=youtube&logoColor=white" alt="YouTube"></a>
  <a href="https://x.com/uno_pim"><img src="https://img.shields.io/badge/X-uno__pim-000000?style=for-the-badge&logo=x&logoColor=white" alt="X / Twitter"></a>
  <a href="https://www.facebook.com/unopim/"><img src="https://img.shields.io/badge/Facebook-unopim-1877F2?style=for-the-badge&logo=facebook&logoColor=white" alt="Facebook"></a>
</p>

Have questions, feedback, or want to contribute? Reach out through any of the channels above — we're always happy to hear from fellow PIM builders.

## 🔒 Security

If you discover any security vulnerabilities, please follow our [Security Policy](SECURITY.md) and report them to [support@webkul.com](mailto:support@webkul.com).

## 📝 License

UnoPim is open-source software distributed under the [MIT License](LICENSE).
