25.02.21 ~ 25.02.26
LG CNS AM Inspire Camp
미니프로젝트 1 - 1조
현대 사회에서는 뉴스가 빠르게 생산되고 실시간으로 소비되는 경향이 강합니다.
이러한 환경 속에서 사용자가 과거의 중요한 이슈를 되짚어보는 일이 마냥 쉽지만은 않습니다.
이에 저희는 AI를 활용하여 오늘 날짜에 있었던 과거의 핫 뉴스를 제공하는 서비스, Newspace를 개발하였습니다.
|
현민영(팀장) Spring AI(뉴스), 예외처리, 회원/카테고리/키워드/공지 CRUD Spring Cloud Gateway |
구동혁 Jenkins CI/CD, docker-compose, 프로필 이미지 CRUD, Spring Cloud Eureka |
정민석 Spring Security, JWT 토큰-쿠키 처리 로직, 일반로그인, 로그아웃, 회원탈퇴 |
채민주 뉴스, 키워드, 관리자 UI & API 연결 |
유영서 로그인, 회원가입 UI & API 연결 |
.
├── 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
├── 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
│
전체 : 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
https://www.notion.so/LG-CNS-1-19a5254cd716802b823ce385b7c067cf

