프로젝트 구조
zenoBlog는 Laravel 기본 구조 위에 블로그 기능을 얹은 프로젝트입니다.
Laravel은 처음 보면 폴더가 많아서 복잡해 보이지만, 실제로 자주 보는 곳은 정해져 있습니다.
자주 보는 핵심 폴더
| 경로 | 역할 |
|---|---|
routes/web.php | 웹 URL과 컨트롤러를 연결하는 지도 |
routes/auth.php | 로그인, 회원가입, 로그아웃 같은 인증 URL |
app/Http/Controllers | 요청을 받아 실제 작업을 처리하는 클래스 |
app/Http/Middleware | 컨트롤러 실행 전에 권한 등을 검사하는 필터 |
app/Models | DB 테이블을 PHP 객체처럼 다루는 클래스 |
database/migrations | DB 테이블 설계도 |
resources/views | Blade 화면 파일 |
resources/js | 브라우저에서 실행되는 JavaScript |
resources/css | TailwindCSS와 커스텀 CSS |
public | 브라우저가 직접 접근 가능한 이미지, favicon 등 |
storage | 업로드 파일, 로그, 캐시 등 서버 저장 공간 |
config | Laravel 설정 파일 |
zenoBlog에서 직접 만든 핵심 파일
| 파일 | 설명 |
|---|---|
app/Http/Controllers/PostController.php | 방문자용 글 목록, 카테고리 필터, 글 상세 |
app/Http/Controllers/Admin/PostController.php | 관리자 글 작성/수정/삭제 |
app/Http/Controllers/Admin/CategoryController.php | 관리자 카테고리 관리 |
app/Http/Controllers/ImageController.php | 에디터 이미지 업로드 |
app/Http/Middleware/IsAdmin.php | 관리자만 접근 가능한지 검사 |
app/Models/Post.php | 블로그 글 모델 |
app/Models/Category.php | 카테고리 모델 |
app/Models/Tag.php | 태그 모델 |
resources/js/editor.js | TipTap 에디터 초기화 |
resources/views/layouts/app.blade.php | 공통 레이아웃 |
화면 파일 구조
resources/views 안에는 화면별 Blade 파일이 들어 있습니다.
resources/views
layouts
app.blade.php
posts
index.blade.php
show.blade.php
admin
posts
index.blade.php
create.blade.php
edit.blade.php
categories
index.blade.php
auth
login.blade.php
register.blade.php
방문자 화면은 posts에 있고, 관리자 화면은 admin에 있습니다.
로그인/회원가입은 Laravel Breeze가 만든 auth 쪽 파일을 사용합니다.
이 프로젝트를 읽는 기본 순서
처음부터 모든 파일을 열면 힘듭니다. 아래 순서로 보면 구조가 잡힙니다.
routes/web.phpapp/Http/Controllers/PostController.phpresources/views/posts/index.blade.phpresources/views/posts/show.blade.phpapp/Http/Controllers/Admin/PostController.phpresources/views/admin/posts/*.blade.phpapp/Models/*.phpdatabase/migrations/*.php
이 순서는 "사용자가 URL에 들어왔을 때 실제로 코드가 움직이는 순서"와 비슷합니다.