diff --git a/.claude/commands/create-domain.md b/.claude/commands/create-domain.md index 3369b8b..837d05a 100644 --- a/.claude/commands/create-domain.md +++ b/.claude/commands/create-domain.md @@ -24,7 +24,7 @@ ## 생성할 파일 목록 ### 1. Entity -`src/main/java/com/opensource/docgrid/domain/{domain}/entity/{Domain}.java` +`backend/src/main/java/com/opensource/docgrid/domain/{domain}/entity/{Domain}.java` ```java package com.opensource.docgrid.domain.{domain}.entity; @@ -48,7 +48,7 @@ public class {Domain} extends BaseEntity { ``` ### 2. Repository -`src/main/java/com/opensource/docgrid/domain/{domain}/repository/{Domain}Repository.java` +`backend/src/main/java/com/opensource/docgrid/domain/{domain}/repository/{Domain}Repository.java` ```java package com.opensource.docgrid.domain.{domain}.repository; @@ -61,7 +61,7 @@ public interface {Domain}Repository extends JpaRepository<{Domain}, Long> { ``` ### 3. QueryService -`src/main/java/com/opensource/docgrid/domain/{domain}/service/query/{Domain}QueryService.java` +`backend/src/main/java/com/opensource/docgrid/domain/{domain}/service/query/{Domain}QueryService.java` ```java package com.opensource.docgrid.domain.{domain}.service.query; @@ -91,7 +91,7 @@ public class {Domain}QueryService { ``` ### 4. CommandService -`src/main/java/com/opensource/docgrid/domain/{domain}/service/command/{Domain}CommandService.java` +`backend/src/main/java/com/opensource/docgrid/domain/{domain}/service/command/{Domain}CommandService.java` ```java package com.opensource.docgrid.domain.{domain}.service.command; @@ -111,7 +111,7 @@ public class {Domain}CommandService { ``` ### 5. Controller -`src/main/java/com/opensource/docgrid/domain/{domain}/controller/{Domain}Controller.java` +`backend/src/main/java/com/opensource/docgrid/domain/{domain}/controller/{Domain}Controller.java` ```java package com.opensource.docgrid.domain.{domain}.controller; @@ -135,7 +135,7 @@ public class {Domain}Controller { ``` ### 6. Request DTO -`src/main/java/com/opensource/docgrid/domain/{domain}/dto/request/{Domain}Request.java` +`backend/src/main/java/com/opensource/docgrid/domain/{domain}/dto/request/{Domain}Request.java` ```java package com.opensource.docgrid.domain.{domain}.dto.request; @@ -145,7 +145,7 @@ public record {Domain}Request() { ``` ### 7. Response DTO -`src/main/java/com/opensource/docgrid/domain/{domain}/dto/response/{Domain}Response.java` +`backend/src/main/java/com/opensource/docgrid/domain/{domain}/dto/response/{Domain}Response.java` ```java package com.opensource.docgrid.domain.{domain}.dto.response; @@ -155,7 +155,7 @@ public record {Domain}Response() { ``` ### 8. Converter -`src/main/java/com/opensource/docgrid/domain/{domain}/converter/{Domain}Converter.java` +`backend/src/main/java/com/opensource/docgrid/domain/{domain}/converter/{Domain}Converter.java` ```java package com.opensource.docgrid.domain.{domain}.converter; diff --git a/.claude/rules/db-migration.md b/.claude/rules/db-migration.md index f6a1361..91e39d6 100644 --- a/.claude/rules/db-migration.md +++ b/.claude/rules/db-migration.md @@ -1,5 +1,5 @@ --- -globs: "src/main/resources/db/migration/**" +globs: "backend/src/main/resources/db/migration/**" --- # DB 마이그레이션 규칙 diff --git a/.claude/rules/docs-management.md b/.claude/rules/docs-management.md index 5ada567..8341a08 100644 --- a/.claude/rules/docs-management.md +++ b/.claude/rules/docs-management.md @@ -14,4 +14,4 @@ globs: "docs/**/*.md" - 위치: `docs/test-results/` - 파일명: 설계 문서와 동일한 이름 사용 - 기능 머지 후 **별도 테스트 이슈**로 분리해서 작성 -- 반드시 포함: 정상 케이스 + 에러 케이스 **최소 1개** 시나리오, `./gradlew test` 결과 +- 반드시 포함: 정상 케이스 + 에러 케이스 **최소 1개** 시나리오, `./backend/gradlew -p backend test` 결과 diff --git a/.claude/rules/git-conventions.md b/.claude/rules/git-conventions.md index b9d5c56..7a282b4 100644 --- a/.claude/rules/git-conventions.md +++ b/.claude/rules/git-conventions.md @@ -23,11 +23,11 @@ ## 빌드 ```bash -./gradlew build -x test # CI용 (테스트 제외) -./gradlew build # 전체 빌드 + 테스트 +./backend/gradlew -p backend build -x test # CI용 (테스트 제외) +./backend/gradlew -p backend build # 전체 빌드 + 테스트 ``` ## 트러블슈팅 - LazyInitializationException: 트랜잭션 범위 밖 연관관계 접근, JOIN FETCH 추가 - PostgreSQL 연결 실패: `application-local.yml` DB 설정 및 PostgreSQL 실행 여부 확인 -- 빌드 실패: `./gradlew clean build` 후 재시도 +- 빌드 실패: `./backend/gradlew -p backend clean build` 후 재시도 diff --git a/.claude/rules/testing_guide.md b/.claude/rules/testing_guide.md index ef619cc..e0ff20b 100644 --- a/.claude/rules/testing_guide.md +++ b/.claude/rules/testing_guide.md @@ -1,5 +1,5 @@ --- -globs: "src/test/**/*.java" +globs: "backend/src/test/**/*.java" --- # 테스트 컨벤션 @@ -48,7 +48,7 @@ class XxxServiceTest { ``` ## Fixture 클래스 -- 위치: `src/test/java/com/opensource/docgrid/{domain}/fixture/` +- 위치: `backend/src/test/java/com/opensource/docgrid/{domain}/fixture/` - 상수: `public static final` - 팩토리 메서드: `public static` @@ -71,4 +71,4 @@ public class XxxFixture { class XxxIntegrationTest { } ``` - 반드시 `@Tag("integration")` 추가 -- `./gradlew test -Dgroups=integration` 으로 분리 실행 +- `./backend/gradlew -p backend test -Dgroups=integration` 으로 분리 실행 diff --git a/.claude/settings.json b/.claude/settings.json index 77aef90..fc2ec1d 100644 --- a/.claude/settings.json +++ b/.claude/settings.json @@ -44,9 +44,9 @@ "Bash(find:*)", "Bash(grep:*)", "Bash(ls:*)", - "Bash(./gradlew compileJava:*)", - "Bash(./gradlew build -x test:*)", - "Bash(./gradlew test:*)" + "Bash(./backend/gradlew -p backend compileJava:*)", + "Bash(./backend/gradlew -p backend build -x test:*)", + "Bash(./backend/gradlew -p backend test:*)" ] } } diff --git a/.coderabbit.yaml b/.coderabbit.yaml index 5c52307..5dba096 100644 --- a/.coderabbit.yaml +++ b/.coderabbit.yaml @@ -12,9 +12,9 @@ reviews: enabled: true drafts: false path_instructions: - - path: "src/main/java/**/*.java" + - path: "backend/src/main/java/**/*.java" instructions: "SOLID 원칙, 스프링 어노테이션, 의존성 주입 패턴, 예외 처리에 중점을 둔다" - - path: "src/test/**/*.java" + - path: "backend/src/test/**/*.java" instructions: "테스트 커버리지, 스프링 테스트 어노테이션, mock 사용법, 네이밍 규칙을 확인한다" - path: "**/*.{yml,yaml,properties}" instructions: "스프링 설정, 보안 설정, DB 연결, 환경 설정을 검증한다" diff --git a/.gitattributes b/.gitattributes index 8af972c..958d54a 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,3 +1,3 @@ -/gradlew text eol=lf +/backend/gradlew text eol=lf *.bat text eol=crlf *.jar binary diff --git a/AGENTS.md b/AGENTS.md index e70b2a8..674c7a7 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -42,7 +42,7 @@ Don't assume. Don't hide confusion. Surface tradeoffs. ### 🔵 작업 직전 항상 - 프로젝트 구조 → 이 파일 (AGENTS.md) -- 도메인 목록 → `src/main/java/com/opensource/docgrid/domain/` +- 도메인 목록 → `backend/src/main/java/com/opensource/docgrid/domain/` ### 🟢 상황별 룰 (`.Codex/rules/`) — 자동 로드됨 - Java 코드 작성 시 → `code_style.md` @@ -67,7 +67,7 @@ Don't assume. Don't hide confusion. Surface tradeoffs. ## 프로젝트 구조 ``` -src/main/java/com/opensource/docgrid/ +backend/src/main/java/com/opensource/docgrid/ ├── global/ │ ├── common/ # 공통 응답 (ApiResponse, ErrorResponse, BaseEntity) │ ├── config/ # 설정 (SecurityConfig, CorsConfig, SwaggerConfig) @@ -90,10 +90,10 @@ src/main/java/com/opensource/docgrid/ ## 주요 명령어 ```bash -./gradlew build -./gradlew clean build -./gradlew build -x test -./gradlew test +./backend/gradlew -p backend build +./backend/gradlew -p backend clean build +./backend/gradlew -p backend build -x test +./backend/gradlew -p backend test ``` --- diff --git a/CLAUDE.md b/CLAUDE.md index 5094f7c..463973c 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -28,7 +28,7 @@ Don't assume. Don't hide confusion. Surface tradeoffs. ### 🔵 작업 직전 항상 - 프로젝트 구조 → 이 파일 (CLAUDE.md) -- 도메인 목록 → `src/main/java/com/opensource/docgrid/domain/` +- 도메인 목록 → `backend/src/main/java/com/opensource/docgrid/domain/` ### 🟢 상황별 룰 (`.claude/rules/`) — 자동 로드됨 - 항상 로드 → `git-conventions.md` (브랜치·커밋·환경설정) @@ -58,7 +58,7 @@ Don't assume. Don't hide confusion. Surface tradeoffs. ## 프로젝트 구조 ``` -src/main/java/com/opensource/docgrid/ +backend/src/main/java/com/opensource/docgrid/ ├── global/ │ ├── common/ # 공통 응답 (ApiResponse, ErrorResponse, BaseEntity) │ ├── config/ # 설정 (SecurityConfig, CorsConfig, SwaggerConfig) @@ -87,10 +87,10 @@ docs/ ## 주요 명령어 ```bash -./gradlew build -./gradlew clean build -./gradlew build -x test -./gradlew test +./backend/gradlew -p backend build +./backend/gradlew -p backend clean build +./backend/gradlew -p backend build -x test +./backend/gradlew -p backend test ``` --- diff --git a/README.md b/README.md index a9199ed..c043f34 100644 --- a/README.md +++ b/README.md @@ -1,53 +1,51 @@ -# DocGrid Backend +# DocGrid -## Local DB +DocGrid는 문서 업로드·인덱싱·검색과 웹 인터페이스를 하나의 저장소에서 관리하는 모노레포입니다. -로컬 개발 DB는 Docker Compose로 실행합니다. 기본 이미지는 PostgreSQL 17과 pgvector 0.8.1을 -함께 제공하는 `pgvector/pgvector:0.8.1-pg17`입니다. +## 저장소 구조 + +```text +. +├── backend/ # Spring Boot API와 임베딩 서버 +├── frontend/ # DocGrid 웹 애플리케이션 +├── docs/ # 설계 문서와 실행된 테스트 결과 +├── docker/ # 로컬 인프라 초기화 파일 +├── scripts/ # 프로젝트 공용 검증·보고 스크립트 +└── docker-compose.yml +``` + +## 빠른 시작 + +### 로컬 인프라 ```bash cp .env.example .env docker compose pull postgres docker compose up -d --wait --wait-timeout 60 postgres -docker compose ps postgres -./gradlew bootRun --args='--spring.profiles.active=local' ``` -`docker compose up --wait`가 PostgreSQL의 `healthy` 상태를 확인한 뒤에만 Application을 -기동한다. - -DB 기본 접속 정보는 `localhost:55432`, database `app`, user `app`입니다. 로컬 기본 -`DB_SSLMODE`는 `disable`이며 실제 비밀번호와 운영 접속정보는 환경변수로 주입합니다. +### 백엔드 -PostgreSQL 17은 `docgrid_postgres17_data` 전용 볼륨을 사용합니다. 기존 PostgreSQL 14 -`opensql_data` 볼륨을 재사용하거나 자동 삭제하지 않습니다. +```bash +./backend/gradlew -p backend bootRun --args='--spring.profiles.active=local' +``` -자세한 내용은 [docs/local-db.md](docs/local-db.md)를 참고하세요. +자세한 백엔드 실행 방법은 [backend/README.md](backend/README.md)를 참고하세요. -## 임베딩 서버 +### 프론트엔드 -문서 청크/질의를 벡터로 변환하는 FastAPI + sentence-transformers 서버입니다. 이미지가 자체 빌드 대상이라 최초 1회 build가 필요합니다. +Node.js 22.13.0 이상이 필요합니다. ```bash -docker compose build embedding-server -docker compose up -d embedding-server +npm --prefix frontend install +npm --prefix frontend run dev ``` -- 첫 실행 시 `BAAI/bge-m3` 모델 다운로드로 약 10~15분 소요됩니다 (약 3GB). -- `docker logs -f docgrid-embedding`으로 진행 상태를 확인할 수 있습니다. -- 모델 로딩이 끝나기 전까지 `GET /health`는 503을 반환합니다. 200이 될 때까지 대기 후 사용하세요. -- 기본 접속 정보는 `http://localhost:8000`이며, Spring Boot에서는 `EMBEDDING_SERVER_URL` 환경변수로 오버라이드할 수 있습니다. +자세한 프론트엔드 실행 방법은 [frontend/README.md](frontend/README.md)를 참고하세요. -## Ollama (RAG LLM 서버) - -RAG 답변 생성에 사용하는 로컬 LLM(`qwen2.5:3b`) 서버입니다. 공식 이미지를 그대로 사용하므로 별도 build 없이 실행만 하면 됩니다. +## 검증 ```bash -docker compose up -d ollama -docker compose exec ollama ollama pull qwen2.5:3b -docker compose exec ollama ollama run qwen2.5:3b "안녕" +./backend/gradlew -p backend test +npm --prefix frontend test ``` - -- `pull`은 최초 1회만 필요합니다 (약 2GB, `ollama-data` 볼륨에 캐시되어 이후 재구동 시 재다운로드하지 않습니다). -- 정상 응답이 텍스트로 출력되면 준비 완료입니다. -- 기본 접속 정보는 `http://localhost:11434`이며, Spring Boot에서는 `OLLAMA_SERVER_URL` 환경변수로 오버라이드할 수 있습니다. diff --git a/backend/README.md b/backend/README.md new file mode 100644 index 0000000..99aa224 --- /dev/null +++ b/backend/README.md @@ -0,0 +1,55 @@ +# DocGrid Backend + +Spring Boot 백엔드와 문서 임베딩 서버는 `backend/`에서 관리합니다. 아래 명령은 저장소 루트에서 실행합니다. + +## Local DB + +로컬 개발 DB는 Docker Compose로 실행합니다. 기본 이미지는 PostgreSQL 17과 pgvector 0.8.1을 +함께 제공하는 `pgvector/pgvector:0.8.1-pg17`입니다. + +```bash +cp .env.example .env +docker compose pull postgres +docker compose up -d --wait --wait-timeout 60 postgres +docker compose ps postgres +./backend/gradlew -p backend bootRun --args='--spring.profiles.active=local' +``` + +`docker compose up --wait`가 PostgreSQL의 `healthy` 상태를 확인한 뒤에만 Application을 +기동한다. + +DB 기본 접속 정보는 `localhost:55432`, database `app`, user `app`입니다. 로컬 기본 +`DB_SSLMODE`는 `disable`이며 실제 비밀번호와 운영 접속정보는 환경변수로 주입합니다. + +PostgreSQL 17은 `docgrid_postgres17_data` 전용 볼륨을 사용합니다. 기존 PostgreSQL 14 +`opensql_data` 볼륨을 재사용하거나 자동 삭제하지 않습니다. + +자세한 내용은 [로컬 DB 실행 문서](../docs/local-db.md)를 참고하세요. + +## 임베딩 서버 + +문서 청크/질의를 벡터로 변환하는 FastAPI + sentence-transformers 서버입니다. 이미지가 자체 빌드 대상이라 최초 1회 build가 필요합니다. + +```bash +docker compose build embedding-server +docker compose up -d embedding-server +``` + +- 첫 실행 시 `BAAI/bge-m3` 모델 다운로드로 약 10~15분 소요됩니다 (약 3GB). +- `docker logs -f docgrid-embedding`으로 진행 상태를 확인할 수 있습니다. +- 모델 로딩이 끝나기 전까지 `GET /health`는 503을 반환합니다. 200이 될 때까지 대기 후 사용하세요. +- 기본 접속 정보는 `http://localhost:8000`이며, Spring Boot에서는 `EMBEDDING_SERVER_URL` 환경변수로 오버라이드할 수 있습니다. + +## Ollama (RAG LLM 서버) + +RAG 답변 생성에 사용하는 로컬 LLM(`qwen2.5:3b`) 서버입니다. 공식 이미지를 그대로 사용하므로 별도 build 없이 실행만 하면 됩니다. + +```bash +docker compose up -d ollama +docker compose exec ollama ollama pull qwen2.5:3b +docker compose exec ollama ollama run qwen2.5:3b "안녕" +``` + +- `pull`은 최초 1회만 필요합니다 (약 2GB, `ollama-data` 볼륨에 캐시되어 이후 재구동 시 재다운로드하지 않습니다). +- 정상 응답이 텍스트로 출력되면 준비 완료입니다. +- 기본 접속 정보는 `http://localhost:11434`이며, Spring Boot에서는 `OLLAMA_SERVER_URL` 환경변수로 오버라이드할 수 있습니다. diff --git a/build.gradle b/backend/build.gradle similarity index 98% rename from build.gradle rename to backend/build.gradle index ae2903a..2408ab1 100644 --- a/build.gradle +++ b/backend/build.gradle @@ -58,6 +58,11 @@ tasks.named('test') { } } +tasks.named('bootRun') { + // 모노레포 루트의 .env와 Docker Compose 설정을 기존 로컬 실행 방식 그대로 사용한다. + workingDir rootProject.projectDir.parentFile +} + tasks.register('localE2eTest', Test) { group = 'verification' description = '실제 PostgreSQL, MinIO와 BGE-M3를 연결한 로컬 문서 인덱싱 E2E를 실행합니다.' diff --git a/embedding-server/Dockerfile b/backend/embedding-server/Dockerfile similarity index 100% rename from embedding-server/Dockerfile rename to backend/embedding-server/Dockerfile diff --git a/embedding-server/benchmark_batch_size.py b/backend/embedding-server/benchmark_batch_size.py similarity index 100% rename from embedding-server/benchmark_batch_size.py rename to backend/embedding-server/benchmark_batch_size.py diff --git a/embedding-server/main.py b/backend/embedding-server/main.py similarity index 100% rename from embedding-server/main.py rename to backend/embedding-server/main.py diff --git a/embedding-server/requirements-test.txt b/backend/embedding-server/requirements-test.txt similarity index 100% rename from embedding-server/requirements-test.txt rename to backend/embedding-server/requirements-test.txt diff --git a/embedding-server/requirements.txt b/backend/embedding-server/requirements.txt similarity index 100% rename from embedding-server/requirements.txt rename to backend/embedding-server/requirements.txt diff --git a/embedding-server/test_benchmark_batch_size.py b/backend/embedding-server/test_benchmark_batch_size.py similarity index 100% rename from embedding-server/test_benchmark_batch_size.py rename to backend/embedding-server/test_benchmark_batch_size.py diff --git a/embedding-server/test_main.py b/backend/embedding-server/test_main.py similarity index 100% rename from embedding-server/test_main.py rename to backend/embedding-server/test_main.py diff --git a/gradle/wrapper/gradle-wrapper.jar b/backend/gradle/wrapper/gradle-wrapper.jar similarity index 100% rename from gradle/wrapper/gradle-wrapper.jar rename to backend/gradle/wrapper/gradle-wrapper.jar diff --git a/gradle/wrapper/gradle-wrapper.properties b/backend/gradle/wrapper/gradle-wrapper.properties similarity index 100% rename from gradle/wrapper/gradle-wrapper.properties rename to backend/gradle/wrapper/gradle-wrapper.properties diff --git a/gradlew b/backend/gradlew similarity index 100% rename from gradlew rename to backend/gradlew diff --git a/gradlew.bat b/backend/gradlew.bat similarity index 100% rename from gradlew.bat rename to backend/gradlew.bat diff --git a/settings.gradle b/backend/settings.gradle similarity index 100% rename from settings.gradle rename to backend/settings.gradle diff --git a/src/main/java/com/opensource/docgrid/DocgridApplication.java b/backend/src/main/java/com/opensource/docgrid/DocgridApplication.java similarity index 100% rename from src/main/java/com/opensource/docgrid/DocgridApplication.java rename to backend/src/main/java/com/opensource/docgrid/DocgridApplication.java diff --git a/src/main/java/com/opensource/docgrid/domain/auth/annotation/CurrentUser.java b/backend/src/main/java/com/opensource/docgrid/domain/auth/annotation/CurrentUser.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/auth/annotation/CurrentUser.java rename to backend/src/main/java/com/opensource/docgrid/domain/auth/annotation/CurrentUser.java diff --git a/src/main/java/com/opensource/docgrid/domain/auth/controller/AuthController.java b/backend/src/main/java/com/opensource/docgrid/domain/auth/controller/AuthController.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/auth/controller/AuthController.java rename to backend/src/main/java/com/opensource/docgrid/domain/auth/controller/AuthController.java diff --git a/src/main/java/com/opensource/docgrid/domain/auth/dto/request/LoginRequest.java b/backend/src/main/java/com/opensource/docgrid/domain/auth/dto/request/LoginRequest.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/auth/dto/request/LoginRequest.java rename to backend/src/main/java/com/opensource/docgrid/domain/auth/dto/request/LoginRequest.java diff --git a/src/main/java/com/opensource/docgrid/domain/auth/dto/request/SignupRequest.java b/backend/src/main/java/com/opensource/docgrid/domain/auth/dto/request/SignupRequest.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/auth/dto/request/SignupRequest.java rename to backend/src/main/java/com/opensource/docgrid/domain/auth/dto/request/SignupRequest.java diff --git a/src/main/java/com/opensource/docgrid/domain/auth/dto/response/LoginResponse.java b/backend/src/main/java/com/opensource/docgrid/domain/auth/dto/response/LoginResponse.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/auth/dto/response/LoginResponse.java rename to backend/src/main/java/com/opensource/docgrid/domain/auth/dto/response/LoginResponse.java diff --git a/src/main/java/com/opensource/docgrid/domain/auth/dto/response/MeResponse.java b/backend/src/main/java/com/opensource/docgrid/domain/auth/dto/response/MeResponse.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/auth/dto/response/MeResponse.java rename to backend/src/main/java/com/opensource/docgrid/domain/auth/dto/response/MeResponse.java diff --git a/src/main/java/com/opensource/docgrid/domain/auth/dto/response/SignupResponse.java b/backend/src/main/java/com/opensource/docgrid/domain/auth/dto/response/SignupResponse.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/auth/dto/response/SignupResponse.java rename to backend/src/main/java/com/opensource/docgrid/domain/auth/dto/response/SignupResponse.java diff --git a/src/main/java/com/opensource/docgrid/domain/auth/jwt/JwtAuthenticationFilter.java b/backend/src/main/java/com/opensource/docgrid/domain/auth/jwt/JwtAuthenticationFilter.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/auth/jwt/JwtAuthenticationFilter.java rename to backend/src/main/java/com/opensource/docgrid/domain/auth/jwt/JwtAuthenticationFilter.java diff --git a/src/main/java/com/opensource/docgrid/domain/auth/jwt/JwtProvider.java b/backend/src/main/java/com/opensource/docgrid/domain/auth/jwt/JwtProvider.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/auth/jwt/JwtProvider.java rename to backend/src/main/java/com/opensource/docgrid/domain/auth/jwt/JwtProvider.java diff --git a/src/main/java/com/opensource/docgrid/domain/auth/jwt/StompAuthChannelInterceptor.java b/backend/src/main/java/com/opensource/docgrid/domain/auth/jwt/StompAuthChannelInterceptor.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/auth/jwt/StompAuthChannelInterceptor.java rename to backend/src/main/java/com/opensource/docgrid/domain/auth/jwt/StompAuthChannelInterceptor.java diff --git a/src/main/java/com/opensource/docgrid/domain/auth/resolver/CurrentUserArgumentResolver.java b/backend/src/main/java/com/opensource/docgrid/domain/auth/resolver/CurrentUserArgumentResolver.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/auth/resolver/CurrentUserArgumentResolver.java rename to backend/src/main/java/com/opensource/docgrid/domain/auth/resolver/CurrentUserArgumentResolver.java diff --git a/src/main/java/com/opensource/docgrid/domain/auth/service/command/AuthCommandService.java b/backend/src/main/java/com/opensource/docgrid/domain/auth/service/command/AuthCommandService.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/auth/service/command/AuthCommandService.java rename to backend/src/main/java/com/opensource/docgrid/domain/auth/service/command/AuthCommandService.java diff --git a/src/main/java/com/opensource/docgrid/domain/auth/service/query/AuthQueryService.java b/backend/src/main/java/com/opensource/docgrid/domain/auth/service/query/AuthQueryService.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/auth/service/query/AuthQueryService.java rename to backend/src/main/java/com/opensource/docgrid/domain/auth/service/query/AuthQueryService.java diff --git a/src/main/java/com/opensource/docgrid/domain/collection/controller/CollectionController.java b/backend/src/main/java/com/opensource/docgrid/domain/collection/controller/CollectionController.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/collection/controller/CollectionController.java rename to backend/src/main/java/com/opensource/docgrid/domain/collection/controller/CollectionController.java diff --git a/src/main/java/com/opensource/docgrid/domain/collection/converter/CollectionConverter.java b/backend/src/main/java/com/opensource/docgrid/domain/collection/converter/CollectionConverter.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/collection/converter/CollectionConverter.java rename to backend/src/main/java/com/opensource/docgrid/domain/collection/converter/CollectionConverter.java diff --git a/src/main/java/com/opensource/docgrid/domain/collection/dto/request/AddDocumentRequest.java b/backend/src/main/java/com/opensource/docgrid/domain/collection/dto/request/AddDocumentRequest.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/collection/dto/request/AddDocumentRequest.java rename to backend/src/main/java/com/opensource/docgrid/domain/collection/dto/request/AddDocumentRequest.java diff --git a/src/main/java/com/opensource/docgrid/domain/collection/dto/request/CreateCollectionRequest.java b/backend/src/main/java/com/opensource/docgrid/domain/collection/dto/request/CreateCollectionRequest.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/collection/dto/request/CreateCollectionRequest.java rename to backend/src/main/java/com/opensource/docgrid/domain/collection/dto/request/CreateCollectionRequest.java diff --git a/src/main/java/com/opensource/docgrid/domain/collection/dto/response/CollectionDocumentResponse.java b/backend/src/main/java/com/opensource/docgrid/domain/collection/dto/response/CollectionDocumentResponse.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/collection/dto/response/CollectionDocumentResponse.java rename to backend/src/main/java/com/opensource/docgrid/domain/collection/dto/response/CollectionDocumentResponse.java diff --git a/src/main/java/com/opensource/docgrid/domain/collection/dto/response/CollectionResponse.java b/backend/src/main/java/com/opensource/docgrid/domain/collection/dto/response/CollectionResponse.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/collection/dto/response/CollectionResponse.java rename to backend/src/main/java/com/opensource/docgrid/domain/collection/dto/response/CollectionResponse.java diff --git a/src/main/java/com/opensource/docgrid/domain/collection/entity/CollectionDocument.java b/backend/src/main/java/com/opensource/docgrid/domain/collection/entity/CollectionDocument.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/collection/entity/CollectionDocument.java rename to backend/src/main/java/com/opensource/docgrid/domain/collection/entity/CollectionDocument.java diff --git a/src/main/java/com/opensource/docgrid/domain/collection/entity/DocumentCollection.java b/backend/src/main/java/com/opensource/docgrid/domain/collection/entity/DocumentCollection.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/collection/entity/DocumentCollection.java rename to backend/src/main/java/com/opensource/docgrid/domain/collection/entity/DocumentCollection.java diff --git a/src/main/java/com/opensource/docgrid/domain/collection/enums/CollectionStatus.java b/backend/src/main/java/com/opensource/docgrid/domain/collection/enums/CollectionStatus.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/collection/enums/CollectionStatus.java rename to backend/src/main/java/com/opensource/docgrid/domain/collection/enums/CollectionStatus.java diff --git a/src/main/java/com/opensource/docgrid/domain/collection/repository/CollectionDocumentRepository.java b/backend/src/main/java/com/opensource/docgrid/domain/collection/repository/CollectionDocumentRepository.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/collection/repository/CollectionDocumentRepository.java rename to backend/src/main/java/com/opensource/docgrid/domain/collection/repository/CollectionDocumentRepository.java diff --git a/src/main/java/com/opensource/docgrid/domain/collection/repository/CollectionRepository.java b/backend/src/main/java/com/opensource/docgrid/domain/collection/repository/CollectionRepository.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/collection/repository/CollectionRepository.java rename to backend/src/main/java/com/opensource/docgrid/domain/collection/repository/CollectionRepository.java diff --git a/src/main/java/com/opensource/docgrid/domain/collection/service/command/CollectionCommandService.java b/backend/src/main/java/com/opensource/docgrid/domain/collection/service/command/CollectionCommandService.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/collection/service/command/CollectionCommandService.java rename to backend/src/main/java/com/opensource/docgrid/domain/collection/service/command/CollectionCommandService.java diff --git a/src/main/java/com/opensource/docgrid/domain/collection/service/query/CollectionQueryService.java b/backend/src/main/java/com/opensource/docgrid/domain/collection/service/query/CollectionQueryService.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/collection/service/query/CollectionQueryService.java rename to backend/src/main/java/com/opensource/docgrid/domain/collection/service/query/CollectionQueryService.java diff --git a/src/main/java/com/opensource/docgrid/domain/dashboard/config/DashboardSchedulingConfig.java b/backend/src/main/java/com/opensource/docgrid/domain/dashboard/config/DashboardSchedulingConfig.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/dashboard/config/DashboardSchedulingConfig.java rename to backend/src/main/java/com/opensource/docgrid/domain/dashboard/config/DashboardSchedulingConfig.java diff --git a/src/main/java/com/opensource/docgrid/domain/dashboard/controller/DashboardController.java b/backend/src/main/java/com/opensource/docgrid/domain/dashboard/controller/DashboardController.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/dashboard/controller/DashboardController.java rename to backend/src/main/java/com/opensource/docgrid/domain/dashboard/controller/DashboardController.java diff --git a/src/main/java/com/opensource/docgrid/domain/dashboard/controller/DashboardWebSocketController.java b/backend/src/main/java/com/opensource/docgrid/domain/dashboard/controller/DashboardWebSocketController.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/dashboard/controller/DashboardWebSocketController.java rename to backend/src/main/java/com/opensource/docgrid/domain/dashboard/controller/DashboardWebSocketController.java diff --git a/src/main/java/com/opensource/docgrid/domain/dashboard/controller/EmbeddingJobRetryController.java b/backend/src/main/java/com/opensource/docgrid/domain/dashboard/controller/EmbeddingJobRetryController.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/dashboard/controller/EmbeddingJobRetryController.java rename to backend/src/main/java/com/opensource/docgrid/domain/dashboard/controller/EmbeddingJobRetryController.java diff --git a/src/main/java/com/opensource/docgrid/domain/dashboard/dto/response/DashboardSummaryResponse.java b/backend/src/main/java/com/opensource/docgrid/domain/dashboard/dto/response/DashboardSummaryResponse.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/dashboard/dto/response/DashboardSummaryResponse.java rename to backend/src/main/java/com/opensource/docgrid/domain/dashboard/dto/response/DashboardSummaryResponse.java diff --git a/src/main/java/com/opensource/docgrid/domain/dashboard/dto/response/DocumentsSummaryResponse.java b/backend/src/main/java/com/opensource/docgrid/domain/dashboard/dto/response/DocumentsSummaryResponse.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/dashboard/dto/response/DocumentsSummaryResponse.java rename to backend/src/main/java/com/opensource/docgrid/domain/dashboard/dto/response/DocumentsSummaryResponse.java diff --git a/src/main/java/com/opensource/docgrid/domain/dashboard/dto/response/JobsSummaryResponse.java b/backend/src/main/java/com/opensource/docgrid/domain/dashboard/dto/response/JobsSummaryResponse.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/dashboard/dto/response/JobsSummaryResponse.java rename to backend/src/main/java/com/opensource/docgrid/domain/dashboard/dto/response/JobsSummaryResponse.java diff --git a/src/main/java/com/opensource/docgrid/domain/dashboard/dto/response/RetryAllJobsResponse.java b/backend/src/main/java/com/opensource/docgrid/domain/dashboard/dto/response/RetryAllJobsResponse.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/dashboard/dto/response/RetryAllJobsResponse.java rename to backend/src/main/java/com/opensource/docgrid/domain/dashboard/dto/response/RetryAllJobsResponse.java diff --git a/src/main/java/com/opensource/docgrid/domain/dashboard/dto/response/SearchSummaryResponse.java b/backend/src/main/java/com/opensource/docgrid/domain/dashboard/dto/response/SearchSummaryResponse.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/dashboard/dto/response/SearchSummaryResponse.java rename to backend/src/main/java/com/opensource/docgrid/domain/dashboard/dto/response/SearchSummaryResponse.java diff --git a/src/main/java/com/opensource/docgrid/domain/dashboard/dto/response/WorkersSummaryResponse.java b/backend/src/main/java/com/opensource/docgrid/domain/dashboard/dto/response/WorkersSummaryResponse.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/dashboard/dto/response/WorkersSummaryResponse.java rename to backend/src/main/java/com/opensource/docgrid/domain/dashboard/dto/response/WorkersSummaryResponse.java diff --git a/src/main/java/com/opensource/docgrid/domain/dashboard/event/DashboardPushScheduler.java b/backend/src/main/java/com/opensource/docgrid/domain/dashboard/event/DashboardPushScheduler.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/dashboard/event/DashboardPushScheduler.java rename to backend/src/main/java/com/opensource/docgrid/domain/dashboard/event/DashboardPushScheduler.java diff --git a/src/main/java/com/opensource/docgrid/domain/dashboard/event/DashboardUpdateFlag.java b/backend/src/main/java/com/opensource/docgrid/domain/dashboard/event/DashboardUpdateFlag.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/dashboard/event/DashboardUpdateFlag.java rename to backend/src/main/java/com/opensource/docgrid/domain/dashboard/event/DashboardUpdateFlag.java diff --git a/src/main/java/com/opensource/docgrid/domain/dashboard/event/EmbeddingJobStatusChangedEventListener.java b/backend/src/main/java/com/opensource/docgrid/domain/dashboard/event/EmbeddingJobStatusChangedEventListener.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/dashboard/event/EmbeddingJobStatusChangedEventListener.java rename to backend/src/main/java/com/opensource/docgrid/domain/dashboard/event/EmbeddingJobStatusChangedEventListener.java diff --git a/src/main/java/com/opensource/docgrid/domain/dashboard/service/command/EmbeddingJobRetryService.java b/backend/src/main/java/com/opensource/docgrid/domain/dashboard/service/command/EmbeddingJobRetryService.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/dashboard/service/command/EmbeddingJobRetryService.java rename to backend/src/main/java/com/opensource/docgrid/domain/dashboard/service/command/EmbeddingJobRetryService.java diff --git a/src/main/java/com/opensource/docgrid/domain/dashboard/service/query/DashboardQueryService.java b/backend/src/main/java/com/opensource/docgrid/domain/dashboard/service/query/DashboardQueryService.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/dashboard/service/query/DashboardQueryService.java rename to backend/src/main/java/com/opensource/docgrid/domain/dashboard/service/query/DashboardQueryService.java diff --git a/src/main/java/com/opensource/docgrid/domain/dashboard/websocket/DashboardSubscriptionAuthorizationInterceptor.java b/backend/src/main/java/com/opensource/docgrid/domain/dashboard/websocket/DashboardSubscriptionAuthorizationInterceptor.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/dashboard/websocket/DashboardSubscriptionAuthorizationInterceptor.java rename to backend/src/main/java/com/opensource/docgrid/domain/dashboard/websocket/DashboardSubscriptionAuthorizationInterceptor.java diff --git a/src/main/java/com/opensource/docgrid/domain/document/config/DocumentChunkingProperties.java b/backend/src/main/java/com/opensource/docgrid/domain/document/config/DocumentChunkingProperties.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/document/config/DocumentChunkingProperties.java rename to backend/src/main/java/com/opensource/docgrid/domain/document/config/DocumentChunkingProperties.java diff --git a/src/main/java/com/opensource/docgrid/domain/document/config/DocumentUploadProperties.java b/backend/src/main/java/com/opensource/docgrid/domain/document/config/DocumentUploadProperties.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/document/config/DocumentUploadProperties.java rename to backend/src/main/java/com/opensource/docgrid/domain/document/config/DocumentUploadProperties.java diff --git a/src/main/java/com/opensource/docgrid/domain/document/controller/DocumentQueryController.java b/backend/src/main/java/com/opensource/docgrid/domain/document/controller/DocumentQueryController.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/document/controller/DocumentQueryController.java rename to backend/src/main/java/com/opensource/docgrid/domain/document/controller/DocumentQueryController.java diff --git a/src/main/java/com/opensource/docgrid/domain/document/controller/DocumentUploadController.java b/backend/src/main/java/com/opensource/docgrid/domain/document/controller/DocumentUploadController.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/document/controller/DocumentUploadController.java rename to backend/src/main/java/com/opensource/docgrid/domain/document/controller/DocumentUploadController.java diff --git a/src/main/java/com/opensource/docgrid/domain/document/converter/DocumentStatusConverter.java b/backend/src/main/java/com/opensource/docgrid/domain/document/converter/DocumentStatusConverter.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/document/converter/DocumentStatusConverter.java rename to backend/src/main/java/com/opensource/docgrid/domain/document/converter/DocumentStatusConverter.java diff --git a/src/main/java/com/opensource/docgrid/domain/document/converter/DocumentSummaryConverter.java b/backend/src/main/java/com/opensource/docgrid/domain/document/converter/DocumentSummaryConverter.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/document/converter/DocumentSummaryConverter.java rename to backend/src/main/java/com/opensource/docgrid/domain/document/converter/DocumentSummaryConverter.java diff --git a/src/main/java/com/opensource/docgrid/domain/document/dto/request/DocumentUploadRequest.java b/backend/src/main/java/com/opensource/docgrid/domain/document/dto/request/DocumentUploadRequest.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/document/dto/request/DocumentUploadRequest.java rename to backend/src/main/java/com/opensource/docgrid/domain/document/dto/request/DocumentUploadRequest.java diff --git a/src/main/java/com/opensource/docgrid/domain/document/dto/request/DocumentVersionUploadRequest.java b/backend/src/main/java/com/opensource/docgrid/domain/document/dto/request/DocumentVersionUploadRequest.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/document/dto/request/DocumentVersionUploadRequest.java rename to backend/src/main/java/com/opensource/docgrid/domain/document/dto/request/DocumentVersionUploadRequest.java diff --git a/src/main/java/com/opensource/docgrid/domain/document/dto/response/CurrentVersionStatusResponse.java b/backend/src/main/java/com/opensource/docgrid/domain/document/dto/response/CurrentVersionStatusResponse.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/document/dto/response/CurrentVersionStatusResponse.java rename to backend/src/main/java/com/opensource/docgrid/domain/document/dto/response/CurrentVersionStatusResponse.java diff --git a/src/main/java/com/opensource/docgrid/domain/document/dto/response/DocumentStatusResponse.java b/backend/src/main/java/com/opensource/docgrid/domain/document/dto/response/DocumentStatusResponse.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/document/dto/response/DocumentStatusResponse.java rename to backend/src/main/java/com/opensource/docgrid/domain/document/dto/response/DocumentStatusResponse.java diff --git a/src/main/java/com/opensource/docgrid/domain/document/dto/response/DocumentSummaryResponse.java b/backend/src/main/java/com/opensource/docgrid/domain/document/dto/response/DocumentSummaryResponse.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/document/dto/response/DocumentSummaryResponse.java rename to backend/src/main/java/com/opensource/docgrid/domain/document/dto/response/DocumentSummaryResponse.java diff --git a/src/main/java/com/opensource/docgrid/domain/document/dto/response/DocumentUploadResponse.java b/backend/src/main/java/com/opensource/docgrid/domain/document/dto/response/DocumentUploadResponse.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/document/dto/response/DocumentUploadResponse.java rename to backend/src/main/java/com/opensource/docgrid/domain/document/dto/response/DocumentUploadResponse.java diff --git a/src/main/java/com/opensource/docgrid/domain/document/dto/response/DocumentVersionUploadResponse.java b/backend/src/main/java/com/opensource/docgrid/domain/document/dto/response/DocumentVersionUploadResponse.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/document/dto/response/DocumentVersionUploadResponse.java rename to backend/src/main/java/com/opensource/docgrid/domain/document/dto/response/DocumentVersionUploadResponse.java diff --git a/src/main/java/com/opensource/docgrid/domain/document/dto/response/ProcessingVersionStatusResponse.java b/backend/src/main/java/com/opensource/docgrid/domain/document/dto/response/ProcessingVersionStatusResponse.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/document/dto/response/ProcessingVersionStatusResponse.java rename to backend/src/main/java/com/opensource/docgrid/domain/document/dto/response/ProcessingVersionStatusResponse.java diff --git a/src/main/java/com/opensource/docgrid/domain/document/entity/Document.java b/backend/src/main/java/com/opensource/docgrid/domain/document/entity/Document.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/document/entity/Document.java rename to backend/src/main/java/com/opensource/docgrid/domain/document/entity/Document.java diff --git a/src/main/java/com/opensource/docgrid/domain/document/entity/DocumentChunk.java b/backend/src/main/java/com/opensource/docgrid/domain/document/entity/DocumentChunk.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/document/entity/DocumentChunk.java rename to backend/src/main/java/com/opensource/docgrid/domain/document/entity/DocumentChunk.java diff --git a/src/main/java/com/opensource/docgrid/domain/document/entity/DocumentVersion.java b/backend/src/main/java/com/opensource/docgrid/domain/document/entity/DocumentVersion.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/document/entity/DocumentVersion.java rename to backend/src/main/java/com/opensource/docgrid/domain/document/entity/DocumentVersion.java diff --git a/src/main/java/com/opensource/docgrid/domain/document/entity/FileObject.java b/backend/src/main/java/com/opensource/docgrid/domain/document/entity/FileObject.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/document/entity/FileObject.java rename to backend/src/main/java/com/opensource/docgrid/domain/document/entity/FileObject.java diff --git a/src/main/java/com/opensource/docgrid/domain/document/enums/DocumentSourceType.java b/backend/src/main/java/com/opensource/docgrid/domain/document/enums/DocumentSourceType.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/document/enums/DocumentSourceType.java rename to backend/src/main/java/com/opensource/docgrid/domain/document/enums/DocumentSourceType.java diff --git a/src/main/java/com/opensource/docgrid/domain/document/enums/DocumentStatus.java b/backend/src/main/java/com/opensource/docgrid/domain/document/enums/DocumentStatus.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/document/enums/DocumentStatus.java rename to backend/src/main/java/com/opensource/docgrid/domain/document/enums/DocumentStatus.java diff --git a/src/main/java/com/opensource/docgrid/domain/document/enums/DocumentType.java b/backend/src/main/java/com/opensource/docgrid/domain/document/enums/DocumentType.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/document/enums/DocumentType.java rename to backend/src/main/java/com/opensource/docgrid/domain/document/enums/DocumentType.java diff --git a/src/main/java/com/opensource/docgrid/domain/document/enums/DocumentVersionStatus.java b/backend/src/main/java/com/opensource/docgrid/domain/document/enums/DocumentVersionStatus.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/document/enums/DocumentVersionStatus.java rename to backend/src/main/java/com/opensource/docgrid/domain/document/enums/DocumentVersionStatus.java diff --git a/src/main/java/com/opensource/docgrid/domain/document/enums/StorageProvider.java b/backend/src/main/java/com/opensource/docgrid/domain/document/enums/StorageProvider.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/document/enums/StorageProvider.java rename to backend/src/main/java/com/opensource/docgrid/domain/document/enums/StorageProvider.java diff --git a/src/main/java/com/opensource/docgrid/domain/document/enums/VisibilityType.java b/backend/src/main/java/com/opensource/docgrid/domain/document/enums/VisibilityType.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/document/enums/VisibilityType.java rename to backend/src/main/java/com/opensource/docgrid/domain/document/enums/VisibilityType.java diff --git a/src/main/java/com/opensource/docgrid/domain/document/repository/DocumentChunkRepository.java b/backend/src/main/java/com/opensource/docgrid/domain/document/repository/DocumentChunkRepository.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/document/repository/DocumentChunkRepository.java rename to backend/src/main/java/com/opensource/docgrid/domain/document/repository/DocumentChunkRepository.java diff --git a/src/main/java/com/opensource/docgrid/domain/document/repository/DocumentRepository.java b/backend/src/main/java/com/opensource/docgrid/domain/document/repository/DocumentRepository.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/document/repository/DocumentRepository.java rename to backend/src/main/java/com/opensource/docgrid/domain/document/repository/DocumentRepository.java diff --git a/src/main/java/com/opensource/docgrid/domain/document/repository/DocumentStatusProjection.java b/backend/src/main/java/com/opensource/docgrid/domain/document/repository/DocumentStatusProjection.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/document/repository/DocumentStatusProjection.java rename to backend/src/main/java/com/opensource/docgrid/domain/document/repository/DocumentStatusProjection.java diff --git a/src/main/java/com/opensource/docgrid/domain/document/repository/DocumentVersionRepository.java b/backend/src/main/java/com/opensource/docgrid/domain/document/repository/DocumentVersionRepository.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/document/repository/DocumentVersionRepository.java rename to backend/src/main/java/com/opensource/docgrid/domain/document/repository/DocumentVersionRepository.java diff --git a/src/main/java/com/opensource/docgrid/domain/document/repository/FileObjectRepository.java b/backend/src/main/java/com/opensource/docgrid/domain/document/repository/FileObjectRepository.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/document/repository/FileObjectRepository.java rename to backend/src/main/java/com/opensource/docgrid/domain/document/repository/FileObjectRepository.java diff --git a/src/main/java/com/opensource/docgrid/domain/document/service/DocumentChunkDraft.java b/backend/src/main/java/com/opensource/docgrid/domain/document/service/DocumentChunkDraft.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/document/service/DocumentChunkDraft.java rename to backend/src/main/java/com/opensource/docgrid/domain/document/service/DocumentChunkDraft.java diff --git a/src/main/java/com/opensource/docgrid/domain/document/service/DocumentContentParser.java b/backend/src/main/java/com/opensource/docgrid/domain/document/service/DocumentContentParser.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/document/service/DocumentContentParser.java rename to backend/src/main/java/com/opensource/docgrid/domain/document/service/DocumentContentParser.java diff --git a/src/main/java/com/opensource/docgrid/domain/document/service/DocumentParserRegistry.java b/backend/src/main/java/com/opensource/docgrid/domain/document/service/DocumentParserRegistry.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/document/service/DocumentParserRegistry.java rename to backend/src/main/java/com/opensource/docgrid/domain/document/service/DocumentParserRegistry.java diff --git a/src/main/java/com/opensource/docgrid/domain/document/service/DocumentParsingService.java b/backend/src/main/java/com/opensource/docgrid/domain/document/service/DocumentParsingService.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/document/service/DocumentParsingService.java rename to backend/src/main/java/com/opensource/docgrid/domain/document/service/DocumentParsingService.java diff --git a/src/main/java/com/opensource/docgrid/domain/document/service/DocumentUploadFacade.java b/backend/src/main/java/com/opensource/docgrid/domain/document/service/DocumentUploadFacade.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/document/service/DocumentUploadFacade.java rename to backend/src/main/java/com/opensource/docgrid/domain/document/service/DocumentUploadFacade.java diff --git a/src/main/java/com/opensource/docgrid/domain/document/service/DocumentVersionUploadFacade.java b/backend/src/main/java/com/opensource/docgrid/domain/document/service/DocumentVersionUploadFacade.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/document/service/DocumentVersionUploadFacade.java rename to backend/src/main/java/com/opensource/docgrid/domain/document/service/DocumentVersionUploadFacade.java diff --git a/src/main/java/com/opensource/docgrid/domain/document/service/DocxDocumentParser.java b/backend/src/main/java/com/opensource/docgrid/domain/document/service/DocxDocumentParser.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/document/service/DocxDocumentParser.java rename to backend/src/main/java/com/opensource/docgrid/domain/document/service/DocxDocumentParser.java diff --git a/src/main/java/com/opensource/docgrid/domain/document/service/FileHashService.java b/backend/src/main/java/com/opensource/docgrid/domain/document/service/FileHashService.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/document/service/FileHashService.java rename to backend/src/main/java/com/opensource/docgrid/domain/document/service/FileHashService.java diff --git a/src/main/java/com/opensource/docgrid/domain/document/service/FileValidationService.java b/backend/src/main/java/com/opensource/docgrid/domain/document/service/FileValidationService.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/document/service/FileValidationService.java rename to backend/src/main/java/com/opensource/docgrid/domain/document/service/FileValidationService.java diff --git a/src/main/java/com/opensource/docgrid/domain/document/service/FixedSizeChunker.java b/backend/src/main/java/com/opensource/docgrid/domain/document/service/FixedSizeChunker.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/document/service/FixedSizeChunker.java rename to backend/src/main/java/com/opensource/docgrid/domain/document/service/FixedSizeChunker.java diff --git a/src/main/java/com/opensource/docgrid/domain/document/service/ParsedDocument.java b/backend/src/main/java/com/opensource/docgrid/domain/document/service/ParsedDocument.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/document/service/ParsedDocument.java rename to backend/src/main/java/com/opensource/docgrid/domain/document/service/ParsedDocument.java diff --git a/src/main/java/com/opensource/docgrid/domain/document/service/ParsedDocumentSegment.java b/backend/src/main/java/com/opensource/docgrid/domain/document/service/ParsedDocumentSegment.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/document/service/ParsedDocumentSegment.java rename to backend/src/main/java/com/opensource/docgrid/domain/document/service/ParsedDocumentSegment.java diff --git a/src/main/java/com/opensource/docgrid/domain/document/service/PdfDocumentParser.java b/backend/src/main/java/com/opensource/docgrid/domain/document/service/PdfDocumentParser.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/document/service/PdfDocumentParser.java rename to backend/src/main/java/com/opensource/docgrid/domain/document/service/PdfDocumentParser.java diff --git a/src/main/java/com/opensource/docgrid/domain/document/service/TextDocumentParser.java b/backend/src/main/java/com/opensource/docgrid/domain/document/service/TextDocumentParser.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/document/service/TextDocumentParser.java rename to backend/src/main/java/com/opensource/docgrid/domain/document/service/TextDocumentParser.java diff --git a/src/main/java/com/opensource/docgrid/domain/document/service/ValidatedFile.java b/backend/src/main/java/com/opensource/docgrid/domain/document/service/ValidatedFile.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/document/service/ValidatedFile.java rename to backend/src/main/java/com/opensource/docgrid/domain/document/service/ValidatedFile.java diff --git a/src/main/java/com/opensource/docgrid/domain/document/service/command/DocumentChunkTransactionService.java b/backend/src/main/java/com/opensource/docgrid/domain/document/service/command/DocumentChunkTransactionService.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/document/service/command/DocumentChunkTransactionService.java rename to backend/src/main/java/com/opensource/docgrid/domain/document/service/command/DocumentChunkTransactionService.java diff --git a/src/main/java/com/opensource/docgrid/domain/document/service/command/DocumentUploadCommand.java b/backend/src/main/java/com/opensource/docgrid/domain/document/service/command/DocumentUploadCommand.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/document/service/command/DocumentUploadCommand.java rename to backend/src/main/java/com/opensource/docgrid/domain/document/service/command/DocumentUploadCommand.java diff --git a/src/main/java/com/opensource/docgrid/domain/document/service/command/DocumentUploadService.java b/backend/src/main/java/com/opensource/docgrid/domain/document/service/command/DocumentUploadService.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/document/service/command/DocumentUploadService.java rename to backend/src/main/java/com/opensource/docgrid/domain/document/service/command/DocumentUploadService.java diff --git a/src/main/java/com/opensource/docgrid/domain/document/service/command/DocumentUploadTransactionResult.java b/backend/src/main/java/com/opensource/docgrid/domain/document/service/command/DocumentUploadTransactionResult.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/document/service/command/DocumentUploadTransactionResult.java rename to backend/src/main/java/com/opensource/docgrid/domain/document/service/command/DocumentUploadTransactionResult.java diff --git a/src/main/java/com/opensource/docgrid/domain/document/service/command/DocumentVersionUploadCommand.java b/backend/src/main/java/com/opensource/docgrid/domain/document/service/command/DocumentVersionUploadCommand.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/document/service/command/DocumentVersionUploadCommand.java rename to backend/src/main/java/com/opensource/docgrid/domain/document/service/command/DocumentVersionUploadCommand.java diff --git a/src/main/java/com/opensource/docgrid/domain/document/service/command/DocumentVersionUploadService.java b/backend/src/main/java/com/opensource/docgrid/domain/document/service/command/DocumentVersionUploadService.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/document/service/command/DocumentVersionUploadService.java rename to backend/src/main/java/com/opensource/docgrid/domain/document/service/command/DocumentVersionUploadService.java diff --git a/src/main/java/com/opensource/docgrid/domain/document/service/command/DocumentVersionUploadTransactionResult.java b/backend/src/main/java/com/opensource/docgrid/domain/document/service/command/DocumentVersionUploadTransactionResult.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/document/service/command/DocumentVersionUploadTransactionResult.java rename to backend/src/main/java/com/opensource/docgrid/domain/document/service/command/DocumentVersionUploadTransactionResult.java diff --git a/src/main/java/com/opensource/docgrid/domain/document/service/command/FileObjectResolutionService.java b/backend/src/main/java/com/opensource/docgrid/domain/document/service/command/FileObjectResolutionService.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/document/service/command/FileObjectResolutionService.java rename to backend/src/main/java/com/opensource/docgrid/domain/document/service/command/FileObjectResolutionService.java diff --git a/src/main/java/com/opensource/docgrid/domain/document/service/query/DocumentIndexingStageQueryService.java b/backend/src/main/java/com/opensource/docgrid/domain/document/service/query/DocumentIndexingStageQueryService.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/document/service/query/DocumentIndexingStageQueryService.java rename to backend/src/main/java/com/opensource/docgrid/domain/document/service/query/DocumentIndexingStageQueryService.java diff --git a/src/main/java/com/opensource/docgrid/domain/document/service/query/DocumentQueryService.java b/backend/src/main/java/com/opensource/docgrid/domain/document/service/query/DocumentQueryService.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/document/service/query/DocumentQueryService.java rename to backend/src/main/java/com/opensource/docgrid/domain/document/service/query/DocumentQueryService.java diff --git a/src/main/java/com/opensource/docgrid/domain/document/storage/FileStorageService.java b/backend/src/main/java/com/opensource/docgrid/domain/document/storage/FileStorageService.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/document/storage/FileStorageService.java rename to backend/src/main/java/com/opensource/docgrid/domain/document/storage/FileStorageService.java diff --git a/src/main/java/com/opensource/docgrid/domain/document/storage/MinioStorageService.java b/backend/src/main/java/com/opensource/docgrid/domain/document/storage/MinioStorageService.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/document/storage/MinioStorageService.java rename to backend/src/main/java/com/opensource/docgrid/domain/document/storage/MinioStorageService.java diff --git a/src/main/java/com/opensource/docgrid/domain/document/storage/StoredFile.java b/backend/src/main/java/com/opensource/docgrid/domain/document/storage/StoredFile.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/document/storage/StoredFile.java rename to backend/src/main/java/com/opensource/docgrid/domain/document/storage/StoredFile.java diff --git a/src/main/java/com/opensource/docgrid/domain/embedding/client/EmbeddingClient.java b/backend/src/main/java/com/opensource/docgrid/domain/embedding/client/EmbeddingClient.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/embedding/client/EmbeddingClient.java rename to backend/src/main/java/com/opensource/docgrid/domain/embedding/client/EmbeddingClient.java diff --git a/src/main/java/com/opensource/docgrid/domain/embedding/config/EmbeddingBatchProperties.java b/backend/src/main/java/com/opensource/docgrid/domain/embedding/config/EmbeddingBatchProperties.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/embedding/config/EmbeddingBatchProperties.java rename to backend/src/main/java/com/opensource/docgrid/domain/embedding/config/EmbeddingBatchProperties.java diff --git a/src/main/java/com/opensource/docgrid/domain/embedding/controller/EmbeddingModelController.java b/backend/src/main/java/com/opensource/docgrid/domain/embedding/controller/EmbeddingModelController.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/embedding/controller/EmbeddingModelController.java rename to backend/src/main/java/com/opensource/docgrid/domain/embedding/controller/EmbeddingModelController.java diff --git a/src/main/java/com/opensource/docgrid/domain/embedding/controller/IndexingJobAdminController.java b/backend/src/main/java/com/opensource/docgrid/domain/embedding/controller/IndexingJobAdminController.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/embedding/controller/IndexingJobAdminController.java rename to backend/src/main/java/com/opensource/docgrid/domain/embedding/controller/IndexingJobAdminController.java diff --git a/src/main/java/com/opensource/docgrid/domain/embedding/converter/EmbeddingJobAttemptConverter.java b/backend/src/main/java/com/opensource/docgrid/domain/embedding/converter/EmbeddingJobAttemptConverter.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/embedding/converter/EmbeddingJobAttemptConverter.java rename to backend/src/main/java/com/opensource/docgrid/domain/embedding/converter/EmbeddingJobAttemptConverter.java diff --git a/src/main/java/com/opensource/docgrid/domain/embedding/converter/EmbeddingJobConverter.java b/backend/src/main/java/com/opensource/docgrid/domain/embedding/converter/EmbeddingJobConverter.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/embedding/converter/EmbeddingJobConverter.java rename to backend/src/main/java/com/opensource/docgrid/domain/embedding/converter/EmbeddingJobConverter.java diff --git a/src/main/java/com/opensource/docgrid/domain/embedding/converter/EmbeddingModelConverter.java b/backend/src/main/java/com/opensource/docgrid/domain/embedding/converter/EmbeddingModelConverter.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/embedding/converter/EmbeddingModelConverter.java rename to backend/src/main/java/com/opensource/docgrid/domain/embedding/converter/EmbeddingModelConverter.java diff --git a/src/main/java/com/opensource/docgrid/domain/embedding/converter/IndexingJobAdminConverter.java b/backend/src/main/java/com/opensource/docgrid/domain/embedding/converter/IndexingJobAdminConverter.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/embedding/converter/IndexingJobAdminConverter.java rename to backend/src/main/java/com/opensource/docgrid/domain/embedding/converter/IndexingJobAdminConverter.java diff --git a/src/main/java/com/opensource/docgrid/domain/embedding/dto/EmbedResult.java b/backend/src/main/java/com/opensource/docgrid/domain/embedding/dto/EmbedResult.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/embedding/dto/EmbedResult.java rename to backend/src/main/java/com/opensource/docgrid/domain/embedding/dto/EmbedResult.java diff --git a/src/main/java/com/opensource/docgrid/domain/embedding/dto/request/CompleteDocumentIndexingRequest.java b/backend/src/main/java/com/opensource/docgrid/domain/embedding/dto/request/CompleteDocumentIndexingRequest.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/embedding/dto/request/CompleteDocumentIndexingRequest.java rename to backend/src/main/java/com/opensource/docgrid/domain/embedding/dto/request/CompleteDocumentIndexingRequest.java diff --git a/src/main/java/com/opensource/docgrid/domain/embedding/dto/request/CreateDocumentChunksRequest.java b/backend/src/main/java/com/opensource/docgrid/domain/embedding/dto/request/CreateDocumentChunksRequest.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/embedding/dto/request/CreateDocumentChunksRequest.java rename to backend/src/main/java/com/opensource/docgrid/domain/embedding/dto/request/CreateDocumentChunksRequest.java diff --git a/src/main/java/com/opensource/docgrid/domain/embedding/dto/request/CreateDocumentEmbeddingsRequest.java b/backend/src/main/java/com/opensource/docgrid/domain/embedding/dto/request/CreateDocumentEmbeddingsRequest.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/embedding/dto/request/CreateDocumentEmbeddingsRequest.java rename to backend/src/main/java/com/opensource/docgrid/domain/embedding/dto/request/CreateDocumentEmbeddingsRequest.java diff --git a/src/main/java/com/opensource/docgrid/domain/embedding/dto/request/EmbedBatchRequest.java b/backend/src/main/java/com/opensource/docgrid/domain/embedding/dto/request/EmbedBatchRequest.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/embedding/dto/request/EmbedBatchRequest.java rename to backend/src/main/java/com/opensource/docgrid/domain/embedding/dto/request/EmbedBatchRequest.java diff --git a/src/main/java/com/opensource/docgrid/domain/embedding/dto/request/EmbedRequest.java b/backend/src/main/java/com/opensource/docgrid/domain/embedding/dto/request/EmbedRequest.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/embedding/dto/request/EmbedRequest.java rename to backend/src/main/java/com/opensource/docgrid/domain/embedding/dto/request/EmbedRequest.java diff --git a/src/main/java/com/opensource/docgrid/domain/embedding/dto/request/FailDocumentIndexingRequest.java b/backend/src/main/java/com/opensource/docgrid/domain/embedding/dto/request/FailDocumentIndexingRequest.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/embedding/dto/request/FailDocumentIndexingRequest.java rename to backend/src/main/java/com/opensource/docgrid/domain/embedding/dto/request/FailDocumentIndexingRequest.java diff --git a/src/main/java/com/opensource/docgrid/domain/embedding/dto/request/RenewEmbeddingJobLeaseRequest.java b/backend/src/main/java/com/opensource/docgrid/domain/embedding/dto/request/RenewEmbeddingJobLeaseRequest.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/embedding/dto/request/RenewEmbeddingJobLeaseRequest.java rename to backend/src/main/java/com/opensource/docgrid/domain/embedding/dto/request/RenewEmbeddingJobLeaseRequest.java diff --git a/src/main/java/com/opensource/docgrid/domain/embedding/dto/request/StartEmbeddingJobAttemptRequest.java b/backend/src/main/java/com/opensource/docgrid/domain/embedding/dto/request/StartEmbeddingJobAttemptRequest.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/embedding/dto/request/StartEmbeddingJobAttemptRequest.java rename to backend/src/main/java/com/opensource/docgrid/domain/embedding/dto/request/StartEmbeddingJobAttemptRequest.java diff --git a/src/main/java/com/opensource/docgrid/domain/embedding/dto/response/AdminIndexingEventResponse.java b/backend/src/main/java/com/opensource/docgrid/domain/embedding/dto/response/AdminIndexingEventResponse.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/embedding/dto/response/AdminIndexingEventResponse.java rename to backend/src/main/java/com/opensource/docgrid/domain/embedding/dto/response/AdminIndexingEventResponse.java diff --git a/src/main/java/com/opensource/docgrid/domain/embedding/dto/response/AdminIndexingJobAttemptResponse.java b/backend/src/main/java/com/opensource/docgrid/domain/embedding/dto/response/AdminIndexingJobAttemptResponse.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/embedding/dto/response/AdminIndexingJobAttemptResponse.java rename to backend/src/main/java/com/opensource/docgrid/domain/embedding/dto/response/AdminIndexingJobAttemptResponse.java diff --git a/src/main/java/com/opensource/docgrid/domain/embedding/dto/response/AdminIndexingJobResponse.java b/backend/src/main/java/com/opensource/docgrid/domain/embedding/dto/response/AdminIndexingJobResponse.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/embedding/dto/response/AdminIndexingJobResponse.java rename to backend/src/main/java/com/opensource/docgrid/domain/embedding/dto/response/AdminIndexingJobResponse.java diff --git a/src/main/java/com/opensource/docgrid/domain/embedding/dto/response/ClaimedEmbeddingJobResponse.java b/backend/src/main/java/com/opensource/docgrid/domain/embedding/dto/response/ClaimedEmbeddingJobResponse.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/embedding/dto/response/ClaimedEmbeddingJobResponse.java rename to backend/src/main/java/com/opensource/docgrid/domain/embedding/dto/response/ClaimedEmbeddingJobResponse.java diff --git a/src/main/java/com/opensource/docgrid/domain/embedding/dto/response/DocumentChunksResponse.java b/backend/src/main/java/com/opensource/docgrid/domain/embedding/dto/response/DocumentChunksResponse.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/embedding/dto/response/DocumentChunksResponse.java rename to backend/src/main/java/com/opensource/docgrid/domain/embedding/dto/response/DocumentChunksResponse.java diff --git a/src/main/java/com/opensource/docgrid/domain/embedding/dto/response/DocumentEmbeddingsResponse.java b/backend/src/main/java/com/opensource/docgrid/domain/embedding/dto/response/DocumentEmbeddingsResponse.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/embedding/dto/response/DocumentEmbeddingsResponse.java rename to backend/src/main/java/com/opensource/docgrid/domain/embedding/dto/response/DocumentEmbeddingsResponse.java diff --git a/src/main/java/com/opensource/docgrid/domain/embedding/dto/response/DocumentIndexingCompletionResponse.java b/backend/src/main/java/com/opensource/docgrid/domain/embedding/dto/response/DocumentIndexingCompletionResponse.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/embedding/dto/response/DocumentIndexingCompletionResponse.java rename to backend/src/main/java/com/opensource/docgrid/domain/embedding/dto/response/DocumentIndexingCompletionResponse.java diff --git a/src/main/java/com/opensource/docgrid/domain/embedding/dto/response/DocumentIndexingFailureResponse.java b/backend/src/main/java/com/opensource/docgrid/domain/embedding/dto/response/DocumentIndexingFailureResponse.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/embedding/dto/response/DocumentIndexingFailureResponse.java rename to backend/src/main/java/com/opensource/docgrid/domain/embedding/dto/response/DocumentIndexingFailureResponse.java diff --git a/src/main/java/com/opensource/docgrid/domain/embedding/dto/response/EmbedBatchItemResponse.java b/backend/src/main/java/com/opensource/docgrid/domain/embedding/dto/response/EmbedBatchItemResponse.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/embedding/dto/response/EmbedBatchItemResponse.java rename to backend/src/main/java/com/opensource/docgrid/domain/embedding/dto/response/EmbedBatchItemResponse.java diff --git a/src/main/java/com/opensource/docgrid/domain/embedding/dto/response/EmbedBatchServerResponse.java b/backend/src/main/java/com/opensource/docgrid/domain/embedding/dto/response/EmbedBatchServerResponse.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/embedding/dto/response/EmbedBatchServerResponse.java rename to backend/src/main/java/com/opensource/docgrid/domain/embedding/dto/response/EmbedBatchServerResponse.java diff --git a/src/main/java/com/opensource/docgrid/domain/embedding/dto/response/EmbedServerResponse.java b/backend/src/main/java/com/opensource/docgrid/domain/embedding/dto/response/EmbedServerResponse.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/embedding/dto/response/EmbedServerResponse.java rename to backend/src/main/java/com/opensource/docgrid/domain/embedding/dto/response/EmbedServerResponse.java diff --git a/src/main/java/com/opensource/docgrid/domain/embedding/dto/response/EmbeddingModelResponse.java b/backend/src/main/java/com/opensource/docgrid/domain/embedding/dto/response/EmbeddingModelResponse.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/embedding/dto/response/EmbeddingModelResponse.java rename to backend/src/main/java/com/opensource/docgrid/domain/embedding/dto/response/EmbeddingModelResponse.java diff --git a/src/main/java/com/opensource/docgrid/domain/embedding/dto/response/ManualRetriedIndexingJobResponse.java b/backend/src/main/java/com/opensource/docgrid/domain/embedding/dto/response/ManualRetriedIndexingJobResponse.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/embedding/dto/response/ManualRetriedIndexingJobResponse.java rename to backend/src/main/java/com/opensource/docgrid/domain/embedding/dto/response/ManualRetriedIndexingJobResponse.java diff --git a/src/main/java/com/opensource/docgrid/domain/embedding/dto/response/RenewedEmbeddingJobLeaseResponse.java b/backend/src/main/java/com/opensource/docgrid/domain/embedding/dto/response/RenewedEmbeddingJobLeaseResponse.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/embedding/dto/response/RenewedEmbeddingJobLeaseResponse.java rename to backend/src/main/java/com/opensource/docgrid/domain/embedding/dto/response/RenewedEmbeddingJobLeaseResponse.java diff --git a/src/main/java/com/opensource/docgrid/domain/embedding/dto/response/StartedEmbeddingJobAttemptResponse.java b/backend/src/main/java/com/opensource/docgrid/domain/embedding/dto/response/StartedEmbeddingJobAttemptResponse.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/embedding/dto/response/StartedEmbeddingJobAttemptResponse.java rename to backend/src/main/java/com/opensource/docgrid/domain/embedding/dto/response/StartedEmbeddingJobAttemptResponse.java diff --git a/src/main/java/com/opensource/docgrid/domain/embedding/entity/Embedding.java b/backend/src/main/java/com/opensource/docgrid/domain/embedding/entity/Embedding.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/embedding/entity/Embedding.java rename to backend/src/main/java/com/opensource/docgrid/domain/embedding/entity/Embedding.java diff --git a/src/main/java/com/opensource/docgrid/domain/embedding/entity/EmbeddingJob.java b/backend/src/main/java/com/opensource/docgrid/domain/embedding/entity/EmbeddingJob.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/embedding/entity/EmbeddingJob.java rename to backend/src/main/java/com/opensource/docgrid/domain/embedding/entity/EmbeddingJob.java diff --git a/src/main/java/com/opensource/docgrid/domain/embedding/entity/EmbeddingModel.java b/backend/src/main/java/com/opensource/docgrid/domain/embedding/entity/EmbeddingModel.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/embedding/entity/EmbeddingModel.java rename to backend/src/main/java/com/opensource/docgrid/domain/embedding/entity/EmbeddingModel.java diff --git a/src/main/java/com/opensource/docgrid/domain/embedding/enums/DistanceMetric.java b/backend/src/main/java/com/opensource/docgrid/domain/embedding/enums/DistanceMetric.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/embedding/enums/DistanceMetric.java rename to backend/src/main/java/com/opensource/docgrid/domain/embedding/enums/DistanceMetric.java diff --git a/src/main/java/com/opensource/docgrid/domain/embedding/enums/EmbeddingJobStatus.java b/backend/src/main/java/com/opensource/docgrid/domain/embedding/enums/EmbeddingJobStatus.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/embedding/enums/EmbeddingJobStatus.java rename to backend/src/main/java/com/opensource/docgrid/domain/embedding/enums/EmbeddingJobStatus.java diff --git a/src/main/java/com/opensource/docgrid/domain/embedding/enums/EmbeddingProvider.java b/backend/src/main/java/com/opensource/docgrid/domain/embedding/enums/EmbeddingProvider.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/embedding/enums/EmbeddingProvider.java rename to backend/src/main/java/com/opensource/docgrid/domain/embedding/enums/EmbeddingProvider.java diff --git a/src/main/java/com/opensource/docgrid/domain/embedding/enums/EmbeddingStatus.java b/backend/src/main/java/com/opensource/docgrid/domain/embedding/enums/EmbeddingStatus.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/embedding/enums/EmbeddingStatus.java rename to backend/src/main/java/com/opensource/docgrid/domain/embedding/enums/EmbeddingStatus.java diff --git a/src/main/java/com/opensource/docgrid/domain/embedding/enums/IndexingFailureType.java b/backend/src/main/java/com/opensource/docgrid/domain/embedding/enums/IndexingFailureType.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/embedding/enums/IndexingFailureType.java rename to backend/src/main/java/com/opensource/docgrid/domain/embedding/enums/IndexingFailureType.java diff --git a/src/main/java/com/opensource/docgrid/domain/embedding/enums/VectorStorageStrategy.java b/backend/src/main/java/com/opensource/docgrid/domain/embedding/enums/VectorStorageStrategy.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/embedding/enums/VectorStorageStrategy.java rename to backend/src/main/java/com/opensource/docgrid/domain/embedding/enums/VectorStorageStrategy.java diff --git a/src/main/java/com/opensource/docgrid/domain/embedding/event/EmbeddingJobStatusChangedEvent.java b/backend/src/main/java/com/opensource/docgrid/domain/embedding/event/EmbeddingJobStatusChangedEvent.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/embedding/event/EmbeddingJobStatusChangedEvent.java rename to backend/src/main/java/com/opensource/docgrid/domain/embedding/event/EmbeddingJobStatusChangedEvent.java diff --git a/src/main/java/com/opensource/docgrid/domain/embedding/repository/EmbeddingJobRepository.java b/backend/src/main/java/com/opensource/docgrid/domain/embedding/repository/EmbeddingJobRepository.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/embedding/repository/EmbeddingJobRepository.java rename to backend/src/main/java/com/opensource/docgrid/domain/embedding/repository/EmbeddingJobRepository.java diff --git a/src/main/java/com/opensource/docgrid/domain/embedding/repository/EmbeddingModelRepository.java b/backend/src/main/java/com/opensource/docgrid/domain/embedding/repository/EmbeddingModelRepository.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/embedding/repository/EmbeddingModelRepository.java rename to backend/src/main/java/com/opensource/docgrid/domain/embedding/repository/EmbeddingModelRepository.java diff --git a/src/main/java/com/opensource/docgrid/domain/embedding/repository/EmbeddingRepository.java b/backend/src/main/java/com/opensource/docgrid/domain/embedding/repository/EmbeddingRepository.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/embedding/repository/EmbeddingRepository.java rename to backend/src/main/java/com/opensource/docgrid/domain/embedding/repository/EmbeddingRepository.java diff --git a/src/main/java/com/opensource/docgrid/domain/embedding/service/DocumentEmbeddingDraft.java b/backend/src/main/java/com/opensource/docgrid/domain/embedding/service/DocumentEmbeddingDraft.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/embedding/service/DocumentEmbeddingDraft.java rename to backend/src/main/java/com/opensource/docgrid/domain/embedding/service/DocumentEmbeddingDraft.java diff --git a/src/main/java/com/opensource/docgrid/domain/embedding/service/DocumentEmbeddingGenerator.java b/backend/src/main/java/com/opensource/docgrid/domain/embedding/service/DocumentEmbeddingGenerator.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/embedding/service/DocumentEmbeddingGenerator.java rename to backend/src/main/java/com/opensource/docgrid/domain/embedding/service/DocumentEmbeddingGenerator.java diff --git a/src/main/java/com/opensource/docgrid/domain/embedding/service/DocumentEmbeddingService.java b/backend/src/main/java/com/opensource/docgrid/domain/embedding/service/DocumentEmbeddingService.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/embedding/service/DocumentEmbeddingService.java rename to backend/src/main/java/com/opensource/docgrid/domain/embedding/service/DocumentEmbeddingService.java diff --git a/src/main/java/com/opensource/docgrid/domain/embedding/service/EmbeddingVectorSupport.java b/backend/src/main/java/com/opensource/docgrid/domain/embedding/service/EmbeddingVectorSupport.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/embedding/service/EmbeddingVectorSupport.java rename to backend/src/main/java/com/opensource/docgrid/domain/embedding/service/EmbeddingVectorSupport.java diff --git a/src/main/java/com/opensource/docgrid/domain/embedding/service/command/DocumentEmbeddingTransactionService.java b/backend/src/main/java/com/opensource/docgrid/domain/embedding/service/command/DocumentEmbeddingTransactionService.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/embedding/service/command/DocumentEmbeddingTransactionService.java rename to backend/src/main/java/com/opensource/docgrid/domain/embedding/service/command/DocumentEmbeddingTransactionService.java diff --git a/src/main/java/com/opensource/docgrid/domain/embedding/service/command/DocumentIndexingCompletionService.java b/backend/src/main/java/com/opensource/docgrid/domain/embedding/service/command/DocumentIndexingCompletionService.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/embedding/service/command/DocumentIndexingCompletionService.java rename to backend/src/main/java/com/opensource/docgrid/domain/embedding/service/command/DocumentIndexingCompletionService.java diff --git a/src/main/java/com/opensource/docgrid/domain/embedding/service/command/DocumentIndexingFailureService.java b/backend/src/main/java/com/opensource/docgrid/domain/embedding/service/command/DocumentIndexingFailureService.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/embedding/service/command/DocumentIndexingFailureService.java rename to backend/src/main/java/com/opensource/docgrid/domain/embedding/service/command/DocumentIndexingFailureService.java diff --git a/src/main/java/com/opensource/docgrid/domain/embedding/service/command/EmbeddingJobAttemptService.java b/backend/src/main/java/com/opensource/docgrid/domain/embedding/service/command/EmbeddingJobAttemptService.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/embedding/service/command/EmbeddingJobAttemptService.java rename to backend/src/main/java/com/opensource/docgrid/domain/embedding/service/command/EmbeddingJobAttemptService.java diff --git a/src/main/java/com/opensource/docgrid/domain/embedding/service/command/EmbeddingJobClaimService.java b/backend/src/main/java/com/opensource/docgrid/domain/embedding/service/command/EmbeddingJobClaimService.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/embedding/service/command/EmbeddingJobClaimService.java rename to backend/src/main/java/com/opensource/docgrid/domain/embedding/service/command/EmbeddingJobClaimService.java diff --git a/src/main/java/com/opensource/docgrid/domain/embedding/service/command/EmbeddingJobLeaseRecoveryService.java b/backend/src/main/java/com/opensource/docgrid/domain/embedding/service/command/EmbeddingJobLeaseRecoveryService.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/embedding/service/command/EmbeddingJobLeaseRecoveryService.java rename to backend/src/main/java/com/opensource/docgrid/domain/embedding/service/command/EmbeddingJobLeaseRecoveryService.java diff --git a/src/main/java/com/opensource/docgrid/domain/embedding/service/command/EmbeddingJobLeaseService.java b/backend/src/main/java/com/opensource/docgrid/domain/embedding/service/command/EmbeddingJobLeaseService.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/embedding/service/command/EmbeddingJobLeaseService.java rename to backend/src/main/java/com/opensource/docgrid/domain/embedding/service/command/EmbeddingJobLeaseService.java diff --git a/src/main/java/com/opensource/docgrid/domain/embedding/service/command/EmbeddingJobManualRetryService.java b/backend/src/main/java/com/opensource/docgrid/domain/embedding/service/command/EmbeddingJobManualRetryService.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/embedding/service/command/EmbeddingJobManualRetryService.java rename to backend/src/main/java/com/opensource/docgrid/domain/embedding/service/command/EmbeddingJobManualRetryService.java diff --git a/src/main/java/com/opensource/docgrid/domain/embedding/service/command/EmbeddingJobOwnershipValidator.java b/backend/src/main/java/com/opensource/docgrid/domain/embedding/service/command/EmbeddingJobOwnershipValidator.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/embedding/service/command/EmbeddingJobOwnershipValidator.java rename to backend/src/main/java/com/opensource/docgrid/domain/embedding/service/command/EmbeddingJobOwnershipValidator.java diff --git a/src/main/java/com/opensource/docgrid/domain/embedding/service/command/IndexingFailureTransitionService.java b/backend/src/main/java/com/opensource/docgrid/domain/embedding/service/command/IndexingFailureTransitionService.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/embedding/service/command/IndexingFailureTransitionService.java rename to backend/src/main/java/com/opensource/docgrid/domain/embedding/service/command/IndexingFailureTransitionService.java diff --git a/src/main/java/com/opensource/docgrid/domain/embedding/service/query/EmbeddingJobRecoveryQueryService.java b/backend/src/main/java/com/opensource/docgrid/domain/embedding/service/query/EmbeddingJobRecoveryQueryService.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/embedding/service/query/EmbeddingJobRecoveryQueryService.java rename to backend/src/main/java/com/opensource/docgrid/domain/embedding/service/query/EmbeddingJobRecoveryQueryService.java diff --git a/src/main/java/com/opensource/docgrid/domain/embedding/service/query/EmbeddingModelQueryService.java b/backend/src/main/java/com/opensource/docgrid/domain/embedding/service/query/EmbeddingModelQueryService.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/embedding/service/query/EmbeddingModelQueryService.java rename to backend/src/main/java/com/opensource/docgrid/domain/embedding/service/query/EmbeddingModelQueryService.java diff --git a/src/main/java/com/opensource/docgrid/domain/embedding/service/query/IndexingJobAdminQueryService.java b/backend/src/main/java/com/opensource/docgrid/domain/embedding/service/query/IndexingJobAdminQueryService.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/embedding/service/query/IndexingJobAdminQueryService.java rename to backend/src/main/java/com/opensource/docgrid/domain/embedding/service/query/IndexingJobAdminQueryService.java diff --git a/src/main/java/com/opensource/docgrid/domain/embedding/service/query/QueryEmbeddingService.java b/backend/src/main/java/com/opensource/docgrid/domain/embedding/service/query/QueryEmbeddingService.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/embedding/service/query/QueryEmbeddingService.java rename to backend/src/main/java/com/opensource/docgrid/domain/embedding/service/query/QueryEmbeddingService.java diff --git a/src/main/java/com/opensource/docgrid/domain/failover/entity/FailoverEvent.java b/backend/src/main/java/com/opensource/docgrid/domain/failover/entity/FailoverEvent.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/failover/entity/FailoverEvent.java rename to backend/src/main/java/com/opensource/docgrid/domain/failover/entity/FailoverEvent.java diff --git a/src/main/java/com/opensource/docgrid/domain/failover/enums/FailoverEventType.java b/backend/src/main/java/com/opensource/docgrid/domain/failover/enums/FailoverEventType.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/failover/enums/FailoverEventType.java rename to backend/src/main/java/com/opensource/docgrid/domain/failover/enums/FailoverEventType.java diff --git a/src/main/java/com/opensource/docgrid/domain/failover/enums/FailoverStatus.java b/backend/src/main/java/com/opensource/docgrid/domain/failover/enums/FailoverStatus.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/failover/enums/FailoverStatus.java rename to backend/src/main/java/com/opensource/docgrid/domain/failover/enums/FailoverStatus.java diff --git a/src/main/java/com/opensource/docgrid/domain/mcp/controller/McpTokenController.java b/backend/src/main/java/com/opensource/docgrid/domain/mcp/controller/McpTokenController.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/mcp/controller/McpTokenController.java rename to backend/src/main/java/com/opensource/docgrid/domain/mcp/controller/McpTokenController.java diff --git a/src/main/java/com/opensource/docgrid/domain/mcp/converter/McpAccessTokenConverter.java b/backend/src/main/java/com/opensource/docgrid/domain/mcp/converter/McpAccessTokenConverter.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/mcp/converter/McpAccessTokenConverter.java rename to backend/src/main/java/com/opensource/docgrid/domain/mcp/converter/McpAccessTokenConverter.java diff --git a/src/main/java/com/opensource/docgrid/domain/mcp/dto/response/DocumentDetailResponse.java b/backend/src/main/java/com/opensource/docgrid/domain/mcp/dto/response/DocumentDetailResponse.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/mcp/dto/response/DocumentDetailResponse.java rename to backend/src/main/java/com/opensource/docgrid/domain/mcp/dto/response/DocumentDetailResponse.java diff --git a/src/main/java/com/opensource/docgrid/domain/mcp/dto/response/McpAccessTokenIssueResponse.java b/backend/src/main/java/com/opensource/docgrid/domain/mcp/dto/response/McpAccessTokenIssueResponse.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/mcp/dto/response/McpAccessTokenIssueResponse.java rename to backend/src/main/java/com/opensource/docgrid/domain/mcp/dto/response/McpAccessTokenIssueResponse.java diff --git a/src/main/java/com/opensource/docgrid/domain/mcp/dto/response/McpAccessTokenListResponse.java b/backend/src/main/java/com/opensource/docgrid/domain/mcp/dto/response/McpAccessTokenListResponse.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/mcp/dto/response/McpAccessTokenListResponse.java rename to backend/src/main/java/com/opensource/docgrid/domain/mcp/dto/response/McpAccessTokenListResponse.java diff --git a/src/main/java/com/opensource/docgrid/domain/mcp/dto/response/McpAccessTokenResponse.java b/backend/src/main/java/com/opensource/docgrid/domain/mcp/dto/response/McpAccessTokenResponse.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/mcp/dto/response/McpAccessTokenResponse.java rename to backend/src/main/java/com/opensource/docgrid/domain/mcp/dto/response/McpAccessTokenResponse.java diff --git a/src/main/java/com/opensource/docgrid/domain/mcp/dto/response/McpAccessTokenRevokeResponse.java b/backend/src/main/java/com/opensource/docgrid/domain/mcp/dto/response/McpAccessTokenRevokeResponse.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/mcp/dto/response/McpAccessTokenRevokeResponse.java rename to backend/src/main/java/com/opensource/docgrid/domain/mcp/dto/response/McpAccessTokenRevokeResponse.java diff --git a/src/main/java/com/opensource/docgrid/domain/mcp/security/McpApiKeyAuthFilter.java b/backend/src/main/java/com/opensource/docgrid/domain/mcp/security/McpApiKeyAuthFilter.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/mcp/security/McpApiKeyAuthFilter.java rename to backend/src/main/java/com/opensource/docgrid/domain/mcp/security/McpApiKeyAuthFilter.java diff --git a/src/main/java/com/opensource/docgrid/domain/mcp/security/McpRateLimiter.java b/backend/src/main/java/com/opensource/docgrid/domain/mcp/security/McpRateLimiter.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/mcp/security/McpRateLimiter.java rename to backend/src/main/java/com/opensource/docgrid/domain/mcp/security/McpRateLimiter.java diff --git a/src/main/java/com/opensource/docgrid/domain/mcp/service/command/McpAccessTokenCommandService.java b/backend/src/main/java/com/opensource/docgrid/domain/mcp/service/command/McpAccessTokenCommandService.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/mcp/service/command/McpAccessTokenCommandService.java rename to backend/src/main/java/com/opensource/docgrid/domain/mcp/service/command/McpAccessTokenCommandService.java diff --git a/src/main/java/com/opensource/docgrid/domain/mcp/service/query/McpAccessTokenQueryService.java b/backend/src/main/java/com/opensource/docgrid/domain/mcp/service/query/McpAccessTokenQueryService.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/mcp/service/query/McpAccessTokenQueryService.java rename to backend/src/main/java/com/opensource/docgrid/domain/mcp/service/query/McpAccessTokenQueryService.java diff --git a/src/main/java/com/opensource/docgrid/domain/mcp/tool/DocGridMcpTools.java b/backend/src/main/java/com/opensource/docgrid/domain/mcp/tool/DocGridMcpTools.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/mcp/tool/DocGridMcpTools.java rename to backend/src/main/java/com/opensource/docgrid/domain/mcp/tool/DocGridMcpTools.java diff --git a/src/main/java/com/opensource/docgrid/domain/permission/controller/PermissionController.java b/backend/src/main/java/com/opensource/docgrid/domain/permission/controller/PermissionController.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/permission/controller/PermissionController.java rename to backend/src/main/java/com/opensource/docgrid/domain/permission/controller/PermissionController.java diff --git a/src/main/java/com/opensource/docgrid/domain/permission/converter/PermissionConverter.java b/backend/src/main/java/com/opensource/docgrid/domain/permission/converter/PermissionConverter.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/permission/converter/PermissionConverter.java rename to backend/src/main/java/com/opensource/docgrid/domain/permission/converter/PermissionConverter.java diff --git a/src/main/java/com/opensource/docgrid/domain/permission/dto/request/GrantPermissionRequest.java b/backend/src/main/java/com/opensource/docgrid/domain/permission/dto/request/GrantPermissionRequest.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/permission/dto/request/GrantPermissionRequest.java rename to backend/src/main/java/com/opensource/docgrid/domain/permission/dto/request/GrantPermissionRequest.java diff --git a/src/main/java/com/opensource/docgrid/domain/permission/dto/response/CollectionPermissionResponse.java b/backend/src/main/java/com/opensource/docgrid/domain/permission/dto/response/CollectionPermissionResponse.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/permission/dto/response/CollectionPermissionResponse.java rename to backend/src/main/java/com/opensource/docgrid/domain/permission/dto/response/CollectionPermissionResponse.java diff --git a/src/main/java/com/opensource/docgrid/domain/permission/dto/response/DocumentPermissionResponse.java b/backend/src/main/java/com/opensource/docgrid/domain/permission/dto/response/DocumentPermissionResponse.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/permission/dto/response/DocumentPermissionResponse.java rename to backend/src/main/java/com/opensource/docgrid/domain/permission/dto/response/DocumentPermissionResponse.java diff --git a/src/main/java/com/opensource/docgrid/domain/permission/dto/response/DocumentPermissionSummaryResponse.java b/backend/src/main/java/com/opensource/docgrid/domain/permission/dto/response/DocumentPermissionSummaryResponse.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/permission/dto/response/DocumentPermissionSummaryResponse.java rename to backend/src/main/java/com/opensource/docgrid/domain/permission/dto/response/DocumentPermissionSummaryResponse.java diff --git a/src/main/java/com/opensource/docgrid/domain/permission/entity/CollectionPermission.java b/backend/src/main/java/com/opensource/docgrid/domain/permission/entity/CollectionPermission.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/permission/entity/CollectionPermission.java rename to backend/src/main/java/com/opensource/docgrid/domain/permission/entity/CollectionPermission.java diff --git a/src/main/java/com/opensource/docgrid/domain/permission/entity/DocumentPermission.java b/backend/src/main/java/com/opensource/docgrid/domain/permission/entity/DocumentPermission.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/permission/entity/DocumentPermission.java rename to backend/src/main/java/com/opensource/docgrid/domain/permission/entity/DocumentPermission.java diff --git a/src/main/java/com/opensource/docgrid/domain/permission/entity/UserDocumentAccessCache.java b/backend/src/main/java/com/opensource/docgrid/domain/permission/entity/UserDocumentAccessCache.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/permission/entity/UserDocumentAccessCache.java rename to backend/src/main/java/com/opensource/docgrid/domain/permission/entity/UserDocumentAccessCache.java diff --git a/src/main/java/com/opensource/docgrid/domain/permission/enums/AccessSourceType.java b/backend/src/main/java/com/opensource/docgrid/domain/permission/enums/AccessSourceType.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/permission/enums/AccessSourceType.java rename to backend/src/main/java/com/opensource/docgrid/domain/permission/enums/AccessSourceType.java diff --git a/src/main/java/com/opensource/docgrid/domain/permission/enums/PermissionSourceType.java b/backend/src/main/java/com/opensource/docgrid/domain/permission/enums/PermissionSourceType.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/permission/enums/PermissionSourceType.java rename to backend/src/main/java/com/opensource/docgrid/domain/permission/enums/PermissionSourceType.java diff --git a/src/main/java/com/opensource/docgrid/domain/permission/enums/PermissionTargetType.java b/backend/src/main/java/com/opensource/docgrid/domain/permission/enums/PermissionTargetType.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/permission/enums/PermissionTargetType.java rename to backend/src/main/java/com/opensource/docgrid/domain/permission/enums/PermissionTargetType.java diff --git a/src/main/java/com/opensource/docgrid/domain/permission/enums/PermissionType.java b/backend/src/main/java/com/opensource/docgrid/domain/permission/enums/PermissionType.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/permission/enums/PermissionType.java rename to backend/src/main/java/com/opensource/docgrid/domain/permission/enums/PermissionType.java diff --git a/src/main/java/com/opensource/docgrid/domain/permission/repository/CollectionPermissionRepository.java b/backend/src/main/java/com/opensource/docgrid/domain/permission/repository/CollectionPermissionRepository.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/permission/repository/CollectionPermissionRepository.java rename to backend/src/main/java/com/opensource/docgrid/domain/permission/repository/CollectionPermissionRepository.java diff --git a/src/main/java/com/opensource/docgrid/domain/permission/repository/DocumentPermissionRepository.java b/backend/src/main/java/com/opensource/docgrid/domain/permission/repository/DocumentPermissionRepository.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/permission/repository/DocumentPermissionRepository.java rename to backend/src/main/java/com/opensource/docgrid/domain/permission/repository/DocumentPermissionRepository.java diff --git a/src/main/java/com/opensource/docgrid/domain/permission/repository/UserDocumentAccessCacheRepository.java b/backend/src/main/java/com/opensource/docgrid/domain/permission/repository/UserDocumentAccessCacheRepository.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/permission/repository/UserDocumentAccessCacheRepository.java rename to backend/src/main/java/com/opensource/docgrid/domain/permission/repository/UserDocumentAccessCacheRepository.java diff --git a/src/main/java/com/opensource/docgrid/domain/permission/service/command/CollectionPermissionCommandService.java b/backend/src/main/java/com/opensource/docgrid/domain/permission/service/command/CollectionPermissionCommandService.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/permission/service/command/CollectionPermissionCommandService.java rename to backend/src/main/java/com/opensource/docgrid/domain/permission/service/command/CollectionPermissionCommandService.java diff --git a/src/main/java/com/opensource/docgrid/domain/permission/service/command/DocumentPermissionCommandService.java b/backend/src/main/java/com/opensource/docgrid/domain/permission/service/command/DocumentPermissionCommandService.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/permission/service/command/DocumentPermissionCommandService.java rename to backend/src/main/java/com/opensource/docgrid/domain/permission/service/command/DocumentPermissionCommandService.java diff --git a/src/main/java/com/opensource/docgrid/domain/permission/service/command/UserDocumentAccessCacheService.java b/backend/src/main/java/com/opensource/docgrid/domain/permission/service/command/UserDocumentAccessCacheService.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/permission/service/command/UserDocumentAccessCacheService.java rename to backend/src/main/java/com/opensource/docgrid/domain/permission/service/command/UserDocumentAccessCacheService.java diff --git a/src/main/java/com/opensource/docgrid/domain/permission/service/query/PermissionQueryService.java b/backend/src/main/java/com/opensource/docgrid/domain/permission/service/query/PermissionQueryService.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/permission/service/query/PermissionQueryService.java rename to backend/src/main/java/com/opensource/docgrid/domain/permission/service/query/PermissionQueryService.java diff --git a/src/main/java/com/opensource/docgrid/domain/rag/dto/OllamaGenerateResult.java b/backend/src/main/java/com/opensource/docgrid/domain/rag/dto/OllamaGenerateResult.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/rag/dto/OllamaGenerateResult.java rename to backend/src/main/java/com/opensource/docgrid/domain/rag/dto/OllamaGenerateResult.java diff --git a/src/main/java/com/opensource/docgrid/domain/rag/dto/RagAnswer.java b/backend/src/main/java/com/opensource/docgrid/domain/rag/dto/RagAnswer.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/rag/dto/RagAnswer.java rename to backend/src/main/java/com/opensource/docgrid/domain/rag/dto/RagAnswer.java diff --git a/src/main/java/com/opensource/docgrid/domain/rag/dto/request/OllamaGenerateRequest.java b/backend/src/main/java/com/opensource/docgrid/domain/rag/dto/request/OllamaGenerateRequest.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/rag/dto/request/OllamaGenerateRequest.java rename to backend/src/main/java/com/opensource/docgrid/domain/rag/dto/request/OllamaGenerateRequest.java diff --git a/src/main/java/com/opensource/docgrid/domain/rag/dto/response/OllamaGenerateResponse.java b/backend/src/main/java/com/opensource/docgrid/domain/rag/dto/response/OllamaGenerateResponse.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/rag/dto/response/OllamaGenerateResponse.java rename to backend/src/main/java/com/opensource/docgrid/domain/rag/dto/response/OllamaGenerateResponse.java diff --git a/src/main/java/com/opensource/docgrid/domain/rag/entity/RagResponse.java b/backend/src/main/java/com/opensource/docgrid/domain/rag/entity/RagResponse.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/rag/entity/RagResponse.java rename to backend/src/main/java/com/opensource/docgrid/domain/rag/entity/RagResponse.java diff --git a/src/main/java/com/opensource/docgrid/domain/rag/entity/ResponseCitation.java b/backend/src/main/java/com/opensource/docgrid/domain/rag/entity/ResponseCitation.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/rag/entity/ResponseCitation.java rename to backend/src/main/java/com/opensource/docgrid/domain/rag/entity/ResponseCitation.java diff --git a/src/main/java/com/opensource/docgrid/domain/rag/repository/RagResponseRepository.java b/backend/src/main/java/com/opensource/docgrid/domain/rag/repository/RagResponseRepository.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/rag/repository/RagResponseRepository.java rename to backend/src/main/java/com/opensource/docgrid/domain/rag/repository/RagResponseRepository.java diff --git a/src/main/java/com/opensource/docgrid/domain/rag/repository/ResponseCitationRepository.java b/backend/src/main/java/com/opensource/docgrid/domain/rag/repository/ResponseCitationRepository.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/rag/repository/ResponseCitationRepository.java rename to backend/src/main/java/com/opensource/docgrid/domain/rag/repository/ResponseCitationRepository.java diff --git a/src/main/java/com/opensource/docgrid/domain/rag/service/OllamaClient.java b/backend/src/main/java/com/opensource/docgrid/domain/rag/service/OllamaClient.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/rag/service/OllamaClient.java rename to backend/src/main/java/com/opensource/docgrid/domain/rag/service/OllamaClient.java diff --git a/src/main/java/com/opensource/docgrid/domain/rag/service/PromptBuilder.java b/backend/src/main/java/com/opensource/docgrid/domain/rag/service/PromptBuilder.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/rag/service/PromptBuilder.java rename to backend/src/main/java/com/opensource/docgrid/domain/rag/service/PromptBuilder.java diff --git a/src/main/java/com/opensource/docgrid/domain/rag/service/RagFacade.java b/backend/src/main/java/com/opensource/docgrid/domain/rag/service/RagFacade.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/rag/service/RagFacade.java rename to backend/src/main/java/com/opensource/docgrid/domain/rag/service/RagFacade.java diff --git a/src/main/java/com/opensource/docgrid/domain/rag/service/command/RagResponseCommandService.java b/backend/src/main/java/com/opensource/docgrid/domain/rag/service/command/RagResponseCommandService.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/rag/service/command/RagResponseCommandService.java rename to backend/src/main/java/com/opensource/docgrid/domain/rag/service/command/RagResponseCommandService.java diff --git a/src/main/java/com/opensource/docgrid/domain/rag/service/command/ResponseCitationCommandService.java b/backend/src/main/java/com/opensource/docgrid/domain/rag/service/command/ResponseCitationCommandService.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/rag/service/command/ResponseCitationCommandService.java rename to backend/src/main/java/com/opensource/docgrid/domain/rag/service/command/ResponseCitationCommandService.java diff --git a/src/main/java/com/opensource/docgrid/domain/search/controller/SearchController.java b/backend/src/main/java/com/opensource/docgrid/domain/search/controller/SearchController.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/search/controller/SearchController.java rename to backend/src/main/java/com/opensource/docgrid/domain/search/controller/SearchController.java diff --git a/src/main/java/com/opensource/docgrid/domain/search/dto/SearchOutcome.java b/backend/src/main/java/com/opensource/docgrid/domain/search/dto/SearchOutcome.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/search/dto/SearchOutcome.java rename to backend/src/main/java/com/opensource/docgrid/domain/search/dto/SearchOutcome.java diff --git a/src/main/java/com/opensource/docgrid/domain/search/dto/VectorSearchCandidate.java b/backend/src/main/java/com/opensource/docgrid/domain/search/dto/VectorSearchCandidate.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/search/dto/VectorSearchCandidate.java rename to backend/src/main/java/com/opensource/docgrid/domain/search/dto/VectorSearchCandidate.java diff --git a/src/main/java/com/opensource/docgrid/domain/search/dto/request/SearchRequest.java b/backend/src/main/java/com/opensource/docgrid/domain/search/dto/request/SearchRequest.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/search/dto/request/SearchRequest.java rename to backend/src/main/java/com/opensource/docgrid/domain/search/dto/request/SearchRequest.java diff --git a/src/main/java/com/opensource/docgrid/domain/search/dto/response/CitationResponse.java b/backend/src/main/java/com/opensource/docgrid/domain/search/dto/response/CitationResponse.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/search/dto/response/CitationResponse.java rename to backend/src/main/java/com/opensource/docgrid/domain/search/dto/response/CitationResponse.java diff --git a/src/main/java/com/opensource/docgrid/domain/search/dto/response/SearchResponse.java b/backend/src/main/java/com/opensource/docgrid/domain/search/dto/response/SearchResponse.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/search/dto/response/SearchResponse.java rename to backend/src/main/java/com/opensource/docgrid/domain/search/dto/response/SearchResponse.java diff --git a/src/main/java/com/opensource/docgrid/domain/search/dto/response/SearchResultItem.java b/backend/src/main/java/com/opensource/docgrid/domain/search/dto/response/SearchResultItem.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/search/dto/response/SearchResultItem.java rename to backend/src/main/java/com/opensource/docgrid/domain/search/dto/response/SearchResultItem.java diff --git a/src/main/java/com/opensource/docgrid/domain/search/entity/SearchQuery.java b/backend/src/main/java/com/opensource/docgrid/domain/search/entity/SearchQuery.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/search/entity/SearchQuery.java rename to backend/src/main/java/com/opensource/docgrid/domain/search/entity/SearchQuery.java diff --git a/src/main/java/com/opensource/docgrid/domain/search/entity/SearchResult.java b/backend/src/main/java/com/opensource/docgrid/domain/search/entity/SearchResult.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/search/entity/SearchResult.java rename to backend/src/main/java/com/opensource/docgrid/domain/search/entity/SearchResult.java diff --git a/src/main/java/com/opensource/docgrid/domain/search/enums/ResultStatus.java b/backend/src/main/java/com/opensource/docgrid/domain/search/enums/ResultStatus.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/search/enums/ResultStatus.java rename to backend/src/main/java/com/opensource/docgrid/domain/search/enums/ResultStatus.java diff --git a/src/main/java/com/opensource/docgrid/domain/search/enums/SearchType.java b/backend/src/main/java/com/opensource/docgrid/domain/search/enums/SearchType.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/search/enums/SearchType.java rename to backend/src/main/java/com/opensource/docgrid/domain/search/enums/SearchType.java diff --git a/src/main/java/com/opensource/docgrid/domain/search/repository/SearchQueryRepository.java b/backend/src/main/java/com/opensource/docgrid/domain/search/repository/SearchQueryRepository.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/search/repository/SearchQueryRepository.java rename to backend/src/main/java/com/opensource/docgrid/domain/search/repository/SearchQueryRepository.java diff --git a/src/main/java/com/opensource/docgrid/domain/search/repository/SearchResultRepository.java b/backend/src/main/java/com/opensource/docgrid/domain/search/repository/SearchResultRepository.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/search/repository/SearchResultRepository.java rename to backend/src/main/java/com/opensource/docgrid/domain/search/repository/SearchResultRepository.java diff --git a/src/main/java/com/opensource/docgrid/domain/search/repository/VectorSearchRepository.java b/backend/src/main/java/com/opensource/docgrid/domain/search/repository/VectorSearchRepository.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/search/repository/VectorSearchRepository.java rename to backend/src/main/java/com/opensource/docgrid/domain/search/repository/VectorSearchRepository.java diff --git a/src/main/java/com/opensource/docgrid/domain/search/repository/VectorSearchRow.java b/backend/src/main/java/com/opensource/docgrid/domain/search/repository/VectorSearchRow.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/search/repository/VectorSearchRow.java rename to backend/src/main/java/com/opensource/docgrid/domain/search/repository/VectorSearchRow.java diff --git a/src/main/java/com/opensource/docgrid/domain/search/service/SearchFacade.java b/backend/src/main/java/com/opensource/docgrid/domain/search/service/SearchFacade.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/search/service/SearchFacade.java rename to backend/src/main/java/com/opensource/docgrid/domain/search/service/SearchFacade.java diff --git a/src/main/java/com/opensource/docgrid/domain/search/service/command/SearchQueryCommandService.java b/backend/src/main/java/com/opensource/docgrid/domain/search/service/command/SearchQueryCommandService.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/search/service/command/SearchQueryCommandService.java rename to backend/src/main/java/com/opensource/docgrid/domain/search/service/command/SearchQueryCommandService.java diff --git a/src/main/java/com/opensource/docgrid/domain/search/service/command/SearchResultCommandService.java b/backend/src/main/java/com/opensource/docgrid/domain/search/service/command/SearchResultCommandService.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/search/service/command/SearchResultCommandService.java rename to backend/src/main/java/com/opensource/docgrid/domain/search/service/command/SearchResultCommandService.java diff --git a/src/main/java/com/opensource/docgrid/domain/search/service/query/AccessibleDocumentQueryService.java b/backend/src/main/java/com/opensource/docgrid/domain/search/service/query/AccessibleDocumentQueryService.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/search/service/query/AccessibleDocumentQueryService.java rename to backend/src/main/java/com/opensource/docgrid/domain/search/service/query/AccessibleDocumentQueryService.java diff --git a/src/main/java/com/opensource/docgrid/domain/search/service/query/VectorSearchQueryService.java b/backend/src/main/java/com/opensource/docgrid/domain/search/service/query/VectorSearchQueryService.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/search/service/query/VectorSearchQueryService.java rename to backend/src/main/java/com/opensource/docgrid/domain/search/service/query/VectorSearchQueryService.java diff --git a/src/main/java/com/opensource/docgrid/domain/user/controller/AdminUserController.java b/backend/src/main/java/com/opensource/docgrid/domain/user/controller/AdminUserController.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/user/controller/AdminUserController.java rename to backend/src/main/java/com/opensource/docgrid/domain/user/controller/AdminUserController.java diff --git a/src/main/java/com/opensource/docgrid/domain/user/controller/DepartmentController.java b/backend/src/main/java/com/opensource/docgrid/domain/user/controller/DepartmentController.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/user/controller/DepartmentController.java rename to backend/src/main/java/com/opensource/docgrid/domain/user/controller/DepartmentController.java diff --git a/src/main/java/com/opensource/docgrid/domain/user/dto/request/AssignRoleRequest.java b/backend/src/main/java/com/opensource/docgrid/domain/user/dto/request/AssignRoleRequest.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/user/dto/request/AssignRoleRequest.java rename to backend/src/main/java/com/opensource/docgrid/domain/user/dto/request/AssignRoleRequest.java diff --git a/src/main/java/com/opensource/docgrid/domain/user/dto/response/DepartmentResponse.java b/backend/src/main/java/com/opensource/docgrid/domain/user/dto/response/DepartmentResponse.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/user/dto/response/DepartmentResponse.java rename to backend/src/main/java/com/opensource/docgrid/domain/user/dto/response/DepartmentResponse.java diff --git a/src/main/java/com/opensource/docgrid/domain/user/dto/response/UserRoleResponse.java b/backend/src/main/java/com/opensource/docgrid/domain/user/dto/response/UserRoleResponse.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/user/dto/response/UserRoleResponse.java rename to backend/src/main/java/com/opensource/docgrid/domain/user/dto/response/UserRoleResponse.java diff --git a/src/main/java/com/opensource/docgrid/domain/user/entity/Department.java b/backend/src/main/java/com/opensource/docgrid/domain/user/entity/Department.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/user/entity/Department.java rename to backend/src/main/java/com/opensource/docgrid/domain/user/entity/Department.java diff --git a/src/main/java/com/opensource/docgrid/domain/user/entity/McpAccessToken.java b/backend/src/main/java/com/opensource/docgrid/domain/user/entity/McpAccessToken.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/user/entity/McpAccessToken.java rename to backend/src/main/java/com/opensource/docgrid/domain/user/entity/McpAccessToken.java diff --git a/src/main/java/com/opensource/docgrid/domain/user/entity/Role.java b/backend/src/main/java/com/opensource/docgrid/domain/user/entity/Role.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/user/entity/Role.java rename to backend/src/main/java/com/opensource/docgrid/domain/user/entity/Role.java diff --git a/src/main/java/com/opensource/docgrid/domain/user/entity/User.java b/backend/src/main/java/com/opensource/docgrid/domain/user/entity/User.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/user/entity/User.java rename to backend/src/main/java/com/opensource/docgrid/domain/user/entity/User.java diff --git a/src/main/java/com/opensource/docgrid/domain/user/entity/UserRole.java b/backend/src/main/java/com/opensource/docgrid/domain/user/entity/UserRole.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/user/entity/UserRole.java rename to backend/src/main/java/com/opensource/docgrid/domain/user/entity/UserRole.java diff --git a/src/main/java/com/opensource/docgrid/domain/user/enums/CommonStatus.java b/backend/src/main/java/com/opensource/docgrid/domain/user/enums/CommonStatus.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/user/enums/CommonStatus.java rename to backend/src/main/java/com/opensource/docgrid/domain/user/enums/CommonStatus.java diff --git a/src/main/java/com/opensource/docgrid/domain/user/enums/UserStatus.java b/backend/src/main/java/com/opensource/docgrid/domain/user/enums/UserStatus.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/user/enums/UserStatus.java rename to backend/src/main/java/com/opensource/docgrid/domain/user/enums/UserStatus.java diff --git a/src/main/java/com/opensource/docgrid/domain/user/repository/DepartmentRepository.java b/backend/src/main/java/com/opensource/docgrid/domain/user/repository/DepartmentRepository.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/user/repository/DepartmentRepository.java rename to backend/src/main/java/com/opensource/docgrid/domain/user/repository/DepartmentRepository.java diff --git a/src/main/java/com/opensource/docgrid/domain/user/repository/McpAccessTokenRepository.java b/backend/src/main/java/com/opensource/docgrid/domain/user/repository/McpAccessTokenRepository.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/user/repository/McpAccessTokenRepository.java rename to backend/src/main/java/com/opensource/docgrid/domain/user/repository/McpAccessTokenRepository.java diff --git a/src/main/java/com/opensource/docgrid/domain/user/repository/RoleRepository.java b/backend/src/main/java/com/opensource/docgrid/domain/user/repository/RoleRepository.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/user/repository/RoleRepository.java rename to backend/src/main/java/com/opensource/docgrid/domain/user/repository/RoleRepository.java diff --git a/src/main/java/com/opensource/docgrid/domain/user/repository/UserRepository.java b/backend/src/main/java/com/opensource/docgrid/domain/user/repository/UserRepository.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/user/repository/UserRepository.java rename to backend/src/main/java/com/opensource/docgrid/domain/user/repository/UserRepository.java diff --git a/src/main/java/com/opensource/docgrid/domain/user/repository/UserRoleRepository.java b/backend/src/main/java/com/opensource/docgrid/domain/user/repository/UserRoleRepository.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/user/repository/UserRoleRepository.java rename to backend/src/main/java/com/opensource/docgrid/domain/user/repository/UserRoleRepository.java diff --git a/src/main/java/com/opensource/docgrid/domain/user/service/command/UserRoleCommandService.java b/backend/src/main/java/com/opensource/docgrid/domain/user/service/command/UserRoleCommandService.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/user/service/command/UserRoleCommandService.java rename to backend/src/main/java/com/opensource/docgrid/domain/user/service/command/UserRoleCommandService.java diff --git a/src/main/java/com/opensource/docgrid/domain/user/service/query/DepartmentQueryService.java b/backend/src/main/java/com/opensource/docgrid/domain/user/service/query/DepartmentQueryService.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/user/service/query/DepartmentQueryService.java rename to backend/src/main/java/com/opensource/docgrid/domain/user/service/query/DepartmentQueryService.java diff --git a/src/main/java/com/opensource/docgrid/domain/worker/config/IndexingWorkerProperties.java b/backend/src/main/java/com/opensource/docgrid/domain/worker/config/IndexingWorkerProperties.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/worker/config/IndexingWorkerProperties.java rename to backend/src/main/java/com/opensource/docgrid/domain/worker/config/IndexingWorkerProperties.java diff --git a/src/main/java/com/opensource/docgrid/domain/worker/config/WorkerConfig.java b/backend/src/main/java/com/opensource/docgrid/domain/worker/config/WorkerConfig.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/worker/config/WorkerConfig.java rename to backend/src/main/java/com/opensource/docgrid/domain/worker/config/WorkerConfig.java diff --git a/src/main/java/com/opensource/docgrid/domain/worker/config/WorkerExecutionConfig.java b/backend/src/main/java/com/opensource/docgrid/domain/worker/config/WorkerExecutionConfig.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/worker/config/WorkerExecutionConfig.java rename to backend/src/main/java/com/opensource/docgrid/domain/worker/config/WorkerExecutionConfig.java diff --git a/src/main/java/com/opensource/docgrid/domain/worker/config/WorkerSchedulingConfig.java b/backend/src/main/java/com/opensource/docgrid/domain/worker/config/WorkerSchedulingConfig.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/worker/config/WorkerSchedulingConfig.java rename to backend/src/main/java/com/opensource/docgrid/domain/worker/config/WorkerSchedulingConfig.java diff --git a/src/main/java/com/opensource/docgrid/domain/worker/controller/WorkerAdminController.java b/backend/src/main/java/com/opensource/docgrid/domain/worker/controller/WorkerAdminController.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/worker/controller/WorkerAdminController.java rename to backend/src/main/java/com/opensource/docgrid/domain/worker/controller/WorkerAdminController.java diff --git a/src/main/java/com/opensource/docgrid/domain/worker/converter/WorkerNodeConverter.java b/backend/src/main/java/com/opensource/docgrid/domain/worker/converter/WorkerNodeConverter.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/worker/converter/WorkerNodeConverter.java rename to backend/src/main/java/com/opensource/docgrid/domain/worker/converter/WorkerNodeConverter.java diff --git a/src/main/java/com/opensource/docgrid/domain/worker/dto/response/WorkerNodeResponse.java b/backend/src/main/java/com/opensource/docgrid/domain/worker/dto/response/WorkerNodeResponse.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/worker/dto/response/WorkerNodeResponse.java rename to backend/src/main/java/com/opensource/docgrid/domain/worker/dto/response/WorkerNodeResponse.java diff --git a/src/main/java/com/opensource/docgrid/domain/worker/entity/EmbeddingJobAttempt.java b/backend/src/main/java/com/opensource/docgrid/domain/worker/entity/EmbeddingJobAttempt.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/worker/entity/EmbeddingJobAttempt.java rename to backend/src/main/java/com/opensource/docgrid/domain/worker/entity/EmbeddingJobAttempt.java diff --git a/src/main/java/com/opensource/docgrid/domain/worker/entity/IndexingEvent.java b/backend/src/main/java/com/opensource/docgrid/domain/worker/entity/IndexingEvent.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/worker/entity/IndexingEvent.java rename to backend/src/main/java/com/opensource/docgrid/domain/worker/entity/IndexingEvent.java diff --git a/src/main/java/com/opensource/docgrid/domain/worker/entity/WorkerNode.java b/backend/src/main/java/com/opensource/docgrid/domain/worker/entity/WorkerNode.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/worker/entity/WorkerNode.java rename to backend/src/main/java/com/opensource/docgrid/domain/worker/entity/WorkerNode.java diff --git a/src/main/java/com/opensource/docgrid/domain/worker/enums/AttemptStatus.java b/backend/src/main/java/com/opensource/docgrid/domain/worker/enums/AttemptStatus.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/worker/enums/AttemptStatus.java rename to backend/src/main/java/com/opensource/docgrid/domain/worker/enums/AttemptStatus.java diff --git a/src/main/java/com/opensource/docgrid/domain/worker/enums/IndexingEventType.java b/backend/src/main/java/com/opensource/docgrid/domain/worker/enums/IndexingEventType.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/worker/enums/IndexingEventType.java rename to backend/src/main/java/com/opensource/docgrid/domain/worker/enums/IndexingEventType.java diff --git a/src/main/java/com/opensource/docgrid/domain/worker/enums/WorkerStatus.java b/backend/src/main/java/com/opensource/docgrid/domain/worker/enums/WorkerStatus.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/worker/enums/WorkerStatus.java rename to backend/src/main/java/com/opensource/docgrid/domain/worker/enums/WorkerStatus.java diff --git a/src/main/java/com/opensource/docgrid/domain/worker/execution/WorkerExecutionSlotPool.java b/backend/src/main/java/com/opensource/docgrid/domain/worker/execution/WorkerExecutionSlotPool.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/worker/execution/WorkerExecutionSlotPool.java rename to backend/src/main/java/com/opensource/docgrid/domain/worker/execution/WorkerExecutionSlotPool.java diff --git a/src/main/java/com/opensource/docgrid/domain/worker/lifecycle/WorkerExecutionLifecycleManager.java b/backend/src/main/java/com/opensource/docgrid/domain/worker/lifecycle/WorkerExecutionLifecycleManager.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/worker/lifecycle/WorkerExecutionLifecycleManager.java rename to backend/src/main/java/com/opensource/docgrid/domain/worker/lifecycle/WorkerExecutionLifecycleManager.java diff --git a/src/main/java/com/opensource/docgrid/domain/worker/lifecycle/WorkerHeartbeatScheduler.java b/backend/src/main/java/com/opensource/docgrid/domain/worker/lifecycle/WorkerHeartbeatScheduler.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/worker/lifecycle/WorkerHeartbeatScheduler.java rename to backend/src/main/java/com/opensource/docgrid/domain/worker/lifecycle/WorkerHeartbeatScheduler.java diff --git a/src/main/java/com/opensource/docgrid/domain/worker/lifecycle/WorkerJobPollingScheduler.java b/backend/src/main/java/com/opensource/docgrid/domain/worker/lifecycle/WorkerJobPollingScheduler.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/worker/lifecycle/WorkerJobPollingScheduler.java rename to backend/src/main/java/com/opensource/docgrid/domain/worker/lifecycle/WorkerJobPollingScheduler.java diff --git a/src/main/java/com/opensource/docgrid/domain/worker/lifecycle/WorkerLeaseRecoveryScheduler.java b/backend/src/main/java/com/opensource/docgrid/domain/worker/lifecycle/WorkerLeaseRecoveryScheduler.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/worker/lifecycle/WorkerLeaseRecoveryScheduler.java rename to backend/src/main/java/com/opensource/docgrid/domain/worker/lifecycle/WorkerLeaseRecoveryScheduler.java diff --git a/src/main/java/com/opensource/docgrid/domain/worker/lifecycle/WorkerLifecycleManager.java b/backend/src/main/java/com/opensource/docgrid/domain/worker/lifecycle/WorkerLifecycleManager.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/worker/lifecycle/WorkerLifecycleManager.java rename to backend/src/main/java/com/opensource/docgrid/domain/worker/lifecycle/WorkerLifecycleManager.java diff --git a/src/main/java/com/opensource/docgrid/domain/worker/repository/EmbeddingJobAttemptRepository.java b/backend/src/main/java/com/opensource/docgrid/domain/worker/repository/EmbeddingJobAttemptRepository.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/worker/repository/EmbeddingJobAttemptRepository.java rename to backend/src/main/java/com/opensource/docgrid/domain/worker/repository/EmbeddingJobAttemptRepository.java diff --git a/src/main/java/com/opensource/docgrid/domain/worker/repository/IndexingEventRepository.java b/backend/src/main/java/com/opensource/docgrid/domain/worker/repository/IndexingEventRepository.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/worker/repository/IndexingEventRepository.java rename to backend/src/main/java/com/opensource/docgrid/domain/worker/repository/IndexingEventRepository.java diff --git a/src/main/java/com/opensource/docgrid/domain/worker/repository/WorkerNodeRepository.java b/backend/src/main/java/com/opensource/docgrid/domain/worker/repository/WorkerNodeRepository.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/worker/repository/WorkerNodeRepository.java rename to backend/src/main/java/com/opensource/docgrid/domain/worker/repository/WorkerNodeRepository.java diff --git a/src/main/java/com/opensource/docgrid/domain/worker/service/WorkerIndexingFailure.java b/backend/src/main/java/com/opensource/docgrid/domain/worker/service/WorkerIndexingFailure.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/worker/service/WorkerIndexingFailure.java rename to backend/src/main/java/com/opensource/docgrid/domain/worker/service/WorkerIndexingFailure.java diff --git a/src/main/java/com/opensource/docgrid/domain/worker/service/WorkerIndexingFailureClassifier.java b/backend/src/main/java/com/opensource/docgrid/domain/worker/service/WorkerIndexingFailureClassifier.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/worker/service/WorkerIndexingFailureClassifier.java rename to backend/src/main/java/com/opensource/docgrid/domain/worker/service/WorkerIndexingFailureClassifier.java diff --git a/src/main/java/com/opensource/docgrid/domain/worker/service/WorkerIndexingFailureReporter.java b/backend/src/main/java/com/opensource/docgrid/domain/worker/service/WorkerIndexingFailureReporter.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/worker/service/WorkerIndexingFailureReporter.java rename to backend/src/main/java/com/opensource/docgrid/domain/worker/service/WorkerIndexingFailureReporter.java diff --git a/src/main/java/com/opensource/docgrid/domain/worker/service/WorkerIndexingPipeline.java b/backend/src/main/java/com/opensource/docgrid/domain/worker/service/WorkerIndexingPipeline.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/worker/service/WorkerIndexingPipeline.java rename to backend/src/main/java/com/opensource/docgrid/domain/worker/service/WorkerIndexingPipeline.java diff --git a/src/main/java/com/opensource/docgrid/domain/worker/service/WorkerLeaseRenewalHandle.java b/backend/src/main/java/com/opensource/docgrid/domain/worker/service/WorkerLeaseRenewalHandle.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/worker/service/WorkerLeaseRenewalHandle.java rename to backend/src/main/java/com/opensource/docgrid/domain/worker/service/WorkerLeaseRenewalHandle.java diff --git a/src/main/java/com/opensource/docgrid/domain/worker/service/WorkerLeaseRenewalManager.java b/backend/src/main/java/com/opensource/docgrid/domain/worker/service/WorkerLeaseRenewalManager.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/worker/service/WorkerLeaseRenewalManager.java rename to backend/src/main/java/com/opensource/docgrid/domain/worker/service/WorkerLeaseRenewalManager.java diff --git a/src/main/java/com/opensource/docgrid/domain/worker/service/command/WorkerNodeCommandService.java b/backend/src/main/java/com/opensource/docgrid/domain/worker/service/command/WorkerNodeCommandService.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/worker/service/command/WorkerNodeCommandService.java rename to backend/src/main/java/com/opensource/docgrid/domain/worker/service/command/WorkerNodeCommandService.java diff --git a/src/main/java/com/opensource/docgrid/domain/worker/service/query/WorkerNodeQueryService.java b/backend/src/main/java/com/opensource/docgrid/domain/worker/service/query/WorkerNodeQueryService.java similarity index 100% rename from src/main/java/com/opensource/docgrid/domain/worker/service/query/WorkerNodeQueryService.java rename to backend/src/main/java/com/opensource/docgrid/domain/worker/service/query/WorkerNodeQueryService.java diff --git a/src/main/java/com/opensource/docgrid/global/common/TestController.java b/backend/src/main/java/com/opensource/docgrid/global/common/TestController.java similarity index 100% rename from src/main/java/com/opensource/docgrid/global/common/TestController.java rename to backend/src/main/java/com/opensource/docgrid/global/common/TestController.java diff --git a/src/main/java/com/opensource/docgrid/global/common/entity/BaseEntity.java b/backend/src/main/java/com/opensource/docgrid/global/common/entity/BaseEntity.java similarity index 100% rename from src/main/java/com/opensource/docgrid/global/common/entity/BaseEntity.java rename to backend/src/main/java/com/opensource/docgrid/global/common/entity/BaseEntity.java diff --git a/src/main/java/com/opensource/docgrid/global/common/response/ApiResponse.java b/backend/src/main/java/com/opensource/docgrid/global/common/response/ApiResponse.java similarity index 100% rename from src/main/java/com/opensource/docgrid/global/common/response/ApiResponse.java rename to backend/src/main/java/com/opensource/docgrid/global/common/response/ApiResponse.java diff --git a/src/main/java/com/opensource/docgrid/global/common/response/ErrorResponse.java b/backend/src/main/java/com/opensource/docgrid/global/common/response/ErrorResponse.java similarity index 100% rename from src/main/java/com/opensource/docgrid/global/common/response/ErrorResponse.java rename to backend/src/main/java/com/opensource/docgrid/global/common/response/ErrorResponse.java diff --git a/src/main/java/com/opensource/docgrid/global/common/response/PageResponse.java b/backend/src/main/java/com/opensource/docgrid/global/common/response/PageResponse.java similarity index 100% rename from src/main/java/com/opensource/docgrid/global/common/response/PageResponse.java rename to backend/src/main/java/com/opensource/docgrid/global/common/response/PageResponse.java diff --git a/src/main/java/com/opensource/docgrid/global/common/response/ResponseUtils.java b/backend/src/main/java/com/opensource/docgrid/global/common/response/ResponseUtils.java similarity index 100% rename from src/main/java/com/opensource/docgrid/global/common/response/ResponseUtils.java rename to backend/src/main/java/com/opensource/docgrid/global/common/response/ResponseUtils.java diff --git a/src/main/java/com/opensource/docgrid/global/common/type/VectorType.java b/backend/src/main/java/com/opensource/docgrid/global/common/type/VectorType.java similarity index 100% rename from src/main/java/com/opensource/docgrid/global/common/type/VectorType.java rename to backend/src/main/java/com/opensource/docgrid/global/common/type/VectorType.java diff --git a/src/main/java/com/opensource/docgrid/global/config/CorsConfig.java b/backend/src/main/java/com/opensource/docgrid/global/config/CorsConfig.java similarity index 100% rename from src/main/java/com/opensource/docgrid/global/config/CorsConfig.java rename to backend/src/main/java/com/opensource/docgrid/global/config/CorsConfig.java diff --git a/src/main/java/com/opensource/docgrid/global/config/EmbeddingServerConfig.java b/backend/src/main/java/com/opensource/docgrid/global/config/EmbeddingServerConfig.java similarity index 100% rename from src/main/java/com/opensource/docgrid/global/config/EmbeddingServerConfig.java rename to backend/src/main/java/com/opensource/docgrid/global/config/EmbeddingServerConfig.java diff --git a/src/main/java/com/opensource/docgrid/global/config/MinioConfig.java b/backend/src/main/java/com/opensource/docgrid/global/config/MinioConfig.java similarity index 100% rename from src/main/java/com/opensource/docgrid/global/config/MinioConfig.java rename to backend/src/main/java/com/opensource/docgrid/global/config/MinioConfig.java diff --git a/src/main/java/com/opensource/docgrid/global/config/MinioProperties.java b/backend/src/main/java/com/opensource/docgrid/global/config/MinioProperties.java similarity index 100% rename from src/main/java/com/opensource/docgrid/global/config/MinioProperties.java rename to backend/src/main/java/com/opensource/docgrid/global/config/MinioProperties.java diff --git a/src/main/java/com/opensource/docgrid/global/config/OllamaServerConfig.java b/backend/src/main/java/com/opensource/docgrid/global/config/OllamaServerConfig.java similarity index 100% rename from src/main/java/com/opensource/docgrid/global/config/OllamaServerConfig.java rename to backend/src/main/java/com/opensource/docgrid/global/config/OllamaServerConfig.java diff --git a/src/main/java/com/opensource/docgrid/global/config/SecurityConfig.java b/backend/src/main/java/com/opensource/docgrid/global/config/SecurityConfig.java similarity index 100% rename from src/main/java/com/opensource/docgrid/global/config/SecurityConfig.java rename to backend/src/main/java/com/opensource/docgrid/global/config/SecurityConfig.java diff --git a/src/main/java/com/opensource/docgrid/global/config/SwaggerConfig.java b/backend/src/main/java/com/opensource/docgrid/global/config/SwaggerConfig.java similarity index 100% rename from src/main/java/com/opensource/docgrid/global/config/SwaggerConfig.java rename to backend/src/main/java/com/opensource/docgrid/global/config/SwaggerConfig.java diff --git a/src/main/java/com/opensource/docgrid/global/config/WebMvcConfig.java b/backend/src/main/java/com/opensource/docgrid/global/config/WebMvcConfig.java similarity index 100% rename from src/main/java/com/opensource/docgrid/global/config/WebMvcConfig.java rename to backend/src/main/java/com/opensource/docgrid/global/config/WebMvcConfig.java diff --git a/src/main/java/com/opensource/docgrid/global/config/WebSocketConfig.java b/backend/src/main/java/com/opensource/docgrid/global/config/WebSocketConfig.java similarity index 100% rename from src/main/java/com/opensource/docgrid/global/config/WebSocketConfig.java rename to backend/src/main/java/com/opensource/docgrid/global/config/WebSocketConfig.java diff --git a/src/main/java/com/opensource/docgrid/global/exception/DocGridException.java b/backend/src/main/java/com/opensource/docgrid/global/exception/DocGridException.java similarity index 100% rename from src/main/java/com/opensource/docgrid/global/exception/DocGridException.java rename to backend/src/main/java/com/opensource/docgrid/global/exception/DocGridException.java diff --git a/src/main/java/com/opensource/docgrid/global/exception/ErrorCode.java b/backend/src/main/java/com/opensource/docgrid/global/exception/ErrorCode.java similarity index 100% rename from src/main/java/com/opensource/docgrid/global/exception/ErrorCode.java rename to backend/src/main/java/com/opensource/docgrid/global/exception/ErrorCode.java diff --git a/src/main/java/com/opensource/docgrid/global/exception/GlobalExceptionHandler.java b/backend/src/main/java/com/opensource/docgrid/global/exception/GlobalExceptionHandler.java similarity index 100% rename from src/main/java/com/opensource/docgrid/global/exception/GlobalExceptionHandler.java rename to backend/src/main/java/com/opensource/docgrid/global/exception/GlobalExceptionHandler.java diff --git a/src/main/resources/application-local.yml b/backend/src/main/resources/application-local.yml similarity index 100% rename from src/main/resources/application-local.yml rename to backend/src/main/resources/application-local.yml diff --git a/src/main/resources/application-prod.yml b/backend/src/main/resources/application-prod.yml similarity index 100% rename from src/main/resources/application-prod.yml rename to backend/src/main/resources/application-prod.yml diff --git a/src/main/resources/application-test.yml b/backend/src/main/resources/application-test.yml similarity index 100% rename from src/main/resources/application-test.yml rename to backend/src/main/resources/application-test.yml diff --git a/src/main/resources/application.yml b/backend/src/main/resources/application.yml similarity index 100% rename from src/main/resources/application.yml rename to backend/src/main/resources/application.yml diff --git a/src/main/resources/db/migration/V10__create_user_roles.sql b/backend/src/main/resources/db/migration/V10__create_user_roles.sql similarity index 100% rename from src/main/resources/db/migration/V10__create_user_roles.sql rename to backend/src/main/resources/db/migration/V10__create_user_roles.sql diff --git a/src/main/resources/db/migration/V11__create_collection_permissions.sql b/backend/src/main/resources/db/migration/V11__create_collection_permissions.sql similarity index 100% rename from src/main/resources/db/migration/V11__create_collection_permissions.sql rename to backend/src/main/resources/db/migration/V11__create_collection_permissions.sql diff --git a/src/main/resources/db/migration/V12__create_document_permissions.sql b/backend/src/main/resources/db/migration/V12__create_document_permissions.sql similarity index 100% rename from src/main/resources/db/migration/V12__create_document_permissions.sql rename to backend/src/main/resources/db/migration/V12__create_document_permissions.sql diff --git a/src/main/resources/db/migration/V13__create_user_document_access_cache.sql b/backend/src/main/resources/db/migration/V13__create_user_document_access_cache.sql similarity index 100% rename from src/main/resources/db/migration/V13__create_user_document_access_cache.sql rename to backend/src/main/resources/db/migration/V13__create_user_document_access_cache.sql diff --git a/src/main/resources/db/migration/V14__create_embedding_models.sql b/backend/src/main/resources/db/migration/V14__create_embedding_models.sql similarity index 100% rename from src/main/resources/db/migration/V14__create_embedding_models.sql rename to backend/src/main/resources/db/migration/V14__create_embedding_models.sql diff --git a/src/main/resources/db/migration/V15__create_document_chunks.sql b/backend/src/main/resources/db/migration/V15__create_document_chunks.sql similarity index 100% rename from src/main/resources/db/migration/V15__create_document_chunks.sql rename to backend/src/main/resources/db/migration/V15__create_document_chunks.sql diff --git a/src/main/resources/db/migration/V16__create_embeddings.sql b/backend/src/main/resources/db/migration/V16__create_embeddings.sql similarity index 100% rename from src/main/resources/db/migration/V16__create_embeddings.sql rename to backend/src/main/resources/db/migration/V16__create_embeddings.sql diff --git a/src/main/resources/db/migration/V17__create_worker_nodes.sql b/backend/src/main/resources/db/migration/V17__create_worker_nodes.sql similarity index 100% rename from src/main/resources/db/migration/V17__create_worker_nodes.sql rename to backend/src/main/resources/db/migration/V17__create_worker_nodes.sql diff --git a/src/main/resources/db/migration/V18__create_embedding_jobs.sql b/backend/src/main/resources/db/migration/V18__create_embedding_jobs.sql similarity index 100% rename from src/main/resources/db/migration/V18__create_embedding_jobs.sql rename to backend/src/main/resources/db/migration/V18__create_embedding_jobs.sql diff --git a/src/main/resources/db/migration/V19__create_embedding_job_attempts.sql b/backend/src/main/resources/db/migration/V19__create_embedding_job_attempts.sql similarity index 100% rename from src/main/resources/db/migration/V19__create_embedding_job_attempts.sql rename to backend/src/main/resources/db/migration/V19__create_embedding_job_attempts.sql diff --git a/src/main/resources/db/migration/V1__init_schema.sql b/backend/src/main/resources/db/migration/V1__init_schema.sql similarity index 100% rename from src/main/resources/db/migration/V1__init_schema.sql rename to backend/src/main/resources/db/migration/V1__init_schema.sql diff --git a/src/main/resources/db/migration/V20__create_indexing_events.sql b/backend/src/main/resources/db/migration/V20__create_indexing_events.sql similarity index 100% rename from src/main/resources/db/migration/V20__create_indexing_events.sql rename to backend/src/main/resources/db/migration/V20__create_indexing_events.sql diff --git a/src/main/resources/db/migration/V21__create_search_queries.sql b/backend/src/main/resources/db/migration/V21__create_search_queries.sql similarity index 100% rename from src/main/resources/db/migration/V21__create_search_queries.sql rename to backend/src/main/resources/db/migration/V21__create_search_queries.sql diff --git a/src/main/resources/db/migration/V22__create_search_results.sql b/backend/src/main/resources/db/migration/V22__create_search_results.sql similarity index 100% rename from src/main/resources/db/migration/V22__create_search_results.sql rename to backend/src/main/resources/db/migration/V22__create_search_results.sql diff --git a/src/main/resources/db/migration/V23__create_rag_responses.sql b/backend/src/main/resources/db/migration/V23__create_rag_responses.sql similarity index 100% rename from src/main/resources/db/migration/V23__create_rag_responses.sql rename to backend/src/main/resources/db/migration/V23__create_rag_responses.sql diff --git a/src/main/resources/db/migration/V24__create_response_citations.sql b/backend/src/main/resources/db/migration/V24__create_response_citations.sql similarity index 100% rename from src/main/resources/db/migration/V24__create_response_citations.sql rename to backend/src/main/resources/db/migration/V24__create_response_citations.sql diff --git a/src/main/resources/db/migration/V25__create_failover_events.sql b/backend/src/main/resources/db/migration/V25__create_failover_events.sql similarity index 100% rename from src/main/resources/db/migration/V25__create_failover_events.sql rename to backend/src/main/resources/db/migration/V25__create_failover_events.sql diff --git a/src/main/resources/db/migration/V26__create_mcp_access_tokens.sql b/backend/src/main/resources/db/migration/V26__create_mcp_access_tokens.sql similarity index 100% rename from src/main/resources/db/migration/V26__create_mcp_access_tokens.sql rename to backend/src/main/resources/db/migration/V26__create_mcp_access_tokens.sql diff --git a/src/main/resources/db/migration/V27__add_embedding_model_constraints.sql b/backend/src/main/resources/db/migration/V27__add_embedding_model_constraints.sql similarity index 100% rename from src/main/resources/db/migration/V27__add_embedding_model_constraints.sql rename to backend/src/main/resources/db/migration/V27__add_embedding_model_constraints.sql diff --git a/src/main/resources/db/migration/V28__seed_roles_departments_admin.sql b/backend/src/main/resources/db/migration/V28__seed_roles_departments_admin.sql similarity index 100% rename from src/main/resources/db/migration/V28__seed_roles_departments_admin.sql rename to backend/src/main/resources/db/migration/V28__seed_roles_departments_admin.sql diff --git a/src/main/resources/db/migration/V29__add_file_object_deduplication_constraint.sql b/backend/src/main/resources/db/migration/V29__add_file_object_deduplication_constraint.sql similarity index 100% rename from src/main/resources/db/migration/V29__add_file_object_deduplication_constraint.sql rename to backend/src/main/resources/db/migration/V29__add_file_object_deduplication_constraint.sql diff --git a/src/main/resources/db/migration/V2__create_departments.sql b/backend/src/main/resources/db/migration/V2__create_departments.sql similarity index 100% rename from src/main/resources/db/migration/V2__create_departments.sql rename to backend/src/main/resources/db/migration/V2__create_departments.sql diff --git a/src/main/resources/db/migration/V30__add_document_version_upload_metadata.sql b/backend/src/main/resources/db/migration/V30__add_document_version_upload_metadata.sql similarity index 100% rename from src/main/resources/db/migration/V30__add_document_version_upload_metadata.sql rename to backend/src/main/resources/db/migration/V30__add_document_version_upload_metadata.sql diff --git a/src/main/resources/db/migration/V31__add_worker_instance_id.sql b/backend/src/main/resources/db/migration/V31__add_worker_instance_id.sql similarity index 100% rename from src/main/resources/db/migration/V31__add_worker_instance_id.sql rename to backend/src/main/resources/db/migration/V31__add_worker_instance_id.sql diff --git a/src/main/resources/db/migration/V32__convert_vector_columns_to_pgvector.sql b/backend/src/main/resources/db/migration/V32__convert_vector_columns_to_pgvector.sql similarity index 100% rename from src/main/resources/db/migration/V32__convert_vector_columns_to_pgvector.sql rename to backend/src/main/resources/db/migration/V32__convert_vector_columns_to_pgvector.sql diff --git a/src/main/resources/db/migration/V33__add_embedding_job_claim_token.sql b/backend/src/main/resources/db/migration/V33__add_embedding_job_claim_token.sql similarity index 100% rename from src/main/resources/db/migration/V33__add_embedding_job_claim_token.sql rename to backend/src/main/resources/db/migration/V33__add_embedding_job_claim_token.sql diff --git a/src/main/resources/db/migration/V34__add_claim_token_to_embedding_job_attempts.sql b/backend/src/main/resources/db/migration/V34__add_claim_token_to_embedding_job_attempts.sql similarity index 100% rename from src/main/resources/db/migration/V34__add_claim_token_to_embedding_job_attempts.sql rename to backend/src/main/resources/db/migration/V34__add_claim_token_to_embedding_job_attempts.sql diff --git a/src/main/resources/db/migration/V35__add_embedding_job_next_retry_at.sql b/backend/src/main/resources/db/migration/V35__add_embedding_job_next_retry_at.sql similarity index 100% rename from src/main/resources/db/migration/V35__add_embedding_job_next_retry_at.sql rename to backend/src/main/resources/db/migration/V35__add_embedding_job_next_retry_at.sql diff --git a/src/main/resources/db/migration/V3__create_users.sql b/backend/src/main/resources/db/migration/V3__create_users.sql similarity index 100% rename from src/main/resources/db/migration/V3__create_users.sql rename to backend/src/main/resources/db/migration/V3__create_users.sql diff --git a/src/main/resources/db/migration/V4__create_file_objects.sql b/backend/src/main/resources/db/migration/V4__create_file_objects.sql similarity index 100% rename from src/main/resources/db/migration/V4__create_file_objects.sql rename to backend/src/main/resources/db/migration/V4__create_file_objects.sql diff --git a/src/main/resources/db/migration/V5__create_documents.sql b/backend/src/main/resources/db/migration/V5__create_documents.sql similarity index 100% rename from src/main/resources/db/migration/V5__create_documents.sql rename to backend/src/main/resources/db/migration/V5__create_documents.sql diff --git a/src/main/resources/db/migration/V6__create_document_versions.sql b/backend/src/main/resources/db/migration/V6__create_document_versions.sql similarity index 100% rename from src/main/resources/db/migration/V6__create_document_versions.sql rename to backend/src/main/resources/db/migration/V6__create_document_versions.sql diff --git a/src/main/resources/db/migration/V7__create_collections.sql b/backend/src/main/resources/db/migration/V7__create_collections.sql similarity index 100% rename from src/main/resources/db/migration/V7__create_collections.sql rename to backend/src/main/resources/db/migration/V7__create_collections.sql diff --git a/src/main/resources/db/migration/V8__create_collection_documents.sql b/backend/src/main/resources/db/migration/V8__create_collection_documents.sql similarity index 100% rename from src/main/resources/db/migration/V8__create_collection_documents.sql rename to backend/src/main/resources/db/migration/V8__create_collection_documents.sql diff --git a/src/main/resources/db/migration/V9__create_roles.sql b/backend/src/main/resources/db/migration/V9__create_roles.sql similarity index 100% rename from src/main/resources/db/migration/V9__create_roles.sql rename to backend/src/main/resources/db/migration/V9__create_roles.sql diff --git a/src/main/resources/db/seed/R__seed_bge_m3_embedding_model.sql b/backend/src/main/resources/db/seed/R__seed_bge_m3_embedding_model.sql similarity index 100% rename from src/main/resources/db/seed/R__seed_bge_m3_embedding_model.sql rename to backend/src/main/resources/db/seed/R__seed_bge_m3_embedding_model.sql diff --git a/src/main/resources/db/seed/R__seed_test_fixtures.sql b/backend/src/main/resources/db/seed/R__seed_test_fixtures.sql similarity index 100% rename from src/main/resources/db/seed/R__seed_test_fixtures.sql rename to backend/src/main/resources/db/seed/R__seed_test_fixtures.sql diff --git a/src/test/java/com/opensource/docgrid/DocgridApplicationTests.java b/backend/src/test/java/com/opensource/docgrid/DocgridApplicationTests.java similarity index 100% rename from src/test/java/com/opensource/docgrid/DocgridApplicationTests.java rename to backend/src/test/java/com/opensource/docgrid/DocgridApplicationTests.java diff --git a/src/test/java/com/opensource/docgrid/domain/auth/fixture/AuthFixture.java b/backend/src/test/java/com/opensource/docgrid/domain/auth/fixture/AuthFixture.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/auth/fixture/AuthFixture.java rename to backend/src/test/java/com/opensource/docgrid/domain/auth/fixture/AuthFixture.java diff --git a/src/test/java/com/opensource/docgrid/domain/auth/jwt/StompAuthChannelInterceptorTest.java b/backend/src/test/java/com/opensource/docgrid/domain/auth/jwt/StompAuthChannelInterceptorTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/auth/jwt/StompAuthChannelInterceptorTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/auth/jwt/StompAuthChannelInterceptorTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/auth/service/command/AuthCommandServiceTest.java b/backend/src/test/java/com/opensource/docgrid/domain/auth/service/command/AuthCommandServiceTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/auth/service/command/AuthCommandServiceTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/auth/service/command/AuthCommandServiceTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/auth/service/query/AuthQueryServiceTest.java b/backend/src/test/java/com/opensource/docgrid/domain/auth/service/query/AuthQueryServiceTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/auth/service/query/AuthQueryServiceTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/auth/service/query/AuthQueryServiceTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/collection/fixture/CollectionFixture.java b/backend/src/test/java/com/opensource/docgrid/domain/collection/fixture/CollectionFixture.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/collection/fixture/CollectionFixture.java rename to backend/src/test/java/com/opensource/docgrid/domain/collection/fixture/CollectionFixture.java diff --git a/src/test/java/com/opensource/docgrid/domain/collection/service/command/CollectionCommandServiceTest.java b/backend/src/test/java/com/opensource/docgrid/domain/collection/service/command/CollectionCommandServiceTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/collection/service/command/CollectionCommandServiceTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/collection/service/command/CollectionCommandServiceTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/collection/service/query/CollectionQueryServiceTest.java b/backend/src/test/java/com/opensource/docgrid/domain/collection/service/query/CollectionQueryServiceTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/collection/service/query/CollectionQueryServiceTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/collection/service/query/CollectionQueryServiceTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/dashboard/event/DashboardPushDebounceIntegrationTest.java b/backend/src/test/java/com/opensource/docgrid/domain/dashboard/event/DashboardPushDebounceIntegrationTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/dashboard/event/DashboardPushDebounceIntegrationTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/dashboard/event/DashboardPushDebounceIntegrationTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/dashboard/event/DashboardPushSchedulerTest.java b/backend/src/test/java/com/opensource/docgrid/domain/dashboard/event/DashboardPushSchedulerTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/dashboard/event/DashboardPushSchedulerTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/dashboard/event/DashboardPushSchedulerTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/dashboard/event/DashboardUpdateFlagTest.java b/backend/src/test/java/com/opensource/docgrid/domain/dashboard/event/DashboardUpdateFlagTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/dashboard/event/DashboardUpdateFlagTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/dashboard/event/DashboardUpdateFlagTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/dashboard/event/EmbeddingJobStatusChangedAfterCommitIntegrationTest.java b/backend/src/test/java/com/opensource/docgrid/domain/dashboard/event/EmbeddingJobStatusChangedAfterCommitIntegrationTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/dashboard/event/EmbeddingJobStatusChangedAfterCommitIntegrationTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/dashboard/event/EmbeddingJobStatusChangedAfterCommitIntegrationTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/dashboard/event/EmbeddingJobStatusChangedEventListenerTest.java b/backend/src/test/java/com/opensource/docgrid/domain/dashboard/event/EmbeddingJobStatusChangedEventListenerTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/dashboard/event/EmbeddingJobStatusChangedEventListenerTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/dashboard/event/EmbeddingJobStatusChangedEventListenerTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/dashboard/service/command/EmbeddingJobRetryServiceTest.java b/backend/src/test/java/com/opensource/docgrid/domain/dashboard/service/command/EmbeddingJobRetryServiceTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/dashboard/service/command/EmbeddingJobRetryServiceTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/dashboard/service/command/EmbeddingJobRetryServiceTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/dashboard/service/command/EmbeddingJobRetryTransactionIsolationIntegrationTest.java b/backend/src/test/java/com/opensource/docgrid/domain/dashboard/service/command/EmbeddingJobRetryTransactionIsolationIntegrationTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/dashboard/service/command/EmbeddingJobRetryTransactionIsolationIntegrationTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/dashboard/service/command/EmbeddingJobRetryTransactionIsolationIntegrationTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/dashboard/service/query/DashboardQueryServiceTest.java b/backend/src/test/java/com/opensource/docgrid/domain/dashboard/service/query/DashboardQueryServiceTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/dashboard/service/query/DashboardQueryServiceTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/dashboard/service/query/DashboardQueryServiceTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/dashboard/websocket/DashboardWebSocketIntegrationTest.java b/backend/src/test/java/com/opensource/docgrid/domain/dashboard/websocket/DashboardWebSocketIntegrationTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/dashboard/websocket/DashboardWebSocketIntegrationTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/dashboard/websocket/DashboardWebSocketIntegrationTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/document/benchmark/ChunkQualityBenchmarkSupport.java b/backend/src/test/java/com/opensource/docgrid/domain/document/benchmark/ChunkQualityBenchmarkSupport.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/document/benchmark/ChunkQualityBenchmarkSupport.java rename to backend/src/test/java/com/opensource/docgrid/domain/document/benchmark/ChunkQualityBenchmarkSupport.java diff --git a/src/test/java/com/opensource/docgrid/domain/document/benchmark/ChunkQualityBenchmarkSupportTest.java b/backend/src/test/java/com/opensource/docgrid/domain/document/benchmark/ChunkQualityBenchmarkSupportTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/document/benchmark/ChunkQualityBenchmarkSupportTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/document/benchmark/ChunkQualityBenchmarkSupportTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/document/benchmark/ChunkQualityPerformanceBenchmark.java b/backend/src/test/java/com/opensource/docgrid/domain/document/benchmark/ChunkQualityPerformanceBenchmark.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/document/benchmark/ChunkQualityPerformanceBenchmark.java rename to backend/src/test/java/com/opensource/docgrid/domain/document/benchmark/ChunkQualityPerformanceBenchmark.java diff --git a/src/test/java/com/opensource/docgrid/domain/document/config/DocumentChunkingPropertiesTest.java b/backend/src/test/java/com/opensource/docgrid/domain/document/config/DocumentChunkingPropertiesTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/document/config/DocumentChunkingPropertiesTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/document/config/DocumentChunkingPropertiesTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/document/controller/DocumentQueryControllerTest.java b/backend/src/test/java/com/opensource/docgrid/domain/document/controller/DocumentQueryControllerTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/document/controller/DocumentQueryControllerTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/document/controller/DocumentQueryControllerTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/document/controller/DocumentUploadControllerTest.java b/backend/src/test/java/com/opensource/docgrid/domain/document/controller/DocumentUploadControllerTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/document/controller/DocumentUploadControllerTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/document/controller/DocumentUploadControllerTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/document/converter/DocumentStatusConverterTest.java b/backend/src/test/java/com/opensource/docgrid/domain/document/converter/DocumentStatusConverterTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/document/converter/DocumentStatusConverterTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/document/converter/DocumentStatusConverterTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/document/entity/DocumentTest.java b/backend/src/test/java/com/opensource/docgrid/domain/document/entity/DocumentTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/document/entity/DocumentTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/document/entity/DocumentTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/document/entity/DocumentVersionTest.java b/backend/src/test/java/com/opensource/docgrid/domain/document/entity/DocumentVersionTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/document/entity/DocumentVersionTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/document/entity/DocumentVersionTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/document/integration/DocumentChunkingIntegrationTest.java b/backend/src/test/java/com/opensource/docgrid/domain/document/integration/DocumentChunkingIntegrationTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/document/integration/DocumentChunkingIntegrationTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/document/integration/DocumentChunkingIntegrationTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/document/integration/DocumentUploadIntegrationTest.java b/backend/src/test/java/com/opensource/docgrid/domain/document/integration/DocumentUploadIntegrationTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/document/integration/DocumentUploadIntegrationTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/document/integration/DocumentUploadIntegrationTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/document/integration/DocumentVersionUploadIntegrationTest.java b/backend/src/test/java/com/opensource/docgrid/domain/document/integration/DocumentVersionUploadIntegrationTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/document/integration/DocumentVersionUploadIntegrationTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/document/integration/DocumentVersionUploadIntegrationTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/document/integration/minio/MinioDocumentReadIntegrationTest.java b/backend/src/test/java/com/opensource/docgrid/domain/document/integration/minio/MinioDocumentReadIntegrationTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/document/integration/minio/MinioDocumentReadIntegrationTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/document/integration/minio/MinioDocumentReadIntegrationTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/document/integration/minio/MinioUploadConcurrencyIntegrationTest.java b/backend/src/test/java/com/opensource/docgrid/domain/document/integration/minio/MinioUploadConcurrencyIntegrationTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/document/integration/minio/MinioUploadConcurrencyIntegrationTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/document/integration/minio/MinioUploadConcurrencyIntegrationTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/document/repository/DocumentReadableIdsRepositoryTest.java b/backend/src/test/java/com/opensource/docgrid/domain/document/repository/DocumentReadableIdsRepositoryTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/document/repository/DocumentReadableIdsRepositoryTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/document/repository/DocumentReadableIdsRepositoryTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/document/repository/DocumentRepositoryFetchTest.java b/backend/src/test/java/com/opensource/docgrid/domain/document/repository/DocumentRepositoryFetchTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/document/repository/DocumentRepositoryFetchTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/document/repository/DocumentRepositoryFetchTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/document/repository/DocumentStatusRepositoryTest.java b/backend/src/test/java/com/opensource/docgrid/domain/document/repository/DocumentStatusRepositoryTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/document/repository/DocumentStatusRepositoryTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/document/repository/DocumentStatusRepositoryTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/document/service/DocumentParserRegistryTest.java b/backend/src/test/java/com/opensource/docgrid/domain/document/service/DocumentParserRegistryTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/document/service/DocumentParserRegistryTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/document/service/DocumentParserRegistryTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/document/service/DocumentParsingServiceTest.java b/backend/src/test/java/com/opensource/docgrid/domain/document/service/DocumentParsingServiceTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/document/service/DocumentParsingServiceTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/document/service/DocumentParsingServiceTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/document/service/DocumentUploadFacadeTest.java b/backend/src/test/java/com/opensource/docgrid/domain/document/service/DocumentUploadFacadeTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/document/service/DocumentUploadFacadeTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/document/service/DocumentUploadFacadeTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/document/service/DocumentVersionUploadFacadeTest.java b/backend/src/test/java/com/opensource/docgrid/domain/document/service/DocumentVersionUploadFacadeTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/document/service/DocumentVersionUploadFacadeTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/document/service/DocumentVersionUploadFacadeTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/document/service/DocxDocumentParserTest.java b/backend/src/test/java/com/opensource/docgrid/domain/document/service/DocxDocumentParserTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/document/service/DocxDocumentParserTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/document/service/DocxDocumentParserTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/document/service/FileHashServiceTest.java b/backend/src/test/java/com/opensource/docgrid/domain/document/service/FileHashServiceTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/document/service/FileHashServiceTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/document/service/FileHashServiceTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/document/service/FileValidationServiceTest.java b/backend/src/test/java/com/opensource/docgrid/domain/document/service/FileValidationServiceTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/document/service/FileValidationServiceTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/document/service/FileValidationServiceTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/document/service/FixedSizeChunkerTest.java b/backend/src/test/java/com/opensource/docgrid/domain/document/service/FixedSizeChunkerTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/document/service/FixedSizeChunkerTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/document/service/FixedSizeChunkerTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/document/service/PdfDocumentParserTest.java b/backend/src/test/java/com/opensource/docgrid/domain/document/service/PdfDocumentParserTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/document/service/PdfDocumentParserTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/document/service/PdfDocumentParserTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/document/service/TextDocumentParserTest.java b/backend/src/test/java/com/opensource/docgrid/domain/document/service/TextDocumentParserTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/document/service/TextDocumentParserTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/document/service/TextDocumentParserTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/document/service/command/DocumentChunkTransactionServiceTest.java b/backend/src/test/java/com/opensource/docgrid/domain/document/service/command/DocumentChunkTransactionServiceTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/document/service/command/DocumentChunkTransactionServiceTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/document/service/command/DocumentChunkTransactionServiceTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/document/service/command/DocumentUploadServiceTest.java b/backend/src/test/java/com/opensource/docgrid/domain/document/service/command/DocumentUploadServiceTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/document/service/command/DocumentUploadServiceTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/document/service/command/DocumentUploadServiceTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/document/service/query/DocumentQueryServiceTest.java b/backend/src/test/java/com/opensource/docgrid/domain/document/service/query/DocumentQueryServiceTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/document/service/query/DocumentQueryServiceTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/document/service/query/DocumentQueryServiceTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/document/storage/MinioStorageServiceTest.java b/backend/src/test/java/com/opensource/docgrid/domain/document/storage/MinioStorageServiceTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/document/storage/MinioStorageServiceTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/document/storage/MinioStorageServiceTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/embedding/benchmark/EmbeddingJobClaimPerformanceBenchmark.java b/backend/src/test/java/com/opensource/docgrid/domain/embedding/benchmark/EmbeddingJobClaimPerformanceBenchmark.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/embedding/benchmark/EmbeddingJobClaimPerformanceBenchmark.java rename to backend/src/test/java/com/opensource/docgrid/domain/embedding/benchmark/EmbeddingJobClaimPerformanceBenchmark.java diff --git a/src/test/java/com/opensource/docgrid/domain/embedding/benchmark/EmbeddingModelIndexBenchmark.java b/backend/src/test/java/com/opensource/docgrid/domain/embedding/benchmark/EmbeddingModelIndexBenchmark.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/embedding/benchmark/EmbeddingModelIndexBenchmark.java rename to backend/src/test/java/com/opensource/docgrid/domain/embedding/benchmark/EmbeddingModelIndexBenchmark.java diff --git a/src/test/java/com/opensource/docgrid/domain/embedding/benchmark/VectorStoragePerformanceBenchmark.java b/backend/src/test/java/com/opensource/docgrid/domain/embedding/benchmark/VectorStoragePerformanceBenchmark.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/embedding/benchmark/VectorStoragePerformanceBenchmark.java rename to backend/src/test/java/com/opensource/docgrid/domain/embedding/benchmark/VectorStoragePerformanceBenchmark.java diff --git a/src/test/java/com/opensource/docgrid/domain/embedding/benchmark/VectorStoragePerformanceBenchmarkTest.java b/backend/src/test/java/com/opensource/docgrid/domain/embedding/benchmark/VectorStoragePerformanceBenchmarkTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/embedding/benchmark/VectorStoragePerformanceBenchmarkTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/embedding/benchmark/VectorStoragePerformanceBenchmarkTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/embedding/client/EmbeddingClientTest.java b/backend/src/test/java/com/opensource/docgrid/domain/embedding/client/EmbeddingClientTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/embedding/client/EmbeddingClientTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/embedding/client/EmbeddingClientTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/embedding/config/EmbeddingBatchPropertiesTest.java b/backend/src/test/java/com/opensource/docgrid/domain/embedding/config/EmbeddingBatchPropertiesTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/embedding/config/EmbeddingBatchPropertiesTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/embedding/config/EmbeddingBatchPropertiesTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/embedding/controller/EmbeddingModelControllerTest.java b/backend/src/test/java/com/opensource/docgrid/domain/embedding/controller/EmbeddingModelControllerTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/embedding/controller/EmbeddingModelControllerTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/embedding/controller/EmbeddingModelControllerTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/embedding/controller/IndexingJobAdminControllerTest.java b/backend/src/test/java/com/opensource/docgrid/domain/embedding/controller/IndexingJobAdminControllerTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/embedding/controller/IndexingJobAdminControllerTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/embedding/controller/IndexingJobAdminControllerTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/embedding/controller/IndexingJobAdminQueryControllerTest.java b/backend/src/test/java/com/opensource/docgrid/domain/embedding/controller/IndexingJobAdminQueryControllerTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/embedding/controller/IndexingJobAdminQueryControllerTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/embedding/controller/IndexingJobAdminQueryControllerTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/embedding/converter/EmbeddingJobAttemptConverterTest.java b/backend/src/test/java/com/opensource/docgrid/domain/embedding/converter/EmbeddingJobAttemptConverterTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/embedding/converter/EmbeddingJobAttemptConverterTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/embedding/converter/EmbeddingJobAttemptConverterTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/embedding/converter/EmbeddingJobConverterTest.java b/backend/src/test/java/com/opensource/docgrid/domain/embedding/converter/EmbeddingJobConverterTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/embedding/converter/EmbeddingJobConverterTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/embedding/converter/EmbeddingJobConverterTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/embedding/converter/IndexingJobAdminConverterTest.java b/backend/src/test/java/com/opensource/docgrid/domain/embedding/converter/IndexingJobAdminConverterTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/embedding/converter/IndexingJobAdminConverterTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/embedding/converter/IndexingJobAdminConverterTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/embedding/dto/request/FailDocumentIndexingRequestTest.java b/backend/src/test/java/com/opensource/docgrid/domain/embedding/dto/request/FailDocumentIndexingRequestTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/embedding/dto/request/FailDocumentIndexingRequestTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/embedding/dto/request/FailDocumentIndexingRequestTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/embedding/entity/EmbeddingJobTest.java b/backend/src/test/java/com/opensource/docgrid/domain/embedding/entity/EmbeddingJobTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/embedding/entity/EmbeddingJobTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/embedding/entity/EmbeddingJobTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/embedding/entity/EmbeddingModelTest.java b/backend/src/test/java/com/opensource/docgrid/domain/embedding/entity/EmbeddingModelTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/embedding/entity/EmbeddingModelTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/embedding/entity/EmbeddingModelTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/embedding/entity/EmbeddingTest.java b/backend/src/test/java/com/opensource/docgrid/domain/embedding/entity/EmbeddingTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/embedding/entity/EmbeddingTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/embedding/entity/EmbeddingTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/embedding/enums/IndexingFailureTypeTest.java b/backend/src/test/java/com/opensource/docgrid/domain/embedding/enums/IndexingFailureTypeTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/embedding/enums/IndexingFailureTypeTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/embedding/enums/IndexingFailureTypeTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/embedding/fixture/EmbeddingModelFixture.java b/backend/src/test/java/com/opensource/docgrid/domain/embedding/fixture/EmbeddingModelFixture.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/embedding/fixture/EmbeddingModelFixture.java rename to backend/src/test/java/com/opensource/docgrid/domain/embedding/fixture/EmbeddingModelFixture.java diff --git a/src/test/java/com/opensource/docgrid/domain/embedding/integration/DocumentEmbeddingIntegrationTest.java b/backend/src/test/java/com/opensource/docgrid/domain/embedding/integration/DocumentEmbeddingIntegrationTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/embedding/integration/DocumentEmbeddingIntegrationTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/embedding/integration/DocumentEmbeddingIntegrationTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/embedding/integration/DocumentIndexingCompletionIntegrationTest.java b/backend/src/test/java/com/opensource/docgrid/domain/embedding/integration/DocumentIndexingCompletionIntegrationTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/embedding/integration/DocumentIndexingCompletionIntegrationTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/embedding/integration/DocumentIndexingCompletionIntegrationTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/embedding/integration/DocumentIndexingFailureIntegrationTest.java b/backend/src/test/java/com/opensource/docgrid/domain/embedding/integration/DocumentIndexingFailureIntegrationTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/embedding/integration/DocumentIndexingFailureIntegrationTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/embedding/integration/DocumentIndexingFailureIntegrationTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/embedding/integration/EmbeddingJobAttemptIntegrationTest.java b/backend/src/test/java/com/opensource/docgrid/domain/embedding/integration/EmbeddingJobAttemptIntegrationTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/embedding/integration/EmbeddingJobAttemptIntegrationTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/embedding/integration/EmbeddingJobAttemptIntegrationTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/embedding/integration/EmbeddingJobClaimConcurrencyIntegrationTest.java b/backend/src/test/java/com/opensource/docgrid/domain/embedding/integration/EmbeddingJobClaimConcurrencyIntegrationTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/embedding/integration/EmbeddingJobClaimConcurrencyIntegrationTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/embedding/integration/EmbeddingJobClaimConcurrencyIntegrationTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/embedding/integration/EmbeddingJobClaimIntegrationTest.java b/backend/src/test/java/com/opensource/docgrid/domain/embedding/integration/EmbeddingJobClaimIntegrationTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/embedding/integration/EmbeddingJobClaimIntegrationTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/embedding/integration/EmbeddingJobClaimIntegrationTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/embedding/integration/EmbeddingJobLeaseRecoveryIntegrationTest.java b/backend/src/test/java/com/opensource/docgrid/domain/embedding/integration/EmbeddingJobLeaseRecoveryIntegrationTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/embedding/integration/EmbeddingJobLeaseRecoveryIntegrationTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/embedding/integration/EmbeddingJobLeaseRecoveryIntegrationTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/embedding/integration/EmbeddingJobManualRetryIntegrationTest.java b/backend/src/test/java/com/opensource/docgrid/domain/embedding/integration/EmbeddingJobManualRetryIntegrationTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/embedding/integration/EmbeddingJobManualRetryIntegrationTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/embedding/integration/EmbeddingJobManualRetryIntegrationTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/embedding/integration/EmbeddingModelConstraintIntegrationTest.java b/backend/src/test/java/com/opensource/docgrid/domain/embedding/integration/EmbeddingModelConstraintIntegrationTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/embedding/integration/EmbeddingModelConstraintIntegrationTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/embedding/integration/EmbeddingModelConstraintIntegrationTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/embedding/integration/IndexingJobAdminQueryIntegrationTest.java b/backend/src/test/java/com/opensource/docgrid/domain/embedding/integration/IndexingJobAdminQueryIntegrationTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/embedding/integration/IndexingJobAdminQueryIntegrationTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/embedding/integration/IndexingJobAdminQueryIntegrationTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/embedding/repository/EmbeddingJobDashboardRepositoryTest.java b/backend/src/test/java/com/opensource/docgrid/domain/embedding/repository/EmbeddingJobDashboardRepositoryTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/embedding/repository/EmbeddingJobDashboardRepositoryTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/embedding/repository/EmbeddingJobDashboardRepositoryTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/embedding/repository/EmbeddingModelRepositoryTest.java b/backend/src/test/java/com/opensource/docgrid/domain/embedding/repository/EmbeddingModelRepositoryTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/embedding/repository/EmbeddingModelRepositoryTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/embedding/repository/EmbeddingModelRepositoryTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/embedding/repository/IndexingCompletionRepositoryTest.java b/backend/src/test/java/com/opensource/docgrid/domain/embedding/repository/IndexingCompletionRepositoryTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/embedding/repository/IndexingCompletionRepositoryTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/embedding/repository/IndexingCompletionRepositoryTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/embedding/service/DocumentEmbeddingGeneratorTest.java b/backend/src/test/java/com/opensource/docgrid/domain/embedding/service/DocumentEmbeddingGeneratorTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/embedding/service/DocumentEmbeddingGeneratorTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/embedding/service/DocumentEmbeddingGeneratorTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/embedding/service/DocumentEmbeddingServiceTest.java b/backend/src/test/java/com/opensource/docgrid/domain/embedding/service/DocumentEmbeddingServiceTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/embedding/service/DocumentEmbeddingServiceTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/embedding/service/DocumentEmbeddingServiceTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/embedding/service/command/DocumentEmbeddingTransactionServiceTest.java b/backend/src/test/java/com/opensource/docgrid/domain/embedding/service/command/DocumentEmbeddingTransactionServiceTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/embedding/service/command/DocumentEmbeddingTransactionServiceTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/embedding/service/command/DocumentEmbeddingTransactionServiceTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/embedding/service/command/DocumentIndexingCompletionServiceTest.java b/backend/src/test/java/com/opensource/docgrid/domain/embedding/service/command/DocumentIndexingCompletionServiceTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/embedding/service/command/DocumentIndexingCompletionServiceTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/embedding/service/command/DocumentIndexingCompletionServiceTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/embedding/service/command/DocumentIndexingFailureServiceTest.java b/backend/src/test/java/com/opensource/docgrid/domain/embedding/service/command/DocumentIndexingFailureServiceTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/embedding/service/command/DocumentIndexingFailureServiceTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/embedding/service/command/DocumentIndexingFailureServiceTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/embedding/service/command/EmbeddingJobAttemptServiceTest.java b/backend/src/test/java/com/opensource/docgrid/domain/embedding/service/command/EmbeddingJobAttemptServiceTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/embedding/service/command/EmbeddingJobAttemptServiceTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/embedding/service/command/EmbeddingJobAttemptServiceTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/embedding/service/command/EmbeddingJobClaimServiceTest.java b/backend/src/test/java/com/opensource/docgrid/domain/embedding/service/command/EmbeddingJobClaimServiceTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/embedding/service/command/EmbeddingJobClaimServiceTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/embedding/service/command/EmbeddingJobClaimServiceTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/embedding/service/command/EmbeddingJobLeaseRecoveryServiceTest.java b/backend/src/test/java/com/opensource/docgrid/domain/embedding/service/command/EmbeddingJobLeaseRecoveryServiceTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/embedding/service/command/EmbeddingJobLeaseRecoveryServiceTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/embedding/service/command/EmbeddingJobLeaseRecoveryServiceTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/embedding/service/command/EmbeddingJobLeaseServiceTest.java b/backend/src/test/java/com/opensource/docgrid/domain/embedding/service/command/EmbeddingJobLeaseServiceTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/embedding/service/command/EmbeddingJobLeaseServiceTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/embedding/service/command/EmbeddingJobLeaseServiceTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/embedding/service/command/EmbeddingJobManualRetryServiceTest.java b/backend/src/test/java/com/opensource/docgrid/domain/embedding/service/command/EmbeddingJobManualRetryServiceTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/embedding/service/command/EmbeddingJobManualRetryServiceTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/embedding/service/command/EmbeddingJobManualRetryServiceTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/embedding/service/command/EmbeddingJobOwnershipValidatorTest.java b/backend/src/test/java/com/opensource/docgrid/domain/embedding/service/command/EmbeddingJobOwnershipValidatorTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/embedding/service/command/EmbeddingJobOwnershipValidatorTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/embedding/service/command/EmbeddingJobOwnershipValidatorTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/embedding/service/query/EmbeddingJobRecoveryQueryServiceTest.java b/backend/src/test/java/com/opensource/docgrid/domain/embedding/service/query/EmbeddingJobRecoveryQueryServiceTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/embedding/service/query/EmbeddingJobRecoveryQueryServiceTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/embedding/service/query/EmbeddingJobRecoveryQueryServiceTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/embedding/service/query/EmbeddingModelQueryServiceTest.java b/backend/src/test/java/com/opensource/docgrid/domain/embedding/service/query/EmbeddingModelQueryServiceTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/embedding/service/query/EmbeddingModelQueryServiceTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/embedding/service/query/EmbeddingModelQueryServiceTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/embedding/service/query/IndexingJobAdminQueryServiceTest.java b/backend/src/test/java/com/opensource/docgrid/domain/embedding/service/query/IndexingJobAdminQueryServiceTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/embedding/service/query/IndexingJobAdminQueryServiceTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/embedding/service/query/IndexingJobAdminQueryServiceTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/embedding/service/query/QueryEmbeddingServiceTest.java b/backend/src/test/java/com/opensource/docgrid/domain/embedding/service/query/QueryEmbeddingServiceTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/embedding/service/query/QueryEmbeddingServiceTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/embedding/service/query/QueryEmbeddingServiceTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/mcp/fixture/McpFixture.java b/backend/src/test/java/com/opensource/docgrid/domain/mcp/fixture/McpFixture.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/mcp/fixture/McpFixture.java rename to backend/src/test/java/com/opensource/docgrid/domain/mcp/fixture/McpFixture.java diff --git a/src/test/java/com/opensource/docgrid/domain/mcp/security/McpApiKeyAuthFilterTest.java b/backend/src/test/java/com/opensource/docgrid/domain/mcp/security/McpApiKeyAuthFilterTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/mcp/security/McpApiKeyAuthFilterTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/mcp/security/McpApiKeyAuthFilterTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/mcp/security/McpRateLimiterTest.java b/backend/src/test/java/com/opensource/docgrid/domain/mcp/security/McpRateLimiterTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/mcp/security/McpRateLimiterTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/mcp/security/McpRateLimiterTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/mcp/service/command/McpAccessTokenCommandServiceTest.java b/backend/src/test/java/com/opensource/docgrid/domain/mcp/service/command/McpAccessTokenCommandServiceTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/mcp/service/command/McpAccessTokenCommandServiceTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/mcp/service/command/McpAccessTokenCommandServiceTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/mcp/service/query/McpAccessTokenQueryServiceTest.java b/backend/src/test/java/com/opensource/docgrid/domain/mcp/service/query/McpAccessTokenQueryServiceTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/mcp/service/query/McpAccessTokenQueryServiceTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/mcp/service/query/McpAccessTokenQueryServiceTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/mcp/tool/DocGridMcpToolsTest.java b/backend/src/test/java/com/opensource/docgrid/domain/mcp/tool/DocGridMcpToolsTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/mcp/tool/DocGridMcpToolsTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/mcp/tool/DocGridMcpToolsTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/permission/fixture/PermissionFixture.java b/backend/src/test/java/com/opensource/docgrid/domain/permission/fixture/PermissionFixture.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/permission/fixture/PermissionFixture.java rename to backend/src/test/java/com/opensource/docgrid/domain/permission/fixture/PermissionFixture.java diff --git a/src/test/java/com/opensource/docgrid/domain/permission/service/command/CollectionPermissionCommandServiceTest.java b/backend/src/test/java/com/opensource/docgrid/domain/permission/service/command/CollectionPermissionCommandServiceTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/permission/service/command/CollectionPermissionCommandServiceTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/permission/service/command/CollectionPermissionCommandServiceTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/permission/service/command/DocumentPermissionCommandServiceTest.java b/backend/src/test/java/com/opensource/docgrid/domain/permission/service/command/DocumentPermissionCommandServiceTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/permission/service/command/DocumentPermissionCommandServiceTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/permission/service/command/DocumentPermissionCommandServiceTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/permission/service/query/PermissionQueryServiceTest.java b/backend/src/test/java/com/opensource/docgrid/domain/permission/service/query/PermissionQueryServiceTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/permission/service/query/PermissionQueryServiceTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/permission/service/query/PermissionQueryServiceTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/rag/service/OllamaClientTest.java b/backend/src/test/java/com/opensource/docgrid/domain/rag/service/OllamaClientTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/rag/service/OllamaClientTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/rag/service/OllamaClientTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/rag/service/PromptBuilderTest.java b/backend/src/test/java/com/opensource/docgrid/domain/rag/service/PromptBuilderTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/rag/service/PromptBuilderTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/rag/service/PromptBuilderTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/rag/service/RagFacadeTest.java b/backend/src/test/java/com/opensource/docgrid/domain/rag/service/RagFacadeTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/rag/service/RagFacadeTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/rag/service/RagFacadeTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/rag/service/command/RagResponseCommandServiceTest.java b/backend/src/test/java/com/opensource/docgrid/domain/rag/service/command/RagResponseCommandServiceTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/rag/service/command/RagResponseCommandServiceTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/rag/service/command/RagResponseCommandServiceTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/rag/service/command/ResponseCitationCommandServiceTest.java b/backend/src/test/java/com/opensource/docgrid/domain/rag/service/command/ResponseCitationCommandServiceTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/rag/service/command/ResponseCitationCommandServiceTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/rag/service/command/ResponseCitationCommandServiceTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/search/benchmark/VectorSearchPerformanceBenchmark.java b/backend/src/test/java/com/opensource/docgrid/domain/search/benchmark/VectorSearchPerformanceBenchmark.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/search/benchmark/VectorSearchPerformanceBenchmark.java rename to backend/src/test/java/com/opensource/docgrid/domain/search/benchmark/VectorSearchPerformanceBenchmark.java diff --git a/src/test/java/com/opensource/docgrid/domain/search/benchmark/VectorSearchPerformanceBenchmarkTest.java b/backend/src/test/java/com/opensource/docgrid/domain/search/benchmark/VectorSearchPerformanceBenchmarkTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/search/benchmark/VectorSearchPerformanceBenchmarkTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/search/benchmark/VectorSearchPerformanceBenchmarkTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/search/fixture/SearchQueryFixture.java b/backend/src/test/java/com/opensource/docgrid/domain/search/fixture/SearchQueryFixture.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/search/fixture/SearchQueryFixture.java rename to backend/src/test/java/com/opensource/docgrid/domain/search/fixture/SearchQueryFixture.java diff --git a/src/test/java/com/opensource/docgrid/domain/search/service/SearchFacadeTest.java b/backend/src/test/java/com/opensource/docgrid/domain/search/service/SearchFacadeTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/search/service/SearchFacadeTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/search/service/SearchFacadeTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/search/service/command/SearchQueryCommandServiceTest.java b/backend/src/test/java/com/opensource/docgrid/domain/search/service/command/SearchQueryCommandServiceTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/search/service/command/SearchQueryCommandServiceTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/search/service/command/SearchQueryCommandServiceTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/search/service/command/SearchResultCommandServiceTest.java b/backend/src/test/java/com/opensource/docgrid/domain/search/service/command/SearchResultCommandServiceTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/search/service/command/SearchResultCommandServiceTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/search/service/command/SearchResultCommandServiceTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/search/service/query/AccessibleDocumentQueryServiceTest.java b/backend/src/test/java/com/opensource/docgrid/domain/search/service/query/AccessibleDocumentQueryServiceTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/search/service/query/AccessibleDocumentQueryServiceTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/search/service/query/AccessibleDocumentQueryServiceTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/search/service/query/VectorSearchQueryServiceTest.java b/backend/src/test/java/com/opensource/docgrid/domain/search/service/query/VectorSearchQueryServiceTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/search/service/query/VectorSearchQueryServiceTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/search/service/query/VectorSearchQueryServiceTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/worker/config/IndexingWorkerPropertiesTest.java b/backend/src/test/java/com/opensource/docgrid/domain/worker/config/IndexingWorkerPropertiesTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/worker/config/IndexingWorkerPropertiesTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/worker/config/IndexingWorkerPropertiesTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/worker/controller/WorkerAdminControllerTest.java b/backend/src/test/java/com/opensource/docgrid/domain/worker/controller/WorkerAdminControllerTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/worker/controller/WorkerAdminControllerTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/worker/controller/WorkerAdminControllerTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/worker/entity/EmbeddingJobAttemptTest.java b/backend/src/test/java/com/opensource/docgrid/domain/worker/entity/EmbeddingJobAttemptTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/worker/entity/EmbeddingJobAttemptTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/worker/entity/EmbeddingJobAttemptTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/worker/entity/WorkerNodeTest.java b/backend/src/test/java/com/opensource/docgrid/domain/worker/entity/WorkerNodeTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/worker/entity/WorkerNodeTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/worker/entity/WorkerNodeTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/worker/execution/WorkerExecutionSlotPoolTest.java b/backend/src/test/java/com/opensource/docgrid/domain/worker/execution/WorkerExecutionSlotPoolTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/worker/execution/WorkerExecutionSlotPoolTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/worker/execution/WorkerExecutionSlotPoolTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/worker/fixture/WorkerNodeFixture.java b/backend/src/test/java/com/opensource/docgrid/domain/worker/fixture/WorkerNodeFixture.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/worker/fixture/WorkerNodeFixture.java rename to backend/src/test/java/com/opensource/docgrid/domain/worker/fixture/WorkerNodeFixture.java diff --git a/src/test/java/com/opensource/docgrid/domain/worker/integration/WorkerOrchestrationIntegrationTest.java b/backend/src/test/java/com/opensource/docgrid/domain/worker/integration/WorkerOrchestrationIntegrationTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/worker/integration/WorkerOrchestrationIntegrationTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/worker/integration/WorkerOrchestrationIntegrationTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/worker/lifecycle/WorkerExecutionLifecycleManagerTest.java b/backend/src/test/java/com/opensource/docgrid/domain/worker/lifecycle/WorkerExecutionLifecycleManagerTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/worker/lifecycle/WorkerExecutionLifecycleManagerTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/worker/lifecycle/WorkerExecutionLifecycleManagerTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/worker/lifecycle/WorkerHeartbeatSchedulerTest.java b/backend/src/test/java/com/opensource/docgrid/domain/worker/lifecycle/WorkerHeartbeatSchedulerTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/worker/lifecycle/WorkerHeartbeatSchedulerTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/worker/lifecycle/WorkerHeartbeatSchedulerTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/worker/lifecycle/WorkerJobPollingSchedulerTest.java b/backend/src/test/java/com/opensource/docgrid/domain/worker/lifecycle/WorkerJobPollingSchedulerTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/worker/lifecycle/WorkerJobPollingSchedulerTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/worker/lifecycle/WorkerJobPollingSchedulerTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/worker/lifecycle/WorkerLeaseRecoverySchedulerTest.java b/backend/src/test/java/com/opensource/docgrid/domain/worker/lifecycle/WorkerLeaseRecoverySchedulerTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/worker/lifecycle/WorkerLeaseRecoverySchedulerTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/worker/lifecycle/WorkerLeaseRecoverySchedulerTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/worker/lifecycle/WorkerLifecycleManagerTest.java b/backend/src/test/java/com/opensource/docgrid/domain/worker/lifecycle/WorkerLifecycleManagerTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/worker/lifecycle/WorkerLifecycleManagerTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/worker/lifecycle/WorkerLifecycleManagerTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/worker/repository/WorkerNodeRepositoryTest.java b/backend/src/test/java/com/opensource/docgrid/domain/worker/repository/WorkerNodeRepositoryTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/worker/repository/WorkerNodeRepositoryTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/worker/repository/WorkerNodeRepositoryTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/worker/service/WorkerIndexingFailureClassifierTest.java b/backend/src/test/java/com/opensource/docgrid/domain/worker/service/WorkerIndexingFailureClassifierTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/worker/service/WorkerIndexingFailureClassifierTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/worker/service/WorkerIndexingFailureClassifierTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/worker/service/WorkerIndexingFailureReporterTest.java b/backend/src/test/java/com/opensource/docgrid/domain/worker/service/WorkerIndexingFailureReporterTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/worker/service/WorkerIndexingFailureReporterTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/worker/service/WorkerIndexingFailureReporterTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/worker/service/WorkerIndexingPipelineTest.java b/backend/src/test/java/com/opensource/docgrid/domain/worker/service/WorkerIndexingPipelineTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/worker/service/WorkerIndexingPipelineTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/worker/service/WorkerIndexingPipelineTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/worker/service/WorkerLeaseRenewalManagerTest.java b/backend/src/test/java/com/opensource/docgrid/domain/worker/service/WorkerLeaseRenewalManagerTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/worker/service/WorkerLeaseRenewalManagerTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/worker/service/WorkerLeaseRenewalManagerTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/worker/service/command/WorkerNodeCommandServiceTest.java b/backend/src/test/java/com/opensource/docgrid/domain/worker/service/command/WorkerNodeCommandServiceTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/worker/service/command/WorkerNodeCommandServiceTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/worker/service/command/WorkerNodeCommandServiceTest.java diff --git a/src/test/java/com/opensource/docgrid/domain/worker/service/query/WorkerNodeQueryServiceTest.java b/backend/src/test/java/com/opensource/docgrid/domain/worker/service/query/WorkerNodeQueryServiceTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/domain/worker/service/query/WorkerNodeQueryServiceTest.java rename to backend/src/test/java/com/opensource/docgrid/domain/worker/service/query/WorkerNodeQueryServiceTest.java diff --git a/src/test/java/com/opensource/docgrid/e2e/DocumentIndexingE2ELoadBenchmark.java b/backend/src/test/java/com/opensource/docgrid/e2e/DocumentIndexingE2ELoadBenchmark.java similarity index 100% rename from src/test/java/com/opensource/docgrid/e2e/DocumentIndexingE2ELoadBenchmark.java rename to backend/src/test/java/com/opensource/docgrid/e2e/DocumentIndexingE2ELoadBenchmark.java diff --git a/src/test/java/com/opensource/docgrid/e2e/DocumentIndexingE2ELoadStatistics.java b/backend/src/test/java/com/opensource/docgrid/e2e/DocumentIndexingE2ELoadStatistics.java similarity index 100% rename from src/test/java/com/opensource/docgrid/e2e/DocumentIndexingE2ELoadStatistics.java rename to backend/src/test/java/com/opensource/docgrid/e2e/DocumentIndexingE2ELoadStatistics.java diff --git a/src/test/java/com/opensource/docgrid/e2e/DocumentIndexingE2ELoadStatisticsTest.java b/backend/src/test/java/com/opensource/docgrid/e2e/DocumentIndexingE2ELoadStatisticsTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/e2e/DocumentIndexingE2ELoadStatisticsTest.java rename to backend/src/test/java/com/opensource/docgrid/e2e/DocumentIndexingE2ELoadStatisticsTest.java diff --git a/src/test/java/com/opensource/docgrid/e2e/LocalDocumentIndexingE2ETest.java b/backend/src/test/java/com/opensource/docgrid/e2e/LocalDocumentIndexingE2ETest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/e2e/LocalDocumentIndexingE2ETest.java rename to backend/src/test/java/com/opensource/docgrid/e2e/LocalDocumentIndexingE2ETest.java diff --git a/src/test/java/com/opensource/docgrid/e2e/LocalE2eApiClient.java b/backend/src/test/java/com/opensource/docgrid/e2e/LocalE2eApiClient.java similarity index 100% rename from src/test/java/com/opensource/docgrid/e2e/LocalE2eApiClient.java rename to backend/src/test/java/com/opensource/docgrid/e2e/LocalE2eApiClient.java diff --git a/src/test/java/com/opensource/docgrid/e2e/LocalE2eDocumentFactory.java b/backend/src/test/java/com/opensource/docgrid/e2e/LocalE2eDocumentFactory.java similarity index 100% rename from src/test/java/com/opensource/docgrid/e2e/LocalE2eDocumentFactory.java rename to backend/src/test/java/com/opensource/docgrid/e2e/LocalE2eDocumentFactory.java diff --git a/src/test/java/com/opensource/docgrid/e2e/LocalE2eMinioBucket.java b/backend/src/test/java/com/opensource/docgrid/e2e/LocalE2eMinioBucket.java similarity index 100% rename from src/test/java/com/opensource/docgrid/e2e/LocalE2eMinioBucket.java rename to backend/src/test/java/com/opensource/docgrid/e2e/LocalE2eMinioBucket.java diff --git a/src/test/java/com/opensource/docgrid/e2e/LocalEmbeddingProviderOutageE2ETest.java b/backend/src/test/java/com/opensource/docgrid/e2e/LocalEmbeddingProviderOutageE2ETest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/e2e/LocalEmbeddingProviderOutageE2ETest.java rename to backend/src/test/java/com/opensource/docgrid/e2e/LocalEmbeddingProviderOutageE2ETest.java diff --git a/src/test/java/com/opensource/docgrid/e2e/WorkerHorizontalScalingBenchmark.java b/backend/src/test/java/com/opensource/docgrid/e2e/WorkerHorizontalScalingBenchmark.java similarity index 100% rename from src/test/java/com/opensource/docgrid/e2e/WorkerHorizontalScalingBenchmark.java rename to backend/src/test/java/com/opensource/docgrid/e2e/WorkerHorizontalScalingBenchmark.java diff --git a/src/test/java/com/opensource/docgrid/e2e/WorkerHorizontalScalingStatistics.java b/backend/src/test/java/com/opensource/docgrid/e2e/WorkerHorizontalScalingStatistics.java similarity index 100% rename from src/test/java/com/opensource/docgrid/e2e/WorkerHorizontalScalingStatistics.java rename to backend/src/test/java/com/opensource/docgrid/e2e/WorkerHorizontalScalingStatistics.java diff --git a/src/test/java/com/opensource/docgrid/e2e/WorkerHorizontalScalingStatisticsTest.java b/backend/src/test/java/com/opensource/docgrid/e2e/WorkerHorizontalScalingStatisticsTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/e2e/WorkerHorizontalScalingStatisticsTest.java rename to backend/src/test/java/com/opensource/docgrid/e2e/WorkerHorizontalScalingStatisticsTest.java diff --git a/src/test/java/com/opensource/docgrid/e2e/WorkerIndexingThroughputBenchmark.java b/backend/src/test/java/com/opensource/docgrid/e2e/WorkerIndexingThroughputBenchmark.java similarity index 100% rename from src/test/java/com/opensource/docgrid/e2e/WorkerIndexingThroughputBenchmark.java rename to backend/src/test/java/com/opensource/docgrid/e2e/WorkerIndexingThroughputBenchmark.java diff --git a/src/test/java/com/opensource/docgrid/e2e/WorkerIndexingThroughputStatistics.java b/backend/src/test/java/com/opensource/docgrid/e2e/WorkerIndexingThroughputStatistics.java similarity index 100% rename from src/test/java/com/opensource/docgrid/e2e/WorkerIndexingThroughputStatistics.java rename to backend/src/test/java/com/opensource/docgrid/e2e/WorkerIndexingThroughputStatistics.java diff --git a/src/test/java/com/opensource/docgrid/e2e/WorkerIndexingThroughputStatisticsTest.java b/backend/src/test/java/com/opensource/docgrid/e2e/WorkerIndexingThroughputStatisticsTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/e2e/WorkerIndexingThroughputStatisticsTest.java rename to backend/src/test/java/com/opensource/docgrid/e2e/WorkerIndexingThroughputStatisticsTest.java diff --git a/src/test/java/com/opensource/docgrid/e2e/WorkerQueueBackpressureBenchmark.java b/backend/src/test/java/com/opensource/docgrid/e2e/WorkerQueueBackpressureBenchmark.java similarity index 100% rename from src/test/java/com/opensource/docgrid/e2e/WorkerQueueBackpressureBenchmark.java rename to backend/src/test/java/com/opensource/docgrid/e2e/WorkerQueueBackpressureBenchmark.java diff --git a/src/test/java/com/opensource/docgrid/e2e/WorkerQueueBackpressureStatistics.java b/backend/src/test/java/com/opensource/docgrid/e2e/WorkerQueueBackpressureStatistics.java similarity index 100% rename from src/test/java/com/opensource/docgrid/e2e/WorkerQueueBackpressureStatistics.java rename to backend/src/test/java/com/opensource/docgrid/e2e/WorkerQueueBackpressureStatistics.java diff --git a/src/test/java/com/opensource/docgrid/e2e/WorkerQueueBackpressureStatisticsTest.java b/backend/src/test/java/com/opensource/docgrid/e2e/WorkerQueueBackpressureStatisticsTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/e2e/WorkerQueueBackpressureStatisticsTest.java rename to backend/src/test/java/com/opensource/docgrid/e2e/WorkerQueueBackpressureStatisticsTest.java diff --git a/src/test/java/com/opensource/docgrid/opensql/OpenSqlCompatibilityIntegrationTest.java b/backend/src/test/java/com/opensource/docgrid/opensql/OpenSqlCompatibilityIntegrationTest.java similarity index 100% rename from src/test/java/com/opensource/docgrid/opensql/OpenSqlCompatibilityIntegrationTest.java rename to backend/src/test/java/com/opensource/docgrid/opensql/OpenSqlCompatibilityIntegrationTest.java diff --git a/src/test/resources/application-minio-integration.yml b/backend/src/test/resources/application-minio-integration.yml similarity index 100% rename from src/test/resources/application-minio-integration.yml rename to backend/src/test/resources/application-minio-integration.yml diff --git a/docker-compose.yml b/docker-compose.yml index 93df791..d3a73b3 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -42,7 +42,7 @@ services: embedding-server: build: - context: ./embedding-server + context: ./backend/embedding-server dockerfile: Dockerfile container_name: docgrid-embedding ports: diff --git a/docs/local-db.md b/docs/local-db.md index 07ddcb9..0054427 100644 --- a/docs/local-db.md +++ b/docs/local-db.md @@ -55,7 +55,7 @@ PostgreSQL의 공식 Entry Point가 새 Data Volume을 초기화할 때 Health 상태가 `healthy`가 된 뒤 Application을 기동한다. ```bash -./gradlew bootRun --args='--spring.profiles.active=local' +./backend/gradlew -p backend bootRun --args='--spring.profiles.active=local' ``` Spring Boot 기동 과정에서 Flyway 전체 Migration과 Hibernate `ddl-auto=validate`가 통과해야 한다. @@ -91,7 +91,7 @@ docker compose exec postgres psql -U app -d app -c "SELECT indexdef FROM pg_inde 전체 단위 테스트: ```bash -./gradlew test +./backend/gradlew -p backend test ``` 실제 PostgreSQL 통합 테스트를 실행할 때는 Test Profile이 격리 Schema와 `public` Search Path를 @@ -104,7 +104,7 @@ DB_NAME=app \ DB_USER=app \ DB_PASSWORD=local_password \ DB_SSLMODE=disable \ -./gradlew test -Dgroups=integration +./backend/gradlew -p backend test -Dgroups=integration ``` 로컬 `.env`에서 접속값을 바꿨다면 명령의 값도 동일하게 맞춘다. 실제 비밀번호가 포함된 명령 출력은 @@ -178,7 +178,7 @@ DB_NAME= \ DB_USER= \ DB_PASSWORD= \ DB_SSLMODE= \ -./gradlew test -Dgroups=integration +./backend/gradlew -p backend test -Dgroups=integration ``` 위 Placeholder를 실제 값으로 바꾼 명령은 Shell History, 문서와 CI Log에 남지 않도록 실행 환경의 diff --git a/frontend/.gitignore b/frontend/.gitignore new file mode 100644 index 0000000..967037f --- /dev/null +++ b/frontend/.gitignore @@ -0,0 +1,40 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.* +.yarn/* +!.yarn/patches +!.yarn/plugins +!.yarn/releases +!.yarn/versions + +# testing +/coverage + +# next.js +/.next/ +/.vinext/ +/out/ + +# misc +.DS_Store +*.pem + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* +.pnpm-debug.log* + +# env files (can opt-in for committing if needed) +.env* + +# vercel +.vercel + +/dist/ +/.wrangler/ +/outputs/ +/work/ diff --git a/frontend/.openai/hosting.json b/frontend/.openai/hosting.json new file mode 100644 index 0000000..8c533b3 --- /dev/null +++ b/frontend/.openai/hosting.json @@ -0,0 +1,5 @@ +{ + "project_id": "appgprj_6a7c45237a0c8191a30fd32a0e7b6b0c", + "d1": null, + "r2": null +} diff --git a/frontend/README.md b/frontend/README.md new file mode 100644 index 0000000..bd9b9e0 --- /dev/null +++ b/frontend/README.md @@ -0,0 +1,100 @@ +# vinext-starter + +A clean full-stack starter running on +[vinext](https://github.com/cloudflare/vinext), with optional Cloudflare D1 and +Drizzle support. + +## Prerequisites + +- Node.js `>=22.13.0` + +## Quick Start + +```bash +npm install +npm run dev +npm run build +``` + +This starter does not use `wrangler.jsonc`. + +## Included Shape + +- edit site code under `app/` +- `.openai/hosting.json` declares optional Sites D1 and R2 bindings +- `vite.config.ts` simulates declared bindings for local development +- `db/schema.ts` starts intentionally empty +- `examples/d1/` contains an optional D1 example surface +- `drizzle.config.ts` supports local migration generation when needed + +## Workspace Auth Headers + +Signed-in visitors receive both `oai-authenticated-user-id` and `oai-authenticated-user-email`. Private Sites require every visitor to sign in; public Sites may also have anonymous visitors, for whom neither header is present. + +The user ID is stable for the same user on the same Site and different across Sites. Email and name are intended for display or contact purposes. + +SIWC-authenticated workspace sites may also receive +`oai-authenticated-user-full-name` when the user's SIWC profile has a non-empty +`name` claim. The full-name value is percent-encoded UTF-8 and is accompanied by +`oai-authenticated-user-full-name-encoding: percent-encoded-utf-8`. + +Treat the full name as optional and fall back to email when it is absent: + +```tsx +import { headers } from "next/headers"; + +export default async function Home() { + const requestHeaders = await headers(); + const userId = requestHeaders.get("oai-authenticated-user-id"); + const email = requestHeaders.get("oai-authenticated-user-email"); + const encodedFullName = requestHeaders.get("oai-authenticated-user-full-name"); + const fullName = + encodedFullName && + requestHeaders.get("oai-authenticated-user-full-name-encoding") === + "percent-encoded-utf-8" + ? decodeURIComponent(encodedFullName) + : null; + + const displayName = fullName ?? email; + // ... +} +``` + +## Optional Dispatch-Owned ChatGPT Sign-In + +Import the ready-to-use helpers from `app/chatgpt-auth.ts` when the site needs +optional or required ChatGPT sign-in: + +- Use `getChatGPTUser()` for optional signed-in UI. +- Use `requireChatGPTUser(returnTo)` for server-rendered pages that should send + anonymous visitors through Sign in with ChatGPT. +- Use `chatGPTSignInPath(returnTo)` and `chatGPTSignOutPath(returnTo)` for + browser links or actions. +- Pass a same-origin relative `returnTo` path for the destination after sign-in + or sign-out. The helper validates and safely encodes it. +- Mark protected pages with `export const dynamic = "force-dynamic"` because + they depend on per-request identity headers. + +Dispatch owns `/signin-with-chatgpt`, `/signout-with-chatgpt`, `/callback`, the +OAuth cookies, and identity header injection. Do not implement app routes for +those reserved paths. Routes that do not import and call the helper remain +anonymous-compatible. + +SIWC establishes identity only; it does not prove workspace membership. Use the +Sites hosting platform's access policy controls for workspace-wide restrictions, +or enforce explicit server-side membership or allowlist checks. + +Use SIWC for account pages, user-specific dashboards, saved records, and write +actions tied to the current ChatGPT user. Leave public content anonymous. + +## Useful Commands + +- `npm run dev`: start local development +- `npm run build`: verify the vinext build output +- `npm test`: build the starter and verify its rendered loading skeleton +- `npm run db:generate`: generate Drizzle migrations after schema changes + +## Learn More + +- [vinext Documentation](https://github.com/cloudflare/vinext) +- [Drizzle D1 Guide](https://orm.drizzle.team/docs/get-started/d1-new) diff --git a/frontend/app/[...slug]/page.tsx b/frontend/app/[...slug]/page.tsx new file mode 100644 index 0000000..475a697 --- /dev/null +++ b/frontend/app/[...slug]/page.tsx @@ -0,0 +1,10 @@ +import PrototypeApp from "../components/PrototypeApp"; + +export default async function RoutedPrototype({ + params, +}: { + params: Promise<{ slug: string[] }>; +}) { + const { slug } = await params; + return ; +} diff --git a/frontend/app/chatgpt-auth.ts b/frontend/app/chatgpt-auth.ts new file mode 100644 index 0000000..a0ae2ed --- /dev/null +++ b/frontend/app/chatgpt-auth.ts @@ -0,0 +1,90 @@ +import { headers } from "next/headers"; +import { redirect } from "next/navigation"; + +export type ChatGPTUser = { + userId: string; + displayName: string; + email: string; + fullName: string | null; +}; + +const USER_ID_HEADER = "oai-authenticated-user-id"; +const USER_EMAIL_HEADER = "oai-authenticated-user-email"; +const USER_FULL_NAME_HEADER = "oai-authenticated-user-full-name"; +const USER_FULL_NAME_ENCODING_HEADER = + "oai-authenticated-user-full-name-encoding"; +const PERCENT_ENCODED_UTF8 = "percent-encoded-utf-8"; +const SIGN_IN_PATH = "/signin-with-chatgpt"; +const SIGN_OUT_PATH = "/signout-with-chatgpt"; +const CALLBACK_PATH = "/callback"; + +export async function getChatGPTUser(): Promise { + const requestHeaders = await headers(); + const userId = requestHeaders.get(USER_ID_HEADER); + const email = requestHeaders.get(USER_EMAIL_HEADER); + if (!userId || !email) return null; + + const encodedFullName = requestHeaders.get(USER_FULL_NAME_HEADER); + const fullName = + encodedFullName && + requestHeaders.get(USER_FULL_NAME_ENCODING_HEADER) === PERCENT_ENCODED_UTF8 + ? safeDecodeURIComponent(encodedFullName) + : null; + + return { + userId, + displayName: fullName ?? email, + email, + fullName, + }; +} + +export async function requireChatGPTUser( + returnTo: string, +): Promise { + const user = await getChatGPTUser(); + if (user) return user; + + redirect(chatGPTSignInPath(returnTo)); +} + +export function chatGPTSignInPath(returnTo: string): string { + const safeReturnTo = safeRelativeReturnPath(returnTo); + return `${SIGN_IN_PATH}?return_to=${encodeURIComponent(safeReturnTo)}`; +} + +export function chatGPTSignOutPath(returnTo = "/"): string { + const safeReturnTo = safeRelativeReturnPath(returnTo); + return `${SIGN_OUT_PATH}?return_to=${encodeURIComponent(safeReturnTo)}`; +} + +function safeRelativeReturnPath(value: string): string { + if (!value.startsWith("/") || value.startsWith("//")) return "/"; + + let url: URL; + try { + url = new URL(value, "https://app.local"); + } catch { + return "/"; + } + if (url.origin !== "https://app.local") return "/"; + if (isReservedAuthPath(url.pathname)) return "/"; + + return `${url.pathname}${url.search}${url.hash}`; +} + +function isReservedAuthPath(pathname: string): boolean { + return ( + pathname === SIGN_IN_PATH || + pathname === SIGN_OUT_PATH || + pathname === CALLBACK_PATH + ); +} + +function safeDecodeURIComponent(value: string): string | null { + try { + return decodeURIComponent(value); + } catch { + return null; + } +} diff --git a/frontend/app/components/PrototypeApp.tsx b/frontend/app/components/PrototypeApp.tsx new file mode 100644 index 0000000..a0102de --- /dev/null +++ b/frontend/app/components/PrototypeApp.tsx @@ -0,0 +1,343 @@ +"use client"; + +import { FormEvent, useEffect, useMemo, useState } from "react"; + +type ModalName = "upload" | "version" | "collection" | "add-document" | "permission" | "token" | "role" | null; + +const navSections = [ + { + label: "WORKSPACE", + items: [ + ["/search", "⌕", "AI 검색"], + ["/documents", "▤", "문서"], + ["/collections", "▱", "컬렉션"], + ["/permissions", "⌘", "권한 관리"], + ], + }, + { + label: "INTEGRATION", + items: [["/mcp-tokens", "⌁", "MCP 토큰"]], + }, + { + label: "ADMIN", + items: [ + ["/admin/dashboard", "◫", "RAGOps"], + ["/admin/indexing-jobs", "⚙", "인덱싱 Job"], + ["/admin/workers", "▰", "Worker"], + ["/admin/users", "♙", "사용자·역할"], + ], + }, +] as const; + +const documents = [ + { id: 1024, title: "배포 운영 가이드", type: "PDF", owner: "플랫폼개발팀", version: "v3", status: "EMBEDDING", visibility: "DEPARTMENT", updated: "12분 전", tone: "violet" }, + { id: 1018, title: "신규 입사자 온보딩 가이드", type: "DOCX", owner: "People 팀", version: "v2", status: "INDEXED", visibility: "PUBLIC", updated: "어제", tone: "green" }, + { id: 996, title: "보안 사고 대응 매뉴얼", type: "PDF", owner: "보안팀", version: "v3", status: "INDEXED", visibility: "DEPARTMENT", updated: "8월 8일", tone: "orange" }, + { id: 971, title: "고객 인터뷰 아카이브", type: "MD", owner: "UX 리서치", version: "v1", status: "PARSING", visibility: "COLLECTION", updated: "8월 5일", tone: "blue" }, + { id: 954, title: "법인카드 사용 정책", type: "PDF", owner: "재무팀", version: "v4", status: "FAILED", visibility: "PUBLIC", updated: "8월 1일", tone: "red" }, +]; + +const collections = [ + { id: 12, name: "운영 문서", description: "배포·장애 대응에 필요한 팀 운영 가이드", docs: 8, visibility: "DEPARTMENT", status: "ACTIVE", color: "#6558e8" }, + { id: 18, name: "신규 입사자 허브", description: "온보딩, 복지, 보안 교육에 필요한 문서", docs: 12, visibility: "PUBLIC", status: "ACTIVE", color: "#1b9d82" }, + { id: 21, name: "제품 전략", description: "로드맵과 고객 리서치, 제품 의사결정 기록", docs: 6, visibility: "PRIVATE", status: "ACTIVE", color: "#e88a35" }, + { id: 7, name: "2025 아카이브", description: "지난 연도의 정책과 종료된 프로젝트 자료", docs: 24, visibility: "PRIVATE", status: "ARCHIVED", color: "#667085" }, +]; + +const sources = [ + { label: "[1]", title: "배포 운영 가이드", page: "12페이지", score: "91.3%", quote: "헬스체크가 2회 연속 실패하면 배포 파이프라인은 직전 안정 릴리스 태그로 자동 롤백을 트리거합니다." }, + { label: "[2]", title: "DB 마이그레이션 정책", page: "4페이지", score: "87.4%", quote: "Flyway 마이그레이션은 되돌릴 수 없으므로 롤백 시 역방향 스크립트를 수동으로 준비합니다." }, + { label: "[3]", title: "인시던트 대응 SOP", page: "2페이지", score: "80.2%", quote: "장애 등급 산정 후 24시간 이내 보고서를 공유하고 후속 액션을 담당자에게 배정합니다." }, +]; + +const initialJobs = [ + { id: 4417, status: "PROCESSING", document: "배포 운영 가이드", version: "v3 · EMBEDDING", model: "BAAI/bge-m3", worker: "indexing-worker-01", retry: "0 / 3", error: "—", created: "08-12 09:41" }, + { id: 4402, status: "FAILED", document: "DB 마이그레이션 정책", version: "v1 · FAILED", model: "BAAI/bge-m3", worker: "indexing-worker-03", retry: "3 / 3", error: "EMBEDDING_PROVIDER_UNAVAILABLE", created: "08-12 08:12" }, + { id: 4396, status: "PENDING", document: "보안 점검 체크리스트", version: "v1 · UPLOADED", model: "BAAI/bge-m3", worker: "—", retry: "1 / 3", error: "—", created: "08-12 07:58" }, + { id: 4381, status: "INDEXED", document: "인시던트 대응 SOP", version: "v2 · INDEXED", model: "BAAI/bge-m3", worker: "indexing-worker-02", retry: "0 / 3", error: "—", created: "08-11 22:04" }, + { id: 4377, status: "FAILED", document: "사내 규정 2026", version: "v1 · FAILED", model: "BAAI/bge-m3", worker: "indexing-worker-03", retry: "3 / 3", error: "DOCUMENT_CONTENT_INVALID", created: "08-11 19:30" }, + { id: 4351, status: "FAILED", document: "보안 점검 체크리스트", version: "v1 · FAILED", model: "BAAI/bge-m3", worker: "indexing-worker-01", retry: "3 / 3", error: "STORAGE_UNAVAILABLE", created: "08-11 13:07" }, +]; + +const initialTokens = [ + { id: 41, created: "2026-08-12 10:02", lastUsed: "—", status: "사용 가능" }, + { id: 33, created: "2026-07-02 09:15", lastUsed: "2026-08-11 18:44", status: "사용 가능" }, + { id: 28, created: "2026-05-20 13:31", lastUsed: "2026-06-30 11:07", status: "폐기됨" }, +]; + +const workers = [ + { name: "indexing-worker-01", id: "#1", status: "ACTIVE", host: "docgrid-api-01", ip: "10.0.0.12", instance: "2f3a2d8c...9abc", heartbeat: "3초 전", started: "08-12 07:30" }, + { name: "indexing-worker-02", id: "#2", status: "ACTIVE", host: "docgrid-api-02", ip: "10.0.0.13", instance: "7b11c4de...10f2", heartbeat: "2초 전", started: "08-12 07:30" }, + { name: "indexing-worker-03", id: "#3", status: "DEAD", host: "docgrid-api-03", ip: "10.0.0.14", instance: "c93aa07f...4d81", heartbeat: "6분 전", started: "08-12 07:30" }, + { name: "indexing-worker-04", id: "#4", status: "ACTIVE", host: "docgrid-api-04", ip: "10.0.0.15", instance: "18ee9b23...77a0", heartbeat: "1초 전", started: "08-12 07:31" }, + { name: "indexing-worker-05", id: "#5", status: "IDLE", host: "docgrid-api-05", ip: "10.0.0.16", instance: "a02f7cc1...be44", heartbeat: "4초 전", started: "08-12 07:31" }, + { name: "indexing-worker-06", id: "#6", status: "IDLE", host: "docgrid-api-06", ip: "10.0.0.17", instance: "d5c8100b...31ac", heartbeat: "5초 전", started: "08-12 07:31" }, +]; + +const initialUsers = [ + { id: 21, name: "이수진", email: "sujin@docgrid.io", department: "플랫폼개발팀", roles: ["USER"], status: "ACTIVE" }, + { id: 18, name: "박준호", email: "junho@docgrid.io", department: "인프라팀", roles: ["USER", "DOCUMENT_MANAGER"], status: "ACTIVE" }, + { id: 7, name: "김기민", email: "gimin@docgrid.io", department: "플랫폼개발팀", roles: ["USER", "ADMIN"], status: "ACTIVE" }, + { id: 29, name: "최다은", email: "daeun@docgrid.io", department: "경영지원팀", roles: ["USER"], status: "LOCKED" }, +]; + +function BrandMark() { + return ; +} + +function StatusPill({ value }: { value: string }) { + const normalized = value.toLowerCase().replaceAll(" ", "-"); + return {value}; +} + +function ApiFlag({ children }: { children: React.ReactNode }) { + return {children}; +} + +function PageHeading({ + kicker, + title, + description, + actions, +}: { + kicker: string; + title: string; + description: string; + actions?: React.ReactNode; +}) { + return ( +
+
{kicker}

