dh_demo

DreamHanks demo project
git clone git://git.lair.cx/dh_demo
Log | Files | Refs | README

README.md (3889B)


      1 본 소프트웨어는 nextjs 프레임워크와 typescript로 작성되었습니다.
      2 
      3 
      4 ## Getting started
      5 
      6 다음 소프트웨어가 필요합니다.
      7 
      8 - Node.js
      9   - Yarn
     10 - MySQL 8
     11 - Redis
     12 
     13 다음 내용을 참고해서 `.env.local` 파일을 작성해주세요.
     14 
     15 ```
     16 WIKI_SITE_URL=https://dhdemo.yongbin.kim
     17 
     18 WIKI_DB_HOST=127.0.0.1
     19 WIKI_DB_NAME=dreamhanks_demo
     20 WIKI_DB_USER=dreamhanks_demo
     21 WIKI_DB_PASS=dreamhanks_demo
     22 
     23 WIKI_PAGE_CACHE_TTL=3600
     24 
     25 WIKI_JWT_SECRET=1q2w3e4r
     26 WIKI_JWT_COOKIE_PREFIX=wiki_jwt_
     27 
     28 WIKI_SMTP_HOST=smtp.domain.tld
     29 WIKI_SMPT_PORT=465
     30 WIKI_SMTP_USER=dhdemo
     31 WIKI_SMTP_PASS=supersecurepassword!
     32 WIKI_SMTP_FORCE_TLS=true
     33 WIKI_SMTP_FROM=dhdemo@yongbin.kim
     34 
     35 WIKI_HOME_WIKI=main
     36 WIKI_PAGE_ENTRY=Home
     37 
     38 NEXT_PUBLIC_WIKI_SOCKET_URL=ws://localhost:3001/ws
     39 ```
     40 
     41 다음 명령어로 실행할 수 있습니다.
     42 
     43 ```
     44 # 이벤트 큐 서버
     45 yarn node bin/event-queue.mjs
     46 ```
     47 
     48 ```
     49 # 앱 서버
     50 yarn
     51 yarn build
     52 yarn start
     53 ```
     54 
     55 
     56 ## 설정
     57 
     58 설정은 환경 변수를 통해 이루어집니다.
     59 
     60 `.env` 파일을 작성하거나, 환경 변수를 직접 설정할 수 있습니다.
     61 
     62 - `WIKI_SITE_URL`: 사이트의 URL입니다. 이 값은 이메일 전송에 사용됩니다.
     63 - `WIKI_DB_HOST`: 데이터베이스 호스트입니다.
     64 - `WIKI_DB_NAME`: 데이터베이스 이름입니다.
     65 - `WIKI_DB_USER`: 데이터베이스 사용자 이름입니다.
     66 - `WIKI_DB_PASS`: 데이터베이스 사용자 비밀번호입니다.
     67 - `WIKI_PAGE_CACHE_TTL`: 페이지 캐시 유효 시간입니다. 기본값은 3600초입니다.
     68 - `WIKI_JWT_SECRET`: JWT 토큰의 시크릿입니다.
     69 - `WIKI_JWT_COOKIE_PREFIX`: JWT 토큰을 저장할 쿠키의 접두사입니다.
     70 - `WIKI_SMTP_HOST`: SMTP 호스트입니다.
     71 - `WIKI_SMTP_PORT`: SMTP 포트입니다.
     72 - `WIKI_SMTP_USER`: SMTP 사용자 이름입니다.
     73 - `WIKI_SMTP_PASS`: SMTP 사용자 비밀번호입니다.
     74 - `WIKI_SMTP_FORCE_TLS`: TLS를 강제로 사용할지 여부입니다.
     75 - `WIKI_SMTP_FROM`: SMTP에서 사용할 이메일 주소입니다.
     76 - `WIKI_HOME_WIKI`: 홈 위키 이름입니다. (사이트의 첫 페이지로 이동할 때 사용)
     77 - `WIKI_PAGE_ENTRY`: 각 위키의 첫 페이지 이름입니다.
     78 - `NEXT_PUBLIC_WIKI_SOCKET_URL`: 소켓 서버의 URL입니다. (이벤트 큐 서버에 접속하기 위해 사용)
     79 - `WIKI_REDIS_URL`: Redis 서버의 URL입니다.
     80 - `WIKI_REDIS_USERNAME`: Redis 서버의 사용자 이름입니다.
     81 - `WIKI_REDIS_PASSWORD`: Redis 서버의 비밀번호입니다.
     82 - `WIKI_REDIS_DB`: Redis 서버의 데이터베이스 번호입니다.
     83 
     84 
     85 ### 이벤트 큐 서버 설정
     86 
     87 - `REDIS_URL`: Redis 서버의 URL입니다.
     88 - `REDIS_USERNAME`: Redis 서버의 사용자 이름입니다.
     89 - `REDIS_PASSWORD`: Redis 서버의 비밀번호입니다.
     90 - `REDIS_DB`: Redis 서버의 데이터베이스 번호입니다.
     91 - `WSS_PORT`: 이벤트 큐 소켓 서버의 포트입니다.
     92 
     93 
     94 ## 소스코드 개요
     95 
     96 다음은 소스코드의 간략한 레이아웃 개요입니다.
     97 
     98 - `/`
     99   - `bin/`: 실행 가능한 파일들. 현재는 이벤트 큐 서버 스크립트 하나뿐입니다.
    100   - `components/`: 컴포넌트 폴더
    101   - `docs/`: 개발 관련 문서들
    102   - `lib/`: 기타 소스코드들
    103     - `email/`: 이메일 전송과 관련된 코드들이 들어 있습니다.
    104     - `hooks/`: 커스텀 훅들이 들어 있습니다.
    105     - `markup/`: 마크업 언어 파서와 렌더러 구현이 들어 있습니다.
    106     - `models/`: 데이터베이스 모델들이 들어 있습니다.
    107     - `security/`: 보안 관련 소스코드들이 들어 있습니다.
    108     - `utils/`: 유틸리티 함수들이 들어 있습니다.
    109     - 기타 분류하기 힘든 소스코드들
    110   - `pages/`: 페이지 폴더
    111   - `public/`: 정적 파일들이 들어 있습니다.
    112   - `sql/`: 데이터베이스 스키마와 관련된 SQL 파일들 들어 있습니다.
    113   - `styles/`: 스타일 파일들이 들어 있습니다.