{"id":14979085,"url":"https://github.com/astariul/clothion","last_synced_at":"2025-10-28T14:30:46.847Z","repository":{"id":192723036,"uuid":"633003982","full_name":"astariul/clothion","owner":"astariul","description":"Embed widgets in your Notion pages easily","archived":false,"fork":false,"pushed_at":"2024-09-13T23:25:24.000Z","size":219,"stargazers_count":10,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-09-29T02:21:38.255Z","etag":null,"topics":["api","api-rest","fastapi","notion","notion-api","widget"],"latest_commit_sha":null,"homepage":"https://clothion.rémond.com/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/astariul.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,"publiccode":null,"codemeta":null}},"created_at":"2023-04-26T15:15:09.000Z","updated_at":"2024-09-13T23:25:24.000Z","dependencies_parsed_at":null,"dependency_job_id":"a114f85a-7b88-48bf-947e-1f343502f187","html_url":"https://github.com/astariul/clothion","commit_stats":{"total_commits":202,"total_committers":3,"mean_commits":67.33333333333333,"dds":0.03960396039603964,"last_synced_commit":"1e3caf3bdef0d5afa60b697c1b6a24fd978089b5"},"previous_names":["astariul/clothion"],"tags_count":2,"template":false,"template_full_name":"astariul/pytere","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/astariul%2Fclothion","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/astariul%2Fclothion/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/astariul%2Fclothion/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/astariul%2Fclothion/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/astariul","download_url":"https://codeload.github.com/astariul/clothion/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":219859520,"owners_count":16556036,"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":["api","api-rest","fastapi","notion","notion-api","widget"],"created_at":"2024-09-24T13:59:12.297Z","updated_at":"2025-10-28T14:30:46.469Z","avatar_url":"https://github.com/astariul.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003eclothion\u003c/h1\u003e\n\u003cp align=\"center\"\u003e\nEmbed widgets in your Notion pages easily\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://github.com/astariul/clothion/actions/workflows/pytest.yaml\"\u003e\u003cimg src=\"https://github.com/astariul/clothion/actions/workflows/pytest.yaml/badge.svg\" alt=\"Test status\" /\u003e\u003c/a\u003e\n    \u003ca href=\"https://github.com/astariul/clothion/actions/workflows/lint.yaml\"\u003e\u003cimg src=\"https://github.com/astariul/clothion/actions/workflows/lint.yaml/badge.svg\" alt=\"Lint status\" /\u003e\u003c/a\u003e\n    \u003cimg src=\".github/badges/coverage.svg\" alt=\"Coverage status\" /\u003e\n    \u003ca href=\"https://github.com/astariul/clothion/blob/main/LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/badge/License-MIT-yellow.svg\" alt=\"licence\" /\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"#description\"\u003eDescription\u003c/a\u003e •\n  \u003ca href=\"#usage\"\u003eUsage\u003c/a\u003e •\n  \u003ca href=\"#faq\"\u003eFAQ\u003c/a\u003e •\n  \u003ca href=\"#self-host\"\u003eSelf-host\u003c/a\u003e •\n  \u003ca href=\"#contribute\"\u003eContribute\u003c/a\u003e\n  \u003cbr\u003e\n  \u003ca href=\"https://clothion-docs.rémond.com/\"\u003eDocumentation\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ci\u003e⚠️ This is a very rough first version, existing widgets are very limited, but the API works\u003c/i\u003e\n  \u003cbr\u003e\n  \u003ci\u003eConsider contributing !\u003c/i\u003e\n\u003c/p\u003e\n\n\u003ch2 align=\"center\"\u003eDescription\u003c/h2\u003e\n\nClothion is a **free**, **open-source** tool that allows you to build charts and other widgets directly from your Notion database.\n\nYou can then **embed** the widgets into your Notion pages.\n\n---\n\nClothion also offers a small API to easily query your data, and build your own widget.\n\nMake sure to check the [Documentation](https://clothion-docs.rémond.com/) !\n\n---\n\nFeatures :\n\n- **Free** to use\n- **No limitation** on the number of graphs\n- **No pesky logo** on your charts\n- **Open-source**\n- **Build your own** widget from the API\n- **Cached results** for faster loading time\n- **Self-host** for maximum privacy\n\n\u003ch2 align=\"center\"\u003eUsage\u003c/h2\u003e\n\nFirst, create your own Notion integration, and a Notion table that you will use as data source.\n\nThen, go to [clothion.rémond.com](clothion.rémond.com) and enter your integration token and your table's ID.\n\nA URL will be generated, and from that URL, you can create a widget. Just choose the attribute to display, the type of widget you want, etc... and click \"Generate link\".\n\nCopy the generated URL, go to your Notion page, type `/embed` and paste your widget URL, and that's it ! You should see your widget in your Notion page.\n\n![](https://github.com/astariul/clothion/assets/43774355/01752d43-055c-497e-b955-e4d768a729a7)\n\n_For a more detailed guide (including how to create your own Notion integration), please check the [Documentation](https://clothion-docs.rémond.com/Usage-guide-1593be33d1494192b05b98c19c9beb24)._\n\n\u003ch2 align=\"center\"\u003eFAQ\u003c/h2\u003e\n\n### ❓ **Why should I use Clothion ? Isn’t there a better alternative ?**\n\nThere is many existing tools for embedding a chart in your Notion page. But each of them has some negative side. For example :\n\n- [GRID](https://grid.is/) : Free tier is limited to 3 docs, logo is included in the embed.\n- [Google Sheet](https://docs.google.com/) : Can’t pull data from a Notion table.\n- [Databox](https://databox.com/) : Free tier is limited to 3 databoards.\n- [Notion2Charts](https://notion2charts.com/) : Free tier is limited to 1 chart.\n- [NotionVIP](https://uno.notion.vip/charts/) : Can’t pull data from a Notion table.\n- [Fibery](https://fibery.io/) : Logo \u0026 report title is included in the embed.\n\n### ❓ **Is my data safe with Clothion ?**\n\n**Yes, your data is safe.**\n\nClothion is open-source, everyone can check the source code and raise concern over potential security issues.\n\nIf privacy is a hard requirement for you, you can always self-host Clothion : see\n[Self hosting](https://www.notion.so/Self-hosting-e1235b7903c04041819d8ab9402885bf?pvs=21)\n\n\u003ch2 align=\"center\"\u003eSelf-host\u003c/h2\u003e\n\nClothion provides a Dockerfile, so it's super easy to run your own instance.\n\nFirst, clone the repository :\n\n```console\ngit clone https://github.com/astariul/clothion.git\ncd clothion\n```\n\nThen create the database with `alembic` :\n\n```console\nmkdir ~/data\npip install alembic\nCLOTHION_DB_PATH=\"~/data/clothion.sql\" alembic upgrade head\n```\n\nAnd finally build the Docker image and run it :\n\n```console\ndocker build -t clothion .\ndocker run -p 9910:9910 -v ~/data:/clothion/data -e CLOTHION_DB_PATH=\"/clothion/data/clothion.sql\" clothion\n```\n\n_Make sure to check the [Documentation](https://clothion-docs.rémond.com/Self-hosting-e1235b7903c04041819d8ab9402885bf) for more details !_\n\n\u003ch2 align=\"center\"\u003eContribute\u003c/h2\u003e\n\nTo contribute, install the package locally, create your own branch, add your code (and tests, and documentation), and open a PR !\n\n### Pre-commit hooks\n\nPre-commit hooks are set to check the code added whenever you commit something.\n\nIf you never ran the hooks before, install it with :\n\n```bash\npre-commit install\n```\n\n---\n\nThen you can just try to commit your code. If your code does not meet the quality required by linters, it will not be committed. You can just fix your code and try to commit again !\n\n---\n\nYou can manually run the pre-commit hooks with :\n\n```bash\npre-commit run --all-files\n```\n\n### Tests\n\nWhen you contribute, you need to make sure all the unit-tests pass. You should also add tests if necessary !\n\nYou can run the tests with :\n\n```bash\npytest\n```\n\n---\n\nYou can generate an HTML code report by running :\n\n```bash\npytest --cov-report=html\n```\n\nAnd then open the file `htmlcov/index.html` in your browser !\n\n---\n\nTests are not included in the pre-commit hooks, because running the tests might be slow, and for the sake of developpers we want the pre-commit hooks to be fast !\n\nPre-commit hooks will not run the tests, but it will automatically update the coverage badge !\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fastariul%2Fclothion","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fastariul%2Fclothion","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fastariul%2Fclothion/lists"}