{title}

{description}

+ {actions &&
{actions}
} +
+ ); +} + +function EmptyState({ symbol, title, description }: { symbol: string; title: string; description: string }) { + return
{symbol}{title}

{description}

; +} + +function AuthPage({ mode }: { mode: "login" | "signup" }) { + const signup = mode === "signup"; + + function submit(event: FormEvent) { + event.preventDefault(); + window.location.href = "/search"; + } + + return ( +
+ 로그인 없이 둘러보기 → +
+
DocGrid
+
+ KNOWLEDGE, CONNECTED +

{signup ? <>팀의 지식을
한곳에서 시작하세요. : <>흩어진 문서에서
정확한 답을 찾으세요.}

+

{signup ? "가입과 동시에 USER 권한이 부여되며 소속 부서의 문서를 탐색할 수 있습니다." : "권한이 허용된 사내 문서를 검색하고 근거가 포함된 AI 답변을 확인하세요."}

+
+
  • 문서 업로드부터 임베딩·색인까지 자동화
  • 권한 사전 필터와 실시간 접근 검증
  • MCP 토큰으로 AI 클라이언트 연동
+
+
+
+
DocGrid
+ {signup ? "CREATE ACCOUNT" : "WELCOME BACK"} +

{signup ? "회원가입" : "로그인"}

+

{signup ? "모든 항목은 필수입니다." : "이메일과 비밀번호를 입력하세요."}

+ + + {signup && <>} + + {signup ? "이미 계정이 있나요?" : "계정이 없으신가요?"} {signup ? "로그인" : "회원가입"} +
+
+
+ ); +} + +export default function PrototypeApp({ initialRoute }: { initialRoute: string }) { + const route = initialRoute === "/" ? "/search" : initialRoute; + const [mobileNavOpen, setMobileNavOpen] = useState(false); + const [modal, setModal] = useState(null); + const [toast, setToast] = useState(""); + const [query, setQuery] = useState("배포 실패 시 롤백 절차가 어떻게 되나요?"); + const [submittedQuery, setSubmittedQuery] = useState(""); + const [searching, setSearching] = useState(false); + const [selectedFile, setSelectedFile] = useState(""); + const [uploading, setUploading] = useState(false); + const [jobs, setJobs] = useState(initialJobs); + const [tokens, setTokens] = useState(initialTokens); + const [issuedToken, setIssuedToken] = useState(""); + const [permissions, setPermissions] = useState([ + { id: 81, target: "이수진", type: "USER", permission: "WRITE", expires: "2026-12-31" }, + { id: 67, target: "플랫폼개발팀", type: "DEPARTMENT", permission: "READ", expires: "없음" }, + { id: 49, target: "DOCUMENT_MANAGER", type: "ROLE", permission: "ADMIN", expires: "없음" }, + ]); + const [users, setUsers] = useState(initialUsers); + + useEffect(() => { + if (!toast) return; + const timer = window.setTimeout(() => setToast(""), 2500); + return () => window.clearTimeout(timer); + }, [toast]); + + const routeTitle = useMemo(() => { + if (route.startsWith("/documents/")) return "문서 상세"; + if (route.startsWith("/collections/")) return "컬렉션 상세"; + if (route.startsWith("/admin/indexing-jobs/")) return "Job 상세"; + const titles: Record = { + "/search": "AI 검색", "/documents": "문서", "/collections": "컬렉션", "/permissions": "권한 관리", + "/mcp-tokens": "MCP 토큰", "/account": "내 계정", "/admin/dashboard": "RAGOps", + "/admin/indexing-jobs": "인덱싱 Job", "/admin/workers": "Worker", "/admin/users": "사용자·역할", + }; + return titles[route] ?? "AI 검색"; + }, [route]); + + if (route === "/login" || route === "/signup") return ; + + function isActive(path: string) { + if (path === "/documents") return route.startsWith("/documents"); + if (path === "/collections") return route.startsWith("/collections"); + if (path === "/admin/indexing-jobs") return route.startsWith("/admin/indexing-jobs"); + return route === path; + } + + function submitSearch(event?: FormEvent) { + event?.preventDefault(); + if (!query.trim()) return; + // 1. Show the retrieval state before revealing the answer. + setSearching(true); + setSubmittedQuery(""); + // 2. Resolve to a deterministic demo response for prototype review. + window.setTimeout(() => { setSubmittedQuery(query.trim()); setSearching(false); }, 700); + } + + function finishUpload() { + if (!selectedFile) return; + // 1. Simulate upload and asynchronous indexing job creation. + setUploading(true); + // 2. Close with a status-oriented confirmation rather than claiming indexing completion. + window.setTimeout(() => { setUploading(false); setModal(null); setSelectedFile(""); setToast("업로드가 접수되어 인덱싱을 시작했습니다."); }, 900); + } + + function retryJob(id: number) { + setJobs((current) => current.map((job) => job.id === id ? { ...job, status: "PENDING", error: "—", retry: "0 / 3" } : job)); + setToast(`#${id} 작업을 대기열에 다시 추가했습니다.`); + } + + function issueToken() { + const rawToken = "dgk_9f2c1a7e4b8d3056a1c9e7f2b4d80a63"; + setIssuedToken(rawToken); + setTokens((current) => [{ id: 52, created: "방금", lastUsed: "—", status: "사용 가능" }, ...current]); + setModal(null); + setToast("새 MCP 토큰을 발급했습니다. 원문은 한 번만 표시됩니다."); + } + + function renderPage() { + if (route === "/search") return ( +
+ {!submittedQuery && !searching ? ( +
+
AI KNOWLEDGE SEARCH
+

팀의 지식에서
정확한 답을 찾으세요.

+

벡터 검색과 권한 검증을 거쳐, 출처가 명확한 답변을 제공합니다.

+
setQuery(event.target.value)} aria-label="문서 검색" />
+
+
추천 질문{["배포 실패 시 롤백 절차", "법인카드 사용 기준", "보안 사고 보고 순서"].map((item) => )}
+ +
+ ) : ( +
+
setQuery(event.target.value)} />
+ {searching ?
권한이 있는 문서에서 답을 찾고 있어요

벡터 유사도와 live check를 적용 중입니다.

: <> +
AI 답변3개의 문서를 참고했어요 · queryId 4821
+

{submittedQuery}

배포 실패가 감지되면 먼저 헬스체크 실패 원인과 직전 안정 릴리스 태그를 확인합니다. 롤백 후에는 DB 마이그레이션의 적용 여부를 점검해야 하며, 장애 보고서는 24시간 이내 공유합니다.

답변이 도움이 되었나요?
+

검색 결과와 근거 문서

유사도 높은 순
+ } +
+ )} +
+ ); + + if (route === "/documents") return ( +
+ 데모 데이터 · 목록 API 준비 중} /> +
총 24개 문서
+
문서소유 팀버전상태공개 범위최근 수정
{documents.map((document) =>
{document.title}{document.type} · documentId {document.id}
{document.owner}{document.version}{document.updated}
)}
+
+ ); + + if (route.startsWith("/documents/")) return ( +
+
← 문서 목록documentId 1024
+ setModal("version")}>+ 새 버전 올리기} /> +

