Skip to main content
Glama
uiframeworks.json6.83 kB
{ "desktopFrameworks": [ { "id": "tauri", "name": "Tauri", "languages": [ "Rust", "JavaScript", "TypeScript" ], "type": "Desktop/Mobile", "features": [ "Lightweight", "Secure", "Cross-platform", "Web view" ], "bestPractices": [ "Use Rust for backend logic and performance-critical code", "Leverage IPC (invoke) for frontend-backend communication", "Use tauri.conf.json for app configuration", "Implement proper security with CSP", "Use updater plugin for auto-updates" ], "projectStructure": { "src/": "Frontend code (React/Vue/Svelte)", "src-tauri/": "Rust backend", "src-tauri/src/main.rs": "App entry point", "src-tauri/src/lib.rs": "Commands and logic", "src-tauri/tauri.conf.json": "App configuration" }, "commands": { "create": "npm create tauri-app@latest", "dev": "npm run tauri dev", "build": "npm run tauri build" } }, { "id": "electron", "name": "Electron", "languages": [ "JavaScript", "TypeScript" ], "type": "Desktop", "features": [ "Chromium", "Node.js", "Cross-platform", "Rich ecosystem" ], "bestPractices": [ "Use preload scripts for security (contextIsolation)", "Enable nodeIntegration: false for security", "Use IPC for main-renderer communication", "Implement proper window management", "Use electron-builder for packaging" ], "projectStructure": { "src/main/": "Main process code", "src/preload/": "Preload scripts", "src/renderer/": "Renderer (web) code", "package.json": "Dependencies and scripts" }, "security": [ "contextIsolation: true", "nodeIntegration: false", "webSecurity: true", "Use contextBridge for IPC" ] }, { "id": "wails", "name": "Wails", "languages": [ "Go", "JavaScript", "TypeScript" ], "type": "Desktop", "features": [ "Go backend", "Web frontend", "Light binaries" ], "bestPractices": [ "Use Go for backend logic", "Leverage auto-generated TypeScript bindings", "Use context for lifecycle management" ] } ], "pythonGUI": [ { "id": "tkinter", "name": "Tkinter", "type": "Built-in", "features": [ "Native look", "Simple", "No dependencies" ], "bestPractices": [ "Use ttk for modern widgets", "Separate UI from logic", "Use grid() for complex layouts", "Handle events properly" ] }, { "id": "pyqt", "name": "PyQt6/PySide6", "type": "Qt bindings", "features": [ "Rich widgets", "Signals/slots", "Designer" ], "bestPractices": [ "Use Qt Designer for complex UIs", "Implement Model-View patterns", "Use signals/slots for events", "Leverage QThread for background work" ] }, { "id": "kivy", "name": "Kivy", "type": "Multi-platform", "features": [ "Touch support", "Mobile", "OpenGL" ], "bestPractices": [ "Use KV language for UI definition", "Separate logic from presentation", "Use properties for reactive updates" ] }, { "id": "flet", "name": "Flet", "type": "Flutter-based", "features": [ "Modern UI", "Cross-platform", "Simple API" ], "bestPractices": [ "Use page.update() for UI updates", "Organize into reusable controls", "Handle async operations properly" ] }, { "id": "dearpygui", "name": "Dear PyGui", "type": "GPU accelerated", "features": [ "Fast", "Modern", "ImGui-based" ], "bestPractices": [ "Use callbacks for interactions", "Leverage themes for styling", "Use viewport for window management" ] } ], "webUI": [ { "id": "htmx", "name": "HTMX", "languages": [ "HTML" ], "type": "Hypermedia", "features": [ "No JS needed", "Server-driven", "Progressive" ], "bestPractices": [ "Use hx-get/hx-post for requests", "Target specific elements with hx-target", "Use hx-swap for update behavior" ] }, { "id": "alpinejs", "name": "Alpine.js", "languages": [ "JavaScript" ], "type": "Lightweight", "features": [ "Reactive", "Declarative", "No build step" ], "bestPractices": [ "Use x-data for component state", "Leverage x-show/x-if for conditionals", "Use $store for global state" ] } ], "documentationLinks": { "tauri": "https://tauri.app/v1/guides/", "electron": "https://www.electronjs.org/docs/latest/", "pyqt": "https://doc.qt.io/qtforpython/", "tkinter": "https://docs.python.org/3/library/tkinter.html", "kivy": "https://kivy.org/doc/stable/", "flet": "https://flet.dev/docs/" } }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/millsydotdev/Code-MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server