{"id":49027791,"url":"https://github.com/Gudsfile/tracksy","last_synced_at":"2026-05-22T01:01:02.594Z","repository":{"id":304253799,"uuid":"895247105","full_name":"Gudsfile/tracksy","owner":"Gudsfile","description":"👀 tracksy - Visualize your data","archived":false,"fork":false,"pushed_at":"2026-05-17T07:10:46.000Z","size":47402,"stargazers_count":7,"open_issues_count":26,"forks_count":8,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-17T09:17:53.930Z","etag":null,"topics":["astro","data","duckdb","duckdb-wasm","hacktoberfest","privacy-first"],"latest_commit_sha":null,"homepage":"https://gudsfile.github.io/tracksy/","language":"TypeScript","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/Gudsfile.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":".github/CODEOWNERS","security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2024-11-27T20:53:02.000Z","updated_at":"2026-05-17T07:08:28.000Z","dependencies_parsed_at":"2025-08-24T04:38:56.450Z","dependency_job_id":"c5cb699e-cbba-4594-9155-be08735f319a","html_url":"https://github.com/Gudsfile/tracksy","commit_stats":null,"previous_names":["gudsfile/tracksy"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/Gudsfile/tracksy","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Gudsfile%2Ftracksy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Gudsfile%2Ftracksy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Gudsfile%2Ftracksy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Gudsfile%2Ftracksy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Gudsfile","download_url":"https://codeload.github.com/Gudsfile/tracksy/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Gudsfile%2Ftracksy/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33322660,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-21T12:23:38.849Z","status":"ssl_error","status_checked_at":"2026-05-21T12:22:11.673Z","response_time":62,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["astro","data","duckdb","duckdb-wasm","hacktoberfest","privacy-first"],"created_at":"2026-04-19T08:00:35.156Z","updated_at":"2026-05-22T01:01:02.581Z","avatar_url":"https://github.com/Gudsfile.png","language":"TypeScript","funding_links":[],"categories":["TypeScript"],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n# Tracksy\n\n**Visualize and understand how you listen to music, without sharing your data.**\n\nThe same old song? Late at night? Only in summer? Tracksy helps you answer these questions.\n\n[![Astro](https://img.shields.io/badge/-Astro-AF56E6?logo=Astro\u0026logoColor=FFFFFF\u0026label=Built%20with\u0026labelColor=000000)](https://github.com/withastro/astro) [![DuckDB](https://img.shields.io/badge/-DuckDB-FCF550?logo=DuckDB\u0026label=Powered%20by\u0026labelColor=000000)](https://github.com/duckdb/duckdb) [![Datasets](https://img.shields.io/badge/-available-F8D44E?logo=Hugging%20Face\u0026label=Datasets\u0026labelColor=000000)](https://huggingface.co/datasets/tracksy/synthetic-datasets)\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](./LICENSE) [![Deploy](https://github.com/gudsfile/tracksy/actions/workflows/app-deploy-live.yml/badge.svg)](https://github.com/gudsfile/tracksy/actions/workflows/app-deploy-live.yml) [![Datasets CI](https://github.com/gudsfile/tracksy/actions/workflows/datasets-generate-synthetic.yml/badge.svg)](https://github.com/gudsfile/tracksy/actions/workflows/datasets-generate-synthetic.yml)\n\n![Tracksy demo](.github/img/tracksy_demo.gif)\n\n\u003c/div\u003e\n\n---\n\nTracksy is a **privacy-first** music streaming data visualization tool. All processing happens in your browser. Your data never leaves your device.\n\n- 🎵 Supports **Spotify** and **Deezer** streaming history\n- 🦆 Powered by **DuckDB WASM**: SQL in the browser, zero server\n- 🔒 **No account. No upload. No tracking.**\n\n## Usage\n\n### ⬇️ Download your data\n\n**You can skip this step** and use the demo button on the home page to explore with pre-generated data.\n\nOr bring your own data:\n\n\u003cdetails\u003e\n\u003csummary\u003eSpotify\u003c/summary\u003e\n\u003cbr\u003e\n\n1. Request your data on [your Spotify account](https://www.spotify.com/account/privacy/)\n   - Select \"_Extended streaming history_\"\n   - Click \"_Request data_\"\n   - **Confirm** via the email from Spotify\n2. Wait a few days\n3. Download the `.zip` file from the email\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eDeezer\u003c/summary\u003e\n\u003cbr\u003e\n\n1. Request your data on [your Deezer account](https://www.deezer.com)\n   - Go to \"_Account settings_\"\n   - Scroll to \"_My personal data_\"\n   - Click \"_Request my data_\"\n   - **Confirm** by entering the code sent by email\n2. Wait a few days\n3. Download the `.xlsx` file from the email\n\n\u003c/details\u003e\n\n### 🚀 Upload your data\n\nGo to [Tracksy](https://gudsfile.github.io/tracksy/) and upload your file, or hit the demo button.\n\nYour data stays local. Nothing is sent anywhere. You can also [self-host Tracksy](#installation).\n\n### 👀 Visualize your data\n\nOnce uploaded, explore your listening habits across four views:\n\n| View | Description |\n|------|-------------|\n| ✨ **Simple** | Curated and guided overview of your listening data |\n| 🔬 **Lab** | Experimental insights and advanced visualizations |\n| 💬 **Chat** | Conversational exploration using a built-in LLM |\n| ⌨️ **Query** | Direct SQL-based exploration of the dataset |\n\n## Project Structure\n\n```text\n/\n├── app/                  # Astro + React frontend (DuckDB WASM)\n├── blog/                 # Hugo static blog (ADRs and technical notes)\n├── e2e/                  # Playwright end-to-end tests\n└── synthetic-datasets/   # Python scripts for generating test data\n```\n\n| Directory | Description |\n|-----------|-------------|\n| [`app/`](app/) | Frontend. DuckDB WASM processes data client-side; nothing reaches a server. |\n| [`blog/`](blog/) | Static blog with architectural decision records. |\n| [`e2e/`](e2e/) | End-to-end test suite built with Playwright. |\n| [`synthetic-datasets/`](synthetic-datasets/) | Generates synthetic Spotify/Deezer streaming histories for testing. |\n\n## Installation\n\n```bash\nmoon setup       # download Node.js, Python, and dependencies\nmoon run app:dev # start the dev server\n```\n\nMore details in the [CONTRIBUTING.md development section](CONTRIBUTING.md#development).\n\n## Roadmap\n\nTracksy is under active development. On the horizon:\n\n- More visualizations and a simplified view for non-technical users\n- Support for additional data sources (Apple Music, Funkwhale, etc.)\n\nSee [open issues](https://github.com/Gudsfile/tracksy/issues) for the full list.\n\n## Contributing\n\nContributions are welcome! Open an issue or a pull request (read [CONTRIBUTING.md](CONTRIBUTING.md) first).\n\nIf you would like to be added to or removed from the contributors list, feel free to open an issue or a PR.\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section --\u003e\n\u003c!-- prettier-ignore-start --\u003e\n\u003c!-- markdownlint-disable --\u003e\n\u003ctable\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/Tarektouati\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/19335073?v=4\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eTarek Touati\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/bengeois\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/20949060?v=4\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eBenjamin\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/noancloarec\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/15016365?v=4\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003enoancloarec\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://jeanphi-baconnais.gitlab.io/\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/32639372?v=4\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eJean-Phi Baconnais\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/arthurzenika\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/445200?v=4\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eArthur Lutz\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\n\u003c!-- markdownlint-restore --\u003e\n\u003c!-- prettier-ignore-end --\u003e\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:END --\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FGudsfile%2Ftracksy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FGudsfile%2Ftracksy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FGudsfile%2Ftracksy/lists"}