인덱싱 진행 상태

3초 간격 폴링 · 현재 EMBEDDING 단계

{[["✓","UPLOADED","done"],["✓","PARSING","done"],["✓","CHUNKED","done"],["3","EMBEDDING","current"],["4","INDEXED",""]].map(([number,label,state]) =>
{number}{label}
)}
+

현재 검색 가능한 버전

currentVersion
versionNo
v2
status
공개 범위
DEPARTMENT

검색 결과에는 이 버전의 청크만 노출됩니다.

처리 중인 버전

processingVersion
versionNo
v3
status
jobStatus

완료되면 currentVersion이 v3으로 교체됩니다.

버전 히스토리

3개
v3오늘 09:41
v207-30 14:02
v107-28 11:20
+ +
+ ); + + if (route === "/collections") return ( +
setModal("collection")}>+ 새 컬렉션} />
+ ); + + if (route.startsWith("/collections/")) return ( +
← 컬렉션 목록collectionId 12
} />
운영 문서ownerUserId 7 · 2026-05-02 생성
8개 문서

포함 문서

이 컬렉션으로 검색할 수 있는 문서입니다.

목록 API 준비 중 · 데모 데이터
문서상태공개 범위추가 시각
{documents.slice(0,4).map((document) =>
{document.title}documentId {document.id}
{document.visibility}2026-08-12 09:41
)}
+ ); + + if (route === "/permissions") return ( +
setModal("permission")}>+ 권한 부여} />
배포 운영 가이드documentId 1024

