<div align="center">
<h1 style="border-bottom: none">
    <b><a href="https://openblocks.dev/">Openblocks</a></b><br />
    The Open Source Retool Alternative
</h1>
<p>
    Build internal tools fast, with no limitations
</p>
</div>

<img src="/docs/.gitbook/assets/Bu2fpz1h01.gif"/>

## 📢 Use Openblocks in 3 steps
1. Connect to any data sources or APIs.
2. Build UI with 50+ components.
3. Share with colleagues and customers.
## 💡 Why Openblocks
It's cumbersome to create a single app. You had to design user interfaces, write code in multiple languages and frameworks, and understand how all of that code works together.

Low-code/No-code platforms are fast to get started with but quickly become unmaintainable and inflexible. This creates more problems than it solves.

Retool-like solutions are great for their simplicity and flexibility, but they can also be limited in different ways compared to frameworks like React/Vue.

Openblocks wants to take a step forward. More specifically, Openblocks is
- An all-in-one IDE to create internal or customer-facing apps.
- A place to create, build and share building blocks of web applications.
- A domain-specific language that UI-configurable block is the first-class citizen.

## 🪄 Features
- **Visual UI builder** with 50+ built-in components.
- **Module and Query Library** for reusable components and queries in the UI builder.
- **Custom components** to share through React and Openblocks SDK (instead of iFrame).
- **Native connections** to PostgreSQL, MongoDB, MySQL, Redis, Elasticsearch, REST API, SMTP, etc.
- **JavaScript supported everywhere** to transform data, control components, etc.
- **Embed Openblocks pages as a React component** (instead of iFrame). [Demo](https://github.com/openblocks-dev/openblocks-sdk-demo)
- **Role-based access control (RBAC)** for granular permission management.
- **Auto-saved and restorable history** for release and version control.
- **DIY app themes** to precisely align with your company's content.
- **Audit logs** to track activities and ensure compliance.

## 🏆 Comparisons
### Openblocks vs Retool
- Openblocks is open-source. You don't need to worry about vendor lock-in or being stuck with an outdated version of the software.
- In Openblocks, developers can create and use their own components instead of depending on official updates.
- Openblocks supports left menu navigation (like most sites do). Retool has header navigation only.
### Openblocks vs Appsmith, Tooljet
- Openblocks has more components and richer configuration than Appsmith and Tooljet.
- In Openblocks, you can choose auto-height or fixed-height mode for your components, while Appsmith supports fixed-height mode only.
- In Openblocks, you can reuse common structures when building apps with modules and query library features.

## 👐 Support and Community
If you have any questions, please feel free to contact us or share with our community. Our team is here ready to help.

📮 Chat with us on [Discord](https://discord.com/invite/z5W2YHXdtt)

📑 Search for solutions in our [Documentation](https://docs.openblocks.dev/)

🔎 Submit an issue here on [GitHub](https://github.com/openblocks-dev/openblocks/issues)

## 💻 Deployment Options
You can access Openblocks from [cloud-hosted version](https://cloud.openblocks.dev/) at any time, or use the following resources for deploying Openblocks on different platforms:
- [Docker](https://docs.openblocks.dev/self-hosting)
- [AWS AMI](https://docs.openblocks.dev/self-hosting/aws-ami)
- [DigitalOcean](https://docs.openblocks.dev/self-hosting/digitalocean)

## 💪 Contributing
- Language support: If you have experience with a language that isn't currently supported by our product, send us a pull request.
- Create and share components or demos: If you've created something that might be useful to others, add the link here.
- [Frontend contributing guide](https://github.com/openblocks-dev/openblocks/tree/develop/client)

## 📝 Examples(WIP)
- [Basic CRUD](https://cloud.openblocks.dev/apps/6374b8dbc23a1103804cc23e/view)
- [Simple table horizontal scroll and pagination demo](https://cloud.openblocks.dev/apps/6377695dc54c5224c70e9770/view)
- [Pagination with temporary state demo](https://cloud.openblocks.dev/apps/6379cdd9f02c6e6ecc1d37ff/view)
- [Import third-party JS lib demo](https://cloud.openblocks.dev/apps/637a1797c54c5224c70efed3/view)
- [JSON schema parsing using a third-party lib](https://cloud.openblocks.dev/apps/638dc95c75cfb658566143c5/view)
- [Custom Echarts demo](https://cloud.openblocks.dev/apps/63779dd6c54c5224c70ea537/view), [Echarts source](https://echarts.apache.org/examples/en/editor.html?c=area-stack)
- [Periodically user action report demo](https://cloud.openblocks.dev/apps/637f38daa899fe1ffcb17f0b/view)
- [Generate PDF using jsPdf](https://cloud.openblocks.dev/apps/6388610b0a254922d92e3882/view)
- [Excel Explorer](https://cloud.openblocks.dev/apps/6392ff5d51cd8a59114b0c2c/view)
- [File upload with REST API](https://cloud.openblocks.dev/apps/63a2651e660ad97d59eb4a51/view)
- [Shopping cart demo using transformers/state/drawer](https://cloud.openblocks.dev/apps/63a422a344075b798fe3ae06/view)
- [Module demo: color picker](https://cloud.openblocks.dev/apps/63a58f1e85d4cb49cebad1d4/view)
- [S3 File Management](https://cloud.openblocks.dev/apps/63c7aa55686c4f301cf4d755/view)
- [Custom Markdown Style](https://cloud.openblocks.dev/apps/63c8bdb9de760726cd253c90/view)
- [Use JS query to orchestrate other queries](https://cloud.openblocks.dev/apps/63c8fb1e0279b679be2b5a09/view)
- [Data responder demo](https://cloud.openblocks.dev/apps/63f84d23f5f6f66102fedf81/view)
- [Change theme by code](https://cloud.openblocks.dev/apps/63f84ca9f5f6f66102fedf3b/view)
