mcpField
M
mvc-master

mvc-master

github.com/gravito-frameworkDevelopment264 installsUpdated 28w ago
Repository

About mvc-master

A skill that guides developers in structuring enterprise MVC applications with Gravito. It defines layer responsibilities and a build sequence from schema and models through repositories, services, controllers, and routes.

Key features

  1. 01Define an enterprise MVC layout
  2. 02Separate controllers, services, and repositories
  3. 03Provide TypeScript code patterns
  4. 04Specify an implementation workflow
  5. 05Recommend dependency inversion

Use cases

  1. 01Plan a Gravito MVC project structure
  2. 02Separate HTTP handling from business logic
  3. 03Organize database access through repositories

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/gravito-framework/gravito --skill mvc-master

After installing, type/mvc-masterin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

assets/
.keep
references/
.keep
scripts/
.keep

Details

From the project README

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().
2. 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.
3. Repositories (src/Repositories/)
  • Rule: Single Responsibility. SQL/Atlas queries only.
  • Task: Absorb DB complexities. Do not include business rules.
4. 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)

  1. Schema Design: Plan the model and migration in database/migrations/.
  2. Model implementation: Create the Atlas entity in src/Models/.
  3. Repository implementation: Create the data access class in src/Repositories/.
  4. Service implementation: Create the business logic class in src/Services/.
  5. Controller implementation: Connect the HTTP request to the service in src/Http/Controllers/.
  6. 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.

Comments

Markdown supported