Skip to content

디렉토리, 파일 구조

g6
├─ admin/
├─ api/
├─ bbs/
├─ core/
├─ data/
├─ install/
├─ lib/
├─ plugin/
├─ service/
├─ static/
├─ templates/
├─ example.env
├─ LICENSE
├─ main.py
├─ README.md
├─ requirements.txt
└─ version.txt

admin

관리자 기능 관련 파일이 포함되어 있습니다.
router, template 파일 및 관리자 메뉴를 설정하는 .json 파일이 속해 있습니다.

admin/
├─ templates/  # 관리자 화면 관련 HTML 템플릿
├─ admin_auth.py  # router 파일
├─ ...
├─ admin_menu_bbs.json  # 관리자 기본메뉴 설정 파일
├─ ...
└─ admin.py

api

API 기능 관련 파일이 포함되어 있습니다.

api/
├─ v1
   ├─ auth/  # 인증관련 파일 (JWT, OAuth2)
   ├─ dependencies/  # 종속성 함수 모음
   ├─ service/  # API용 서비스 클래스 모음
   ├─ models/  # API용 Pydantic 모델 정의
   └─ routers/  # 라우터 파일 경로
└─ settings.py  # 설정 파일

bbs

게시판, 회원가입 등 사용자 기능 관련 파일이 있습니다.
요청에 따라 여러가지 기능들을 수행합니다.

bbs/
├─ ...
├─ board.py # 게시판
├─ ...
├─ register.py # 회원가입
├─ ...
└─ social.py # 소셜로그인

core

프로젝트의 핵심 파일들이 포함되어 있습니다.
데이터베이스 연결, 미들웨어 실행, 템플릿 엔진 설정 등 기본적인 실행에 필요한 코드를 포함하고 있습니다.

core/
├─ database.py  # 데이터베이스 연결 및 세션 관리
├─ exception.py  # 예외 처리설정 클래스 & 함수
├─ formclass.py  # @dataclass를 이용한 폼 클래스 모음
├─ middleware.py  # 미들웨어 설정
├─ models.py  # 데이터베이스 모델
├─ plugin.py  # 플러그인 관련 함수
├─ routers.py  # 템플릿 라우터 설정
├─ settings.py  # .env 파일 환경설정 변수 관리
└─ template.py  # 템플릿 엔진 설정

data

이미지, 캐시, 사용자 업로드 파일들을 저장하기 위한 디렉토리 입니다.
초기에는 존재하지 않으며, 설치 진행 시 자동으로 생성됩니다.

data/
├─ cache  # 캐시 파일
├─ ...
├─ file  # 게시판 사용자 업로드 파일
├─ ...

install

설치 관련 파일들이 포함되어 있습니다.

install/
├─ templates/  # 설치 관련 HTML 템플릿
├─ default_value.py  # 기본값 설정을 모아놓은 py 파일
├─ install.py  # 콘솔에서 실행하는 설치 파일 (삭제예정)
└─ router.py  # 설치 관련 router 파일

lib

프로젝트에서 사용되는 여러 함수들을 포함한 라이브러리 및 파일을 모은 디렉토리 입니다.

lib
├─ captcha/  # 캡차 관련 함수, 템플릿 (Google reCAPTCHA v2, v2 invisible)
├─ dependency/  # 종속성 함수 모음
├─ editor/  # 에디터 관련 함수, 템플릿 (ckeditor4)
├─ html_sanitizer/  # HTML 태그 제거 기능 (XSS 방지)
├─ scheduler/  # 스케줄러 관련 클래스, 함수 (APScheduler)
├─ social/  # 소셜 로그인 관련 함수 (naver, kakao, google, facebook, twitter)
├─ board_lib.py  # 게시판
├─ common.py  # 공통 함수
├─ current_connect.py  # 현재 접속자
├─ g5_compatibility.py  # 그누보드5 호환성 함수
├─ mail.py  # 메일
├─ member.py  # 회원
├─ menu.py  # 사용자 메뉴
├─ newwin.py  # 레이어 팝업
├─ pbkdf2.py  # 암호화 라이브러리
├─ point.py  # 포인트
├─ poll.py  # 투표
├─ popular.py  # 인기 검색어
├─ template_filters.py  # 템플릿 필터 함수
├─ template_functions.py  # 템플릿 출력 관련 함수
├─ token.py  # 토큰
└─ visit.py  # 접속자 통계

plugin

