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-backend Public

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

    Java 5 3

  2. newspace-frontend newspace-frontend Public

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

    JavaScript 5 2

  3. newspace-deploy newspace-deploy Public

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

    Shell 5 3

  4. newspace-gateway newspace-gateway Public

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

    Java 5 1

  5. newspace-eureka newspace-eureka Public

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

    Java 5 1

  6. .github .github Public

Repositories

Showing 6 of 6 repositories

Top languages

Loading…

Most used topics

Loading…