교내 해커톤 후기

1c2·2023년 8월 27일
0

Django

목록 보기
12/12

우연한 계기로 교내 해커톤에 백엔드 포지션으로 참여할 수 있게 되었습니다. 스프링 공부를 시작하는 시기였지만 졸업 전에 교내 해커톤을 경험하고 싶던 마음도 있었기에 사용되는 스택이 달라도 참여하게 되었습니다. Django라는 프레임워크를 사용하는게 참여 조건이였기에 본격적으로 해커톤 팀 빌딩이 시작될 즈음에 장고 공부를 하게 되었고 아이디어 회의 전까지는 Django 공부에 집중을 하였습니다.

아이디어 회의

해커톤의 주제가 '현재 떠오르고 있는 사회/기술 분야에 적용될 수 있는 S/W기술'로 매우 추상적이고 범위가 넓었기에 회의를 여러번 진행하였습니다. 주제에 맞게 장애인 편의성을 고려한 시스템, 탄소 배출 문제를 완화할 수 있는 기술 등등 여러 좋은 아이디어가 나왔고 회의 결과 약물 오남용 문제를 줄일 수 있도록 하는 어플리케이션 개발로 주제를 굳혔습니다.

참고로 팀 이름은 MSG, 어플 이름은 medisign으로 팀원 분들의 아이디어가 늙고 병든 고학번인 저와는 다른 참신하고 독특하기에 마음에 들었읍니다..

개발 요구 사항 정리

사실 아이디어 회의를 진행하면 나왔던 기능을 기획측에서 문서화 하기 전부터 작업을 시작하였기에 나중에 수정을 참 많이 하였지만.. 다음 기능을 구현하였습니다.

  • USER에 대한 CRUD(create, read, update, delete)
  • 약품 모델 생성 및 약품 목록에 대한 read
  • 특정 약품과 함께 먹으면 안되는 약품 리스트
  • 약의 정보 크롤링 및 DB에 저장
  • 처방전 모델 생성 및 CRUD
  • 약국 모델 생성
  • 현재 위치 기준 근처 약국 리스트 제공 및 지도 제공(네이버 지도api 사용)
  • 특정 약국의 위치 제공(네이버 지도 api 사용)
  • 챗봇 관련 기능을 위한 widget모델과 CRUD
  • 이미지 필드의 경우 multi part 형식으로 받고 저장소에 저장 후 이미지 url반환.
  • 관리자 페이지

별 기능이 없지만 필요한 기능이 있을 때 마다 공부를 하며 기능을 구현하고 회의를 통해 필드를 추가하거나 삭제, 기능의 추가와 삭제 그리고 프론트 엔드를 담당하는 학우의 요청에 따라 api를 조금씩 수정하다보니 구현하는데 2주정도 소요되었습니다만 기본적인 기능 이외에 핵심 기능은 해커톤 당일에 구현하였습니다.

모델 구조

각각의 모델에 속한 필드와 관계는 아래 그림처럼 되어있습니다

: many to many
: foreign key
관계 입니다.

개발 환경

개발 언어: python
프레임워크 : django
DB: postgresql - 로컬 DB와 서버 DB모두 postgresql을 사용
배포: heroku
저장소: amazon s3 - 주로 이미지 파일과 로컬 db와 서버 db의 동기화를 위한 .dump파일 저장

대회 당일

대회는 이틀동안 첫째날 아침 10:30 부터 다음날 점심 03:00 까지 진행이 되었습니다. 학교 창업지원팀 멘토 분께서 저희 아이디어에 대해서 조언을 상당히 많이 해주셔서 기획 및 서비스를 많이 수정하여 보완할 수 있었습니다. 특히 평가위원님들이 개발쪽 분야가 아닌 창업 및 투자 관련자인 점을 알게된 이후 개발쪽 팀원은 서비스 보완보다는 기획 보완에 힘을 보탰고 밤새 관련 법률 및 통계, 기사 등등을 조사하여 발표자료에 추가하고 Q&A에 대비하였습니다.

결과물

위 사진은 디자인 담당 팀원님들이 figma로 그린거긴 하지만 완성된 결과물 또한 디자인적으로 유사하고 기능도 상당히 구현이 되었습니다. 추가적으로 대회 당일 YOLO v3를 통해 알약 사진을 찍으면 어떤 알약인지 판단하는 모델을 간단하게만 구현한 기능도 넣었습니다.

결과

결과는 최우수상 수상으로 총 상금 150만원을 수상할 수 있었습니다. 밤새 준비한 Q&A는 준비가 무색할 정도로 타 팀에 비해 질문을 잘 안하셔서 아쉬워하고 있었는데 최우수상 까지 받으니 너무 좋았습니다.

코드

github

백엔드 파트 코드입니다. 기능 관련 내용은 readme.md를 참고하면 이해가 쉽습니다.

0개의 댓글