AI 역문서 · 1D1S-client@ad5edf9 · 1D1S-admin@5dd0cfe · 1D1S-server-v2@23a5ca8 기준 · 코드에서 거꾸로 만든 초안입니다. 근거 링크로 확인하세요.
관련 소스 파일
이 페이지는 테스트 프로젝트를 구성하는 세 레포지터리의 역할과 확인 가능한 기술적 경계를 설명합니다. 대상은 사용자용 웹 서비스인 1D1S-client, 관리자용 웹 애플리케이션인 1D1S-admin, 두 웹 애플리케이션의 백엔드로 사용되는 1D1S-server-v2입니다.
이 페이지에서는 각 레포지터리의 실행 기술, 의존성, 공개된 프로젝트 구조, 백엔드가 지향하는 통신 방식과 저장·보안 관련 기반을 다룹니다. 반면 실제 화면별 기능, 구체적인 API 경로와 요청·응답 DTO, 데이터베이스 테이블 및 도메인별 처리 순서는 제공된 원문에 정의되어 있지 않으므로 확정하지 않습니다.
세 레포지터리의 내부 구조를 자세히 확인하려면 1.2 저장소 구조를 참고합니다. 레포지터리 사이의 REST API, HTTP 요청, WebSocket 연결과 서버 처리 흐름은 1.3 시스템 아키텍처에서 다룹니다. 사용자 기능은 2.1 챌린지 탐색과 참여, 2.3 일지 작성과 조회, 2.5 채팅과 신고, 관리자 웹은 4.2 관리자 콘솔, 서버 계층은 5.1 서버 도메인 계층과 연결됩니다.
제공된 자료만으로는 1D1S-client 또는 1D1S-admin에 실제로 구현된 화면과 호출 API를 특정할 수 없습니다. 따라서 이 페이지의 “사용자 서비스”와 “관리자 기능”은 레포지터리의 역할과 기술적 구성 수준으로 설명하며, 기능별 구현 여부는 확인 필요 사항으로 남깁니다.
출처: README.md:83-126, README.md:9-25
테스트 프로젝트에는 프런트엔드 레포지터리 두 개와 서버 레포지터리 한 개가 있습니다. 두 프런트엔드는 모두 Next.js와 React를 사용하지만, 패키지 이름과 버전, 의존성 구성이 다릅니다. 서버는 Spring Boot 기반 Java 프로젝트이며, README에서 기존 GraphQL 기반 서버를 REST API 기반으로 리팩토링하는 프로젝트라고 설명합니다.
| 구성 요소 | 역할 | 원문에서 확인되는 기술 |
|---|---|---|
1D1S-client | 일반 사용자가 접근하는 웹 클라이언트 | Next.js, React, React Query, Axios, STOMP 클라이언트 |
1D1S-admin | 관리자용 웹 애플리케이션 | Next.js, React, React Query, Axios, React Hook Form |
1D1S-server-v2 | 두 웹 애플리케이션이 사용할 수 있는 REST 기반 서버 프로젝트 | Spring Boot, Spring MVC, Spring Security, JPA, WebSocket, OAuth2, JWT |
1D1S-client의 package.json에는 @tanstack/react-query, axios, @stomp/stompjs가 포함되어 있습니다. 따라서 이 레포지터리는 서버와의 일반 HTTP 요청을 처리할 수 있고, STOMP 클라이언트를 사용한 실시간 연결 코드도 작성할 수 있는 구성입니다. 다만 실제 요청 함수나 구독 대상은 제공된 자료에 없습니다.
1D1S-admin에도 @tanstack/react-query와 axios가 포함되어 있습니다. 따라서 관리자 화면 역시 서버 데이터를 조회하거나 변경하는 클라이언트 계층을 둘 수 있습니다. 그러나 관리자 API의 경로, 인증 방식, 도메인별 메뉴는 원문에서 확인되지 않습니다.
1D1S-server-v2는 spring-boot-starter-web, spring-boot-starter-security, spring-boot-starter-data-jpa, spring-boot-starter-websocket, spring-boot-starter-oauth2-client를 사용합니다. 이 의존성 목록은 REST 웹 요청, 보안, JPA 저장, WebSocket, OAuth2 클라이언트 기능을 위한 기반이 있다는 것을 보여 주지만, 각 기능의 실제 구현 클래스와 적용 범위까지 의미하지는 않습니다.
출처: package.json:1-4, 42-55, package.json:1-4, 17-30, build.gradle:54-64
1D1S-client1D1S-client는 사용자가 브라우저에서 접속하는 Next.js 프로젝트입니다. README는 기본 개발 서버가 http://localhost:3000에서 실행된다고 설명하며, 애플리케이션 라우트와 기능별 코드를 src/app, src/features, src/shared 아래에 배치하는 구조를 제시합니다.
| 영역 | 경로 또는 이름 | 확인되는 책임 |
|---|---|---|
| 라우트 | src/app | Next.js 앱 디렉터리 기반 라우트 |
| 전역 레이아웃 | src/app/layout.tsx | 전역 레이아웃 파일 |
| 홈 진입점 | src/app/page.tsx | 홈 페이지 파일 |
| 기능 영역 | src/features | 기능별 domain, data, presentation 구성 |
| 공유 영역 | src/shared | 공통 컴포넌트, 훅, 타입, 프로바이더, 스타일 |
| 개발 실행 | pnpm dev | scripts/dev-local-start.sh를 통한 개발 실행 |
| 프로덕션 빌드 | pnpm build | next build 실행 |
기능별 데이터 흐름의 구조적 방향은 README에 나타나 있습니다. 각 기능은 domain에 엔티티·리포지터리 인터페이스·유스케이스를 둘 수 있고, data에 리포지터리 구현체와 외부 API 접근 서비스를 둘 수 있으며, presentation에 UI 컴포넌트와 훅을 둡니다. 따라서 확인 가능한 구조는 다음과 같습니다.
src/app의 라우트에 접근합니다.presentation 컴포넌트 또는 훅을 사용할 수 있습니다.presentation 계층은 기능의 유스케이스 또는 데이터 접근 구현체를 연결할 수 있습니다.data 계층의 구현체가 외부 API 클라이언트를 사용해 서버에 요청할 수 있습니다.src/shared의 공통 타입·프로바이더를 통해 재사용될 수 있습니다.위 단계에서 실제로 어떤 훅이 어떤 엔드포인트를 호출하는지는 제공된 파일에 없습니다. 현재 확인할 수 있는 것은 계층의 디렉터리 규칙과 Axios·React Query·STOMP 클라이언트 의존성입니다. 따라서 “챌린지 목록 화면이 특정 API를 호출한다”와 같은 기능 단위 연결은 2.1 챌린지 탐색과 참여 또는 실제 소스 확인이 필요합니다.
출처: README.md:17-18, 83-126, package.json:5-22, 42-55
1D1S-admin1D1S-admin은 별도의 Next.js 애플리케이션으로 관리됩니다. 패키지 이름은 1d1s-admin이고 버전은 0.1.0이며, private 패키지로 선언되어 있습니다. 사용자 클라이언트와 독립된 실행·빌드·린트 스크립트를 가지므로, 관리자 웹은 1D1S-client의 단순한 라우트가 아니라 별도 프런트엔드 레포지터리로 구분됩니다.
| 항목 | 1D1S-admin에서 확인되는 값 |
|---|---|
| 패키지 이름 | 1d1s-admin |
| 프레임워크 | next 16.1.5 |
| UI 런타임 | react 19.2.4, react-dom 19.2.4 |
| 서버 데이터 라이브러리 | @tanstack/react-query |
| HTTP 클라이언트 | axios |
| 폼 처리 | react-hook-form, @hookform/resolvers, zod |
| 개발 실행 | pnpm dev |
| Next.js 직접 실행 | pnpm run dev:next |
| 빌드·실행 | pnpm build, pnpm start |
| 정적 검사 | pnpm lint |
| 별도 검사 | pnpm run check:guide |
의존성으로 볼 때 관리자 애플리케이션은 서버 데이터를 React Query로 관리하고, Axios로 HTTP 요청을 보내며, React Hook Form과 Zod 기반 resolver로 폼 입력을 구성할 수 있습니다. Tiptap 계열 패키지도 포함되어 있어 리치 텍스트 편집기를 사용할 수 있는 기반이 있습니다. 그러나 관리자 로그인 화면, 대시보드, 사용자 관리, 콘텐츠 관리, 상세 모달 등의 실제 컴포넌트 이름은 제공된 원문에 없습니다.
관리자 기능의 레포지터리 경계는 다음처럼 설명할 수 있습니다.
1D1S-admin의 Next.js 애플리케이션에 접속합니다.1D1S-server-v2의 REST API에 HTTP 요청을 보낼 수 있습니다.다만 위 흐름에서 관리자 인증 토큰 전달, 관리자 권한 검증, 실제 관리 대상과 API 이름은 확인되지 않습니다. 서버 README에는 main, dev, test 브랜치가 각각 운영 서버, 테스트 서버, 작업 통합으로 설명되어 있지만, 이것만으로 관리자 애플리케이션이 어느 서버 주소를 사용하는지는 판단할 수 없습니다.
출처: package.json:1-15, 17-42, README.md:67-74
1D1S-server-v21D1S-server-v2는 기존 GraphQL 기반 서버를 REST API 기반으로 리팩토링하는 프로젝트입니다. README의 프로젝트 개요는 GraphQL 코드의 REST API 리팩토링, 협업 규칙 강화, 배포 체계 구축을 주요 내용으로 제시합니다. 따라서 이 레포지터리는 사용자 웹과 관리자 웹에서 공통으로 접근할 수 있는 서버 측 API 프로젝트로 분류할 수 있습니다.
| 서버 기반 | 선언 또는 의존성 | 확인되는 범위 |
|---|---|---|
| 애플리케이션 | Spring Boot 3.5.4 | Spring Boot 기반 서버 |
| 언어 | Java 17 | Gradle toolchain |
| HTTP | spring-boot-starter-web | 웹 요청 처리 기반 |
| 보안 | spring-boot-starter-security | Spring Security 기반 |
| 저장 | spring-boot-starter-data-jpa | JPA 기반 데이터 접근 |
| 실시간 통신 | spring-boot-starter-websocket | WebSocket 기반 |
| 인증 연계 | spring-boot-starter-oauth2-client | OAuth2 클라이언트 기반 |
| 토큰 | jjwt-api, jjwt-impl, jjwt-jackson | JJWT 라이브러리 |
| 파일 저장 연계 | AWS SDK s3 | S3 클라이언트 라이브러리 |
| 스키마 변경 | flyway-core, flyway-database-postgresql | Flyway와 PostgreSQL 모듈 |
| 푸시 | Firebase Admin SDK | FCM 관련 라이브러리 |
서버와 프런트엔드의 연결은 원문에서 “실제 호출 관계”가 아니라 기술적 의존성과 프로젝트 목표로만 확인됩니다. 확정 가능한 수준의 개념 흐름은 다음과 같습니다.
1D1S-client 또는 1D1S-admin이 HTTP 요청을 보낼 수 있습니다.1D1S-server-v2의 Spring Web 기반 애플리케이션이 요청을 받을 수 있습니다.여기서 실제 컨트롤러, 서비스, 리포지터리, 엔티티, URL 경로는 제공되지 않았습니다. 또한 spring-boot-starter-websocket은 포함되어 있지만 실제 STOMP 목적지나 메시지 핸들러가 구현되었다고 단정할 수 없습니다. 이 세부 구조는 5.1 서버 도메인 계층과 1.3 시스템 아키텍처에서 소스 확인을 전제로 정리해야 합니다.
출처: README.md:1-25, build.gradle:1-15, 54-100
세 레포지터리는 각각 독립적인 패키지 및 빌드 설정을 가집니다. 사용자 클라이언트와 관리자 웹은 pnpm 스크립트로 Next.js를 실행하고, 서버는 Gradle과 Spring Boot 플러그인을 사용합니다.
| 레포지터리 | 로컬 실행 | 빌드 | 추가 확인 사항 |
|---|---|---|---|
1D1S-client | pnpm dev | pnpm build | 기본 포트 3000, 로컬 HTTPS 별칭 지원 |
1D1S-admin | pnpm dev | pnpm build | 로컬 HTTPS 별칭 스크립트 제공 |
1D1S-server-v2 | 제공된 원문에 실행 명령 없음 | Gradle 기반으로 추정 가능하나 명령은 확인 필요 | Java 17, Spring Boot 3.5.4 |
1D1S-client는 pnpm dev 실행 시 scripts/dev-local-start.sh를 사용합니다. README에 따르면 이 과정은 /etc/hosts에 local.dev.1day1streak.com을 추가하고, mkcert로 로컬 HTTPS 인증서를 만든 뒤, https://local.dev.1day1streak.com에서 서버를 시작하고 브라우저를 열도록 구성되어 있습니다. 인증 쿠키 이름은 NEXT_PUBLIC_ACCESS_TOKEN_COOKIE_NAME과 NEXT_PUBLIC_REFRESH_TOKEN_COOKIE_NAME으로 설정할 수 있으며, 로컬·개발과 프로덕션의 기본값이 다르게 기술되어 있습니다.
1D1S-admin도 dev-local-start.sh, init-local-dns.sh, init-local-cert.sh 스크립트를 참조하지만, 해당 스크립트의 동작과 관리자용 환경 변수는 원문에 없습니다. 따라서 두 웹 애플리케이션이 동일한 백엔드 주소를 사용하는지, 서로 다른 테스트 서버를 사용하는지는 확인할 수 없습니다.
1D1S-server-v2는 테스트용 의존성으로 Testcontainers PostgreSQL과 H2를 포함하며, PostgreSQL JDBC 드라이버는 런타임 의존성으로 선언되어 있습니다. 그러나 실제 데이터베이스 접속 URL, 계정, 마이그레이션 파일 경로는 제공되지 않았습니다.
출처: README.md:19-62, package.json:5-21, package.json:5-15, build.gradle:68-73, 98-103
다음 항목은 현재 제공된 README와 패키지·빌드 설정만으로는 확정할 수 없습니다.
1D1S-client에서 사용자에게 제공하는 실제 화면 목록과 각 화면의 컴포넌트 이름은 무엇입니까?1D1S-admin의 관리자 로그인, 권한별 기능, 관리 대상 도메인과 화면 경로는 무엇입니까?1D1S-client와 1D1S-admin이 호출하는 실제 REST API의 기본 URL과 엔드포인트는 무엇입니까?1D1S-server-v2의 어떤 컨트롤러를 호출합니까?NEXT_PUBLIC_ACCESS_TOKEN_COOKIE_NAME과 NEXT_PUBLIC_REFRESH_TOKEN_COOKIE_NAME은 클라이언트의 어떤 인증 코드에서 읽고 갱신합니까?spring-boot-starter-data-jpa, S3, FCM 의존성이 현재 어떤 도메인 기능에서 사용됩니까?test 브랜치가 문서에서 말하는 테스트 서버 또는 작업 통합 브랜치와 배포 환경에서 어떻게 연결됩니까?출처: README.md:19-62, 83-126, package.json:1-66, README.md:9-25, 67-74