S_CON
설명 영상
기본 정보
- 사용 언어
- PythonFlaskSQLite
- 포지션
- 서버
- 기간
- 2022.03 ~ 2022.06
- 팀 / 개인
- 팀
- 깃허브 링크
- GitHub에서 보기 →
프로젝트 소개
역대 성공회대 IT경진대회 수상작을 한 곳에서 확인할 수 있는 All-in-One 서비스입니다. 교내 홈페이지에서는 수상 명단만 확인할 수 있을 뿐 실제 작품을 살펴보기 어렵다는 문제의식에서 출발해, 수상작 아카이브 열람은 물론 비대면 시국에 맞춰 화상회의·실시간 채팅 기능까지 계획한 서비스로 기획했습니다.
프로젝트 구성
서버 API
- Flask 기반 REST API로 학과(IT/SW/MC)·연도별 경진대회 수상작 데이터 제공
- Flask-RESTful Upload 리소스로 엑셀(xlsx) 파일 업로드 시 openpyxl로 파싱해 DB에 일괄 저장
데이터베이스
- SQLite에 수상작 데이터(팀명, 수상 내역, 요약, 참여 인원, GitHub·유튜브·서비스 링크 등) 저장
- 학과·연도 조건에 따라 조회하는 함수를 구현하여 필터링 요청 대응
응답 포맷
- Web·iOS 클라이언트별 요구 형식이 달라 두 종류의 JSON 응답 생성 로직을 분리 구현
- 학과(IT/SW/MC) → 연도 → 팀 순서의 계층 구조로 데이터를 정리해 응답
세부 설계
엑셀 업로드 파싱 흐름
- 관리자가 올린 xlsx 파일을 openpyxl로 열어 시트를 열 단위로 순회
- 각 열이 하나의 수상팀 데이터를 나타내도록 구성하고, 빈 열을 만나면 파싱을 중단
- 열의 각 셀 값을 정리해 SQLite에 한 팀씩 INSERT
Web/iOS 응답 구조 분리
- Web용 응답은 학과(IT/SW/MC) → 연도 → 팀 순서의 중첩 딕셔너리로 구성
- iOS용 응답은 대상·금상·은상·동상·장려상 등 수상 등급별 리스트로 재구성해, 같은 데이터를 클라이언트 화면 구조에 맞게 다르게 가공