1. 개요
| 업종 | 방 3개 한옥 독채 스테이(독채 숙박 · 소규모 모임 · 다실 대관) |
| 사이트 목적 | 공간과 주변을 보여 주고, 날짜·인원을 넣으면 요금이 바로 나오며 예약 요청까지 남기게 하는 숙소 홈페이지 |
| 제작 범위 | 한 페이지 · 화면 5개 · 빌리는 방법 3가지 |
| 주요 흐름 | 날짜·인원 고르기 → 요금 내역 확인 → 예약 요청 저장 / 예약번호·연락처로 조회 → 예약 취소 / 빌리는 방법 고르기 → 방식에 맞는 예약 칸 |
예약 요청은 브라우저에 저장됩니다. 새로고침하거나 다시 들어와도 예약 확인에 남고, 같은 날짜의 겹치는 요청을 막습니다.
범위 밖: 결제·입금 확인, 외부 예약 채널·객실 관리 시스템과의 날짜 연동, 문자·메일 발송, 관리자 화면(요청 승인·거절), 여러 기기에서 같은 예약을 보는 서버 저장.
2. 과제
1. 숙소 예약은 "그래서 얼마예요?"에서 멈춘다.
평일·주말 요금, 최소 박수, 추가 인원 요금을 문의로 돌리면 대부분 다른 숙소로 갑니다. 날짜와 인원을 넣는 순간 합계와 내역이 나와야 합니다.
2. 독채는 한 번에 한 팀이다.
이미 예약된 날짜에 요청이 또 들어오면 일일이 거절 연락을 해야 합니다. 겹치는 날짜는 요청 단계에서 막고, 비어 있는 날짜를 먼저 찾아 줘야 합니다.
3. 예약 뒤 확인이 쉬워야 한다.
예약번호와 연락처만으로 내 예약을 확인하고 취소할 수 있어야 전화·메시지 응대가 줄어듭니다.
3. 화면 구조

소개부터 예약까지 한 페이지에 이어집니다. 요금 계산·겹침 안내·빈 날짜 찾기는 예약 칸 안에서 바로 바뀌고, 예약 확인은 페이지를 옮기지 않고 위에 겹쳐 열립니다. 주소 끝에 `#reservations`를 붙이면 예약 확인이 바로 열립니다.
4. 주요 기능

날짜·인원 요금 계산
체크인·체크아웃과 성인·어린이 수를 바꿀 때마다 합계와 내역이 다시 계산됩니다. 평일 1박 89만 원, 금·토 1박 109만 원, 6명을 넘으면 1인 1박 5만 원을 줄마다 나눠 보여 줍니다. 최소 2박보다 짧거나 최대 인원(독채 10명)을 넘으면 요금 대신 이유를 알려 줍니다. 소규모 모임·다실 대관을 고르면 '이용 날짜' 하나만 받습니다.

겹치는 날짜 막기 · 빈 날짜 찾기
이미 요청된 기간과 하루라도 겹치면 "그 날짜에는 이미 예약이 있어요"가 뜨고 저장이 막힙니다. 취소된 예약은 계산에서 빠집니다. "빈 날짜 확인"을 누르면 겹치지 않는 가장 가까운 2박을 찾아 날짜 칸을 채웁니다.

예약 요청과 예약번호
이름·연락처 형식·개인정보와 환불 규정 동의를 확인한 뒤 저장하면 예약번호(IS-순번)와 날짜·금액이 나옵니다. 상태는 '예약 요청'으로 남습니다.