내 권한 요약

/permissions/documents/1024/me
권한이 부여된 경로
DEPARTMENTROLEOWNERPUBLIC

하나라도 허용이면 접근 가능하며 회수는 이 사용자에게 직접 부여된 권한만 적용됩니다.

부여된 권한

목록 API 준비 중
{permissions.map((permission) =>
{permission.target}{permission.type}{permission.expires}
)}
+
+ ); + + if (route === "/mcp-tokens") return ( +
setModal("token")}>+ 토큰 발급} />{issuedToken &&
🔐 토큰 원문은 지금 한 번만 표시됩니다.{issuedToken}
}

발급된 토큰

revokedAt이 없으면 사용할 수 있습니다.

{tokens.map((token) =>
#{token.id}{token.created}{token.lastUsed}{token.status === "사용 가능" ? : }
)}

사용할 수 있는 도구

접근 가능한 문서만 반환합니다.

search_documents질문과 관련된 문서 청크 벡터 검색
get_document_detail문서 메타데이터와 현재 버전 조회
get_indexing_status문서 인덱싱 진행 상태 조회
+ ); + + if (route === "/account") return ( +
로그아웃} />
기민

김기민

gimin@docgrid.io
상태
부서
플랫폼개발팀

계정 정보

GET /auth/me
userId
7
nickname
기민
departmentId
3
createdAt
2026-03-04 09:12
lastLoginAt
2026-08-12 08:55
status
ACTIVE

