Wenlan
Wenlan is a source-backed AI knowledge base and LLM wiki for AI work: organize documents and decisions into pages you can find, inspect, and review.
翻訳待ち
No updates detected yet. GitHub releases will appear here.
Loading the full README. The saved excerpt is shown below.
팀이 함께 쓰는 공유 즐겨찾기 보드와, 각자 꾸미는 개인 보드를 한 화면에서 제공하는 링크 모음 서비스입니다. • 공유 보드 — 팀원 누구나 볼 수 있고, 관리자만 추가·수정·삭제·정렬합니다. • 개인 보드 — 이름 + PIN으로 로그인하면 공유 즐겨찾기 위에 나만의 링크·카테고리를 얹어 재구성할 수 있습니다. 공유 항목을 내 화면에서만 숨기거나 복원할 수 있으며, 이 변경은 다른 팀원에게 영향을 주지 않습니다. 공유 보드 (팀 공용) • 🔗 카테고리별 정리 — "전체" 화면은 카테고리 헤더 + 그룹으로 묶어 한눈에 훑고, 상단 탭으로 특정 카테고리만 골라볼 수 있습니다. • 🔎 검색 — 제목·설명·URL 즉시 검색. • 🖼️ 파비콘 자동 표시 — unavatar → Google → DuckDuckGo → 도메인 첫 글자 순으로 폴백.Read the full README ↗
팀이 함께 쓰는 공유 즐겨찾기 보드와, 각자 꾸미는 개인 보드를 한 화면에서 제공하는 링크 모음 서비스입니다.
| 영역 | 사용 기술 |
|---|---|
| 프레임워크 | Next.js 15 (App Router), React 19, TypeScript |
| 데이터베이스 | Neon (Serverless Postgres) — @neondatabase/serverless |
| 드래그 앤 드롭 | @dnd-kit/core · sortable |
| 테마 | next-themes |
| 아이콘 | lucide-react |
| 테스트 | Vitest |
| 배포 | Vercel |
npm install
cp .env.example .env.local # 아래 환경변수 채우기
npm run dev # http://localhost:3000
.env.local)| 변수 | 설명 |
|---|---|
DATABASE_URL | Neon Postgres 연결 문자열 (?sslmode=require 포함) |
ADMIN_TOKEN | 관리자(/manage) 접근용 비밀 토큰 — 길고 추측 불가능하게 |
| 명령 | 설명 |
|---|---|
npm run dev | 개발 서버 |
npm run build | 프로덕션 빌드 |
npm run start | 빌드 결과 실행 |
npm run lint | ESLint |
npm run test | Vitest 단위 테스트 |
db/schema.sql 을 실행해 기본 테이블을 만듭니다.db/migrations/ 의 SQL을 날짜 순서대로 모두 실행합니다.
(이미 운영 중인 DB라면, 아직 적용하지 않은 마이그레이션만 실행하세요.)db/seed.sql 을 실행하면 예시 카테고리·즐겨찾기가 추가됩니다.| 파일 | 내용 |
|---|---|
2026-07-01-personal-categories.sql | 개인 카테고리 + personal_bookmarks.personal_category_id |
2026-07-03-hidden-shared-bookmarks.sql | 공유 즐겨찾기 개별 숨김 |
2026-07-03-hidden-shared-categories.sql | 공유 카테고리(탭) 숨김 |
2026-07-03-unified-category-order.sql | 공유/개인 통합 카테고리 순서(profile_tab_order) |
2026-07-05-profile-pinned-keys.sql | 개인 보드 상단 고정(핀) 목록(profiles.pinned_keys) |
| 테이블 | 설명 |
|---|---|
categories / bookmarks | 팀 공유 카테고리·즐겨찾기 |
profiles | 개인 보드 사용자 — 이름, PIN 해시, 카드 순서(order_keys), 상단 고정(pinned_keys) |
personal_categories / personal_bookmarks | 프로필별 개인 카테고리·즐겨찾기 |
personal_hidden_shared / personal_hidden_categories | 프로필별 "내 화면에서만 숨김" 목록 |
profile_tab_order | 프로필별 공유+개인 통합 카테고리 순서 |
profile_category_order | 프로필별 공유 카테고리 기본 순서 |
login_guard | 로그인 시도 제한·계정 잠금 상태 |
배포 주소(https://<project>.vercel.app/)를 팀에 공유합니다. 로그아웃 상태에서도 공유 보드를 카테고리 섹션으로 볼 수 있습니다.
우상단 내 보드 → 이름 + PIN 입력 (첫 로그인이면 새 보드가 생성됩니다).
+ 내 링크 로 개인 링크를 추가합니다.⋮ 메뉴에서 PIN 변경 / 로그아웃.https://<project>.vercel.app/manage?key=<ADMIN_TOKEN> 로 한 번 접속하면 쿠키에 저장되어, 이후 그 기기에선 /manage 만으로 관리할 수 있습니다.
DATABASE_URL, ADMIN_TOKEN 설정.main 브랜치에 push 하면 프로덕션이 자동 배포됩니다.src/
├─ app/
│ ├─ page.tsx # 메인 보드 (로그인 시 개인 보드, 아니면 공유 보드)
│ ├─ manage/page.tsx # 관리자 화면
│ ├─ layout.tsx # 메타데이터·테마·다이얼로그 프로바이더
│ └─ api/ # 북마크·카테고리·프로필·개인 데이터 라우트
├─ components/ # 보드 뷰, 카드, 카테고리 탭, 로그인 모달 등
└─ lib/ # DB 접근, 세션, 카테고리 섹션 그룹핑·정렬, 숨김 목록, 유효성 검사
db/
├─ schema.sql # 기본 스키마 (새 DB용)
├─ seed.sql # 예시 데이터
└─ migrations/ # 증분 업데이트용 SQL