같은 캠퍼스 안에서만 거래합니다.
Select a plan on the left to review order details and complete your purchase on the right.
Free to use. Footer credit link required.
Selected Item
Free
$0
Free to use. Footer credit link required.
Footer credit preview
This link will appear in your site footer. Remove with Pro license.
비교가 전부인 거래를, 비교할 수 있게 만든 장터입니다. 카드 격자가 아니라 정렬선을 가진 목록이라 자릿수가 다른 가격이 1의 자리에서 맞춰지고, 담은 책의 한 학기 절약액이 아래 원장에 쌓입니다.

index.html 을 더블클릭하면 열립니다. 설치도 빌드도 필요 없습니다 —
Node 도 npm 도 쓰지 않는 순수 HTML · CSS · JavaScript 입니다.
서버에 올릴 때는 폴더째 업로드하면 됩니다. S3 · CloudFront · Netlify · Vercel ·
GitHub Pages · nginx 어디든 정적 호스팅이면 그대로 뜹니다. 서비스 워커와 PWA
매니페스트는 http(s) 에서만 켜지므로, 로컬에서 파일로 열어도 콘솔에 오류가 나지 않습니다.
stu-03-textbook-market/
├── index.html 장터 첫 화면 — 검색 · 학과 필터 · 최근 올라온 책 · 원장
├── pages/ app/(목록 · 상세 · 등록 · 담은 책) · docs/(안전 거래 · FAQ)
│ · legal/(방침 · 약관) · system/(404 · 오프라인)
├── styles/ tokens · base · components · sections · theme (순서 고정)
├── scripts/ theme-init.js · main.js + logic/ledger.js(DOM 을 모르는 순수 계산)
├── assets/ images · icons · fonts · data
├── contract/ 백엔드 이관 계약 — 스키마 · 엔드포인트 · 컴포넌트 매핑
├── manifest.webmanifest PWA
└── sw.js 오프라인 캐시
스타일시트는 읽는 순서가 고정이고 @layer base, components, utilities, theme 로
층이 선언되어 있습니다. 그래서 theme.css 가 언제나 마지막에 이깁니다.
쪽마다 따로 붙는 스크립트는 없습니다. 열두 쪽 전부가 theme-init.js ·
logic/ledger.js · main.js 세 개만 읽습니다.
styles/tokens.css 의 :root 에서 아래 다섯을 덮어쓰는 것으로 시작하세요.
| 변수 | 쓰이는 곳 |
|---|---|
--color-primary | CTA · 링크 · 강조 |
--color-on-primary | 주색 위에 얹히는 글자 |
--color-on-hero | 히어로 위에 얹히는 글자 |
--color-surface | 카드 · 패널 |
--color-background | 지면 바탕 |
나머지 색은 전부 여기서 color-mix() 로 파생됩니다. 컴포넌트 안에 색값을 직접 적지
마세요 — 다크 모드와 대비 검사가 토큰을 기준으로 돌아갑니다. styles/theme.css
상단에 이 템플릿의 팔레트와 대비 실측표가 있으니, 색을 바꾸면 그 수치를 다시
재세요. 본문 4.5:1, 큰 글자 3:1 이 기준입니다.
서체 파일은 전부 assets/fonts/ 안에 있고 외부 CDN 을 호출하지 않습니다. 선언은
assets/fonts/fonts.css 에 있습니다.
가격 · 정가 · 할인율 · 절약액 · ISBN 은 DM Sans 로 그립니다. 자릿수 폭이 같은 숫자(tabular figure) 를 가진 서체라 1의 자리가 세로로 한 줄에 섭니다. 이 서체를 바꾸실 때는 같은 성질을 가진 것으로 고르세요. 그러지 않으면 목록의 가격 비교가 무너집니다.
한글은 사용자 기기의 시스템 고딕으로 그립니다. 이유는 fonts.css 머리말에
적어 두었습니다.
styles/theme.css 가 이 템플릿의 개성입니다. 활자 단계 · 형태 · 여백의 박자 ·
레이아웃 골격 · 시그니처 인터랙션이 모두 여기 있고, 파일 안에 왜 그 값인지가
주석으로 적혀 있습니다. 공용 컴포넌트를 건드리지 않고 이 파일만 고쳐도 인상이 바뀝니다.
책 목록의 각 줄은 정적 마크업입니다. 같은 내용의 사본이 assets/data/books.json 에
있으니 데이터를 바꾸실 때는 두 곳을 함께 고치세요. 백엔드를 붙일 때 정적 줄은
버립니다 (contract/README.md).
절약액 계산은 scripts/logic/ledger.js 한 파일에 모여 있습니다. DOM 을 모르는
순수 모듈이라 Node 에서 그대로 돌려 볼 수 있습니다.
| 쪽 | 용도 |
|---|---|
index.html | 장터 첫 화면. 검색, 학과로 좁히기, 계열 둘러보기, 최근 올라온 책, 상세 모달, 절약액 원장, 거래 안내, 등록 권유 |
pages/app/books.html | 등록된 서적 37권 전체 목록. 학과 필터 + 상세 모달 |
pages/app/saved.html | 담은 책과 원장 — 정가 합계 · 판매가 합계 · 이번 학기 절약액. 비어 있을 때의 안내와 상세 모달 |
pages/app/register.html | 서적 등록 양식 (서명 · 저자 · 출판사 · 판쇄 · ISBN · 학과 · 상태 · 정가 · 판매가 · 연락 수단) + 올릴 수 없는 것 |
pages/app/book-algorithm-strategy.html | 개별 서적 낱쪽 — 알고리즘 문제 해결 전략. 검색 유입과 링크 공유용이라 목록에서는 모달이 대신 뜹니다 |
pages/app/book-operating-systems.html | 개별 서적 낱쪽 — 운영체제: 내부와 설계 원리 |
pages/docs/safe-trade.html | 거래 규칙, 만나서 확인할 것, 문제가 생겼을 때 |
pages/docs/faq.html | 자주 묻는 질문 8건 |
pages/legal/privacy.html | 개인정보 처리방침 |
pages/legal/terms.html | 이용약관 |
pages/system/404.html | 주소를 찾지 못했을 때 |
pages/system/offline.html | 연결이 끊겼을 때 서비스 워커가 보여 주는 쪽 |
Chrome · Edge · Safari · Firefox 최신 2개 버전. iOS Safari 16 이상.
이 템플릿이 기대는 것은 이렇습니다 — @layer 캐스케이드 레이어, color-mix(),
padding-inline 같은 논리 속성, text-wrap, 접히는 절의
grid-template-rows: 0fr → 1fr 전환, 모달 뒷면(::backdrop)의 backdrop-filter,
그리고 상세 모달의 <dialog> + showModal().
상단 바는 일부러 불투명합니다. 촘촘한 목록이 아래로 지나갈 때 반투명 띠가 번지면 훑어 읽기가 끊깁니다.
color-mix() 를 모르는 브라우저에서는 색이 조금 밋밋해지고 몇몇 상태
표시가 덜 붙을 뿐, 목록과 가격은 그대로 읽힙니다. <dialog> 를 지원하지 않으면
상세 모달이 열리지 않는데, 서명 · 저자 · 정가 · 판매가 · 할인율 · 상태는 목록 줄에
이미 다 나와 있어 거래 판단에는 지장이 없습니다.
자바스크립트를 꺼도 목록과 가격은 그대로 읽힙니다 — 값이 정적 마크업에 들어 있고, 스크립트가 맡은 것은 검색 · 학과 필터 · 상세 모달 · 원장 누적입니다.
prefers-reduced-motion · prefers-reduced-data · prefers-contrast: more 대응alt 와 명시적 width/height (레이아웃 이동 0)contract/endpoints.json 에 있습니다localStorage 안에만 남습니다. 기기를 바꾸면 따라오지 않습니다서체와 이미지의 출처·라이선스는 CREDITS.md, 템플릿 자체의 이용 범위는
LICENSE.md 를 보세요.
등장하는 책·판매자·학과·연락처는 전부 예시로 지어낸 것입니다. 배포 전에 실제 값으로 바꿔 주세요.
이 템플릿의 일부는 AI 의 도움을 받아 만들었습니다.
템플릿 소스 외에 패키징 단계에서 넣은 파일입니다.
| 파일 | 내용 |
|---|---|
LICENSE.md | pro 에디션 이용 약관 — 재배포·재판매 범위가 여기 있습니다 |
CREDITS.md | 서체와 이미지의 출처·라이선스 |
CHANGELOG.md | 이 템플릿의 변경 이력 |
.cursorrules | AI 편집기(Cursor · Claude Code · Cline)가 읽는 편집 규칙 — 디자인 토큰만 쓰기, BEM 이름, WCAG 2.2 AA 기준을 어시스턴트가 따릅니다 |
.provenance.json | 빌드 출처와 지문 (저작권 증빙용. 지워도 템플릿은 그대로 동작합니다) |
assets/preview.webp | 맨 위의 첫 화면 캡처 |
이 템플릿은 일부 과정에 AI 를 썼습니다. 코드와 카피는 사람이 검수했습니다.