효율적인 동아리 운영을 위한 팀 빌딩 자동화
비슷한 목표를 가진 사람들과 목표까지!
모든 세대가 쉽게 접근하는 파크골프 웹 서비스
레크리에이션 준비? 1분이면 충분합니다
생일 선물과 마음을 전달하는, Best Birthday
효율적인 동아리 운영을 위한 팀 빌딩 자동화
MakeMate는 피로그래밍의 최종 프로젝트 팀 빌딩 과정을 자동화하는 웹 서비스입니다. 기존에 발표자료를 공유하지 않고 구글폼으로 피드백을 받던 것을 하나의 웹 사이트로 통합하여 관리할 수 있습니다. 또한 투표 결과를 토대로 팀빌딩 결과를 자동으로 도출합니다.
바닐라 자바스크립트 및 장고를 사용하여 구현하였습니다. 특정 시간에 일어나는 이벤트는 APScheduler를 사용하여 비동기 처리하였습니다. 팀빌딩은 투표결과에 기반하여 각 멤버마다 팀 적합도를 계산하여 모든 팀의 팀 적합도가 균등하게 나타날 수 있도록 구현하였습니다. 계산시 사용되는 2차원 배열 데이터는 numpy를 사용하여 처리하였습니다.
김연우 (팀장): UI/UX 디자인 기획, 회원가입/로그인/로그아웃, 모임 생성 및 인증, 배포
강용현: 메인 페이지, 운영자 페이지, 회원 정보 수정, 팀 빌딩 알고리즘 구현, APScheduler 활용 팀빌딩 함수 실행 관리
김하영: UI/UX 디자인, 그룹 디테일 페이지, 아이디어 생성/수정/삭제, 투표 생성 및 수정
송하종: 임시결과 제공 및 수정, 결과 발표, 권한 인가, 팀 빌딩 알고리즘 구현
해당 프로젝트는 피로그래밍 인터널 앱으로서 다음 기수에도 활용할 수 있도록 디벨롭할 예정입니다. 기존의 인터널 앱에 삽입하기 위해 React와 Node.js를 활용하여 리팩토링할 예정입니다. 또한 가능하다면 최종 프로젝트 이외의 팀 빌딩 사항(소모임, 모각코, 과제 등) 또한 반영할 수 있도록 수정할 예정입니다.
비슷한 목표를 가진 사람들과 목표까지!
혼자서 계획을 세우고 목표를 달성하는 데에 어려움을 느끼는 많은 사람들이, 서로 독려하고 정보를 공유하며 목표하는 바를 이루기 위해 함께할 사람을 찾고 있습니다. 이러한 경우 보통 유저가 속해있는 커뮤니티 혹은 많은 사람에게 공고가 노출되는 특정 서비스를 중심으로 모집활동이 이루어집니다. 그러나 이러한 모집 방식에는 크게 두 가지 문제가 있는데, 한 가지는 검색이 어렵고 그룹에 대해 제공되는 정보가 제한적이라 그룹장-그룹원 간 매칭이 용이하지 않다는 점이고, 또 한 가지는 그룹 관리 기능(ex. 벌금 관리)을 별도로 제공하지 않아 수기로 관리하는 작업이 요구된다는 점입니다. 저희는 이에 대한 솔루션을 담아 Fever Partners 서비스를 기획했습니다.
1. 나의 목표를 등록한 후, 해당 목표를 기준으로 그룹을 추천받는 기능을 제공한다. (일반 회원 입장)
2. 나의 그룹을 개설한 후, 해당 그룹을 기준으로 멤버를 추천받는 기능을 제공한다. (그룹 개설자 입장)
3. 활동 기능(인증 및 인증 확인, 커뮤니티 게시판)과 관리기능(보증금으로부터 벌금 징수, 보증금 분배, 멤버 관리 등)을 제공한다.
4. 나의 목표 달성을 보고하는 기능을 추가적으로 제공한다.
python 기반 웹 프레임워크인 Django를 기반으로, Django에서 제공하는 Django HTML 템플릿 기능과 HTML, CSS, Vanilla JS를 적절히 조합하여 모든 기능을 구현했습니다. 기능 작동에 대한 시각적 피드백을 제공하기 위해 모달창을 기능을 직접 구현하거나, sweetalert2 라이브러리를 사용해 구현하였으며, UI상 편의성을 증진하기 위해 각종 Icon, flatpickr 등을 일부 활용했습니다. 추천 기능은 Elastic Search라는 오픈소스 검색엔진을 사용하여, 각 항목마다 차등적으로 점수를 부여하는 로직을 작성하는 방식으로 구현했습니다. 마지막으로 배포는 AWS EC2와 Docker(+Docker-compose로 Nginx, Django, PostgresQL, Portainer를 연결)를 사용해 진행했습니다.
추가적으로, 프로젝트 종료 후 저희 팀은 Front-end와 Back-end의 영역을 완전히 구분하는 방식으로 프로젝트를 다시 빌드하고 코드를 리팩토링해보기로 결정하였으며, 현재 Django Restful Framework와 React를 사용해 이를 진행하고 있습니다.
정용화(팀장, 개발총괄, 추천 기능)
강민주(디자인, 알람)
김재관(인증, 탭 기능)
원재영(디자인, 게시판)
황지우(유저 인증, 배포)
- 프론트엔드와 백엔드를 구분하지 않고, 주된 기능별로 구분하여 역할을 분배했습니다. 그러나 이는 엄격하게 구분된 사항은 아니었으며, 모든 팀원이 필요에 따라 여러 영역을 오가고 서로 소통하며 개발을 진행했습니다.
모든 세대가 쉽게 접근하는 파크골프 웹 서비스
파크골프장 위치 및 정보 제공, 파크골프 커뮤니티, 골프 스코어 기록 등의 서비스를 제공합니다. 파크 골프는 고연령층을 중심으로 빠르게 성장하고 있는 스포츠입니다. 하지만 성장세에 비해 관련 웹 서비스나 정보 제공등이 미흡하다는 것을 파악하였고 고연령층이 주류인 이용자들에게 더 치명적일 것이라 문제를 인식하고 기획하게되었습니다.
저희 팀은 빠른 개발과 유동적인 협업을 위해 파트가 아닌 기능위주로 개발을 진행했습니다.
파트 대신 분야를 정해 공부와 검토를 진행하여 완성도를 높이고 각자 분야에 대해 더 깊은 이해를 하고자 하였습니다.
framework : django WAS : uwsgiWAB : nginx database : mysql,s3
아마존 ec2서버에 장고,uwsgi,nginx를 이용해 인스턴스에 웹 서버를 구성하였고 다른 인스턴스에 my sql 데이터베이스 서버를 구성해 통신하게 만들었습니다. 이후 이미지 저장을 위해 S3도 사용하였습니다.
더 자세한 내용은 깃허브를 방문해주세요
- 이승찬(팀장) : 팀장과 기획을 맡았습니다. 게임 기능을 개발하였고 서버 배포 후 ci/cd를 구성
- 양현(CRUD): 커뮤니티, 스코어등의 기능을 빠르게 개발하였고 ocr사진 분석 등의 새로운 기술을 사용 해보았습니다.
- 이선민(database) : 초기 데이터 베이스 설계와 유저 개발을 담당했습니다. 데이터 베이스 서버를 따로 배포 하였고 이후 이미지 파일을 위해 s3도 구성했습니다.
- 정영헌(ajax, api) : 지도 기능을 담당하여 개발 하였고 이 과정에서 외부 네이버 지도 api를 이용하여 위치 관련 개발을 진행했습니다.
- 윤나경(css,front-end): 초기 유저 기능 개발을 진행하였습니다. 디자인과 css, front-end의 전반적인 부분을 진행했습니다.
레크리에이션 준비? 1분이면 충분합니다
MT를 준비해보신 적이 있으신가요? 장소 예약부터 필요한 물건을 준비하기까지 신경 써야 할 부분이 한두가지가 아닙니다. 그중에서도 가장 공을 들여야 하는 부분은 바로 레크레이션 시간인데요. MT의 분위기를 좌우하는 레크레이션 시간인 만큼 많은 공을 들여야 하는 부분입니다.
여러분은 그동안 레크레이션을 어떻게 준비하셨나요? 게임 선정부터 피피티를 만들고 미리 시뮬레이션을 돌려보기까지... 너무나도 번거로운 과정입니다. 저희는 이러한 어려움에 집중했습니다!
8가지 게임 (노래 전주 듣고 맞추기, 사진보고 인물 맞추기, 철가방 게임, 없는 게 없는 무한도전 대사 퀴즈, 영화 명장면 맞추기, 몸으로 말해요, 네글자 맞추기, 채팅 빨리보내기) 제공
8가지 게임 중 원하는 게임만 골라, 원하는 순서대로 진행 가능 (+ 사회자 정답지 제공, 동일한 문제들과 순서로 재시작 가능 )
Socket 통신을 이용한 실시간 채팅방
로그인 없이 개인도 플레이할 수 있도록 6가지 게임 제공
웹 프레임워크로 장고를 이용했고 장고 템플릿과 CSS, JS를 이용해 유저에게 보여줄 페이지를 만들었습니다.
배포 환경에서는 웹서버로 NGINX를 middleware로 gunicorn, WAS로 asgi 기반 비동기 장고 서버, DB는 EC2 내부에 PostgreSQL을 사용했습니다.
디테일한 기술로 JS의 Socket모듈과 AJAX를 이용했고, 장고 라이브러리로 qrcode와 uvicorn을 이용했습니다.
PM: 석우진
FE: 킨웨이얀
BE: 오기택
BE: 정현정
BE: 최윤서
생일 선물과 마음을 전달하는, Best Birthday
Best Birthday는 생일 선물을 자주 주고받는 문화 속에서, 항상 생일 선물을 어떤 것을 줘야할지, 또 어떤 금액대의 선물을 줘야할지 고민인 상황이 많은 상황을 해결하고자 탄생하였습니다.
그래서 노골적이지만, 확실하게 원하는 금액을 바로 친구의 계좌로 입금을 시켜 줄 수 있고 거기에 더불어 생일 축하 메세지를 작성하는 서비스를 계획하였습니다.
생일의 느낌을 극대화하기 위해, 이렇게 모인 생일 금액과 메세지는 생일날 이후부터 한꺼번에 확인을 하여 더 축하받는 느낌이 들도록 하였습니다.
- 이주형(Back-end / PM) : 팀장으로써 전체적인 기획과 백엔드 개발을 맡았습니다. 서버 배포와 서비스의 핵심 기능은 송금기능을 개발하였습니다.
- 이진혁(Back-end) : Django를 이용해서 전체적인 CRUD를 구현하고, 서버 배포를 함께 하였습니다. 이후 도메인 관리도 도맡아 하였습니다.
- 박채연(Front-end) : 정예진 팀원과 함께 디자인 프레임워크를 구축하고, 전반적인 프론트엔드 디자인을 정말 열심히 구현하였습니다. 모바일 퍼스트로 모바일 화면 위주로 디자인을 구축하였습니다.
- 정예진(Front-end) : 뛰어난 디자인 감각으로 전체적인 디자인 프레임워크를 구축하고, 여러 애니메이션과 Ajax 효과를 구현하였습니다.
1. 메인페이지 생일 펀딩 개설 : 생일 앞뒤 7일 동안 '단 한번만' 개설 가능. 장고 템플릿을 통해 간단하게 구현했습니다. 메인페이지 아래에는 생일 축하 메세지가 가장 많은 사람들, 또 오늘 생일인 사람들 등 다른 카테고리도 구현했습니다. 진행률은 progress 태그를 이용해서 가시적으로 나타냈습니다.
2. 생일 축하 메세지 작성 & 생일 용돈 : 축하메세지는 비교적 자유롭게 작성하기 위해 로그인을 하지 않아도 가능하고, 용돈 송금은 카카오 송금과 토스 송금으로 구현했는데, 카카오 송금 링크 분석이 특히 재밌었던것 같습니다. 또한 Ajax를 통해 금액에 따라 다른 선물 이미지가 뜨도록 하였습니다.
3. 생일 축하 화면 : canvas 태그를 통해 풍선효과, 컨베티효과 등 화려하게 구성하였습니다.
아이디어도 좋고, 니즈도 많아 보였지만, 돈이 오가는 만큼 관리가 어려울 것 같아 실제 홍보하여 유저를 확보하진 못하였습니다. 돈 관리를 철저하게 하기 위해선 사업자 등록을 통한 결제API 도입도 생각해보았지만, 수수료와 사용비가 모두 나갔기에 이후 추가적인 디벨롭은 하지 못해서 아쉬웠습니다.