Team_Mate/Scheme

백엔드 작업 순서

_HelloWorld_ 2024. 12. 19. 09:16

대략적인 작업 순서 [ 백엔드 ]

## 백엔드 구현 순서

- [ ] **기본 환경 설정**
  - 프로젝트 초기화 (NestJS 설정, 필요한 라이브러리 설치)
  - 데이터베이스 설계 (예: PostgreSQL, MongoDB 등)
    - [] 사용자 테이블
    - 게시글 테이블
    - 댓글 테이블
    - 태그 테이블

- [ ] **사용자 관리 기능**
  - [ ] 회원 가입/로그인 API: 이메일 인증, JWT를 이용한 세션 관리
  - [ ] 프로필 관리 API: 사용자 정보 수정, 비밀번호 변경
  - [ ] 소셜 로그인 API: OAuth2 (Google, GitHub 등)

- [ ] **콘텐츠 관리 (글 작성 및 수정)**
  - [ ] 글 작성/편집 API: 글의 제목, 본문, 태그, 카테고리 등 저장
  - [ ] 글 목록 조회 API: 게시글 목록을 페이지네이션으로 제공
  - [ ] 글 상세 조회 API: 특정 게시글의 세부 정보를 제공

- [ ] **댓글 및 피드백**
  - [ ] 댓글 CRUD API: 댓글 작성, 수정, 삭제
  - [ ] 좋아요 및 북마크 기능 API: 글에 좋아요 또는 북마크한 상태 저장

- [ ] **탐색 및 추천**
  - [ ] 검색 API: 제목, 태그, 본문으로 검색 (全文검색 사용)
  - [ ] 추천 및 인기 글 API: 조회수, 좋아요 수를 기준으로 글 추천
  - [ ] 필터링 API: 날짜, 인기, 카테고리 등으로 글 필터링

- [ ] **관리자 대시보드**
  - [ ] 관리자 사용자 관리 API: 사용자 권한 관리 (비활성화, 삭제 등)
  - [ ] 게시글 관리 API: 글 검토, 수정, 삭제
  - [ ] 통계 API: 글 조회수, 댓글 수, 사용자 활동 통계 제공

- [ ] **알림 시스템 (후속 작업)**
  - [ ] 이메일 알림 API: 댓글, 좋아요, 새로운 글에 대한 이메일 알림 발송
  - [ ] 푸시 알림 API: 실시간 푸시 알림 발송 (Web Push 사용)

- [ ] **SEO 및 최적화**
  - [ ] SEO 메타 정보 API: 각 게시글에 대해 SEO 최적화된 메타 정보 제공
  - [ ] 자동 URL 슬러그 생성: URL이 직관적이고 검색에 최적화되도록 처리

- [ ] **성능 최적화 및 보안**
  - [ ] API 성능 최적화: 캐싱, 데이터베이스 최적화
  - [ ] 보안: JWT 인증, CORS 처리, 입력 검증 및 SQL Injection 방지

---

작업 순서 [ 데이터베이스 ]

# 데이터베이스 테이블 설계 작업 순서

## 1. 사용자 관리 테이블 설정

- [x] **사용자 테이블 (Users)**: 사용자의 기본 정보와 계정 관리를 위한 테이블을 생성합니다.
  - `id`, `email`, `password_hash`, `username`, `profile_picture`, `bio`, `created_at`, `updated_at` 필드 추가

## 2. 게시글 관리 테이블 설정

- [ ] **게시글 테이블 (Posts)**: 사용자가 작성한 게시글을 관리합니다.
  - `id`, `user_id`, `title`, `content`, `slug`, `created_at`, `updated_at`, `status` 필드 추가
  - `user_id``users` 테이블의 외래키로 연결

## 3. 댓글 관리 테이블 설정

- [ ] **댓글 테이블 (Comments)**: 게시글에 달린 댓글을 관리합니다.
  - `id`, `post_id`, `user_id`, `content`, `created_at`, `updated_at` 필드 추가
  - `post_id``posts` 테이블의 외래키로 연결
  - `user_id``users` 테이블의 외래키로 연결

## 4. 태그 관리 테이블 설정

- [ ] **태그 테이블 (Tags)**: 게시글에 태그를 붙여서 분류하고 검색할 수 있도록 관리합니다.
  - `id`, `name`, `created_at` 필드 추가

## 5. 게시글-태그 다대다 관계 테이블 설정

- [ ] **게시글-태그 관계 테이블 (Post_Tags)**: 게시글과 태그 간의 다대다 관계를 처리하는 테이블을 생성합니다.
  - `post_id`, `tag_id` 필드 추가
  - `post_id``posts` 테이블의 외래키, `tag_id``tags` 테이블의 외래키로 연결
  - `post_id`, `tag_id` 합성 Primary Key 설정

## 6. 좋아요 관리 테이블 설정

- [ ] **좋아요 테이블 (Likes)**: 게시글에 대한 좋아요를 관리합니다.
  - `id`, `post_id`, `user_id`, `created_at` 필드 추가
  - `post_id``posts` 테이블의 외래키, `user_id``users` 테이블의 외래키로 연결

## 7. 북마크 관리 테이블 설정

- [ ] **북마크 테이블 (Bookmarks)**: 사용자가 북마크한 게시글을 관리합니다.
  - `id`, `post_id`, `user_id`, `created_at` 필드 추가
  - `post_id``posts` 테이블의 외래키, `user_id``users` 테이블의 외래키로 연결

## 8. 알림 관리 테이블 설정

- [ ] **알림 테이블 (Notifications)**: 사용자에게 전달할 알림을 관리합니다.
  - `id`, `user_id`, `type`, `message`, `read`, `created_at` 필드 추가
  - `user_id``users` 테이블의 외래키로 연결

## 9. 관리자 작업 테이블 설정

- [ ] **관리자 작업 테이블 (Admin Actions)**: 관리자가 게시글 및 사용자 관리 작업을 기록합니다.
  - `id`, `user_id`, `action`, `created_at` 필드 추가
  - `user_id``users` 테이블의 외래키로 연결

---

## 우선순위 및 진행 순서

1. 사용자 관련 테이블부터 시작하여 사용자 인증 및 계정 관리 기능을 구현합니다.
2. 게시글 및 댓글 관리 기능을 설정하여 콘텐츠 생성 및 관리가 가능하게 만듭니다.
3. 태그 및 게시글-태그 관계 테이블을 설정하여 콘텐츠의 분류 및 검색을 지원합니다.
4. 좋아요 및 북마크 기능을 통해 사용자 피드백 기능을 추가합니다.
5. 알림 테이블을 설정하여 사용자에게 알림을 제공하는 시스템을 구축합니다.
6. 관리 작업 테이블을 추가하여 관리자가 사용자 및 콘텐츠를 관리할 수 있도록 합니다.

'Team_Mate > Scheme' 카테고리의 다른 글

DBdiagram.io 데이터베이스 ERD 툴  (2) 2024.12.19