예약 확인·취소
머리글 "예약 확인"에서 예약을 최근 순으로 보여 주고, 예약번호와 연락처가 둘 다 맞으면 그 예약만 찾아 줍니다. 날짜·박수·인원·금액·요청 사항이 함께 남고, 취소하면 상태가 '취소'로 바뀌며 같은 날짜가 다시 열립니다.
- 공간 탭 갤러리객실 3곳·수영장·조식·차밭 산책을 탭과 좌우 버튼으로, 휴대폰에서는 밀어서 넘깁니다.
- 빌리는 방법빌리는 방법 카드의 버튼을 누르면 예약 칸으로 내려가며 해당 방식을 골라 둡니다.
5. 기술
| 반응형 | 900·520px 기준으로 배치가 바뀝니다. PC는 위치·예약 2단, 빌리는 방법·머무는 동안 3칸. 휴대폰은 1단으로 접히고, 머리글에는 "예약 확인"과 언어 표시만 남기며 아래에 떠 있는 버튼 두 개를 둡니다. |
| 글꼴 | 본문 Pretendard, 영문 제목 Playfair Display, 한글 제목 고운바탕(모두 무료 공개 글꼴). 사이트 안에 넣어 외부 요청 없이 불러옵니다. 한글 글꼴은 이 사이트에 쓰인 글자만 남겨 본문 2,000KB대 → 81KB, 한글 제목 3,500KB(190개 조각) → 43KB 한 파일로 줄였습니다. |
| 이미지 | webp 10장(휴대폰용 2장 포함), 모두 합쳐 909KB. 첫 화면·수영장 1344px, 객실 1000px, 세로 사진 800px. 첫 화면 사진은 먼저 받고 나머지는 화면에 들어올 때 받으며, 휴대폰에서는 첫 화면·수영장 사진을 800px짜리로 따로 받습니다. |
| 움직임 | 라이브러리 없이 CSS·SVG로 만들었습니다. 손그림 선이 그려지는 첫 로딩, 세 줄로 엇갈려 올라오는 제목, 겹쳐 사라지는 갤러리 전환. 기기에서 움직임 줄이기를 켜면 애니메이션이 멈춥니다. |
| 접근성 | 인원 −/+·화살표 버튼과 로고에 이름을 붙이고 본문 영역을 지정했습니다. 흐린 설명 글자는 대비를 맞췄고, Esc로 창을 닫습니다. 접근성 측정 100점. |
| 사용 기술 | HTML·CSS·JavaScript(외부 라이브러리 없음). 요금은 날짜를 하루씩 돌며 요일별로 더해 계산합니다. 예약 요청은 브라우저 저장소(localStorage)에 저장하고 다시 읽습니다. |
6. 검수
PC 1440·휴대폰 390 화면에서 실제로 띄워, 사람이 쓰는 순서대로 눌러 본 결과입니다. 저장한 뒤 새로고침하고 다시 조회되는지까지 확인했습니다. (2026-09-23)
| 항목 | PC 1440 | 휴대폰 390 |
|---|
| 화면 오류 | 0 | 0 |
| 깨진 파일 | 0 | 0 |
| 가로 넘침·글자 잘림 | 0 | 0 |
| 동작 시험 | 11 / 11 통과 | 11 / 11 통과 |
동작 시험 11가지: 둘러보기 사진 넘기기 · 빌리는 방법으로 방식 고르기 · 최소 2박 안내 · 날짜·인원 요금 계산 · 예약 빈칸 검사 · 예약 요청 저장 · 겹치는 날짜 막기 · 빈 날짜 찾기 · 새로고침 뒤 예약번호로 조회 · 틀린 연락처 조회 · 예약 취소와 날짜 다시 열림
속도·품질 점수 (100점 만점, 휴대폰은 느린 통신 기준)
| 성능 | 접근성 | 권장사항 | 검색 최적화 |
|---|
| 휴대폰 | 89 | 100 | 100 | 100 |
| PC | 99 | 100 | 100 | 100 |
휴대폰: 첫 화면 표시 1.7초 · 가장 큰 요소 표시 3.7초 · 화면 흔들림 0 · 입력 막힘 0ms PC: 첫 화면 표시 0.4초 · 가장 큰 요소 표시 0.9초 · 화면 흔들림 0 · 입력 막힘 0ms
오토건웍스(AutoGun Works) · 대표 박건우 · 사업자등록번호 342-27-02011 · 경기도 용인시 처인구 남사읍 어진로102번길 92-16 · contact@autogun.co.kr개인정보처리방침