역할에 따라 보이는 메뉴

검색 · 문서 · 컬렉션 · 권한 · MCP 토큰
문서 운영 담당 · 관리자 부여
RAGOps · 인덱싱 Job · Worker · 사용자·역할
+ ); + + if (route === "/admin/dashboard") return ( +
실시간 연결 · /topic/dashboard} />
전체 문서25,368soft-delete 제외
검색 가능21,742INDEXED
인덱싱 대기132UPLOADED · INDEXING
최근 24시간 검색342search.recent24hCount
대기132PENDING
처리 중8PROCESSING
실패27
평균 처리 시간3,200msQueue 대기 제외
정상 Worker5/ 6ACTIVE · IDLE
Worker 1대가 DEAD 상태입니다. docgrid-api-03 · 마지막 heartbeat 6분 전 확인 →
실패 27건이 재시도 한도에 도달했습니다.

최근 실패 Job

클릭하면 Attempt와 Event를 추적할 수 있어요.

전체 보기 →
{jobs.filter((job) => job.status === "FAILED").map((job) =>
#{job.id}{job.document}{job.error}{job.retry}
)}

실패 유형 분포

FAILED 27건

{[["EMBEDDING_PROVIDER_UNAVAILABLE",14],["DOCUMENT_CONTENT_INVALID",7],["STORAGE_UNAVAILABLE",4],["WORKER_INTERNAL_ERROR",2]].map(([name,count]) =>
{name}{count}
)}
+ ); + + if (route === "/admin/indexing-jobs") return ( +
setToast("실패한 작업을 모두 재처리 요청했습니다.")}>실패 전체 재처리} />
필터
JOB상태문서버전모델WORKER재시도오류 코드생성
{jobs.map((job) =>
#{job.id}{job.document}{job.version}{job.model}{job.worker}{job.retry}{job.error}{job.created}{job.status === "FAILED" ? : }
)}
총 214건 · 20건씩
+ ); + + if (route.startsWith("/admin/indexing-jobs/")) return ( +
} />
문서
DB 마이그레이션 정책 #9
버전
v1 ·
모델
BAAI/bge-m3 · v1
priority
0
재시도
3 / 3 · 한도 도달
소유 Worker
indexing-worker-03
lockExpiresAt
2026-08-12 08:17
errorCode
EMBEDDING_PROVIDER_UNAVAILABLE
⚠ 수동 재처리 시 기존 retryCount는 보존됩니다.

