https://github.com/keenmate/fluentui-icons
Search 6000+ Microsoft FluentUI icons with platform identifiers for iOS, Android, React & Svelte
https://github.com/keenmate/fluentui-icons
fluentui icon icons
Last synced: about 1 month ago
JSON representation
Search 6000+ Microsoft FluentUI icons with platform identifiers for iOS, Android, React & Svelte
- Host: GitHub
- URL: https://github.com/keenmate/fluentui-icons
- Owner: KeenMate
- Created: 2025-11-30T18:40:28.000Z (7 months ago)
- Default Branch: prod
- Last Pushed: 2026-04-05T13:36:41.000Z (3 months ago)
- Last Synced: 2026-04-05T15:22:42.694Z (3 months ago)
- Topics: fluentui, icon, icons
- Language: Elixir
- Homepage: https://fluentui-icons.keenmate.dev
- Size: 165 KB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
Awesome Lists containing this project
README
> **⚠️ This project has been replaced by [icons.pureadmin.io](https://icons.pureadmin.io)** — a multi-icon-set search application supporting FluentUI, Lucide, Tabler,
Heroicons, Font Awesome, and more.
A fast, searchable database of 6000+ Microsoft FluentUI System Icons with platform-specific identifiers for iOS, Android, React, and Svelte.
# FluentUI Icon Search => [icons.pureadmin.io](https://icons.pureadmin.io)
A fast, searchable database of 6000+ Microsoft FluentUI System Icons with platform-specific identifiers for iOS, Android, React, and Svelte.
## MCP Server for Claude
Search FluentUI icons directly from Claude Desktop, Claude Code, or any MCP client:
```bash
npx @keenmate/fluentui-icons-mcp
Add to your Claude config:
{
"mcpServers": {
"fluentui-icons": {
"command": "npx",
"args": ["-y", "@keenmate/fluentui-icons-mcp"]
}
}
}
```
See [@keenmate/fluentui-icons-mcp](https://www.npmjs.com/package/@keenmate/fluentui-icons-mcp) on npm.
## Features
- **Search 6000+ FluentUI icons** by name with fuzzy matching and 50k+ synonyms (extracted from FluentUI metadata)
- **Filter** by style (regular, filled, color, light) and size (16, 20, 24, 28, 32, 48)
- **Grid and list views** with size availability matrix
- **Platform identifiers** for iOS (Swift), Android (Kotlin/Java), React, and Svelte
- **Quick copy buttons** - hover over grid cards or list rows to copy platform identifiers
- **Customizable filename templates** with placeholders ({filename}, {name}, {size}, {style}, etc.)
- **Color preview** - pick custom colors for icon preview in modal
- **Platform preferences** - toggle and reorder platforms, persisted in localStorage
- **Usage tracking** - tracks copy/download stats and platform popularity
- **Self-hosted SVGs** - icons served locally for performance and offline access
- **JSON API** for programmatic access
- **Automatic daily sync** with Microsoft's FluentUI repository (ZIP-based, single source of truth)
## Development
```bash
# Install dependencies
make install
# Setup database
make setup-db
# Start dev server
make dev
```
Visit [localhost:4000](http://localhost:4000)
## Mix Tasks
```bash
# Download icons from FluentUI repository
mix icons.download
# Clean icons/synonyms from database (for fresh reload)
mix icons.clean # icons + synonyms only
mix icons.clean --all # also clears metrics
mix icons.clean --files # also deletes SVG files
# Refresh metrics cube (run nightly for dashboard stats)
mix icons.cube
```
## Deployment
```bash
# Copy and configure environment
cp .env.example .env
# Build and push to registry
make docker-deploy-registry
# Run migrations
make migrate-prod
```
## Configuration
### Environment Variables
| Variable | Required | Default | Description |
|----------|----------|---------|-------------|
| `DB_USERNAME` | Yes | - | PostgreSQL username |
| `DB_PASSWORD` | Yes | - | PostgreSQL password |
| `DB_HOSTNAME` | Yes | - | PostgreSQL host |
| `DB_DATABASE` | Yes | - | PostgreSQL database name |
| `SECRET_KEY_BASE` | Yes | - | Phoenix secret (generate with `mix phx.gen.secret`) |
| `PHX_HOST` | Yes | - | Public hostname (e.g., `fluentui-icons.example.com`) |
| `PORT` | No | `4000` | HTTP port |
| `ICONS_PATH` | No | - | Directory for SVG storage (e.g., `/app/icons`) |
| `AUTO_MIGRATE` | No | `true` | Run migrations on startup |
| `MAINTENANCE_API_KEY` | No | - | API key for maintenance endpoints |
| `POOL_SIZE` | No | `10` | Database connection pool size |
### Docker Compose Example
```yaml
services:
fluentui-icons:
image: your-registry/fluentui-icons:prod
environment:
- DB_USERNAME=fluentui_icons
- DB_PASSWORD=secret
- DB_HOSTNAME=postgres
- DB_DATABASE=fluentui_icons
- SECRET_KEY_BASE=your-secret-key
- PHX_HOST=fluentui-icons.example.com
- ICONS_PATH=/app/icons
- MAINTENANCE_API_KEY=your-maintenance-key
volumes:
- ./data:/app/icons
```
### Performance Note
The Docker image includes **7zip** (`p7zip-full`) for fast ZIP extraction during icon sync. This is ~10x faster than the Erlang fallback. The sync automatically detects and uses the best available tool (7zip > unzip > Erlang).
## API
### Search Icons
```
GET /api/icons/search?q=pen&size=24&style=regular
```
### Maintenance (requires API key)
```bash
# Trigger full sync from GitHub
curl -X POST -H "X-API-Key: your-key" https://example.com/api/maintenance/sync
# Refresh metrics cube
curl -X POST -H "X-API-Key: your-key" https://example.com/api/maintenance/cube
# Clean icons from database
curl -X POST -H "X-API-Key: your-key" https://example.com/api/maintenance/clean
```
## Built With
- [Phoenix](https://phoenixframework.org/) / [LiveView](https://hexdocs.pm/phoenix_live_view)
- [PostgreSQL](https://www.postgresql.org/) with trigram search
- [Tailwind CSS](https://tailwindcss.com/)
## License
MIT