{"id":46364518,"url":"https://github.com/tonykolomeytsev/figx","last_synced_at":"2026-03-05T02:03:23.992Z","repository":{"id":293997569,"uuid":"958192033","full_name":"tonykolomeytsev/figx","owner":"tonykolomeytsev","description":"Pragmatic CLI tool for importing design assets from Figma into your codebase.","archived":false,"fork":false,"pushed_at":"2025-12-10T14:25:17.000Z","size":3932,"stargazers_count":31,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-12-10T19:44:25.724Z","etag":null,"topics":["android","cli","figma","figma-export"],"latest_commit_sha":null,"homepage":"https://tonykolomeytsev.github.io/figx/","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tonykolomeytsev.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-03-31T19:46:00.000Z","updated_at":"2025-12-10T14:19:40.000Z","dependencies_parsed_at":"2025-05-31T02:37:13.547Z","dependency_job_id":"3d2287c1-1e73-410b-a408-8f273d3f7974","html_url":"https://github.com/tonykolomeytsev/figx","commit_stats":null,"previous_names":["tonykolomeytsev/figmagic","tonykolomeytsev/figx"],"tags_count":53,"template":false,"template_full_name":null,"purl":"pkg:github/tonykolomeytsev/figx","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tonykolomeytsev%2Ffigx","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tonykolomeytsev%2Ffigx/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tonykolomeytsev%2Ffigx/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tonykolomeytsev%2Ffigx/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tonykolomeytsev","download_url":"https://codeload.github.com/tonykolomeytsev/figx/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tonykolomeytsev%2Ffigx/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30106156,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-05T01:39:18.192Z","status":"online","status_checked_at":"2026-03-05T02:00:06.710Z","response_time":93,"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":["android","cli","figma","figma-export"],"created_at":"2026-03-05T02:03:18.465Z","updated_at":"2026-03-05T02:03:23.985Z","avatar_url":"https://github.com/tonykolomeytsev.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cimg src=\".github/header.png\" width=100% /\u003e\n\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"https://img.shields.io/github/v/release/tonykolomeytsev/figx?color=%23595bd4\" /\u003e \u003cimg src=\"https://img.shields.io/github/license/tonykolomeytsev/figx\" /\u003e \u003cimg alt=\"Code coverage\" src=\"https://img.shields.io/codecov/c/gh/tonykolomeytsev/figx?token=WEF1P2AYM7\"\u003e\n\u003c/p\u003e\n\n# FigX - Pragmatic Design Asset Management\n\nFigX is a no-nonsense CLI tool for importing design assets from Figma into your codebase. Built for developers who value explicit control and reproducibility.\n\n\u003e 🚧 The project is in the active development phase 🚧\n\n[**📚 See full documentation**](https://tonykolomeytsev.github.io/figx) • [**🚀 GitHub Action Available**](https://github.com/marketplace/actions/figx-action) • [**🐳 Docker Image Available**](https://github.com/tonykolomeytsev/figx/pkgs/container/figx)\n\n\u003cimg src=\".github/preview.gif\" width=100% /\u003e\n\n\u003c!-- \u003cp align=\"center\"\u003e\n\u003cimg src=\".github/color-logo.svg\" width=50 /\u003e\n\u003c/p\u003e --\u003e\n\n# Features\n\nAt a high level, FigX is a straightforward and reliable CLI tool designed for:\n- 🔁 Deterministic and reproducible imports\n- 🔧 Seamless integration into CI/CD pipelines\n- 💻 Cross-platform support: macOS, Windows, and Linux\n\n## Importing graphic resources\n\nFigX comes with built-in import profiles for various formats, enabling immediate use without additional setup:\n\n| Profile | Description |\n| --- | --- |\n| `android-drawable` | 1. Downloads SVG from Figma\u003cbr\u003e 2. Simplifies SVG using [usvg](https://github.com/linebender/resvg/tree/main/crates/usvg)\u003cbr\u003e 3. Converts to Android drawable XML\u003cbr\u003e 4. Places the resulting XML files into the appropriate `drawable-*` directories for Android |\n| `android-webp` | 1. Downloads PNG variants for themes (`night`/`light`) and screen densities (`hdpi`, `xhdpi`, etc.)\u003cbr\u003e 2. Converts all variants to WebP using [libwebp](https://developers.google.com/speed/webp)\u003cbr\u003e 3. Places the resulting images into the appropriate `drawable-*` directories for Android |\n| `compose` | 1. Downloads SVG from Figma\u003cbr\u003e 2. Simplifies SVG using [usvg](https://github.com/linebender/resvg/tree/main/crates/usvg)\u003cbr\u003e 3. Converts to `ImageVector` for Jetpack Compose |\n| `webp` | 1. Downloads PNG from Figma\u003cbr\u003e 2. Converts PNG to WebP using [libwebp](https://developers.google.com/speed/webp) |\n| `png` | Downloads PNG assets directly from Figma |\n| `svg` | Downloads SVG assets directly from Figma |\n| `pdf` | Downloads PDF assets directly from Figma |\n\n\u003e Profiles `png`, `svg`, `pdf` and `compose` support matrix-like import configurations — multiple variants (e.g. `light`/`night`, sizes `16`/`20`/`24`) for a single resource, similar to GitHub Actions matrices.\n\n## Secure Local Token Storage\n\nOn **macOS** and **Windows**, you can securely store your access token using the system keychain. And `figx` will automatically retrieve the token from secure storage when needed.\n\nFor more details, see the documentation: [**FIGX / Concepts / Remotes**](https://tonykolomeytsev.github.io/figx/user_guide/2.1.2-remotes.html).\n\nRelease notes: [v0.7.4](https://github.com/tonykolomeytsev/figx/releases/tag/v0.7.4)\n\n## Help in resource control\n\nFigX can show you which resources are already declared in the project, which packages/modules exist, or what flow specific resources follow during import before they are included in the project.\n\nList all **figx resources** in the project without importing them:\n\n```bash\nfigx query //...\n```\n\nList all **figx packages** in the project:\n\n```bash\nfigx query -o package //...\n```\n\nExplain the import flow for specific resources:\n\n```bash\nfigx explain //.../ui/icons:Sun\n```\n\nExample output:\n\n```text\n//app/src/main/java/com/example/figxdemo/ui/icons:Sun\n├── 📤 Export SVG from remote @icons/MhjeA23R15tAR3PO2JamCv\n│      ┆ node: Environment / Sun\n├── ✨ Transform SVG to Compose\n│      ┆ package: com.example.figxdemo.ui.icons\n╰── 💾 Write to file\n       ┆ output: Sun.kt\n```\n\n# Quick Start\n\n## Install\n\n### For MacOS\n\nThe easiest way to install on macOS is via Homebrew:\n\n```bash\nbrew tap tonykolomeytsev/figx\nbrew install figx\n```\n\n### For Windows\n\nDownload the latest `.msi` installer from the [releases page](https://github.com/tonykolomeytsev/figx/releases/latest), then run the installer to complete the setup.\n\n### For Linux\n\nFollow the detailed installation instructions available in the [documentation](https://tonykolomeytsev.github.io/figx/user_guide/1-installation.html).\n\n## Run your first import\n\n### Minimal example with FigX\n\n1. Clone this repository and open it in terminal.\n2. Go to [examples/multiple-svg-icons](https://github.com/tonykolomeytsev/figx/tree/master/examples/multiple-svg-icons)\n   ```bash\n   cd examples/multiple-svg-icons\n   ```\n3. [Get temporary access token](https://www.figma.com/developers/api#access-tokens) for Figma and add it to your env:\n   ```bash\n   export FIGMA_PERSONAL_TOKEN=\"\u003ctoken from url above\u003e\"\n   ```\n4. Run import and wait for complete\n   ```bash\n   figx import //...\n   ```\n5. You will get the result:\u003cbr\u003e\n   \u003cimg src=\".github/example-result-1.png\" width=500/\u003e\n\n\n### Android project with FigX\n\n\u003e The example demonstrates importing icons in the Compose `ImageVector` format and importing illustrations in the WEBP format for different screen densities (from `hdpi` to `xxxhdpi`).\n\n1. Clone this repository and open it in terminal.\n2. Go to [examples/android-project](https://github.com/tonykolomeytsev/figx/tree/master/examples/android-project)\n   ```bash\n   cd examples/android-project\n   ```\n3. [Get temporary access token](https://www.figma.com/developers/api#access-tokens) for Figma and add it to your env:\n   ```bash\n   export FIGMA_PERSONAL_TOKEN=\"\u003ctoken from url above\u003e\"\n   ```\n4. Run import and wait for complete\n   ```bash\n   figx import //...\n   ```\n5. You will get the result:\u003cbr\u003e\n   | Compose ImageVector | Android Drawable WEBP |\n   | --- | --- |\n   | \u003cimg src=\".github/example-result-3.png\" width=400 /\u003e \u003cbr\u003e [**See the generated Kotlin code for the icons**](https://github.com/tonykolomeytsev/figx/tree/master/examples/android-project/app/src/main/java/com/example/figxdemo/ui/icons) | \u003cimg src=\".github/example-result-2.png\" width=400 /\u003e |\n\n\n# Documentation\nFull documentation available at: [tonykolomeytsev.github.io/figx](https://tonykolomeytsev.github.io/figx)\n\n# Differences from [figma-export](https://github.com/RedMadRobot/figma-export)\n\nThe figma-export tool was the catalyst for creating this project. FigX draws inspiration from its predecessor but completely reimagines the resource processing approach, incorporating lessons learned from negative experiences with figma-export.\n\nKey distinctions between the tools:\n\n| **figma-export** | **figx** |\n| --- | --- |\n| macOS-only | Cross-platform: runs on macOS, Windows, Linux. Easily compilable for other platforms |\n| Requires external graphic tools for Android assets (vd-tool, cwebp) | Built-in libwebp for WEBP compression and native SVG-to-Android vector conversion without Java-based vd-tool legacy |\n| No Jetpack Compose `ImageVector` support | Generates native `ImageVector` graphics as ready-to-use Kotlin code |\n| Resource imports determined by Figma file contents or CLI arguments | Granular resource specification via dedicated manifest files per project package/module |\n| Limited built-in import profiles (icons/illustrations) without project domain consideration | Extensible profile system supporting unlimited custom profiles with configurable import flows and identifiers |\n| Complex multi-module resource targeting | Designed for modular projects - immune to refactoring and path changes through proper package isolation |\n| Optimized primarily for local developer use | CI-optimized with aggressive caching to minimize resource waste in pipelines |\n\n# License\n\nGPL-3.0 license © 2025 Anton Kolomeytsev\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftonykolomeytsev%2Ffigx","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftonykolomeytsev%2Ffigx","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftonykolomeytsev%2Ffigx/lists"}