{"id":34028781,"url":"https://github.com/jenreh/appkit","last_synced_at":"2026-03-08T19:04:56.131Z","repository":{"id":318720727,"uuid":"1069928449","full_name":"jenreh/appkit","owner":"jenreh","description":"Reflex.dev components based on mantine.dev and and basic application with nav and chat widget","archived":false,"fork":false,"pushed_at":"2026-03-05T18:24:41.000Z","size":8249,"stargazers_count":2,"open_issues_count":2,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-05T20:29:49.355Z","etag":null,"topics":["components","mantine","python","reflex"],"latest_commit_sha":null,"homepage":"","language":"Python","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/jenreh.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","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":"AGENTS.md","dco":null,"cla":null}},"created_at":"2025-10-04T22:39:44.000Z","updated_at":"2026-02-28T09:49:18.000Z","dependencies_parsed_at":null,"dependency_job_id":"52298d91-5fef-4ee0-8519-88570bb2a856","html_url":"https://github.com/jenreh/appkit","commit_stats":null,"previous_names":["jenreh/manakit","jenreh/appkit"],"tags_count":58,"template":false,"template_full_name":null,"purl":"pkg:github/jenreh/appkit","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jenreh%2Fappkit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jenreh%2Fappkit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jenreh%2Fappkit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jenreh%2Fappkit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jenreh","download_url":"https://codeload.github.com/jenreh/appkit/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jenreh%2Fappkit/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30156212,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-05T22:39:40.138Z","status":"ssl_error","status_checked_at":"2026-03-05T22:39:24.771Z","response_time":93,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: 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":["components","mantine","python","reflex"],"created_at":"2025-12-13T17:18:59.634Z","updated_at":"2026-03-05T23:52:29.927Z","avatar_url":"https://github.com/jenreh.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# AppKit\n\n[![Python 3.13+](https://img.shields.io/badge/python-3.13+-blue.svg)](https://www.python.org/downloads/)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![Release](https://img.shields.io/badge/status-release-green.svg)](https://github.com/jenreh/appkit)\n\n**A comprehensive, production-ready Reflex web application framework with AI-powered features, enterprise user management, and Mantine UI components.**\n\nAppkit is a full-featured web application framework built on [Reflex](https://reflex.dev) that combines modular, reusable components with production-grade infrastructure. It serves as both a functional application and a showcase for building robust Python web applications with AI integrations, multi-tenant support, and professional UI patterns.\n\n---\n\n## 🎯 Core Components\n\nAppkit is structured as a workspace of specialized modules, each solving specific problems:\n\n### UI Components\n\n**[appkit-mantine](./components/appkit-mantine)** - Comprehensive Mantine UI wrapper for Reflex\n\n- 50+ production-ready Mantine input components with full type safety\n- Text inputs, date pickers, number inputs, masked inputs, rich editors, and more\n- Inheritance-based architecture eliminates 40+ common properties duplication\n- Complete examples and integration patterns\n\n### Application Features\n\n**[appkit-assistant](./components/appkit-assistant)** - AI assistant with MCP server integration\n\n- OpenAI-powered conversational interface\n- Multi-model support (OpenAI, Perplexity, etc.)\n- Model Context Protocol (MCP) server management\n- Secure server credential handling with encryption\n\n![Assistant](https://raw.githubusercontent.com/jenreh/appkit/refs/heads/main/components/appkit-assistant/docs/assistant.png)\n\n**[appkit-imagecreator](./components/appkit-imagecreator)** - Multi-AI image generation\n\n- Google Gemini and OpenAI integration\n- Unified API for image generation workflows\n- Production-ready error handling and streaming\n\n![Image Creator](https://raw.githubusercontent.com/jenreh/appkit/refs/heads/main/components/appkit-imagecreator/docs/imagecreator.jpeg)\n\n**[appkit-user](./components/appkit-user)** - Enterprise user management\n\n- OAuth2 authentication (GitHub, Azure, custom providers)\n- Role-based access control (RBAC)\n- Multi-tenant user profiles and project organization\n- Session management and security\n\n![User manager](https://raw.githubusercontent.com/jenreh/appkit/refs/heads/main/components/appkit-user/docs/user_manager.png)\n\n### Shared Infrastructure\n\n**[appkit-commons](./components/appkit-commons)** - Shared utilities and data models\n\n- Database models and ORM integration\n- Common configuration and settings\n- Logging and error handling utilities\n\n**[appkit-ui](./components/appkit-ui)** - Layout and styling components\n\n- Responsive page templates\n- Navigation components\n- Common UI patterns and utilities\n\n---\n\n## ✨ Key Features\n\n- **AI-First Architecture** - Built-in support for OpenAI, Google Gemini, and MCP server integrations\n- **Enterprise Ready** - Multi-tenant support, RBAC, OAuth2 authentication, and secure credential management\n- **Type-Safe UI** - Full type annotations across 50+ Mantine components with IDE autocomplete\n- **Modular Design** - Workspace-based architecture allows independent component use\n- **Production Infrastructure** - Database migrations, logging, configuration management, and Docker support\n- **Clean Architecture** - Inheritance-based component design and clear separation of concerns\n- **Modern Stack** - Python 3.13+, Reflex 0.8.24+, React 18, SQLAlchemy 2.0, Pydantic, Alembic\n\n---\n\n## 🚀 Quick Start\n\n### Prerequisites\n\n- Python 3.13 or higher\n- PostgreSQL (for development)\n\n### Installation\n\nClone and install the development environment:\n\n```bash\ngit clone https://github.com/jenreh/appkit.git\ncd appkit\n\n# Install dependencies with uv (includes all workspace components)\nuv sync\n\n# Run migrations\nuv run alembic upgrade head\n\n# Start the development server\nuv run reflex run\n```\n\nAccess the application at `http://localhost:3000`\n\n### Using Individual Components\n\nTo use appkit-mantine in your own Reflex project:\n\n```bash\n# Using uv\nuv add appkit-mantine\n\n# Using pip\npip install appkit-mantine\n```\n\n```python\nimport reflex as rx\nimport appkit_mantine as mn\n\nclass DemoState(rx.State):\n    value: str = \"\"\n\ndef index() -\u003e rx.Component:\n    return rx.container(\n        mn.input(\n            placeholder=\"Type something...\",\n            value=DemoState.value,\n            on_change=DemoState.set_value,\n        ),\n    )\n\napp = rx.App()\napp.add_page(index)\n```\n\n---\n\n## 🏗️ Project Structure\n\n```text\nappkit/\n├── app/                          # Main Reflex application\n│   ├── pages/                    # Application pages\n│   │   ├── examples/             # Component showcase examples\n│   │   ├── assistant/            # AI assistant interface\n│   │   ├── image_creator.py      # Image generation UI\n│   │   └── users.py              # User management\n│   └── components/               # Shared UI components\n├── components/                   # Workspace modules\n│   ├── appkit-mantine/           # Mantine UI wrapper components\n│   ├── appkit-assistant/         # AI assistant integration\n│   ├── appkit-imagecreator/      # Image generation\n│   ├── appkit-user/              # User authentication \u0026 management\n│   ├── appkit-ui/                # Layout \u0026 UI utilities\n│   └── appkit-commons/           # Shared utilities \u0026 models\n├── alembic/                      # Database migrations\n├── configuration/                # Configuration files\n└── assets/                       # CSS, JavaScript, and static assets\n```\n\n---\n\n## 📚 Development\n\n### Common Commands\n\n```bash\n# Install dependencies\nmake install\n\n# Run the development server\nmake reflex\n\n# Run with debug logging\nmake reflex-debug\n\n# Run tests\nmake test\n\n# Format and lint code\nmake format\nmake lint\n\n# Database operations\nmake db-migrate          # Run migrations\nmake db-migrate-history  # Show migration history\nmake db-migrate-down     # Downgrade one revision\n```\n\n### Database Setup\n\nAppkit uses SQLAlchemy 2.0 with Alembic for migrations:\n\n```bash\n# Run all pending migrations\nuv run alembic upgrade head\n\n# Create new migration\nuv run alembic revision --autogenerate -m \"Description of changes\"\n\n# View current migration status\nuv run alembic current\n```\n\n### Configuration\n\nEnvironment-specific configurations are in `configuration/`:\n\n- `config.yaml` - Default configuration\n- `config.local.yaml` - Local development overrides\n- `config.docker_test.yaml` - Docker test environment\n- `logging.yaml` - Logging configuration\n\nSet `APP_ENV` to load specific configs:\n\n```bash\nexport APP_ENV=local\nreflex run\n```\n\n---\n\n## 🐳 Docker Support\n\nBuild and run the application in Docker:\n\n```bash\n# Build the container\ndocker build -t appkit .\n\n# Run with compose\ndocker-compose up\n\n# The application will be available at http://localhost\n```\n\nThe Docker setup includes:\n\n- Multi-stage build for optimized images\n- Caddy reverse proxy for static file serving\n- Automatic database migrations on startup\n- Production-optimized Reflex export\n\n---\n\n## 🔐 Security Considerations\n\n- Credentials are managed through environment variables and never committed to source control\n- Sensitive MCP server headers are encrypted in the database\n- OAuth2 tokens use secure session management\n- Database connections use SSL/TLS in production\n- PKCE is enforced for OAuth2 flows\n\n\u003e **Tip:** Review security considerations when deploying to production. Use a secrets management service like Azure Key Vault or AWS Secrets Manager.\n\n---\n\n## 📖 Documentation\n\n- **[Mantine Components](./components/appkit-mantine/docs)** - API reference and examples for all UI components\n- **[Configuration](./configuration)** - Environment and application settings\n- **[Database Migrations](./alembic/versions)** - Schema evolution history\n\n---\n\n## 🤝 Architecture Highlights\n\n### Inheritance-Based Component Design\n\nAll Mantine input components inherit from `MantineInputComponentBase`, providing 40+ common properties without duplication:\n\n```python\n# Only define component-specific props\nclass NumberInput(MantineInputComponentBase):\n    tag = \"NumberInput\"\n    min: Var[int | float] = None\n    max: Var[int | float] = None\n    decimal_scale: Var[int] = None\n    # label, placeholder, required, etc. inherited automatically\n```\n\n### MCP Server Integration\n\nAppkit includes enterprise-grade Model Context Protocol support with secure credential management:\n\n```python\n# Manage MCP servers with automatic encryption/decryption\nmcp_server = MCPServer(\n    name=\"my-server\",\n    url=\"sse://localhost:3000\",\n    auth_type=\"headers\",\n    auth_config={...}  # Automatically encrypted\n)\n```\n\n### Multi-Tenant User Management\n\nBuilt-in support for organizations, projects, and role-based access:\n\n```python\n# OAuth2 login with automatic profile creation\nuser = await authenticate_oauth(provider=\"github\", code=code)\n# Profile automatically includes role and organization context\n```\n\n---\n\n## 📋 Pre-Release Status\n\nThis project is in active development (v0.13.1). While core functionality is stable and used in production, the API may evolve. Check the [GitHub releases](https://github.com/jenreh/appkit/releases) for version-specific changes.\n\n\u003e **Note:** Component APIs in appkit-mantine are stable. Higher-level application features may change between releases.\n\n---\n\n## 🙏 Acknowledgments\n\n- **[Reflex](https://reflex.dev)** - The full-stack Python framework\n- **[Mantine](https://mantine.dev)** - Beautiful React component library\n- **[FastAPI](https://fastapi.tiangolo.com)** - Modern Python web API framework\n- **OpenAI and Google** - AI model providers\n- **PostgreSQL** - Reliable database backend\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjenreh%2Fappkit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjenreh%2Fappkit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjenreh%2Fappkit/lists"}