A powerful Laravel admin panel and resource management system

Installs: 2

Dependents: 0

Suggesters: 0

Security: 0

Stars: 0

Watchers: 0

Forks: 0

Open Issues: 0

pkg:composer/cms-orbit/core

dev-main 2025-12-07 09:18 UTC

This package is auto-updated.

Last update: 2025-12-07 09:18:57 UTC


README

πŸš€ κ°•λ ₯ν•œ Laravel 기반 CMS νŒ¨ν‚€μ§€

Orbit 3.1의 핡심 μ—”ν‹°ν‹° μ‹œμŠ€ν…œμ„ κ³„μŠΉν•˜κ³ , λͺ¨λ“ˆν˜• μ•„ν‚€ν…μ²˜λ‘œ μž¬νƒ„μƒν•œ CMS ν”Œλž«νΌ

✨ μ£Όμš” κΈ°λŠ₯

🎯 μ—”ν‹°ν‹° μ‹œμŠ€ν…œ

DynamicModel - κΈ°λ³Έ CRUD μ—”ν‹°ν‹°

  • UUID, SoftDeletes, Translations
  • Sorting, ActivityLog
  • κΆŒν•œ μžλ™ 생성

DocumentModel - λ¬Έμ„œν˜• μ—”ν‹°ν‹°

  • λ‹€κ΅­μ–΄ μ½˜ν…μΈ  μžλ™ 관리
  • 슬러그, SEO μ΅œμ ν™”
  • 쑰회수, μΆ”μ²œμˆ˜, λŒ“κΈ€μˆ˜
  • μž‘μ„±μž 정보 (Polymorphic)

πŸ”§ CLI Commands

cms:entity Product              # DynamicModel μ—”ν‹°ν‹° 생성 (λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ 생성 μ—¬λΆ€ λ¬Όμ–΄λ΄„)
cms:entity Product -m           # λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ μžλ™ 생성 (-m = --migration)
cms:document Blog -m            # DocumentModel λ¬Έμ„œ 생성 + λ§ˆμ΄κ·Έλ ˆμ΄μ…˜
cms:model Review --entity=Article -m  # 쒅속 λͺ¨λΈ 생성 + λ§ˆμ΄κ·Έλ ˆμ΄μ…˜
cms:migration create_products_table --entity=Product --type=dynamic --create=products
cms:admin-fresh                 # κΆŒν•œ μžλ™ κ°±μ‹ 
cms:build-config                # Vite/Tailwind μ„€μ • 생성

# μ™ΈλΆ€ νŒ¨ν‚€μ§€ 지원
cms:entity Product --package=vendor/my-package
cms:model Comment --entity=Product --package=vendor/my-package

🌐 SEO 지원

  • ralphjsmit/laravel-seo 톡합
  • HasSeo trait - μžλ™ SEO 데이터 생성
  • HasSitemap trait - Sitemap μžλ™ 포함
  • FrontendHandler - SEO μ΅œμ ν™” λ Œλ”λ§

🎨 λ ˆμ΄μ•„μ›ƒ ν™•μž₯

  • Layout::vue() - Vue μ»΄ν¬λ„ŒνŠΈ μ‚½μž…
  • μ™„μ „ν•œ UI μ»΄ν¬λ„ŒνŠΈ 라이브러리

πŸ“¦ μ™ΈλΆ€ νŒ¨ν‚€μ§€ 지원

  • OrbitPackage Facade - μžμ› 등둝 μ‹œμŠ€ν…œ
  • --package μ˜΅μ…˜μœΌλ‘œ μ–΄λ””λ“  생성

πŸš€ μ„€μΉ˜

1. νŒ¨ν‚€μ§€ μ„€μΉ˜

composer require cms-orbit/core

2. λ§ˆμ΄κ·Έλ ˆμ΄μ…˜

php artisan migrate

3. κ΄€λ¦¬μž 생성

php artisan cms:admin

πŸ“– κΈ°λ³Έ μ‚¬μš©λ²•

μ—”ν‹°ν‹° 생성

# κΈ°λ³Έ μ—”ν‹°ν‹° (λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ 생성 μ—¬λΆ€ λ¬Όμ–΄λ΄„)
php artisan cms:entity Product
# β†’ Do you want to create a migration? (yes/no) [yes]:

