Instruction file imported from isaac545454/AI-frontend (
.cursor/rules/session-architecture.mdc). Copyright stays with the author.
Session Architecture (within features)
Relationship to Feature Sliced Design
Refina colocação de componentes dentro da feature (feature-sliced).
Sem pasta components/ genérica dentro da feature: UI exclusiva da feature em sessions/. Primitivos genéricos em shared/ (caminhos diretos, sem barrel).
| Kind | Where |
|---|---|
| Session | features/<feature>/sessions/ |
| Core | shared/components/... ou shared/core/... (arquivo concreto) |
Directory Structure
app/
auth/
features/
login/
sessions/
LoginSession/LoginSession.tsx
LoginForm/useLoginForm.ts, LoginForm.tsx
LoginPage.tsx # compõe sessions — import direto
Rules
1–5. (Sessions, core, não compartilhar sessions, compose-only, hook split)
Igual ao modelo anterior: sessions em sessions/; sem index.ts dentro de pasta de session — import do .tsx/hook diretamente.
6. Montagem da página
- Arquivo explícito na feature, ex.
LoginPage.tsx, importa sessions por caminho de arquivo. - Não usar
index.tsbarrel na raiz da feature.
7. Naming
Session folders PascalCase; hooks use<Name>.ts.
What to Check
- Sem barrel na feature
- Sem
index.tsdentro de pasta de session -
LoginPage.tsx(ou equivalente) importa sessions por arquivo
Examples
// features/login/LoginPage.tsx
import { LoginSession } from './sessions/LoginSession/LoginSession'
import { LoginForm } from './sessions/LoginForm/LoginForm'
export function LoginPage() {
return (
<LoginSession>
<LoginForm />
</LoginSession>
)
}
Wrong: features/login/index.ts que só re-exporta LoginPage ✗