crear proyecto laravel con modulos y submodulos(git) manera manual
Tue Mar 03 2026 16:09:38 GMT+0000 (Coordinated Universal Time)
Saved by @jrg_300i
¡Perfecto! Ahora entiendo lo que necesitas. Quieres una base completa y fácil de memorizar para crear proyectos Laravel rápidamente, combinando:
Comandos de Laravel que ya existen para generar código
Submódulos de Git para reutilizar tus propios bloques
Vamos a crear un sistema en 3 niveles que podrás memorizar fácilmente:
📚 NIVEL 1: BASE LARAVEL (Comandos que YA existen)
Crear proyecto nuevo (2 formas)
bash
# Opción 1: Con composer (la más universal)
composer create-project laravel/laravel nombre-proyecto
# Opción 2: Con installer (más interactivo)
laravel new nombre-proyecto
Comandos CRUCIALES para generar código (MEMORIZA ESTOS)
bash
# 1. Modelo + Migración + Factory + Seeder + Controlador (¡TODO EN UNO!)
php artisan make:model Post -mfs --api
# -m → migration
# -f → factory
# -s → seeder
# --api → controlador API
# 2. Solo controlador (con recursos)
php artisan make:controller PostController --api --model=Post
# 3. Solo migración
php artisan make:migration create_posts_table
# 4. Solo seeder
php artisan make:seeder PostSeeder
# 5. Solo factory
php artisan make:factory PostFactory --model=Post
# 6. Middleware
php artisan make:middleware AdminMiddleware
# 7. Request (validación)
php artisan make:request StorePostRequest
¿Ves? Con UNA línea creas 5 archivos relacionados. Esto es lo que Laravel ya te da gratis.
🧱 NIVEL 2: TU BASE REUTILIZABLE (Lo que construyes UNA VEZ)
Estructura de tus repositorios base
Crea estos repositorios en GitHub (solo una vez en tu vida):
text
tus-repos-base/
├── base-core/ # 🌟 SIEMPRE lo usas
├── base-auth/ # 🔐 Si necesita login
├── base-admin/ # 🎛️ Si necesita panel
├── base-api/ # 🔌 Si es API
└── base-theme/ # 🎨 Si tiene vistas
Contenido de base-core (el más importante)
Este repositorio lo usarás en TODOS tus proyectos. Contiene:
text
base-core/
├── app/
│ ├── Traits/
│ │ ├── ApiResponseTrait.php # Respuestas JSON estandarizadas
│ │ ├── UploadTrait.php # Subida de archivos
│ │ └── UuidTrait.php # UUIDs en lugar de IDs
│ ├── Interfaces/
│ │ └── RepositoryInterface.php
│ └── Helpers/
│ └── helpers.php
├── app/Base/
│ ├── BaseController.php # Con métodos success(), error()
│ ├── BaseModel.php # Con timestamps, softDeletes
│ ├── BaseRepository.php # CRUD genérico
│ └── BaseService.php # Lógica de negocio
├── config/
│ └── core.php
└── composer.json
Ejemplo de BaseController.php (para que veas el poder)
php
<?php
namespace Core\Base;
use Illuminate\Http\JsonResponse;
use App\Http\Controllers\Controller;
abstract class BaseController extends Controller
{
protected $service;
protected $resource;
public function index(): JsonResponse
{
$items = $this->service->all();
return $this->success($items);
}
public function show($id): JsonResponse
{
$item = $this->service->find($id);
return $this->success($item);
}
public function store(Request $request): JsonResponse
{
$data = $request->validate($this->rules());
$item = $this->service->create($data);
return $this->success($item, 'Creado con éxito', 201);
}
protected function success($data, $message = 'OK', $code = 200): JsonResponse
{
return response()->json([
'success' => true,
'message' => $message,
'data' => $data
], $code);
}
protected function error($message, $code = 400): JsonResponse
{
return response()->json([
'success' => false,
'message' => $message
], $code);
}
abstract protected function rules(): array;
}
🚀 NIVEL 3: FLUJO DE TRABAJO (Lo que haces en CADA proyecto)
Fase 1: Crear proyecto nuevo (2 minutos)
bash
# 1. Crear proyecto Laravel
composer create-project laravel/laravel mi-nuevo-proyecto
cd mi-nuevo-proyecto
git init
git add .
git commit -m "Laravel base"
# 2. Añadir tu core (siempre)
git submodule add https://github.com/tu-usuario/base-core.git core
# 3. Añadir otros módulos según necesidad
git submodule add https://github.com/tu-usuario/base-auth.git auth # ¿Login?
git submodule add https://github.com/tu-usuario/base-api.git api # ¿API?
git submodule add https://github.com/tu-usuario/base-theme.git theme # ¿Vistas?
# 4. Configurar composer.json
Fase 2: Configurar composer.json (editar una vez)
json
{
"autoload": {
"psr-4": {
"App\\": "app/",
"Core\\": "core/app/",
"Auth\\": "auth/app/",
"Api\\": "api/app/",
"Theme\\": "theme/app/"
},
"files": [
"core/app/Helpers/helpers.php"
]
}
}
bash
composer dump-autoload
Fase 3: Crear PRIMER modelo (usando tu base)
bash
# 1. Generar modelo con Laravel
php artisan make:model Product -mfs --api
# 2. Editar el modelo para que use tu BaseModel
php
// app/Models/Product.php
<?php
namespace App\Models;
use Core\Base\BaseModel; // 🎯 En lugar de usar Model
class Product extends BaseModel // 🎯 Extiende de tu base
{
protected $fillable = ['name', 'price', 'description'];
// ¡Ya tienes timestamps, softDeletes, UUIDs si los configuraste!
}
Fase 4: Crear controlador (2 líneas)
bash
# 1. Generar controlador
php artisan make:controller ProductController --api --model=Product
php
// app/Http/Controllers/ProductController.php
<?php
namespace App\Http\Controllers;
use Core\Base\BaseController; // 🎯 Tu base
use App\Models\Product;
use App\Services\ProductService;
use App\Http\Resources\ProductResource;
class ProductController extends BaseController // 🎯 Extiende de tu base
{
public function __construct(ProductService $service)
{
$this->service = $service;
$this->resource = ProductResource::class;
}
// No necesitas escribir index, show, store...
// ¡Ya los heredas de BaseController!
protected function rules(): array
{
return [
'name' => 'required|string|max:255',
'price' => 'required|numeric|min:0',
'description' => 'nullable|string'
];
}
}
Fase 5: Usar en rutas
php
// routes/api.php
Route::apiResource('products', ProductController::class);
¡Ya tienes CRUD completo con 0 líneas de lógica!
📋 RESUMEN PARA MEMORIZAR (Lo ÚNICO que necesitas recordar)
DÍA 1: Preparar tus bases (hacerlo UNA VEZ)
bash
# Crear repos base en GitHub
mkdir base-core && cd base-core
# ... crear estructura
git init && git add . && git commit -m "Core"
git remote add origin https://github.com/tu-org/base-core.git
git push
# Repite para: base-auth, base-api, base-theme...
CADA NUEVO PROYECTO (lo que repites)
bash
# 1. Crear proyecto
composer create-project laravel/laravel mi-proyecto
cd mi-proyecto
# 2. Git init
git init
git add .
git commit -m "Base Laravel"
# 3. Añadir submódulos (¡Solo 3 comandos!)
git submodule add https://github.com/tu-org/base-core.git core
git submodule add https://github.com/tu-org/base-auth.git auth # si toca
git submodule add https://github.com/tu-org/base-api.git api # si toca
# 4. Configurar autoload (editar composer.json)
# Añadir "Core\\": "core/app/" etc.
composer dump-autoload
# 5. ¡A programar!
php artisan make:model Product -mfs --api
# Editas modelo para extender BaseModel
# Editas controlador para extender BaseController
# ¡Listo!
Comandos de Laravel que SIEMPRE usas
bash
# Para crear cosas nuevas
php artisan make:model Nombre -mfs --api # ¡EL REY!
php artisan make:controller Nombre --api --model=Nombre
php artisan make:migration crear_tabla
php artisan make:seeder NombreSeeder
php artisan make:middleware Nombre
# Para correr
php artisan serve
php artisan migrate
php artisan db:seed
php artisan make:cast # Para tipos personalizados
Comandos de Git que SIEMPRE usas
bash
# Al empezar proyecto
git submodule add URL carpeta
# Al clonar proyecto con submódulos
git clone URL
git submodule update --init --recursive
# Para actualizar submódulos
git submodule foreach git pull origin main
🎯 EJEMPLO COMPLETO RÁPIDO
Imagina que hoy te piden hacer una API de tareas:
bash
# 1. Crear proyecto
composer create-project laravel/laravel task-api
cd task-api
# 2. Git y submódulos
git init
git add . && git commit -m "Base"
git submodule add https://github.com/tu-org/base-core.git core
git submodule add https://github.com/tu-org/base-api.git api
# 3. Editar composer.json (añadir Core\ y Api\)
# "Core\\": "core/app/",
# "Api\\": "api/app/",
composer dump-autoload
# 4. Crear modelo Task
php artisan make:model Task -mfs --api
# 5. Editar app/Models/Task.php
# use Core\Base\BaseModel;
# class Task extends BaseModel
# 6. Editar migrations (añadir campos)
# $table->string('title');
# $table->text('description')->nullable();
# $table->boolean('completed')->default(false);
# 7. Crear controlador
php artisan make:controller TaskController --api --model=Task
# 8. Editar app/Http/Controllers/TaskController.php
# use Core\Base\BaseController;
# class TaskController extends BaseController
# 9. Definir reglas de validación
# protected function rules() { return ['title' => 'required']; }
# 10. Rutas
# routes/api.php: Route::apiResource('tasks', TaskController::class);
# 11. Migrar
php artisan migrate
# ¡API lista! Con index, show, store, update, delete funcionando
¿Ves? En menos de 10 minutos tienes una API completa gracias a:
Laravel: Genera modelos, controladores, migraciones
Tus submódulos: Aportan la lógica base (respuestas JSON, CRUD genérico)
📝 TU HOJA DE TRUCO (Para imprimir y pegar en la pared)
text
🚀 NUEVO PROYECTO LARAVEL EN 5 PASOS:
1. composer create-project laravel/laravel nombre
2. cd nombre && git init
3. git submodule add URL_CORE core
4. git submodule add URL_AUTH auth (si toca)
5. composer dump-autoload
🏗️ CREAR NUEVO RECURSO:
1. php artisan make:model Recurso -mfs --api
2. Editar modelo → extiende BaseModel
3. Editar migración → añadir campos
4. php artisan make:controller RecursoController --api --model=Recurso
5. Editar controller → extiende BaseController
6. php artisan migrate
🔄 ACTUALIZAR SUBMÓDULOS:
git submodule foreach git pull origin main
📋 COMANDOS ÚTILES:
php artisan serve
php artisan tinker
php artisan route:list
php artisan make:middleware
php artisan make:request
php artisan make:cast
¿Tiene más sentido ahora? La clave está en:
Laravel te da los comandos make:model, make:controller, etc.
Tus submódulos te dan las clases base (BaseController, BaseModel)
Tú solo conectas ambas cosas (extender tus bases y definir reglas)



Comments