Skip to content
@newspaceProject

Newspace

LG CNS AM Inspire Camp 팀 프로젝트 1조

newspace-backend


📍 프로젝트 설명

25.02.21 ~ 25.02.26
LG CNS AM Inspire Camp
미니프로젝트 1 - 1조

현대 사회에서는 뉴스가 빠르게 생산되고 실시간으로 소비되는 경향이 강합니다.
이러한 환경 속에서 사용자가 과거의 중요한 이슈를 되짚어보는 일이 마냥 쉽지만은 않습니다.
이에 저희는 AI를 활용하여 오늘 날짜에 있었던 과거의 핫 뉴스를 제공하는 서비스, Newspace를 개발하였습니다.

👩‍💻 Backend 팀원

Avatar
현민영(팀장)
95hyun's GitHub stats
Spring AI(뉴스), 예외처리,
회원/카테고리/키워드/공지 CRUD
Spring Cloud Gateway
Avatar
구동혁
dhku's GitHub stats
Jenkins CI/CD, docker-compose,
프로필 이미지 CRUD,
Spring Cloud Eureka
Avatar
정민석
minnnseokk's GitHub stats
Spring Security,
JWT 토큰-쿠키 처리 로직,
일반로그인, 로그아웃, 회원탈퇴
Avatar
채민주
Minju's GitHub stats
뉴스, 키워드, 관리자 UI & API 연결
Avatar
유영서
Yeongseo's GitHub stats
로그인, 회원가입 UI & API 연결

🛠️ 기술 스택



📂 폴더 구조

backend

.
├── build.gradle
├── gradle
│ └── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── settings.gradle
└── src
├── main
│ ├── java
│ │ └── com
│ │ └── lgcns
│ │ └── newspacebackend
│ │ ├── domain
│ │ │ ├── news
│ │ │ │ ├── controller
│ │ │ │ │ ├── NewsAIController.java
│ │ │ │ │ ├── NewsCategoryController.java
│ │ │ │ │ └── NewsKeywordController.java
│ │ │ │ ├── dto
│ │ │ │ │ ├── NewsCategoryRequestDto.java
│ │ │ │ │ ├── NewsCategoryResponseDto.java
│ │ │ │ │ ├── NewsKeywordRequestDto.java
│ │ │ │ │ ├── NewsKeywordResponseDto.java
│ │ │ │ │ ├── NewsRequestDto.java
│ │ │ │ │ └── NewsResponseDto.java
│ │ │ │ ├── entity
│ │ │ │ │ ├── NewsCategory.java
│ │ │ │ │ └── NewsKeyword.java
│ │ │ │ ├── repository
│ │ │ │ │ ├── NewsCategoryRepository.java
│ │ │ │ │ └── NewsKeywordRepository.java
│ │ │ │ └── service
│ │ │ │ ├── NewsAIService.java
│ │ │ │ ├── NewsCategoryService.java
│ │ │ │ └── NewsKeywordService.java
│ │ │ ├── notice
│ │ │ │ ├── controller
│ │ │ │ │ └── NoticeController.java
│ │ │ │ ├── dto
│ │ │ │ │ ├── NoticeRequestDto.java
│ │ │ │ │ └── NoticeResponseDto.java
│ │ │ │ ├── entity
│ │ │ │ │ └── Notice.java
│ │ │ │ ├── repository
│ │ │ │ │ └── NoticeRepository.java
│ │ │ │ └── service
│ │ │ │ └── NoticeService.java
│ │ │ └── user
│ │ │ ├── controller
│ │ │ │ └── UserController.java
│ │ │ ├── dto
│ │ │ │ ├── LoginRequestDto.java
│ │ │ │ ├── SignupRequestDto.java
│ │ │ │ ├── UserInfoRequestDto.java
│ │ │ │ └── UserInfoResponseDto.java
│ │ │ ├── entity
│ │ │ │ ├── User.java
│ │ │ │ └── UserRole.java
│ │ │ ├── repository
│ │ │ │ └── UserRepository.java
│ │ │ └── service
│ │ │ └── UserService.java
│ │ ├── global
│ │ │ ├── config
│ │ │ │ ├── ChatClientConfig.java
│ │ │ │ ├── PasswordConfig.java
│ │ │ │ └── RestTemplateConfig.java
│ │ │ ├── entity
│ │ │ │ └── TimeStamp.java
│ │ │ ├── security
│ │ │ │ ├── config
│ │ │ │ │ ├── CorsConfig.java
│ │ │ │ │ ├── SecurityConfig.java
│ │ │ │ │ └── WebConfig.java
│ │ │ │ ├── constant
│ │ │ │ │ ├── GrantType.java
│ │ │ │ │ └── TokenType.java
│ │ │ │ ├── dto
│ │ │ │ │ └── JwtTokenInfo.java
│ │ │ │ ├── filter
│ │ │ │ │ ├── JwtAuthenticationFilter.java
│ │ │ │ │ └── JwtAuthorizationFilter.java
│ │ │ │ ├── jwt
│ │ │ │ │ ├── JwtTokenUtil.java
│ │ │ │ │ └── JwtTokenUtilPractice.java
│ │ │ │ ├── UserDetailsImpl.java
│ │ │ │ ├── UserDetailsServiceImpl.java
│ │ │ │ └── util
│ │ │ │ └── FilterResponseUtil.java
│ │ │ └── util
│ │ │ └── FileUtil.java
│ │ └── NewspaceBackendApplication.java
│ └── resources
│ └── static
│ └── profile.png
└── test
└── java
└── com
└── lgcns
└── newspacebackend
└── NewspaceBackendApplicationTests.java

