ROOM 302 PROJECT는 ITM 전공 실습실(302호)에 마련된 좌석 정보를 웹을 통해 실시간으로 확인하고, 팀 프로젝트나 개인 학습에 필요한 자리를 보다 손쉽게 찾을 수 있도록 도와주는 서비스입니다. 302호에 팀플이나 과제를 하러 갈 때, 매번 직접 가서 자리가 있는지 확인해야 했던 불편함을 개선하기 위해 기획되었습니다.
-
실시간 좌석 현황 확인
- 사용 중인 자리와 비어 있는 자리를 한눈에 파악할 수 있습니다.
- 각 자리는 예약(사용) 시작 시간과 예상 사용 시간을 설정하여 관리할 수 있습니다.
-
좌석 사용/반납 및 변경
- 자리가 비어 있으면 클릭 한 번으로 사용 시작 시간을 설정하고 사용을 시작합니다.
- 이미 자리를 사용 중인 경우, 사용자가 직접 시간 만료 전에 “반납”할 수 있습니다.
- 사용자가 이미 다른 자리를 사용 중일 때 새 자리를 선택하면, 현재 좌석을 반환하고 새 좌석으로 즉시 변경할 수 있습니다.
-
사용 시간 만료 자동 관리
- 사용 시작 시 설정한 예상 사용 시간이 지나면 자동으로 자리가 비워지도록 처리되어 있습니다.
- JavaScript에서 매초마다 좌석 사용 시간을 체크하여, 시간이 끝나면 자동으로 반납 처리합니다.
-
회원 가입 및 비밀번호 변경
- Django의 기본 유저 모델 확장(UserProfile)을 사용하여, 보안 질문/답변을 등록하는 형태의 회원가입을 제공합니다.
- 가입한 유저는 로그인 후 비밀번호 찾기를 통해 보안 질문/답변을 확인하여 비밀번호를 재설정할 수 있습니다.
-
Python 3 & Django 4.2.11
- 전반적인 웹 애플리케이션 로직을 처리하고, URL 라우팅과 데이터베이스 ORM을 제공합니다.
- Django의 Model, View, Template 구조를 기반으로 프로젝트가 구성되어 있습니다.
settings.py,urls.py,wsgi.py,asgi.py파일을 통해 Django 프로젝트 환경 설정이 되어 있습니다.
-
SQLite
- Django에서 기본적으로 제공하는 SQLite 데이터베이스를 사용하고 있습니다.
- 마이그레이션 스크립트(예:
000x_*.py)를 통해 테이블 생성, 필드 추가/변경 등의 DB 스키마 변화를 관리합니다.
-
HTML/CSS (Django Template)
login.html,createAccount.html,changePassword.html,seats.html등 Django 템플릿 엔진을 통해 HTML을 렌더링하고 있습니다.- CSS 파일을 별도로 작성하여 기본적인 레이아웃 및 UI 스타일을 적용했습니다.
-
JavaScript
- 좌석의 사용 시간 체크와 자동 반납 처리, 모달 창 제어 등에 사용됩니다.
fetchAPI를 사용해 비동기적으로 Django 서버와 통신하며, 좌석의 사용/반납을 즉시 업데이트합니다.- 예)
seats.html내부<script>에서 주기적으로 서버에 요청을 보내 좌석 정보를 갱신하고, 사용 시간 만료를 확인합니다.
- Django Auth
- Django의 기본 User 모델을 활용하여 회원가입, 로그인, 비밀번호 변경 기능을 구현했습니다.
- 추가적인 회원 정보(보안 질문, 답변 등)는
UserProfile모델로 확장해 저장합니다.
- 반응형 디자인: 모바일/태블릿 환경에서도 편리하게 사용할 수 있도록 UI 개선.
- 권한 분리: 관리자 전용 좌석 강제 해제/유저 관리 화면 추가.
- 더 상세한 예약 기능: 예약 시간대 지정 후 승인/거절 로직 등.
- 메일/SMS 알림 연동: 예약 시간 만료 또는 변경 시 알림.