사용자가 직접 제작한 독립된 기능을 저장하는 디렉토리 입니다.
제작한 플러그인은 관리자 페이지에서 활성화 할 수 있습니다.

plugin/
└─ {플러그인1}
   └─ admin/  # 관리자 라우터
      ├─ __init__.py
      ├─ ...  # 관리자 라우터 파일 추가
   └─ static/
      ├─ css/
      ├─ img/
      └─ js/
   └─ templates/
      ├─ admin/
      ├─ ...  # 템플릿 파일 추가
   └─ user/
      ├─ __init__.py
      ├─ ...  # 사용자 라우터 파일 추가
   ├─ models.py
   ├─ plugin_config.py
   ├─ readme.txt  # 플러그인 상세정보
   └─ screenshot.png
└─ {플러그인2}
...
├─ __init__.py
└─ plugin_states.json  # 전체 플러그인 정보 파일

플러그인 추가 방법

  • /plugin 폴더에 제작할 플러그인 디렉토리를 추가합니다.
  • 다른 플러그인과 겹치지 않도록 고유한 이름으로 지어주세요.
  • 위 파일 구성과 plugin/demo_plugin디렉토리를 참고하여 플러그인을 제작합니다.
  • 더 자세한 제작방법은 플러그인 제작하기를 참고하세요.

service

그누보드6의 비즈니스 로직을 처리하는 서비스 클래스와 함수가 포함되어 있습니다.

service/
├─ ajax/
├─ board/
├─ board_new/
├─ search/
├─ __init__.py
├─ ...

static

css, js, image 등 정적 파일(변하지 않는 파일)들을 모아놓은 디렉토리 입니다.

static/
├─ admin/
├─ content/
├─ css/
├─ img/
├─ js/
├─ plugin/  # css, js 플러그인 정적 파일
└─ favicon.ico

templates

페이지에 보여지는 템플릿 파일들을 저장하는 디렉토리 입니다.
여러 개의 테마로 구성할 수 있으며 사용자가 직접 테마를 제작하고 사용할 수 있습니다.

templates/
├─ basic/
   ├─ ... 
   ├─ mobile/  # 모바일 템플릿 (적응형)
   ├─ ...
   ├─ alert_close.html
   ├─ alert.html
   ├─ base_sub.html  # HEAD, BODY, FOOTER 템플릿
   ├─ base.html  # 페이지 공통 템플릿
   ├─ index.html
   ├─ LICENSE
   ├─ readme.txt
   └─ screenshot.png
└─ {테마1}
   └─ ...
├─ {테마2}
   └─ ...

Tip

관리자페이지 > 템플릿관리 메뉴에서 테마를 변경할 수 있습니다.

테마 추가 방법

  • /templates 폴더에 있는 기본테마 basic 디렉토리를 복사 합니다.
  • 다른 테마와 겹치지 않도록 고유한 이름으로 변경해주세요.
  • 더 자세한 제작방법은 테마 제작하기를 참고하세요.

.env(.example.env)

데이터베이스, 메일, 세션 등 사용자 설정에 필요한 환경 변수를 저장한 파일입니다.
설치 진행 시, .env파일은 자동으로 생성됩니다.

주의

example.env 파일은 .env파일 생성에 필요하므로 삭제하지 않도록 주의하세요.

LICENSE

그누보드6의 라이센스에 대한 내용을 담고 있습니다.

main.py

프로젝트의 시작점이자 FastAPI 를 구동하는데 사용하는 파일입니다.
uvicorn 명령어를 통해 실행할 수 있습니다.
기본으로 8000번 포트를 사용하며 --port는 생략 가능합니다.
참고: 그누보드6 실행

uvicorn main:app --reload --host 0.0.0.0 --port 8000
uvicorn main:app --reload

Info

여기서 main은 파일을 나타내며, app은 main.py 파일 내의 FastAPI 인스턴스의 이름을 나타냅니다.
결론적으로 main.py 에서 app = FastAPI() 을 실행한다는 뜻입니다.

README.md

그누보드6의 설치 및 사용법에 대한 간략한 설명을 담고 있습니다.

requirements.txt

그누보드6 실행에 필요한 외부 모듈이나 파이썬 패키지의 목록을 담고 있습니다.
명령어를 통해 자동으로 설치해야 합니다.

설치 방법
pip install -r requirements.txt

version.txt

그누보드6의 버전정보를 담고 있는 파일입니다.