Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
118 commits
Select commit Hold shift + click to select a range
456af04
feat: 디자인 프로토타입 추가
cnvxlns Jan 6, 2026
716fc71
docs: 디자인 수정 반영하여 프롬프트 정리
cnvxlns Jan 6, 2026
7ee8f1d
docs: 다이어그램 추가
DoItHi58 Jan 7, 2026
fbad985
chore: Copilot 리뷰 한국어로 받도록 설정
7hyunii Jan 8, 2026
794075d
Merge pull request #20 from 7hyunii/chore/copilot-review
7hyunii Jan 8, 2026
8d6e74a
docs: diagram 수정 및 UI 입력 파라미터 정리
DoItHi58 Jan 8, 2026
1a91531
Update spec_diagram.md
DoItHi58 Jan 8, 2026
9d6e610
docs: spec_API&Data.md 업데이트
DoItHi58 Jan 9, 2026
582d173
Merge branch 'feature/diagram' of https://github.com/DoItHi58/PrimerF…
DoItHi58 Jan 9, 2026
c979f16
Merge pull request #19 from DoItHi58/feature/diagram
7hyunii Jan 9, 2026
b1a0267
Merge branch 'Seq-Lab:main' into docs-uidesign
cnvxlns Jan 11, 2026
6afe0d5
Merge branch 'Seq-Lab:main' into uidesign
cnvxlns Jan 11, 2026
959f10b
fix: correct z-index stacking in Stepper component
cnvxlns Jan 11, 2026
56aae0c
fix: correct z-index stacking in Stepper component
cnvxlns Jan 11, 2026
e02b26e
refactor: 내부에 혼재되어 있던 타입 정의들을 별도 파일로 분리
cnvxlns Jan 11, 2026
7fdefad
docs: 3주차 프롬프트 정리+@
cnvxlns Jan 11, 2026
2670eb7
Merge pull request #23 from cnvxlns/refactor
7hyunii Jan 11, 2026
85f7092
Merge pull request #26 from cnvxlns/docs-uidesign
7hyunii Jan 11, 2026
5cfee8f
Merge remote-tracking branch 'upstream/develop' into docs-uidesign
cnvxlns Jan 11, 2026
aed0037
Merge branch 'main' of https://github.com/cnvxlns/PrimerFlow-FE into …
cnvxlns Jan 11, 2026
36de31a
Merge branch 'develop' of https://github.com/cnvxlns/PrimerFlow-FE in…
cnvxlns Jan 11, 2026
a7b1806
fix: resolve broken Material Icons rendering
cnvxlns Jan 11, 2026
372b3c3
fix: replace text arrow with icon in Next, Back button
cnvxlns Jan 11, 2026
a9c7615
Merge branch 'uidesign' of https://github.com/cnvxlns/PrimerFlow-FE i…
cnvxlns Jan 11, 2026
b13b494
Merge branch 'uidesign' of https://github.com/cnvxlns/PrimerFlow-FE i…
cnvxlns Jan 11, 2026
99c6ddb
docs: 3주차 프롬프트 업데이트
cnvxlns Jan 11, 2026
7fec210
Merge pull request #27 from cnvxlns/docs-uidesign
7hyunii Jan 11, 2026
edcb349
docs: 1~3주차 주간 보고서 업데이트
cnvxlns Jan 11, 2026
7649a90
Update date range for Week 2 in README
cnvxlns Jan 11, 2026
6a104c2
Merge pull request #30 from cnvxlns/docs-uidesign
cnvxlns Jan 11, 2026
bc438df
Merge branch 'develop' of https://github.com/cnvxlns/PrimerFlow-FE in…
cnvxlns Jan 11, 2026
23367be
refactor: 컴포넌트 분리
7hyunii Jan 12, 2026
114429c
fix: TextareaAutosize 미적용 수정
7hyunii Jan 13, 2026
c4dcd4c
Merge pull request #31 from 7hyunii/refactor/components
cnvxlns Jan 13, 2026
bab6cce
Merge branch 'develop' of https://github.com/cnvxlns/PrimerFlow-FE in…
cnvxlns Jan 13, 2026
5aac479
fix: 브랜치 싹 밀고 다시 수정; 버튼 활성화
cnvxlns Jan 13, 2026
4d70c96
docs: 4주차 프롬프트;버튼기능 활성화 정리
cnvxlns Jan 13, 2026
a74f4cb
docs: 4주차 프롬프트;버튼기능 활성화 정리
cnvxlns Jan 13, 2026
e9162aa
Merge pull request #33 from cnvxlns/fix-buttons
cnvxlns Jan 13, 2026
94cb7fa
feat: api 요청 테스트 with 목데이터
cnvxlns Jan 18, 2026
64fa425
docs: 4주차 프롬프트 업데이트
cnvxlns Jan 18, 2026
b67b139
feat: 도착한 api정보표시. 딱 데이터만 표시. 디자인 X
cnvxlns Jan 18, 2026
facb515
feat: 분석결과 목데이터 모달로 표시.
cnvxlns Jan 18, 2026
d140908
refactor: lib/api/client.ts, lib/axios.ts를 client.ts로 합침
cnvxlns Jan 18, 2026
cb42237
refactor: 모달 코드를 page.tsx로 부터 분리, analysisService.ts lib/api 폴더 내부로 이동
cnvxlns Jan 19, 2026
85b53d4
Merge pull request #34 from cnvxlns/api-call
cnvxlns Jan 19, 2026
ad84841
Merge branch 'main' into develop
cnvxlns Jan 19, 2026
3843388
Merge branch 'main' of https://github.com/cnvxlns/PrimerFlow-FE into …
cnvxlns Jan 19, 2026
542adfb
4주차 활동보고서 업데이트 (#36)
cnvxlns Jan 19, 2026
b7db05c
Merge branch 'develop' of https://github.com/cnvxlns/PrimerFlow-FE in…
cnvxlns Jan 19, 2026
3d1a524
feat: 백엔드 연결 테스트 완료
cnvxlns Jan 27, 2026
760420b
refactor: 타입 정의 파일 중앙화 및 디렉토리 구조 개선 (src/types)
cnvxlns Feb 1, 2026
9ddc618
refactor: API 상대 경로 전환 및 중복 타입 정의 제거
cnvxlns Feb 1, 2026
05d5362
refactor: 일관성을 맞추기 위해 lib 유틸리티 경로를 src/lib으로 변경
cnvxlns Feb 2, 2026
d51fd9e
refactor: import 경로도 함께 일괄 정리
cnvxlns Feb 2, 2026
487af0f
fix: 모달에서 import관련 이슈 해결
cnvxlns Feb 2, 2026
ea0bfb7
백엔드 API 요청 후 수신된 목 데이터를 모달에 렌더링하는 로직 구현 (#38)
7hyunii Feb 2, 2026
fc0b60e
refactor: API 요청을 상대 경로(/api/v1)로 전환 및 환경변수 정리
cnvxlns Feb 3, 2026
fa400af
refactor: 타입 중앙화 및 API/환경 설정 개선
cnvxlns Feb 4, 2026
e829615
refactor: API 설정 변수 통일 및 .env.example 추가
cnvxlns Feb 4, 2026
142bbae
chore: .env.example 추가
cnvxlns Feb 4, 2026
13eaf4b
Merge pull request #40 from cnvxlns/test
7hyunii Feb 4, 2026
cd1f598
feat: high bp 데이터의 결과물 렌더링시 최적화를 위해 이분탐색 알고리즘 적용.
cnvxlns Feb 10, 2026
0865553
docs: 6주차 주간보고서 작성
cnvxlns Feb 10, 2026
abca3b2
fix: Large sequence mode에서 textarea 편집/붙여넣기 차단
cnvxlns Feb 10, 2026
eb98fa4
fix: Large sequence 모드 입력 안정성 개선 및 카운트 기준 통일
cnvxlns Feb 10, 2026
77ca64f
fix: 캔버스 트랙 렌더링에 visible range 이진 탐색 적용
cnvxlns Feb 10, 2026
ef05dd0
fix: 클램프 폴백 스케일 및 트랙 레이아웃 가시성 최적화 계산
cnvxlns Feb 11, 2026
7151237
Merge pull request #41 from cnvxlns/fastrender
7hyunii Feb 11, 2026
bb4a4a9
feat: logo 추가 및 타이틀 수정
7hyunii Feb 11, 2026
1f85226
refactor: image size 명시
7hyunii Feb 11, 2026
b5644f2
refactor: 폰트 참조 개선
7hyunii Feb 11, 2026
f913765
Merge pull request #42 from 7hyunii/feature/add-logo
cnvxlns Feb 12, 2026
7b822a9
ci: 테스트 코드 추가 및 CI 파이프라인 구축
7hyunii Feb 13, 2026
b2eb901
fix: any 타입 삭제
7hyunii Feb 13, 2026
b54f938
docs: 패키지 설치 수정
7hyunii Feb 13, 2026
d1600be
Merge pull request #43 from 7hyunii/ci
7hyunii Feb 18, 2026
bf0150e
chore: npm audit 취약점 정리
7hyunii Feb 18, 2026
d859f46
Merge pull request #45 from 7hyunii/develop
7hyunii Feb 19, 2026
7d84974
feat: ATGC 외의 문자 입력 시 경고 메시지 표시 및 재입력 요구. 해당 문자 입력 시 자동 대문자 변환 기능 추가
cnvxlns Feb 21, 2026
b695f65
fix: harden lint/build pipeline and fix Turbopack module resolution
cnvxlns Feb 21, 2026
4647dc7
fix: paste시 atgc외 문자 정제 및 제출 전 ATGC 검증 추가
cnvxlns Feb 21, 2026
eb7a67f
fix: paste시 atgc외 문자 정제 및 제출 전 ATGC 검증 추가
cnvxlns Feb 21, 2026
fa928e4
feat: 붙여넣기/업로드 시 잘못된 염기 필터링 전 확인 팝업 추가
cnvxlns Feb 21, 2026
5b30ad5
fix: 입력 변경 폴백 sanitize 적용 및 생성 전 중복 검증 제거
cnvxlns Feb 21, 2026
cceb44c
fix: 멘트 두 줄로 줄바꿈
cnvxlns Feb 21, 2026
68c6ccb
fix: Step1 유효성 검증 중복 제거 및 목적별 분기 명확화
cnvxlns Feb 21, 2026
8b120d2
fix: confirm 취소 시 기본 Ctrl+V 동작 유지하도록 preventDefault 순서 수정
cnvxlns Feb 21, 2026
d8d8543
refactor: Step1 경고 노출 경로 분리로 중복 메시지 제거
cnvxlns Feb 21, 2026
747f7c8
refactor: 미사용 toUpperCaseAtgcOnly 제거 및 관련 테스트 정리
cnvxlns Feb 21, 2026
ce55768
chore: 미사용 isUppercaseAtgcOnlySequence 제거 및 테스트 정리
cnvxlns Feb 21, 2026
15263d2
chore: Paste/Ctrl+V/Upload 문자 제거 확인을 커스텀 다이얼로그로 통일
cnvxlns Feb 21, 2026
d322375
Merge pull request #46 from cnvxlns/validate
7hyunii Feb 22, 2026
eebdd61
feat: upload fasta버튼 텍스트 수정 및 .fna파일도 지원
cnvxlns Feb 24, 2026
400e6a1
feat: 목데이터 제거 및 배포된 api와의 연결
cnvxlns Feb 24, 2026
e4881f0
feat: 목데이터 제거 및 배포된 api와의 연결
cnvxlns Feb 24, 2026
4f0e813
chore: 경고메시지 한국어로 통일
cnvxlns Feb 25, 2026
f6a60ec
feat: same-origin API 프록시 기본화
cnvxlns Feb 25, 2026
b5d7dc9
feat: same-origin API 프록시 복원 및 시퀀스 입력 검증 강화
cnvxlns Feb 25, 2026
24e1701
fix: inject BACKEND_URL from GitHub Secrets with branch-based prod/st…
cnvxlns Feb 25, 2026
9082496
fix: route BACKEND_URL by branch (main/master=prod, others=staging) w…
cnvxlns Feb 25, 2026
59ca8bd
chore: rerun ci
cnvxlns Feb 25, 2026
f0cdd66
chore: rerun ci
cnvxlns Feb 25, 2026
98a1630
chore: ci 파일 복원
cnvxlns Feb 25, 2026
a87acde
fix: inject BACKEND_URL for build
cnvxlns Feb 25, 2026
74df95a
fix: inject BACKEND_URL via secrets
cnvxlns Feb 25, 2026
5ae469c
fix: allow fork PR builds without secrets
cnvxlns Feb 25, 2026
f46c949
Merge pull request #47 from cnvxlns/api-connect
7hyunii Feb 25, 2026
e4a4919
docs: 5주차 프롬프트 업데이트
cnvxlns Mar 2, 2026
e31e767
docs: 6주차 프롬프트 업데이트
cnvxlns Mar 2, 2026
0253589
docs: 7주차 프롬프트 업데이트
cnvxlns Mar 2, 2026
abfe38b
Merge pull request #48 from cnvxlns/docs
cnvxlns Mar 2, 2026
0cf40ce
chore: 파일 확장자 이상한거 수정
cnvxlns Mar 2, 2026
80ea7e8
Merge pull request #49 from cnvxlns/develop
cnvxlns Mar 2, 2026
40fe974
docs: week8까지 주간보고서 작성
cnvxlns Mar 2, 2026
eb4819c
docs: 8주차 프롬프트 정리
cnvxlns Mar 2, 2026
0ecd0b6
Merge branch 'develop' into docs
cnvxlns Mar 2, 2026
cc9f441
Merge pull request #50 from cnvxlns/docs
cnvxlns Mar 2, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# Copy this file to .env.local and set variables as needed.
#
# Backend origin used by Next.js rewrite proxy.
# - Local development default: http://127.0.0.1:8000
# - Production: BACKEND_URL must be explicitly set.
BACKEND_URL=
#
# Frontend axios base URL.
# Keep this unset to use "/api" (same-origin via Next.js rewrite).
# Set only when you intentionally bypass the rewrite proxy.
NEXT_PUBLIC_API_BASE_URL=
73 changes: 73 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
name: CI

on:
pull_request:
branches:
- main
- master
- develop

concurrency:
group: ci-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

permissions:
contents: read

jobs:
lint-and-build:
name: Lint & Build
runs-on: ubuntu-latest

env:
NEXT_TELEMETRY_DISABLED: "1"

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 20
cache: npm

- name: Install dependencies
run: npm ci

- name: Inject BACKEND_URL
shell: bash
env:
BACKEND_URL_PRODUCTION: ${{ secrets.BACKEND_URL_PRODUCTION }}
BACKEND_URL_STAGING: ${{ secrets.BACKEND_URL_STAGING }}
run: |
# fork PR은 보안상 secrets가 전달되지 않음 → 공개 URL(또는 더미)로 빌드만 통과
if [ "${{ github.event.pull_request.head.repo.fork }}" = "true" ]; then
echo "BACKEND_URL=https://primerflow-be.onrender.com" >> "$GITHUB_ENV"
exit 0
fi

if [ "${{ github.base_ref }}" = "main" ] || [ "${{ github.base_ref }}" = "master" ]; then
selected="$BACKEND_URL_PRODUCTION"
key="BACKEND_URL_PRODUCTION"
else
selected="$BACKEND_URL_STAGING"
key="BACKEND_URL_STAGING"
fi

if [ -z "$selected" ]; then
echo "::error::Missing secret $key"
echo "::error::Set it in Settings -> Secrets and variables -> Actions -> Repository secrets"
exit 1
fi

echo "BACKEND_URL=$selected" >> "$GITHUB_ENV"

- name: Lint
run: npm run lint

- name: Test
run: npm test

- name: Build
run: npm run build
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ yarn-error.log*

# env files (can opt-in for committing if needed)
.env*
!.env.example

# vercel
.vercel
Expand Down
97 changes: 93 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -73,13 +73,22 @@ git clone [https://github.com/Seq-Lab/PrimerFlow-FE.git](https://github.com/Seq-
cd PrimerFlow-FE

# 3. 패키지 설치
npm install
npm ci

# 4. 환경 변수 설정 (.env.local 생성)
# (백엔드 API 주소 설정 예시)
# echo "NEXT_PUBLIC_API_URL=http://localhost:8000" > .env.local
- `.env.example` 파일을 복사하여 `.env.local`을 생성하세요.
- Next.js `rewrites`에서 백엔드 목적지는 `BACKEND_URL`이 설정되면 해당 값을, 없으면 `http://127.0.0.1:8000`(로컬)로 사용합니다.
- 로컬 기본값(127.0.0.1:8000)을 사용하려면 `.env.local`을 비워 두어도 무방합니다.
- 다른 백엔드로 프록시해야 한다면 `.env.local`에 아래처럼 설정하세요:

```env
BACKEND_URL=[https://api.example.com](https://api.example.com)
Copy link

Copilot AI Mar 2, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

.env.local 예시 값이 마크다운 링크 형태로 들어가 있어 그대로 복사하면 잘못된 값이 됩니다. BACKEND_URL=https://api.example.com 처럼 순수 URL 문자열로 안내해 주세요.

Suggested change
BACKEND_URL=[https://api.example.com](https://api.example.com)
BACKEND_URL=https://api.example.com

Copilot uses AI. Check for mistakes.
```

- Vercel 등 배포 환경에서도 동일한 환경 변수를 프로젝트 환경 변수로 추가하면 됩니다.

# 5. 개발 서버 실행
```
npm run dev
```

Expand All @@ -97,7 +106,7 @@ npm run dev
- AI 활용: Gemini로 자세한 내용 프롬프트로 작성, codex로 프로젝트 아키텍처 및 스켈레톤 코드 작성.
- 다음 주 계획: page.tsx, layout.tsx 구현, 목 데이터 출력 해보기

### Week 2 (25.12.29 - 26.01.04)
### Week 2 (25.12.29 - 26.01.04)z`
Copy link

Copilot AI Mar 2, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

문서에 오타가 포함되어 있습니다. Week 2 (25.12.29 - 26.01.04)z``의 불필요한 z``를 제거해 주세요.

Copilot uses AI. Check for mistakes.
- 작업 내역:
- 더미 데이터로 페이지에 연결
- 뷰 상태(Zustand)와 줌·패닝 동작을 정돈
Expand Down Expand Up @@ -136,3 +145,83 @@ npm run dev

![week3_screenshot#4.png](docs/screenshots/week3_screenshot%234.png)
- 다음 주 계획: 실제 데이터 연동, GenomeCanvas 미리보기·컨트롤 마무리.

### Week 4 (26.01.12 ~ 26.01.18)
- 작업 내역:
- 백엔드 모킹 서비스 구현 및 결과 시각화
- Step 1 시퀀스 입력 편의성 개선
- 컴포넌트 아키텍처 개선 및 UI 업데이트
- AI 활용:
- codex로 캔버스가 표시되는 모달 구현
- paste등 버튼 기능 구현
- 완료 기능:
- 목데이터를 모달을 이용하여 표시
- Step1에서 DNA서열 입력 시, fasta파일 업로드, 클립보드에서 붙여넣기 지원

- 테스트 결과:
- 목데이터 표시 확인

![week4_screenshot#1.png](docs/screenshots/week4_screenshot%231.png)
- 다음 주 계획: 완성된 백엔드와 연동하여 결과 표시 및 디버깅

### Week 5 (26.01.19 ~ 26.01.25)
- 작업 내역: 프론트엔드-백엔드 간 API 통신 규격(Spec) 정의 및 연동 구현
- AI 활용: codex 이용하여 복잡한 Nested Object을 UI 전용 상태(Flat Object)로 변환하는 어댑터 패턴 코드 자동 생성
- 완료 기능:
- 프라이머 설계 요청(Request) 프로세스 구현: 입력값 → 어댑터 → API 호출 흐름 완성
- 결과 모달(Result Modal) 데이터 바인딩: Mock 데이터를 활용하여 캔버스 및 리스트에 분석 결과 렌더링
- 다음 주 계획: 사용자 입력 데이터(DNA 서열)에 대한 전처리(Sanitization) 및 유효성 검증 로직 구현


### Week 6 (26.01.26 ~ 26.02.01)
- 작업 내역:
- 대용량 데이터(10,000bp 이상) 렌더링 성능 최적화를 위한 뷰포트 탐색 로직 개선
- 캔버스 UI 스크롤 조작 시 배경이 함께 밀리는 버그(Jittering) 수정 및 레이어 고정 처리
- AI 활용:
- codex를 이용하여 binary search 알고리즘 로직 검증 및 최적화
- gemini로 현재 발생하고 있는 상황을 정확하게 설명하여 해결을 요구하는 프롬프트 작성 및 codex를 이용한 수정
- 완료 기능:
- Binary Search 렌더링 최적화: $O(N)$ 탐색을 $O(\log N)$으로 개선하여 High BP 구간 프레임 드랍 해결
- Canvas Background Fix: 스크롤 이벤트 시 배경 이미지가 고정되도록 렌더링 로직 수정
- 다음 주 계획:
- 입력 데이터 validator 구현

### Week 7 (26.02.02 ~ 26.02.08)
- Step1 시퀀스 입력 정규화 및 검증 UX 개선
- ATGC 대소문자 처리 및 비정상 문자(N, 숫자, 특수문자) 필터링 로직 정립
- 붙여넣기 및 파일 업로드 시 사용자 동의 UX 일관성 확보

- AI 활용:
- 4단계 프롬프트(Phase 1~4)를 구성하여 AI와 단계별 로직 고도화 및 트러블슈팅 진행
- Next.js Turbopack 빌드 에러(Import 경로 이슈) 분석 및 해결
- 대량 문자열 붙여넣기 시 발생하는 데이터 손실(과도한 삭제) 문제에 대한 최적화된 Sanitize 접근 방식 제안 및 적용

- 완료 기능:
- 실시간 정규화: 입력 즉시 대소문자 구분 없이 대문자 ATGC로 자동 변환 및 실시간 필터링 적용 (안내 캡션 추가)
- 사용자 동의 기반 예외 처리: FASTA 파일 업로드, Paste 버튼, Ctrl+V 입력 시 비정상 문자가 감지되면 즉시 삭제하지 않고 window.confirm을 통한 사용자 제거 동의 로직 구현
- 로직 최적화: 조각(chunk) 단위 산니타이즈(Sanitize) 방식으로 전환하여 성능 개선 및 Generate 단계의 불필요한 중복 검증 로직 제거

- 다음 주 계획:
- 목데이터 제거 및 배포된 백엔드와 연결

### Week 8 (26.02.09 ~ 26.02.15)
- 작업 내역:
- 목데이터(Mock Data) 기반 응답 제거 및 실서버 응답 구조 기준으로 프론트 로직 전환
- 프라이머 분석 요청 파라미터를 백엔드 스펙에 맞게 정리하고 요청/응답 매핑 흐름 점검
- API 호출 실패 상황(네트워크/서버 오류)에 대한 사용자 메시지 노출 및 상태 처리 보강
- AI 활용:
- Codex를 활용해 API 클라이언트 경로(`/api/design`)와 서비스 레이어 매핑 로직 검증
- 응답 데이터 변환(UI 전용 트랙/프라이머 후보 매핑) 과정의 타입 안정성 점검 및 개선
- 완료 기능:
- 프라이머 설계 요청이 배포된 백엔드 API로 전송되도록 연동 완료
- 백엔드 응답을 Result Modal/Canvas에 렌더링 가능한 형태로 변환하여 표시
- Mock 의존 흐름을 제거하고 실데이터 기반 동작으로 전환
- 다음 주 계획:
- Vercel 환경에 프론트엔드 배포 및 배포 환경 변수(API Base URL) 점검

### Week 9 (26.02.16 ~ 26.02.22)
- 작업 내역:
- AI 활용:
- 완료 기능:
- 다음 주 계획:
- 작업 내역:
36 changes: 0 additions & 36 deletions app/api/v1/primer/design/route.ts

This file was deleted.

109 changes: 109 additions & 0 deletions app/globals.css
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,115 @@
font-display: swap;
}

.poppins-thin {
font-family: "Poppins", sans-serif;
font-weight: 100;
font-style: normal;
}

.poppins-extralight {
font-family: "Poppins", sans-serif;
font-weight: 200;
font-style: normal;
}

.poppins-light {
font-family: "Poppins", sans-serif;
font-weight: 300;
font-style: normal;
}

.poppins-regular {
font-family: "Poppins", sans-serif;
font-weight: 400;
font-style: normal;
}

.poppins-medium {
font-family: "Poppins", sans-serif;
font-weight: 500;
font-style: normal;
}

Comment on lines +48 to +77
Copy link

Copilot AI Mar 2, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

globals.css.poppins-* 유틸 클래스가 대량으로 추가되었지만, 현재 코드베이스에서 사용되는 곳을 찾기 어렵습니다(검색 결과 전역 CSS 내 선언만 존재). 사용 계획이 없다면 제거하여 CSS 크기/유지보수 비용을 줄여 주세요.

Suggested change
.poppins-thin {
font-family: "Poppins", sans-serif;
font-weight: 100;
font-style: normal;
}
.poppins-extralight {
font-family: "Poppins", sans-serif;
font-weight: 200;
font-style: normal;
}
.poppins-light {
font-family: "Poppins", sans-serif;
font-weight: 300;
font-style: normal;
}
.poppins-regular {
font-family: "Poppins", sans-serif;
font-weight: 400;
font-style: normal;
}
.poppins-medium {
font-family: "Poppins", sans-serif;
font-weight: 500;
font-style: normal;
}

Copilot uses AI. Check for mistakes.
.poppins-semibold {
font-family: "Poppins", sans-serif;
font-weight: 600;
font-style: normal;
}

.poppins-bold {
font-family: "Poppins", sans-serif;
font-weight: 700;
font-style: normal;
}

.poppins-extrabold {
font-family: "Poppins", sans-serif;
font-weight: 800;
font-style: normal;
}

.poppins-black {
font-family: "Poppins", sans-serif;
font-weight: 900;
font-style: normal;
}

.poppins-thin-italic {
font-family: "Poppins", sans-serif;
font-weight: 100;
font-style: italic;
}

.poppins-extralight-italic {
font-family: "Poppins", sans-serif;
font-weight: 200;
font-style: italic;
}

.poppins-light-italic {
font-family: "Poppins", sans-serif;
font-weight: 300;
font-style: italic;
}

.poppins-regular-italic {
font-family: "Poppins", sans-serif;
font-weight: 400;
font-style: italic;
}

.poppins-medium-italic {
font-family: "Poppins", sans-serif;
font-weight: 500;
font-style: italic;
}

.poppins-semibold-italic {
font-family: "Poppins", sans-serif;
font-weight: 600;
font-style: italic;
}

.poppins-bold-italic {
font-family: "Poppins", sans-serif;
font-weight: 700;
font-style: italic;
}

.poppins-extrabold-italic {
font-family: "Poppins", sans-serif;
font-weight: 800;
font-style: italic;
}

.poppins-black-italic {
font-family: "Poppins", sans-serif;
font-weight: 900;
font-style: italic;
}


:root {
--background: #060b16;
--foreground: #e2e8f0;
Expand Down
11 changes: 9 additions & 2 deletions app/layout.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import type { Metadata } from "next";
import { JetBrains_Mono, Space_Grotesk } from "next/font/google";
import { JetBrains_Mono, Poppins, Space_Grotesk } from "next/font/google";
import SiteFooter from "@/components/ui/Footer";
import Providers from "./providers";
import "./globals.css";
Expand All @@ -14,6 +14,13 @@ const mono = JetBrains_Mono({
subsets: ["latin"],
});

const poppins = Poppins({
variable: "--font-poppins",
subsets: ["latin"],
weight: ["400", "600", "700"],
display: "swap",
});

export const metadata: Metadata = {
title: "PrimerFlow - Primer Design Workbench",
description: "Dark-mode playground for primer visualization and tuning.",
Expand All @@ -28,7 +35,7 @@ export default function RootLayout({
<html lang="ko">
<head>
</head>
<body className={`${display.variable} ${mono.variable} antialiased`}>
<body className={`${display.variable} ${mono.variable} ${poppins.variable} antialiased`}>
<Providers>
<div className="min-h-screen flex flex-col">
<div className="flex-1">{children}</div>
Expand Down
Loading