Skip to content

소개

Doggy Framework는 Symfony 7.4 LTS(2029년까지 장기 지원) 기반의 AI 네이티브 엔터프라이즈급 로우코드 개발 프레임워크입니다.

왜 Doggy인가?

  • AI 네이티브: MCP, Agent, 다중 모델(Alibaba Bailian, OpenAI, LM Studio, Ollama 등)과의 심층 통합, 내장 LLM 설정 시스템, 전역 AI 어시스턴트, AI 뷰 강화, 코딩 어시스턴트, 자연어 쿼리, 시각 인식 등의 AI 기능 제공
  • 로우코드 엔진: PHP 8 Attribute와 @Ef 커스텀 애노테이션으로 비즈니스 모델 정의, 데이터베이스 마이그레이션과 관리 인터페이스 자동 생성
  • AI 기반 뷰 디자이너: 드래그 앤 드롭 레이아웃 + AI 자연어 조작 + 의도 인식 서브 에이전트 뷰 생성 + 다중 버전 관리
  • 엔터프라이즈급 보안: WebAuthn 비밀번호 없는 로그인, 삼원 분립, 비밀번호 정책, 전 구간 감사 로그
  • 실시간 통신: Mercure SSE 기반 실시간 푸시, FrankenPHP 내장 Hub, 추가 서비스 불필요
  • 고성능: FrankenPHP Worker 모드 + zstd/br 압축, PostgreSQL 우선 아키텍처
  • 완전한 생태계: 조직 구조, 예약 작업, 파일 저장, 메일 시스템, SunUI 컴포넌트 라이브러리 등 즉시 사용 가능

기술 스택

계층기술
언어PHP 8.2+
프레임워크Symfony 7.4 LTS
런타임FrankenPHP (Worker 모드) via runtime/frankenphp-symfony
데이터베이스PostgreSQL 14+
ORMDoctrine ORM + StofDoctrineExtensionsBundle (Gedmo)
메시지 큐Symfony Messenger (Doctrine Transport)
실시간 통신Mercure SSE (dunglas/mercure)
AISymfony AI (MCP, Agent, Store, 다중 플랫폼 지원)
인증WebAuthn (web-auth/webauthn-symfony-bundle) + JWT (firebase/jwt)
파일 저장League Flysystem (Local / OSS / S3)
프론트엔드Twig + jQuery + SunUI 컴포넌트 라이브러리
유틸리티PHPSpreadsheet, Imagine, Predis, Ramsey UUID

시스템 요구사항

  • PHP >= 8.2
  • ext-ctype, ext-iconv
  • PostgreSQL >= 14
  • Composer >= 2.5

빠른 시작

설치

bash
git clone git@github.com:doggy/skeleton.git my-app
cd my-app

환경 설정

bash
cp .env.example .env
# .env 편집: 데이터베이스 연결과 Mercure JWT 키 설정

데이터베이스 시작

PostgreSQL은 별도로 설치하고 실행해야 합니다:

bash
# macOS
brew install postgresql@14
brew services start postgresql@14
createdb app

# Ubuntu/Debian
sudo apt install postgresql-14
sudo systemctl start postgresql
sudo -u postgres createdb app

Mercure Hub는 FrankenPHP에 내장되어 있어 별도로 시작할 필요가 없습니다.

접속

디렉터리 구조

config/
├── bundles.php          # 활성화된 Symfony Bundle 목록
├── packages/            # 각 Bundle 설정
└── services.yaml

src/
├── Annotation/          # 커스텀 애노테이션: Ef.php, EfGroup.php
├── Command/             # 16개의 Console 명령
├── Controller/          # Admin, Api, Security 컨트롤러
├── Entity/              # Doctrine 엔티티 + CommonTrait
│   ├── Organization/    # Department, Position 등
│   ├── Platform/        # 플랫폼 관련 엔티티
│   ├── Security/        # User, Role, Permission
│   ├── Storage/         # 파일 저장 엔티티
│   └── System/          # 시스템 설정 엔티티
├── Form/                # 폼 타입
├── Message/             # 비동기 메시지
├── MessageHandler/      # 메시지 핸들러
├── Repository/          # Doctrine Repository
├── Security/            # WebAuthn, JWT, Voter
├── Service/             # AI, Calendar, Security, Storage, Task, View 등
└── Twig/                # TwigExtension

Caddyfile                # FrankenPHP 설정 (Mercure Hub, 압축, 캐시 포함)

활성화된 핵심 Bundle

Bundle역할
FrameworkBundleSymfony 핵심
DoctrineBundle + MigrationsBundle데이터베이스 ORM 및 마이그레이션
SecurityBundle보안 인증 및 권한 부여
TwigBundle + TwigExtraBundle템플릿 엔진
MonologBundle로깅
StofDoctrineExtensionsBundleGedmo 확장(트리, 타임스탬프, 소프트 삭제 등)
NelmioCorsBundleCORS 지원
WebauthnBundleWebAuthn 비밀번호 없는 인증
MercureBundle실시간 메시지 푸시
AiBundleSymfony AI 통합
FlysystemBundle파일 저장 추상화
HautelookAliceBundle테스트 데이터 픽스처

핵심 개념

동적 모델

@Ef 애노테이션으로 비즈니스 필드를 표시하고 PHP 8 Attribute로 모델을 정의하면 자동으로 수행됩니다:

  • 데이터베이스 마이그레이션 생성
  • CRUD 인터페이스 렌더링
  • 데이터 검증 규칙
  • 권한 검사
php
use App\Annotation\Ef;

class Department
{
    #[Ef(displayName: '부서명', required: true)]
    private string $name;

    #[Ef(displayName: '부서 코드', searchable: true)]
    private string $code;
}

참고: 동적 모델

엔티티 공용 Trait

모든 엔티티는 CommonTrait을 통해 다음 기능을 조합합니다:

CommonTrait
├── BlameableTrait      # 생성자/수정자 자동 기록
├── TimestampableTrait  # 생성 시간/수정 시간 자동 기록
├── SoftDeleteTrait     # 소프트 삭제
└── IdTrait             # 자동 증가 기본 키

조직 구조

다중 레벨 부서 트리(Nested Set), 직원 관리, 직위 체계를 지원합니다:

  • 무제한 계층 부서 트리(Gedmo NestedTree)
  • 다중 회사 및 다중 부서 소속
  • 직위 및 직급 체계
  • 대량 사용자 가져오기/내보내기(PHPSpreadsheet)

참고: 조직 구조

보안 체계

  • WebAuthn 비밀번호 없는 로그인(Passkey, 보안 키, 생체 인식 지원)
  • 삼원 분립(시스템 관리자, 보안 관리자, 감사 관리자)
  • 비밀번호 복잡도 및 유효 기간 정책
  • 전 구간 작업 감사

참고: WebAuthn 인증

리소스

MIT 라이선스 오픈소스 | Copyright © 2026 Doggy