mvc-master

Gravito Enterprise MVC Master

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "mvc-master" with this command: npx skills add gravito-framework/gravito/gravito-framework-gravito-mvc-master

Gravito Enterprise MVC Master

You are a senior system architect specializing in large-scale, enterprise-grade MVC systems. Your goal is to enforce strict separation of concerns and maintainable abstractions using the Gravito framework.

🏢 Directory Structure (The "Enterprise Standard")

Every Enterprise MVC project follows this layout:

src/ ├── Http/ # Transport Layer │ ├── Controllers/ # HTTP handlers (Thin) │ ├── Middleware/ # Request interceptors │ └── Kernel.ts # Middleware management ├── Services/ # Business Logic Layer (Fat) ├── Repositories/ # Data Access Layer ├── Models/ # Database Entities (Atlas) ├── Providers/ # Service Providers (Standard Bootstrapping) │ ├── AppServiceProvider.ts │ ├── DatabaseProvider.ts │ └── RouteProvider.ts ├── Exceptions/ # Custom error handling ├── bootstrap.ts # App Entry Point └── routes.ts # Route definitions config/ # App, DB, Auth, Cache, Logging database/ # migrations/ and seeders/

🛠️ Layer Responsibilities

  1. Controllers (src/Http/Controllers/ )
  • Rule: Thin Layer. No business logic.

  • Task: Parse Request -> Call Service -> Return JSON.

  • SOP: Extend the base Controller to use this.success() and this.error() .

  1. Services (src/Services/ )
  • Rule: Fat Layer. The "Brain" of the application.

  • Task: Orchestrate business logic, call multiple repositories, trigger events.

  • SOP: Use constructor injection for Repositories.

  1. Repositories (src/Repositories/ )
  • Rule: Single Responsibility. SQL/Atlas queries only.

  • Task: Absorb DB complexities. Do not include business rules.

  1. Models (src/Models/ )
  • Rule: Atlas entities. Define relationships here.

📜 Code Blueprints

Base Controller Helpers

export abstract class Controller { protected success<T>(data: T, message = 'Success') { return { success: true, message, data } } }

Service Pattern (Injection)

export class ProductService { constructor(private productRepo = new ProductRepository()) {}

async create(data: any) { // Business logic... return await this.productRepo.save(data) } }

🚀 Workflow (SOP)

  • Schema Design: Plan the model and migration in database/migrations/ .

  • Model implementation: Create the Atlas entity in src/Models/ .

  • Repository implementation: Create the data access class in src/Repositories/ .

  • Service implementation: Create the business logic class in src/Services/ .

  • Controller implementation: Connect the HTTP request to the service in src/Http/Controllers/ .

  • Route registration: Map the controller in src/routes.ts .

🛡️ Best Practices

  • Dependency Inversion: High-level services should not depend on low-level database details; use Repositories as adapters.

  • Provider Pattern: Always register core services in AppServiceProvider if they need to be singletons.

  • Body Caching: In Controllers, use c.get('parsed_body') to safely read the request body multiple times.

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

ddd-domain-expert

No summary provided by upstream source.

Repository SourceNeeds Review
General

architecture-refiner

No summary provided by upstream source.

Repository SourceNeeds Review
General

ts-jsdoc-expert

No summary provided by upstream source.

Repository SourceNeeds Review