# λ˜λŠ” -m μ˜΅μ…˜μœΌλ‘œ μžλ™ 생성
php artisan cms:entity Product -m
php artisan migrate
php artisan cms:admin-fresh

# λ¬Έμ„œ μ—”ν‹°ν‹°
php artisan cms:document Article -m
php artisan migrate
php artisan cms:admin-fresh

# 쒅속 λͺ¨λΈ 생성 (hasMany 관계 λ“±)
php artisan cms:model Review --entity=Article -m
php artisan migrate

Frontend λ Œλ”λ§ (SEO μžλ™ 지원)

use CmsOrbit\Core\Frontend\FrontendHandler;

Route::get('/blog/{slug}', function ($slug) {
    $blog = Blog::where('slug', $slug)->firstOrFail();
    
    // SEO μžλ™ 지원
    return FrontendHandler::render('Blog/Show', [
        'blog' => $blog
    ], $blog);
});

Layoutμ—μ„œ Vue μ»΄ν¬λ„ŒνŠΈ μ‚¬μš©

use CmsOrbit\Core\Support\Facades\Layout;

public function layout(): iterable
{
    return [
        Layout::rows([
            Input::make('title'),
            TextArea::make('content'),
        ]),
        
        Layout::vue('MyComponent', [
            'prop1' => 'value1',
            'prop2' => 'value2',
        ]),
    ];
}

πŸ”§ Vite 톡합 (ν”„λ‘ νŠΈμ—”λ“œ μ‚¬μš© μ‹œ)

1. Config 파일 생성

php artisan cms:build-config

이 λͺ…λ Ήμ–΄λŠ” λ‹€μŒ νŒŒμΌλ“€μ„ μžλ™ μƒμ„±ν•©λ‹ˆλ‹€:

  • packages/cms-orbit/core/resources/js/lib/vite.js
  • packages/cms-orbit/core/resources/js/lib/tailwind.js
  • packages/cms-orbit/core/resources/js/lib/alias.js

2. vite.config.js μˆ˜μ •

import { defineConfig } from 'vite';
import laravel from '@laravel/vite-plugin';
import react from '@vitejs/plugin-react';
import { viteConfig } from '@cms-orbit/core/lib/vite';

export default defineConfig({
    ...viteConfig,
    plugins: [
        laravel({
            input: ['resources/js/app.tsx', ...viteConfig.input],
            refresh: true,
        }),
        react(),
    ],
});

3. tailwind.config.js μˆ˜μ •

import { tailwindConfig } from '@cms-orbit/core/lib/tailwind';

export default {
    content: [
        './resources/**/*.tsx',
        './resources/**/*.blade.php',
        ...tailwindConfig.content,
    ],
    // ... λ‚˜λ¨Έμ§€ μ„€μ •
};

4. jsconfig.json (IDE 지원)

{
    "compilerOptions": {
        "baseUrl": ".",
        "paths": {
            "@/*": ["resources/js/*"],
            "@cms-orbit/core/*": ["packages/cms-orbit/core/resources/js/*"]
        }
    }
}

πŸ“¦ μ™ΈλΆ€ νŒ¨ν‚€μ§€ 개발

ServiceProviderμ—μ„œ μžμ› 등둝

use CmsOrbit\Core\Support\Facades\OrbitPackage;

class MyPackageServiceProvider extends ServiceProvider
{
    public function register(): void
    {
        // Vite 경둜 등둝
        OrbitPackage::registerPath(
            '@my-package',
            __DIR__.'/../resources/js'
        );
        
        // Vite Entry Point 등둝
        OrbitPackage::registerViteEntry('my-package/app.js');
        
        // Tailwind Content 등둝
        OrbitPackage::registerTailwindContent(
            __DIR__.'/../resources/**/*.blade.php'
        );
        
        // μ»€μŠ€ν…€ ν•„λ“œ 등둝
        OrbitPackage::registerField('MyField', MyField::class);
        
        // μ—”ν‹°ν‹° 등둝
        OrbitPackage::registerEntity('MyEntity', MyEntity::class);
    }
}

νŒ¨ν‚€μ§€μ— μ—”ν‹°ν‹° 생성

php artisan cms:entity Product --package=vendor/my-package
php artisan cms:model Comment --entity=Product --package=vendor/my-package
php artisan cms:migration create_products_table --entity=Product --package=vendor/my-package --type=dynamic --create=products

