nextjs-architecture-fsd
Scalable project structure using Feature-Sliced Design (FSD).
Installation
Follow the repository instructions for this skill and your agent. Review the files and dependencies before adding it to your workflow.
View source ↗GuidesSkill instructions
Architecture (Feature-Sliced Design)
Priority: P2 (MEDIUM)
Adopt Feature-Sliced Design (FSD) for scalable applications. Warning: FSD introduces boilerplate. Use it only if the project is expected to grow significantly (e.g., 20+ features). For smaller projects, a simple module-based structure is preferred.
Strategy
-
App Layer is Thin: The
app/directory (App Router) is only for Routing.-
Rule:
page.tsxshould only import Widgets/Features. No business logic (useEffect,fetch) directly in pages.
-
Rule:
-
Slices over Types: Group code by Business Domain (User, Product, Cart), not by File Type (Components, Hooks, Utils).
-
Bad:
src/components/LoginForm.tsx,src/hooks/useLogin.ts -
Good:
src/features/auth/login/containing both.
-
Bad:
-
Layer Hierarchy: Code can only import from layers below it.
-
App->Widgets->Features->Entities->Shared.
-
-
Avoid Excessive Entities: Do not preemptively create Entities.
-
Rule: Start logic in
FeaturesorPages. Move toEntitiesonly when data/logic is strictly reused across multiple differing features. -
Rule: Simple CRUD belongs in
shared/api, notentities.
-
Rule: Start logic in
-
Standard Segments: Use standard segment names within slices.
-
ui(Components),model(State/actions),api(Data fetching),lib(Helpers),config(Constants). -
Avoid:
components,hooks,servicesas segment names.
-
Structure Reference
For the specific directory layout and layer definitions, see the reference documentation.
Integration with Next.js Core
-
Server Actions: Place them in the
model/folder of a Feature (e.g.,features/auth/model/actions.ts). -
Data Access (DAL): Place logic in the
model/folder of an Entity (e.g.,entities/user/model/dal.ts). -
UI Components: Base UI (shadcn) belongs in
shared/ui. Feature-specific UI belongs infeatures/*/ui.
Examples
Read the usage examples in the source repository.
View source ↗Source history
- Indexed on
- 2026-01-20
- Index updated
- 2026-01-26
- Branch
- main
Index and sync dates describe this directory. View the source repository for code history.
GitHub ↗chat Comments (0)
Sign in to join the discussion and leave a comment.
No comments yet. Be the first to share your thoughts!