← 프로젝트 목록으로

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용 응답은 대상·금상·은상·동상·장려상 등 수상 등급별 리스트로 재구성해, 같은 데이터를 클라이언트 화면 구조에 맞게 다르게 가공