Invoke before designing presenters, modules, or application structure in web applicartion.
View on GitHubnette/claude-code
nette
January 20, 2026
Select agents to install to:
npx add-skill https://github.com/nette/claude-code/blob/main/plugins/nette/skills/nette-architecture/SKILL.md -a claude-code --skill nette-architectureInstallation paths:
.claude/skills/nette-architecture/For new project skeleton, see [skeleton.md](skeleton.md). ## Backend Architecture - The project requires PHP 8.3+, Nette 3.2, Latte 3.1 ### Key Framework Features - Presenters: Controllers that handle HTTP requests in Nette - Latte: Templating engine used for views - Dependency Injection: Service management through Nette's DI container - Router: URL routing through `RouterFactory` ### Directory Structure The application follows domain-driven organization with preference for flatter structure: - App: The main application namespace (`App\`) - Bootstrap: Application initialization and configuration - Core: Infrastructure concerns (routing, etc.) - Entity: All database entities in single namespace - Model: Business logic services organized by domain - Presentation: UI layer organized by modules - Tasks: Command-line executable tasks ### Evolution Strategy **Start minimal** → **Grow organically** → **Refactor when painful** Start with flat structure - create subdirectories only when you have 5+ related files or clear implementation variants. Don't architect for theoretical future complexity. Address actual complexity when it emerges with clear user needs driving structural decisions. ### Configuration - config/common.neon: Main application configuration - config/services.neon: Service definitions and auto-wiring configuration ### Core vs Model Decision Matrix **Use Core/ for:** - Technology-agnostic infrastructure (MyExplorer, RouterFactory, QueueMailer) - External service integrations (SentryLogger, AI/, GoogleSearch/) - Framework extensions and utilities - Code that could be moved to another project unchanged **Use Model/ for:** - Business domain logic (CatalogService, CustomerService, OrderService) - Domain-specific operations and rules - Entity-specific processing logic - Code that knows about your business concepts (products, orders, customers) **Why flat:** Entities often cross domain boundaries. ProductRow might be used in catalog, ord