frontend

├── newspace-frontend
│ ├── .metadata
│ ├── .vite
│ ├── node_modules
│ ├── public
│ │ │ ├── src
│ │ ├── api
│ │ │ ├── categoryApi.jsx // 카테고리 API
│ │ │ ├── keywordApi.jsx // 키워드 API
│ │ │ ├── loginApi.jsx // 로그인 API
│ │ │ ├── managerApi.jsx // 관리자 공지 API
│ │ │ ├── newsApi.jsx // AI 뉴스 API
│ │ │ ├── profileApi.jsx // 프로필 사진 API
│ │ │ ├── signupApi.jsx // 회원가입 API
│ │ │ └── userinfoApi.jsx // 회원정보 API
│ │ │ │ │ ├── assets
│ │ │ ├── newspace_logo1.png // newspace 로고1
│ │ │ ├── newspace_logo2.png // newspace 로고2
│ │ │ ├── profile.png // 프로필 디폴트 이미지
│ │ │ └── react.svg // react logo
│ │ │
│ │ ├── context
│ │ │ └── AuthContext.jsx // 로그인 상태 확인 및 사용자 정보 관리
│ │ │
│ │ └── pages
│ │ ├── login
│ │ │ ├── login.css // 로그인 페이지 css
│ │ │ └── login.jsx // 로그인 페이지
│ │ ├── news
│ │ │ ├── article.jsx // 뉴스 기사 컴포넌트
│ │ │ ├── keywords.jsx // 키워드 컴포넌트
│ │ │ ├── newsCategory.jsx // 뉴스 카테고리 목록 페이지
│ │ │ ├── newsDetail.jsx // 뉴스 상세 페이지 │ │ │ ├── newsMain.jsx // 뉴스 메인 페이지
│ │ │ ├── news_s.jsx // 뉴스 메인 스타일
│ │ │ ├── notice.jsx // 관리자 공지 컴포넌트
│ │ │ └── sidebar.jsx // 사이드바 컴포넌트
│ │ │
│ │ │ │ │ ├── signup
│ │ │ ├── signup.css // 회원가입 페이지 css
│ │ │ └── signup.jsx // 회원가입 페이지
│ │ └── user
│ │ ├── editProfile.jsx // 개인정보수정 modal 컴포넌트
│ │ └── userToggle.jsx // 회원 toggle 컴포넌트
│ │ │ ├── App.css
│ ├── App.jsx │ ├── index.css
│ ├── main.jsx
│ ├── .env
│ ├── .gitignore │ ├── eslint.config.js
│ ├── index.html
│ ├── package-lock.json
│ ├── package.json
│ ├── README.md
│ └── vite.config.js
│ 

🏗️ 시스템 아키텍처

image

🦭 ERD

image

📦 Github Repository

전체 : https://github.com/orgs/newspaceProject/repositories
frontend : https://github.com/newspaceProject/newspace-frontend
deploy : https://github.com/newspaceProject/newspace-deploy
Gateway : https://github.com/newspaceProject/newspace-gateway
Eureka : https://github.com/newspaceProject/newspace-eureka

📚 Notion

https://www.notion.so/LG-CNS-1-19a5254cd716802b823ce385b7c067cf

🎨 Figma

https://www.figma.com/design/ZrXlz23EOZntJSC8bKVg39/mini01

📽️ 시연 영상

https://youtu.be/molgJbyQhHA?si=BL7uE3PzWK0G6AHR

Popular repositories Loading

  1. newspace-backend newspace-backendPublic

    AI 기반으로 토픽에 맞는 뉴스를 제공해주는 뉴스페이스 백엔드 레포지토리

    Java 5 3

  2. newspace-frontend newspace-frontendPublic

    뉴스페이스 프론트 레포지토리

    JavaScript 5 2

  3. newspace-deploy newspace-deployPublic

    뉴스페이스 배포 레포지토리

    Shell 5 3

  4. newspace-gateway newspace-gatewayPublic

    뉴스페이스 게이트웨이 레포지토리

    Java 5 1

  5. newspace-eureka newspace-eurekaPublic

    뉴스페이스 유레카 레포지토리

    Java 5 1

  6. .github .githubPublic

Repositories

Showing 6 of 6 repositories

Top languages

Loading…

Most used topics

Loading…