본문으로 건너뛰기

프로젝트 구조

zenoBlog는 Laravel 기본 구조 위에 블로그 기능을 얹은 프로젝트입니다.

Laravel은 처음 보면 폴더가 많아서 복잡해 보이지만, 실제로 자주 보는 곳은 정해져 있습니다.

자주 보는 핵심 폴더

경로역할
routes/web.php웹 URL과 컨트롤러를 연결하는 지도
routes/auth.php로그인, 회원가입, 로그아웃 같은 인증 URL
app/Http/Controllers요청을 받아 실제 작업을 처리하는 클래스
app/Http/Middleware컨트롤러 실행 전에 권한 등을 검사하는 필터
app/ModelsDB 테이블을 PHP 객체처럼 다루는 클래스
database/migrationsDB 테이블 설계도
resources/viewsBlade 화면 파일
resources/js브라우저에서 실행되는 JavaScript
resources/cssTailwindCSS와 커스텀 CSS
public브라우저가 직접 접근 가능한 이미지, favicon 등
storage업로드 파일, 로그, 캐시 등 서버 저장 공간
configLaravel 설정 파일

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.jsTipTap 에디터 초기화
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 쪽 파일을 사용합니다.

이 프로젝트를 읽는 기본 순서

처음부터 모든 파일을 열면 힘듭니다. 아래 순서로 보면 구조가 잡힙니다.

  1. routes/web.php
  2. app/Http/Controllers/PostController.php
  3. resources/views/posts/index.blade.php
  4. resources/views/posts/show.blade.php
  5. app/Http/Controllers/Admin/PostController.php
  6. resources/views/admin/posts/*.blade.php
  7. app/Models/*.php
  8. database/migrations/*.php

이 순서는 "사용자가 URL에 들어왔을 때 실제로 코드가 움직이는 순서"와 비슷합니다.