Arquitetura¶
Visão geral¶
Stride é um framework API-first, construído sobre FastAPI, com camadas:
- Camada de Configuração (
strider.config.Settings,strider.config.configure) - Camada de inicialização (
strider.app.StrideApp,create_app,get_application) - Roteamento (
strider.urls,strider.routing.Router,AutoRouter) - Camada de regras de negócio (
strider.views.ViewSet,ModelViewSet,APIView) - Data layer (
strider.models.Model,Field,Manager,QuerySet) - Autenticação/Permissões (
strider.auth,strider.permissions) - Extras (
strider.messaging,strider.tenancy,strider.realtime,strider.admin)
Componentes principais¶
StrideApp¶
- Cria FastAPI com
docs_url,openapi_url,redoc_urldo settings. - Registra middleware (CORS, tenancy, custom).
- Garante validação de schemas e auto-collect permissions no startup.
- Inicializa DB via
strider.database.init_db. - Monta rota WebSocket fora do stack HTTP para compatibilidade.
- Exponibiliza
appe__call__para ASGI.
Roteamento¶
strider.urls.autodiscover(settings)carrega apps eminstalled_appsouroot_urlconf.path()einclude()criam objetosURLPattern/URLInclude.- Permite ViewSets, APIViews, callables e WebSocketView.
Router.register_viewset()implementa rota CRUD (list, create, retrieve, update, patch, delete) e ações customizadas com decorators@action.
ViewSet¶
- CRUD básico via
ViewSet.list/retrieve/create/update/partial_update/destroy. ModelViewSetinjeta model + serializer + saída JSON.- Permissões por
permission_classes,permission_classes_by_action. - Validação de dados:
- Pydantic (InputSchema/OutputSchema)
validate_unique_fields+UniqueValidatorvalidate_field,validate_data,validatehooks._validate_schemascross-check model/schema viaSchemaModelValidator.
Models¶
- Base
strider.models.Modelusa SQLAlchemy declarative eModelMeta. Fieldhelpers (pk(),string(),email(),datetime(),choice(),struct()etc).- Manager/QuerySet inspirado em Django (
objects.filter,get,all,count,exists,select_related,prefetch_related). Model.save(),delete(), e hooksbefore_save,after_save, etc.create_tables()(auto-migrations básicas e sync columns).
Permissões¶
- Base
Permissiondefinido emstrider.permissions. - Check global e por objeto em
check_permissions. - Classes built-in:
AllowAny,DenyAll,IsAuthenticated,IsAuthenticatedOrReadOnly,IsAdmin,IsOwner,HasRole. - Suporta composição:
perm1 & perm2,perm1 | perm2,~perm.
Configurações¶
strider.config.Settingscentraliza app/db/auth/cors/messaging/tenancy etc..envresize via_resolve_env_files_at_bootstrap().- Auto-configura auth via
user_modeleauth_*.
Fluxos principais¶
Startup¶
StrideApp.__init__()configura logger- carrega settings (ou
get_settings()) - cria FastAPI
- configura CORS, tenancy, middleware, handlers de exceção
autodiscover()+ include routers + ws routes- (opcional) admin e health checks
Lifespan:_startupexecuta model/load, DB init, create_tables, validate viewsets, auto_collect_permissions, callbacks
Request HTTP¶
- FastAPI middleware (CORS, request id, etc)
- route resolvida pelo Router
- Permissões via
check_permissionsem ViewSet/APIView - Handler CRUD/Action executa DB e serializa response
- Resposta JSON
WebSocket¶
strider.realtimedefine handlersWebSocketView,SSEView- routes registradas em
_ws_routerno StrideApp - Autenticação e permissão via
AuthenticationMiddlewareecheck_permissionsem_check_ws_permissions
Pontos de entrada¶
create_app,get_application(ASGI app)stride.cli(commands de migrations/run/tests)strider.urls.autodiscover(routing)strider.models.init_database(DB)strider.authAPIs (login, tokens).
Observações de confiabilidade¶
- Toda documentação criada deve referenciar esses componentes (não suposições).
- Quando detectar comportamento não claro por código, incluir alerta “⚠️ Não documentado no código".