πŸ—οΈ ν”„λ‘œμ νŠΈ ꡬ쑰

app/Entities/
β”œβ”€β”€ Product/
β”‚   β”œβ”€β”€ Product.php              # DynamicModel
β”‚   β”œβ”€β”€ Review.php               # 쒅속 λͺ¨λΈ
β”‚   β”œβ”€β”€ database/
β”‚   β”‚   └── migrations/          # 엔티티별 λ§ˆμ΄κ·Έλ ˆμ΄μ…˜
β”‚   β”‚       β”œβ”€β”€ 2024_01_01_000001_create_products_table.php
β”‚   β”‚       └── 2024_01_01_000002_create_reviews_table.php
β”‚   β”œβ”€β”€ Screens/
β”‚   β”‚   β”œβ”€β”€ ProductListScreen.php
β”‚   β”‚   └── ProductEditScreen.php
β”‚   β”œβ”€β”€ Layouts/
β”‚   β”‚   β”œβ”€β”€ ProductListLayout.php
β”‚   β”‚   └── ProductEditLayout.php
β”‚   └── routes/
β”‚       └── orbit.php
β”‚
└── Article/
    β”œβ”€β”€ Article.php              # DocumentModel
    β”œβ”€β”€ Presenters/
    β”‚   └── ArticlePresenter.php
    β”œβ”€β”€ database/
    β”‚   └── migrations/
    β”‚       └── 2024_01_01_000003_create_articles_table.php
    β”œβ”€β”€ Screens/
    β”‚   β”œβ”€β”€ ArticleListScreen.php
    β”‚   └── ArticleEditScreen.php
    β”œβ”€β”€ Layouts/
    β”‚   β”œβ”€β”€ ArticleListLayout.php
    β”‚   └── ArticleEditLayout.php
    └── routes/
        └── orbit.php

🎨 Vite & Tailwind 톡합

μ„€μ • 파일 μžλ™ 생성

php artisan cms:build-config

이 λͺ…λ Ήμ–΄λŠ” λ‹€μŒ νŒŒμΌλ“€μ„ μƒμ„±ν•©λ‹ˆλ‹€:

  • packages/cms-orbit/core/resources/js/lib/vite.js
  • packages/cms-orbit/core/resources/js/lib/tailwind.js
  • packages/cms-orbit/core/resources/js/lib/alias.js (IDE용)

vite.config.js μ„€μ •

import { defineConfig } from 'vite';
import laravel from '@laravel/vite-plugin';
import react from '@vitejs/plugin-react';
import { viteConfig } from '@cms-orbit/core/lib/vite';

export default defineConfig({
    ...viteConfig,
    plugins: [
        laravel({
            input: ['resources/js/app.tsx', ...viteConfig.input],
            refresh: true,
        }),
        react(),
    ],
});

tailwind.config.js μ„€μ •

import { tailwindConfig } from '@cms-orbit/core/lib/tailwind';

export default {
    content: [
        './resources/**/*.tsx',
        './resources/**/*.blade.php',
        ...tailwindConfig.content,
    ],
    // ... λ‚˜λ¨Έμ§€ μ„€μ •
};

방법 3: μ»΄ν¬λ„ŒνŠΈ 직접 등둝 (κ°„λ‹¨ν•œ 경우)

// vite.config.js
resolve: {
    alias: {
        '@': path.resolve(__dirname, 'resources/js'),
        '@orbit': path.resolve(__dirname, 'vendor/cms-orbit/core/resources/js'),
    },
}

Vueμ—μ„œ μ‚¬μš©:

<script setup>
import MyComponent from '@orbit/components/MyComponent.vue';
import PackageComponent from '@my-package/components/PackageComponent.vue';
</script>

πŸ“š λ¬Έμ„œ

μžμ„Έν•œ λ‚΄μš©μ€ νŒ¨ν‚€μ§€ λ””λ ‰ν„°λ¦¬μ˜ λ¬Έμ„œλ₯Ό μ°Έκ³ ν•˜μ„Έμš”.

πŸ“Š 톡계

  • 242개 PHP 파일
  • 13개 Stub 파일
  • 19개 Artisan Commands
  • 5개 Traits
  • 4개 Models

πŸ“„ λΌμ΄μ„ μŠ€

MIT

Made with ❀️ by Amuz Corp