{"id":26865323,"url":"https://github.com/frolicflow/Frolic","last_synced_at":"2025-03-31T04:01:20.326Z","repository":{"id":184428866,"uuid":"671010928","full_name":"frolicflow/frolic","owner":"frolicflow","description":"Backend service to build customer facing dashboards 10x faster. Written in Rust.","archived":false,"fork":false,"pushed_at":"2023-08-15T05:36:13.000Z","size":245,"stargazers_count":192,"open_issues_count":0,"forks_count":4,"subscribers_count":5,"default_branch":"prod","last_synced_at":"2025-03-28T11:40:05.230Z","etag":null,"topics":["analytics","dashboard","dashboard-builder","developer-tools","headless","mysql","postgresql","rust"],"latest_commit_sha":null,"homepage":"https://www.frolicorg.com","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/frolicflow.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2023-07-26T10:37:23.000Z","updated_at":"2025-03-23T18:08:50.000Z","dependencies_parsed_at":"2024-01-30T03:12:50.810Z","dependency_job_id":"a511ecf6-27bd-41c7-90d1-127937a90fad","html_url":"https://github.com/frolicflow/frolic","commit_stats":null,"previous_names":["arihantparsoya/dashboard-semantic-layer","arihantparsoya/dashboard-api-layer","frolicorg/frolic","frolicflow/frolic"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/frolicflow%2Ffrolic","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/frolicflow%2Ffrolic/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/frolicflow%2Ffrolic/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/frolicflow%2Ffrolic/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/frolicflow","download_url":"https://codeload.github.com/frolicflow/frolic/tar.gz/refs/heads/prod","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246413230,"owners_count":20773053,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["analytics","dashboard","dashboard-builder","developer-tools","headless","mysql","postgresql","rust"],"created_at":"2025-03-31T04:00:56.519Z","updated_at":"2025-03-31T04:01:20.312Z","avatar_url":"https://github.com/frolicflow.png","language":"Rust","readme":"\n\u003cp align=\"center\"\u003e\n\u003ca href=\"\"\u003e\n  \u003cimg src=\"static/Frolic Icon.png\" alt=\"Frolic Logo\" width=\"350\"\u003e\n\u003c/a\u003e\n\u003c/p\u003e\n\nFrolic is an open source backend service (written in Rust) to build customer facing dashboards 10x faster. You can directly connect your database to the project and use ready made APIs to query data. You no longer have to write custom APIs for different dashboard components and create/maintain SQL queries for them.\n\nYou can also use [frolic-react](https://github.com/frolicorg/frolic-react) for your UI along with frolic to create full stack dashboards much faster.\n\n![GitHub contributors](https://img.shields.io/github/contributors/FrolicOrg/Frolic)\n[![GitHub issues](https://img.shields.io/github/issues/FrolicOrg/Frolic)](https://github.com/FrolicOrg/Frolic/issues)\n[![GitHub stars](https://img.shields.io/github/stars/FrolicOrg/Frolic)](https://github.com/FrolicOrg/Frolic/stargazers)\n![GitHub closed issues](https://img.shields.io/github/issues-closed/FrolicOrg/Frolic)\n![GitHub pull requests](https://img.shields.io/github/issues-pr-raw/FrolicOrg/Frolic)\n![GitHub commit activity](https://img.shields.io/github/commit-activity/m/FrolicOrg/Frolic)\n[![GitHub license](https://img.shields.io/github/license/FrolicOrg/Frolic)](https://github.com/FrolicOrg/Frolic)\n[![Twitter Follow](https://img.shields.io/twitter/follow/FrolicOrg?style=social)](https://twitter.com/FrolicOrg)\n\u003c!-- \n![GitHub release (latest by date)](https://img.shields.io/github/v/release/FrolicOrg/Frolic) \n![Docker Cloud Build Status](https://img.shields.io/docker/cloud/build/tooljet/tooljet-ce)\n--\u003e\n\n![Web App Reference Architecture-2](https://github.com/frolicorg/frolic/assets/15258498/9c0d540e-fdd5-4968-8c6e-ff41a655c873)\n\n\n## Use single API to query data for all your dashboard components\n\nYou can use a single API endpoint provided by this project to query data for your dashboard. \n\nSample API Request: \n\n```curl\ncurl --location 'http://localhost/api' \\\n--header 'Content-Type: application/json' \\\n--data '{\n      \"metrics\": [\n        {\n          \"field\": \"products.price\", // \u003ctable_name\u003e.\u003ccolumn_name\u003e\n          \"aggregate_operator\": \"sum\"\n        }\n      ],\n      \"dimensions\": [\n        {\n          \"field\": \"products.category\" // \u003ctable_name\u003e.\u003ccolumn_name\u003e\n        }\n      ]\n}\n'\n```\n\nYou can pass the metrics you require in the `metrics` field as an array. The `field` of the metric is written in `\u003ctable_name\u003e.\u003ccolumn_name\u003e` format. The `aggregate_operator` can be used to specifiy what operation you want to apply on the specified `\u003ctable_name\u003e.\u003ccolumn_name\u003e`. \n\nThe `dimensions` field allows you to categorize the metrics returned by the API. To specify the column by which you want to categorize the `metrics`, use the `field` operator and specify the column name in `\u003ctable_name\u003e.\u003ccolumn_name\u003e` format.\n\nThe data returned by the API will be a list of JSON which contains the dimensions and the attributes specified in the request.\n\nThe output of the above request will be as follows:\n\n```json\n{\n    \"data\": [\n        {\n            \"products.price\": \"51\",\n            \"products.category\": \"Gizmo\"\n        },\n        {\n            \"products.category\": \"Doohickey\",\n            \"products.price\": \"42\"\n        },\n        {\n            \"products.category\": \"Gadget\",\n            \"products.price\": \"53\"\n        },\n        {\n            \"products.category\": \"Widget\",\n            \"products.price\": \"54\"\n        }\n    ]\n}\n```\n\n## Running Project\n\n### 1. Clone the project\n\n```\ngit clone https://github.com/frolicorg/frolic.git\n```\n\n### 2. Configure your database\n\nConfigure your database in [config.toml](https://www.frolicorg.com/docs/getting-started/app-configurations).\n\n### 3. Run the Project\n\nUse docker to run the database\n```\ndocker-compose up --build\n```\n\nYou can start using the docker container path to query your data.\n\n## Features\n\n* 🚀 Fast and Scalable APIs with Rust\n* Single API for all your dashboard requirements\n* Automatically generates and execute SQL queries on your database\n* Automatically handles complex table relationships\n* Caching of API Calls (using [memcached](https://memcached.org))\n\n## Integrations\n\nWe currently support MySQL, Postgres \u0026 Clickhouse database. We will add integrations with other databases in the future.\n\n## Why Rust?\n\nRust is much faster and performant compared to other web frameworks. We have build this project using `actix-web`, which is one of the [fastest web frameworks in the world](https://www.techempower.com/benchmarks/#section=data-r21). Checkout the comparison between ExpressJS and Actix-Web [here](https://medium.com/@maxsparr0w/performance-of-node-js-compared-to-actix-web-37f20810fb1a).\n\n## Support and Community\n\nIssues are inevitable. When you have one, our entire team and our active developer community is around to help.\n\n💬 Ask for help on [Discord](https://discord.gg/NA9nkZaQnv)\n\n⚠️ Open an issue right here on [GitHub](https://github.com/arihantparsoya/dashboard-semantic-layer/issues/new/choose)\n\n## How to Contribute\n\nWe ❤️ our contributors. We're committed to fostering an open, welcoming, and safe environment in the community.\n\n📕 We expect everyone participating in the community to abide by our [Code of Conduct](https://github.com/arihantparsoya/dashboard-semantic-layer/wiki/Code-of-Conduct). Please read and follow it. \n\n🤝 If you'd like to contribute, start by reading our [Contribution Guide](https://github.com/arihantparsoya/dashboard-semantic-layer/wiki/Guide-to-Contribution).\n\nLets build great software together.\n\n## License\n\nThis project is available under the [Apache License 2.0](https://github.com/arihantparsoya/dashboard-semantic-layer/blob/prod/LICENSE)\n\n","funding_links":[],"categories":["Development tools"],"sub_categories":["Workflow Automation"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffrolicflow%2FFrolic","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffrolicflow%2FFrolic","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffrolicflow%2FFrolic/lists"}