{"id":13795477,"url":"https://github.com/allegro/turnilo","last_synced_at":"2025-04-11T11:50:24.418Z","repository":{"id":40372182,"uuid":"112598304","full_name":"allegro/turnilo","owner":"allegro","description":"Business intelligence, data exploration and visualization web application for Druid, formerly known as Swiv and Pivot","archived":false,"fork":false,"pushed_at":"2024-10-03T19:43:17.000Z","size":73260,"stargazers_count":741,"open_issues_count":135,"forks_count":176,"subscribers_count":17,"default_branch":"master","last_synced_at":"2025-04-07T10:46:43.246Z","etag":null,"topics":["business-intelligence","data-visualization","druid","typescript"],"latest_commit_sha":null,"homepage":"https://allegro.github.io/turnilo/","language":"TypeScript","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/allegro.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":"docs/security.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-11-30T10:29:12.000Z","updated_at":"2025-04-07T05:33:23.000Z","dependencies_parsed_at":"2023-11-15T11:39:01.768Z","dependency_job_id":"335f6ba6-c235-4d24-8d79-d068c57d7b8b","html_url":"https://github.com/allegro/turnilo","commit_stats":{"total_commits":1982,"total_committers":71,"mean_commits":27.91549295774648,"dds":0.5065590312815338,"last_synced_commit":"2e8ef889c0780b38fd81fffc4d2575d3a31a9725"},"previous_names":[],"tags_count":144,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/allegro%2Fturnilo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/allegro%2Fturnilo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/allegro%2Fturnilo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/allegro%2Fturnilo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/allegro","download_url":"https://codeload.github.com/allegro/turnilo/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248389736,"owners_count":21095643,"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":["business-intelligence","data-visualization","druid","typescript"],"created_at":"2024-08-03T23:00:57.657Z","updated_at":"2025-04-11T11:50:24.396Z","avatar_url":"https://github.com/allegro.png","language":"TypeScript","readme":"# Turnilo\n\n[![npm version](https://img.shields.io/npm/v/turnilo.svg)](https://www.npmjs.org/package/turnilo)\n[![build status](https://github.com/allegro/turnilo/workflows/Build/badge.svg)](https://github.com/allegro/turnilo/actions)\n[![Join our Slack chat](https://img.shields.io/badge/slack-chat-purple.svg?logo=slack)](https://join.slack.com/t/turnilo/shared_invite/enQtOTI4ODcxMjcyNjU2LTFlOTk5YWZlOGMyZDZhZWU3MGNjNDRhZmI1Y2UzNDlkZmY3YzYxYTJhYzIzMzc0MTc3MzA3OTE1NmQ5NDI1M2I)\n\nTurnilo is a business intelligence, data exploration and visualization web application for [Apache Druid](https://druid.apache.org).\nTurnilo is a fork of [Pivot](https://github.com/implydata/pivot) which is currently available under commercial licence only.\nThis repository was forked from the stalled repository [Swiv](https://github.com/yahoo/swiv) \nwith the latest version of Pivot under Apache license.\n\n## Motivation\n\n[Druid](https://github.com/druid-io/druid) is heavily used as business intelligence platform at [Allegro](https://allegro.tech/).\nIn order to gain wide adoption of non-technical users, Druid requires simple yet powerful user interface.\nIn Allegro we have decided that we are going to continue Pivot development as an open source software,\nthis is how Turnilo emerged.\n\n## Manifesto\n\n* High usability for non-technical users over sophisticated but rarely used features.\n* Focus on interactive data exploration over static predefined dashboards.\n* Self-describing reports for users without deep domain expertise.\n* Outstanding integration with Druid over support for other data sources like SQL databases.\n* Focus on data visualizations over Druid cluster or data ingestion management.\n* Data cubes configuration as a code over UI editor backed by non-versioned database.\n* Stateless over stateful server-side architecture.\n* Support for most recent versions of standards compliant browsers.\n\n## Features\n\n* Intuitive, drag and drop, gorgeous user interface to visualize Druid datasets.\n* Fully dedicated to low latency Druid \n[Timeseries](https://druid.apache.org/docs/latest/querying/timeseriesquery.html), \n[TopN](https://druid.apache.org/docs/latest/querying/topnquery.html) and \n[GroupBy](https://druid.apache.org/docs/latest/querying/groupbyquery.html) queries.\n* Unified view for historical and real-time data.\n* Blazingly fast.\n\n![Turnilo UI](https://github.com/allegro/turnilo/raw/master/docs/assets/images/showcase.gif)\n\n## Try it!\n\nYou can try an online demo with example datasets (Covid-19 and Wikipedia) at [https://turnilo.app](https://turnilo.app).\n\n## Join us!\n\nFeel free to ask on [GitHub Discussions](https://github.com/allegro/turnilo/discussions)\nor join the chat on [Slack](https://join.slack.com/t/turnilo/shared_invite/enQtOTI4ODcxMjcyNjU2LTFlOTk5YWZlOGMyZDZhZWU3MGNjNDRhZmI1Y2UzNDlkZmY3YzYxYTJhYzIzMzc0MTc3MzA3OTE1NmQ5NDI1M2I).\n\n## Pre-requisites\n\n* [Node.js](https://nodejs.org/) - 14.x or 16.x version\n\n:warning:\nDo not use `yarn` command for dependency management and project build, use `npm` instead.\nWith `npm` builds are reproducible (thanks to package-lock.json) and even faster than with `yarn`.\n\n## Usage\n\nInstall Turnilo distribution using [npm](https://www.npmjs.com/).\n\n```\nnpm install -g turnilo\n```\n\nStart off by running Turnilo with example datasets\nand open [http://localhost:9090/](http://localhost:9090/).\n\n```\nturnilo run-examples\n```\n\nUse `connect-druid` command to connect to the existing Druid broker.\nTurnilo will automatically introspect your Druid broker and figure out available datasets.\n\n```\nturnilo connect-druid http[s]://druid-broker-hostname[:port]\n```\n\n## Documentation\n\nLearn how to configure and customize Turnilo:\n[https://allegro.github.io/turnilo/](https://allegro.github.io/turnilo/)\n\n## Development\n\n### Install project dependencies.\n\n```\nnpm install\n```\n\n### Build the project.\n\n```\nnpm run build\n```\n\n### Run project\n\nRun example datasets.\n\n```\nnpm run start:examples\n```\n\nConnect to the existing Druid broker.\n\n```\nnpm run start -- connect-druid http[s]://druid-broker-hostname[:port]\n```\n\nConnect to the existing Druid broker using your config file.\n\n```\nnpm run start -- run-config path/to/config.yml\n```\n\n### Run project in developer mode\n\nEvery change in frontend code would recompile project and reload page.\n\nRun example datasets.\n\n```\nnpm run start:dev:examples\n```\n\nConnect to the existing Druid broker.\n\n```\nnpm run start:dev -- connect-druid http[s]://druid-broker-hostname[:port]\n```\n\nConnect to the existing Druid broker using your config file.\n\n```\nnpm run start:dev -- run-config path/to/config.yml\n```\n\n\n## Testing\n\n### Unit tests\n\nRun all unit tests.\n\n```\nnpm run test\n```\n\nOr run tests separately for common, client and server modules.\n\n```\nnpm run test:common\nnpm run test:client\nnpm run test:server\n```\n\n### End to end tests\n\nRun all e2e tests. It will start Turnilo with example datasets in background.\n\n```\nnpm run e2e\n```\n\n### End to end tests development\n\nRun server\n\n```\nnpm start:dev:examples\n```\n\nRun cypress interactive tools for e2e testing\n\n```\nnpm run e2e:dev\n```\n\n\n## Debugging \n\n### Server module\n\nIn WebStorm\\IntelliJ open \"Run/Debug Configurations\", click \"Add New Configuration\".\nNext choose \"Node.JS\", set \"JavaScript file\" to \"./bin/turnilo\" \nand \"Application parameters\" to \"--examples\".\n\nYou can find more infrmation [here](https://www.jetbrains.com/help/webstorm/running-and-debugging-node-js.html)\n\n## Generating documentation locally\n\n### Prerequisites\n\n* [Ruby](https://www.ruby-lang.org/en/documentation/installation/)\n* [Bundler](https://bundler.io)\n\nGo to the docs folder and:\n\n1. Install `bundle install` or `update bundle` update dependencies\n2. Run `bundle exec jekyll serve --livereload`\n3. Open [http://localhost:4000/](http://localhost:4000/)\n\n## License\n\n**Turnilo** is published under [Apache License 2.0](http://www.apache.org/licenses/LICENSE-2.0).\n","funding_links":[],"categories":["General","TypeScript"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fallegro%2Fturnilo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fallegro%2Fturnilo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fallegro%2Fturnilo/lists"}