실행 시도

/attempts

#상태WORKER소요오류 코드
3worker-0342,031msEMBEDDING_PROVIDER_UNAVAILABLE
2worker-0138,110msEMBEDDING_PROVIDER_UNAVAILABLE
1worker-021,250msSTORAGE_UNAVAILABLE

실패 유형: STORAGE_UNAVAILABLE · DOCUMENT_CONTENT_INVALID · EMBEDDING_PROVIDER_UNAVAILABLE · WORKER_INTERNAL_ERROR

이벤트 타임라인

/events
{[["FAILED","08:12","PROCESSING → FAILED · 재시도 한도 도달","danger"],["EMBEDDING_FAILED","08:11","임베딩 서버 응답 없음","purple"],["RETRY","08:05","FAILED → PENDING · 3번째 자동 재시도","purple"],["EMBEDDING_STARTED","08:06","CHUNKED → EMBEDDING","purple"],["CHUNKED","07:59","청크 24개 생성","success"],["LOCKED","07:58","worker-03이 Job claim","purple"],["JOB_CREATED","07:55","업로드 Job 생성","purple"]].map(([name,time,detail,tone]) =>
{name} {time}

{detail}

)}
+ ); + + if (route === "/admin/workers") return ( +
30초마다 자동 새로고침 · 방금} />
ACTIVE3Job 처리 중
IDLE2대기 중
DEAD1heartbeat 끊김
STOPPED0정상 종료
WORKER상태호스트IPINSTANCE ID마지막 HEARTBEAT시작
{workers.map((worker) =>
{worker.name} {worker.id}{worker.host}{worker.ip}{worker.instance}{worker.heartbeat}{worker.started}
)}
indexing-worker-03이 DEAD로 판정되었습니다. 이 Worker가 잡고 있던 Job은 lease 만료 후 다른 Worker가 다시 가져갑니다.
+ ); + + if (route === "/admin/users") return ( +
사용자 목록 API 준비 중 · 데모 데이터} />
{users.map((user) =>
{user.name}{user.email}{user.department}{user.roles.map((role) => )}
)}

역할 부여

선택 사용자 · 이수진

userId 21
⚠ 이미 부여된 역할을 다시 부여하면 409를 반환합니다.

부여 결과 응답

userId
21
email
sujin@docgrid.io
roles
USER · DOCUMENT_MANAGER
+ ); + + return
; + } + + return ( +
+ + {mobileNavOpen && DocGrid/{routeTitle}
INTERACTIVE PROTOTYPE
김기민Platform · ADMIN
{renderPage()} + + {(modal === "upload" || modal === "version") &&
setModal(null)}>
event.stopPropagation()}>

{modal === "version" ? "새 버전 업로드" : "문서 업로드"}

{modal === "version" ? "현재 문서에 새 버전을 추가합니다." : "검색할 수 있는 새 문서를 추가합니다."}

{modal === "upload" && <>}
} + {modal === "collection" &&
setModal(null)}>
event.stopPropagation()}>

새 컬렉션

관련 문서를 하나의 검색 범위로 묶습니다.