{"id":51198217,"url":"https://github.com/schiste/loader-generator","last_synced_at":"2026-06-27T22:31:28.059Z","repository":{"id":365719008,"uuid":"1273422055","full_name":"schiste/loader-generator","owner":"schiste","description":"🌀 A browser-based visual generator for animated loading spinners — live preview + copy-paste CSS, Canvas, or SVG. No build, no deps.","archived":false,"fork":false,"pushed_at":"2026-06-18T14:22:21.000Z","size":126,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-18T16:14:39.762Z","etag":null,"topics":["canvas","conic-gradient","css","frontend","generator","loader","loading-spinner","spinner","svg","web-tool"],"latest_commit_sha":null,"homepage":"https://schiste.github.io/loader-generator/","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/schiste.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":null,"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":null,"dco":null,"cla":null}},"created_at":"2026-06-18T14:03:14.000Z","updated_at":"2026-06-18T14:23:15.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/schiste/loader-generator","commit_stats":null,"previous_names":["schiste/loader-generator"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/schiste/loader-generator","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/schiste%2Floader-generator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/schiste%2Floader-generator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/schiste%2Floader-generator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/schiste%2Floader-generator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/schiste","download_url":"https://codeload.github.com/schiste/loader-generator/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/schiste%2Floader-generator/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34870654,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-27T02:00:06.362Z","response_time":126,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["canvas","conic-gradient","css","frontend","generator","loader","loading-spinner","spinner","svg","web-tool"],"created_at":"2026-06-27T22:31:27.249Z","updated_at":"2026-06-27T22:31:28.055Z","avatar_url":"https://github.com/schiste.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Loader Generator\n\n[![Live demo](https://img.shields.io/badge/demo-live-22c55e?style=flat-square)](https://schiste.github.io/loader-generator/)\n[![CI](https://img.shields.io/github/actions/workflow/status/schiste/loader-generator/ci.yml?branch=main\u0026style=flat-square\u0026label=CI)](https://github.com/schiste/loader-generator/actions/workflows/ci.yml)\n[![License: AGPL v3](https://img.shields.io/badge/license-AGPL--3.0-a855f7?style=flat-square)](./LICENSE)\n\nA browser-based visual generator for animated loading spinners — tweak it live and\ncopy production-ready **CSS**, **Canvas**, or **SVG**. No build step, no\ndependencies, no sign-up.\n\n### ▶︎ [Try it live → schiste.github.io/loader-generator](https://schiste.github.io/loader-generator/)\n\n## What it does\n\nDesign a loading animation by tweaking controls, and copy production-ready code in\nthe format you want — no build step, no dependencies to install.\n\n- **Geometry** — circle, squircle, hexagon, or triangle silhouettes; size, stroke\n  thickness, sweep angle (partial arcs), and dashed/segmented rings.\n- **Color** — multi-stop conic gradients with per-stop opacity, quick presets,\n  tapered tails, and a comet fade.\n- **Motion** — spin speed, direction, easing, continuous hue-shifting, breathing\n  pulse, reversing sweep, and mirror.\n- **Extras** — guide tracks, ambient glow with blend modes, and a center overlay\n  (percentage counter or custom text).\n- **Export** — live, copyable output as a **CSS mask**, **HTML5 Canvas** script, or\n  **SVG vector**.\n\n## Usage\n\nIt's a single self-contained HTML file. Either:\n\n- **Open directly** — double-click `index.html`, or\n- **Serve locally** (recommended, so clipboard copy works reliably):\n\n  ```bash\n  python3 -m http.server 8000\n  # then visit http://localhost:8000\n  ```\n\nNo installation is required to use it. Styling is a precompiled Tailwind\nstylesheet (`tailwind.css`); regenerate it with `npm run build:css` after\nchanging classes in `index.html`. Fonts load from Google Fonts at runtime.\n\n## Development\n\nThe pure math helpers are unit tested (the tests extract the real functions from\n`index.html`, so they cover exactly the shipped code):\n\n```bash\nnpm test        # node --test  — no dependencies to install\nnpm run serve   # serve locally on http://localhost:8000\n```\n\nSee [CONTRIBUTING.md](./CONTRIBUTING.md) for more. CI runs the tests and a parse\ncheck on every push/PR; `main` auto-deploys to GitHub Pages.\n\n## Accessibility\n\nThe app honors `prefers-reduced-motion`, ships a Pause/Play control for the\npreview, and labels its controls for assistive tech. The generated CSS/Canvas/SVG\nsnippets also include a `prefers-reduced-motion` guard and `role=\"status\"`, so the\nloaders you export stay accessible by default.\n\n## Roadmap / known limitations\n\n- The renderer and the three code-exporters still re-read state independently;\n  unifying them behind one shared config object would prevent preview/export drift.\n\n## License\n\nThis project is licensed under the **GNU Affero General Public License v3.0**\n(AGPL-3.0). See [LICENSE](./LICENSE) for the full text.\n\nThe AGPL is a strong copyleft license: if you run a modified version of this\nsoftware to provide a network service, you must make the complete corresponding\nsource code of your modified version available to the users of that service.\n\nCopyright (C) 2026 Christophe Henner\n\nThis program is free software: you can redistribute it and/or modify it under\nthe terms of the GNU Affero General Public License as published by the Free\nSoftware Foundation, either version 3 of the License, or (at your option) any\nlater version.\n\nThis program is distributed in the hope that it will be useful, but WITHOUT ANY\nWARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A\nPARTICULAR PURPOSE. See the GNU Affero General Public License for more details.\n\n## Contributing\n\nContributions are welcome. By submitting a contribution you agree to license it\nunder the same AGPL-3.0 terms as the rest of the project.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fschiste%2Floader-generator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fschiste%2Floader-generator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fschiste%2Floader-generator/lists"}