https://github.com/winverse/anonymous-board
https://github.com/winverse/anonymous-board
Last synced: 7 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/winverse/anonymous-board
- Owner: winverse
- Created: 2025-05-01T13:16:18.000Z (21 days ago)
- Default Branch: main
- Last Pushed: 2025-05-01T13:40:38.000Z (21 days ago)
- Last Synced: 2025-05-01T14:27:29.888Z (21 days ago)
- Language: TypeScript
- Size: 140 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# 댓글 기능이 있는 익명 게시판 및 키워드 알림 API
Node.js(TypeScript, NestJS) 기반의 익명 게시판 및 키워드 알림 기능 API 서버입니다.
## 주요 기능
**게시판**
* 익명 게시글 작성, 조회, 수정, 삭제 (CRUD)
* 게시글 작성 시 비밀번호 입력 및 수정/삭제 시 비밀번호 검증
* 제목, 작성자 기반 게시글 검색
* 게시글 목록 페이징
* 댓글 작성 (대댓글 지원, 최대 깊이 제한)
* 댓글 목록 조회 (페이징)**키워드 알림**
* 특정 키워드가 포함된 게시글 또는 댓글 작성 시 해당 키워드를 등록한 사용자에게 알림 발송 (실제 발송 로직 제외, 알림 데이터 생성)
* 키워드 알림 테이블 관리 (작성자, 키워드)## 기술 스택
* **언어:** TypeScript
* **프레임워크:** Node.js, NestJS
* **데이터베이스:** MySQL
* **ORM:** Prisma
* **비밀번호 해싱:** Argon2
* **유효성 검사:** class-validator, class-transformer
* **설정 관리:** @nestjs/config, Zod
* **API 문서:** Swagger (개발 환경)
* **Build:** swc
* **Module:** esm## 사전 준비 사항
* Node.js (권장 버전: 20.x 이상)
- 22.14(O), 20.11(O), 18.16(X)
* pnpm
* MySQL 데이터베이스 서버## 설치 및 실행
1. **저장소 복제:**
```bash
git clone https://github.com/winverse/anonymous-board.git
cd anonymous-board
```2. **의존성 설치:**
```bash
pnpm install
```3. **환경 변수 설정:**
* mysql에 접속 후 `CREATE DATABASE {데이터베이스명};` 을 실행 시켜 DB를 생성 해주세요.
* 프로젝트 루트에 `env` 디렉토리를 생성합니다.
* `env` 디렉토리 내부에 `.env.development` 파일을 생성하고 아래 내용을 작성합니다.```env
# .env.development
PORT=8000
DATABASE_URL="mysql://user:password@localhost:3306/mydatabase"
# 예시: mysql://사용자명:비밀번호@호스트:포트/데이터베이스명
```* `DATABASE_URL`을 실제 데이터베이스 환경에 맞게 수정하세요.
4. **데이터베이스 마이그레이션:**
```bash
pnpm prisma:db:push
```
* Prisma를 사용하여 데이터베이스 스키마를 생성하고 동기화합니다.
* 위 명령어는 `prisma/schema.prisma` 파일을 기반으로 SQL 마이그레이션 파일을 생성하고 데이터베이스에 적용합니다.```bash
pnpm prisma:generate
```
* 위 명령어는 `prisma/schema.prisma` 파일을 기반으로 타입스크립트에서 사용할 Prisma Client 코드를 생성/업데이트합니다.5. **애플리케이션 실행:**
```bash
pnpm dev
```
* 개발 모드 실행6. **Swagger API 문서 확인**
* 애플리케이션 실행 후, 웹 브라우저에서 `http://localhost:{PORT}/api/documentation` 주소로 접속합니다. (PORT는 `.env` 파일에 설정한 값)
* development 환경에서만 동작 합니다.## 테스트 실행
```bash
pnpm test
```## TO-DO
- [x] DB 스키마 생성 스크립트
- [x] 게시글 목록 API
- [x] 게시글 작성 API
- [x] 게시글 수정 API
- [x] 게시글 삭제 API
- [x] 댓글 목록 API
- [x] 댓글 작성 API
- [x] 게시물 또는 댓글 등록 시 알림 기능 구현