Arquitectura
🧱 Estructura de Carpetas
fleting/
│
├── core/ # Infraestructura del framework
│ ├── app.py
│ ├── router.py
│ ├── responsive.py
│ ├── state.py
│ ├── i18n.py
│ ├── logger.py
│ └── error_handler.py
│
├── configs/ # Configuraciones globales
│ ├── app_config.py
│ ├── routes.py
│ └── languages/
│ ├── pt.json
│ └── es.json
│
├── views/
│ ├── layouts/ # Layouts reutilizables
│ └── pages/ # Views de páginas
│
├── controllers/ # Controllers
├── models/ # Models
│
├── cli/ # CLI del framework
│ ├── cli.py
│ ├── commands/
│ └── templates/
│
├── main.py # Punto de entrada de la aplicación
└── runtime_imports.py # importacion de views para build (Windows)
🧭 Arquitectura de Views
En Fleting, las Views no conocen el layout de la aplicación.
View (contenido puro)
↓
Layout (AppBar, NavigationBar, etc.)
↓
Page (Flet)
Ejemplo simplificado:
class HomeView:
def render(self):
content = ft.Text("Home")
return MainLayout(page, content, router)
🌍 Internacionalización (i18n)
Archivos JSON en configs/languages.
Acceso mediante I18n.t("clave.subclave").
from core.i18n import I18n
I18n.load("pt")
I18n.t("home.title")
📱 Responsividad
El estado global de la aplicación mantiene el tipo de dispositivo actual:
from core.state import AppState
AppState.device # mobile | tablet | desktop
Se actualiza automáticamente al redimensionar la ventana.
🚦 Enrutamiento
Las rutas se definen en configs/routes.py con lazy loading:
ROUTE_MAP = {
"/": "views.pages.home_view.HomeView",
}
Cada view recibe:
- page
- router
Y retorna un control Flet.
🧰 Logs y Errores
- Logs automáticos en
logs/fleting.log - Captura global de errores con pantalla amigable
- Stacktrace registrado automáticamente
🚀 Objetivo del Framework
Fleting no intenta ser todo.
Existe para:
- acelerar proyectos con Flet
- mantener el código limpio
- servir como base sólida para aplicaciones reales
Simple, extensible y directo al punto.