장고 팀 프로젝트(SpartaNews)
S.A문서
1. 개요
프로젝트 이름: Sparta News
목적: IT 산업 뉴비들을 위한 뉴스 및 커뮤니티 플랫폼을 제공합니다. 사용자들은 크롤링된 IT 관련 뉴스를 확인하고, 질문 게시판과 자유 게시판에서 글을 작성하거나 소통할 수 있습니다.
2. 요구 사항
기능적 요구사항:
- 회원가입 없이 뉴스 열람 가능
- 회원가입 후 뉴스, 질문, 자유게시판에 글 작성 및 댓글 작성 가능
- 뉴스 크롤링&업로드 (관리자만 가능)
- 사용자별 역할(관리자, 마스터, 뉴비)에 따른 권한 관리
- 게시글에 '좋아요', '북마크' 기능 제공
- 게시글 조회수에 따른 인기 게시글 표시
비기능적 요구사항:
- 확장성: 향후 새로운 게시판 추가 가능하도록 설계
- 보안: JWT 기반 인증 및 권한 관리
- 성능: 대규모 트래픽을 처리할 수 있는 구조
- 유지보수성: 코드가 쉽게 확장 및 유지보수 가능해야 함
3. 시스템 아키텍처
백엔드 구성:
- Django REST Framework: API 설계를 위한 프레임워크
- SQLite3: 데이터베이스
- BeautifulSoup: 뉴스 크롤링을 위한 라이브러리
- JWT: 사용자 인증을 위한 토큰 방식 인증 시스템
API 엔드포인트:
Tutor's Feedback
엔드포인트 기준으로 API를 작성하는 것이 좋다.
ex. Articles에서 목록조회와 게시글 작성과 같이 같은 url 엔드포인트라면 같이 나열해서 작성해주면 한눈에 보기 좋다.
4. 데이터 아키텍처 (ERD)
주요 테이블:
Articles와 NBCNs 테이블을 구분한 이유,
user의 권한을 구분하여 Articles를 사용할 수 있는 user가 있고, NBCNs 을 사용할 수 있는 user을 구분하기 위해 테이블을 나누었다.
Tutor's Feedback
비슷한 필드를 가지고 있는 테이블일 경우, 나누지 않고 같은 테이블을 사용하는 것이 좋다.
같은 테이블을 사용할 경우, API 작업이나 메소드 작업하기 용이하기 때문에 같은 필드의 테이블은 하나로 묶는 것이 좋다.
그러나 작업 상황에 따라 구분이 필요하다면 그렇게 진행해보고, 이렇게 작업했을 때의 장단점을 기억하고 추후 프로젝트 작업 시, 기호에 따라 필요한 작업을 진행해보면 된다.
5. 애플리케이션 아키텍처
- 프론트엔드: 현재 구현하지 않음. 백엔드 중심의 API 설계 및 통신에 집중.
- 백엔드:
- API 엔드포인트를 통한 CRUD 처리
- 회원 등급에 따라 접근 권한이 나뉘는 구조
- 크롤링된 뉴스는 주기적으로 데이터베이스에 저장
6. 통합 및 인터페이스 (Integration & Interfaces)
- 크롤링 통합: BeautifulSoup을 통해 IT 관련 뉴스 데이터를 주기적으로 크롤링
- REST API: 프론트엔드와의 통신은 JSON 형식으로 데이터를 주고받음
7. 보안 (Security)
- 인증: JWT 토큰을 이용한 사용자 인증
- 비밀번호 암호화: 사용자 비밀번호는 해시화하여 저장
- 역할 기반 권한 관리: 관리자만 뉴스 크롤링 및 관리 기능 사용 가능
와이어프레임
다음은 Sparta News 프로젝트의 백엔드 중심 와이어프레임입니다. API의 구조 및 주요 기능을 보여줍니다.
Tutor's Feedback
페이지별로 여러 와이어프레임을 만드는 것이 좋다.
각 페이지의 기능을 쉽게 알아볼 수 있고, 여러 와이어프레임으로 구분해두어야 작업할 때 서로 의견 충돌이 없다.
'Project' 카테고리의 다른 글
Spartamarket_DRF 장고 개인 과제 (1) | 2024.09.10 |
---|