My App
Architecture/FSD

Les règles d'imports

Pour que cette architecture ne s'effondre pas avec le temps, il y a deux règles absolues.

La règle de dépendance unidirectionnelle

Un module ne peut importer que des éléments situés dans les couches strictement inférieures.

/* ✅ AUTORISÉ : features/add-to-cart importe depuis entities et shared */
import { Product } from '@/entities/product';
import { Button } from '@/shared/ui/Button';

/* ❌ INTERDIT : entities/product NE PEUT PAS importer depuis features */
import { AddToCartButton } from '@/features/add-to-cart'; 

/* ❌ INTERDIT : features/add-to-cart NE PEUT PAS importer un widget */
import { Header } from '@/widgets/header'; 

L'API publique via index.ts

Chaque Slice doit exposer son contenu via un fichier index.ts. On n'importe jamais directement un fichier interne d'un autre module, cela briserait l'encapsulation.

/* features/add-to-cart/index.ts */
/* On expose uniquement ce qui est nécessaire vers l'extérieur */
export { AddToCartButton } from './ui/AddToCartButton';
export { useAddToCart } from './model/useAddToCart';