Projects

startergate

사용 기술

프로젝트 유형

진행 상황

DOTORI
GSM 기숙사 관리 시스템
TypeScriptServer
DoNote V
TypeScript로 다시 만드는 DoNote
TypeScriptServer, Web Application
Eliverd
Deliver Your Life, Eliverd. 모두를 위한 배달 서비스
PythonServer
HIVE
영화 정보 크롤링 사이트
JavaScriptServer
Lost
2D 플랫포머 게임
C#Game
SID
STARTERGATE IDENTITY: 통합 계정 서비스
JavaScriptServer, Web Application
SteamBot
디스코드 스팀 크롤링 봇
PythonChatbot
Basterds: Hair Naked
타워 디펜스 게임
PythonGame, Server
Cloudy
설치형 클라우드 드라이브 서비스
PHPServer, Web Application
DoNote
간단한 메모 웹앱
PHPServer, Web Application
GSM Pay
학교 축제 부스 간편 결제 시스템
TypeScriptServer, Web Application
Nyan ID
Oauth 2.0 계정 서비스
TypeScriptServer, Web Application
The Intersection
PC 플랫폼 게임 통합 런처
C++Native Appliation, Server
Webinar
최대 동접자 1,800명을 기록한 마이스터고 웨비나 플랫폼
JavaScriptServer
Don't Afraid
트라우마 치료 게임
C#Native Appliation, Game
Glack
GitHub 챗봇
PythonChatbot
HakCam
학교 수업 스트리밍 서비스
JavaScriptServer
Nearby
주변 정보 검색 페이지
HTMLWeb Application
Problert
위치 기반 민원 접수 시스템
JavaScriptServer
STARTERGATE.CDN
개인 프로젝트용 CDN
JavaScriptServer, Web Application
BKNG
학원 포인트 적립 시스템
PHPServer, Web Application
DEEPendency
스팀 창작마당 아이템 의존성 자동 설치기
TypeScriptEtc
MovieBot
디스코드 영화 정보 크롤링 봇
PythonChatbot
FaLD
일베 콘텐츠 검출 딥러닝 모델
PythonEtc
Untitled Blockchain Project
실버 택배 블록체인 보상 체계
PythonEtc
DOTORI 메인 화면
What is DOTORI?

DOTORI는 광주소프트웨어마이스터고등학교 기숙사 관리 및 교내 커뮤니티 역할를 위한 소프트웨어이다. 노트북 예약, 기상음악 신청, 호실 변경 신청 층의 기능을 제공했다. 동아리 빈실의 프로젝트이다.

처음 해보는 것 투성이
DOTORI는 새롭게 시도해보는 것이 정말 많은 프로젝트였다. 유닛 테스트, 문서화, GitHub Action 등 여러 DevOps 들을 도입해봤고, redis, prettier같은 기술을 사용했다. 백엔드 5명, 프론트엔드 6명과 함께하는 프로젝트였고, 많은 협업 인원을 관리하기 위해 스프린트와 git flow를 사용했다. 비록 학교의 동아리 제도 변경으로 인해 프로젝트가 미완성으로 끝나긴 했지만, 지금까지 했던 프로젝트들 중에서 가장 많은걸 배운 프로젝트였다.
Write and Go
DOTORI는 내가 문서화와 테스팅을 처음으로 시도해본 프로젝트이다. 문서화는 OpenAPI 3.0을 따랐고, 테스팅 라이브러리로는 Jest를 사용했다. 둘을 사용하면서 느낀 가장 큰 장점은 일단 개발 기간을 엄청나게 줄여주고, 혼동을 방지한다는 점에 있다고 생각한다. 문서화를 통해서 프론트의 질문을 훨씬 덜 받게 되었고, 테스팅을 통해서 평소라면 찾지 못했을 버그를 찾아내거나 엔드포인트의 개발 효율을 향상시킬수 있었다. 프로젝트의 백엔드 개발이 후반부로 들어간 시점부터는 테스팅을 의무화하여 커버리지를 100%로 향상시킬 수 있었다.
Project Courtesy of 빈실

DoNote V

TypeScript로 다시 만드는 DoNote
TypeScriptNode.jsKoa.jsMySQLAWS EC2
2019년 8월 9일개발 중
What is DoNote V?
DoNote V는 PHP로 만들어진 메모 웹 앱, DoNote를 React와 Koa.js로 새롭게 리팩토링하는 프로젝트이다. 데이터베이스는 기존의 모델을 그대로 사용하고 있다. 기존 기능을 모두 계승하고, 새롭게 개발된 React 코드를 바탕으로 데스크탑 앱도 만든다.
레거시와 함께하는 프로젝트
이 프로젝트는 기존의 데이터베이스를 유지하고, PHP로 구현됐던 프론트와 백엔드를 다시 구현하는걸 목표로 하고 있다. 기존의 DoNote의 데이터베이스 모델은 내가 코딩을 막 시작했을 때 만든거라서 굉장히 특이하고 이상한 구조로 되어 있는데, 각 유저마다 테이블을 하나씩 만들어 준다. ORM을 사용할 수 있는 상황에서는 굉장히 좋지 않은데, 데이터베이스를 자동으로 관리하기 어려워진다는 것이다. 때문에 장기적으로 데이터베이스 구조를 변경할 계획을 세우고, DB Sync는 유저가 로그인 할때마다 유저에 관련된 테이블에 수행하기로 했다.
TypeScript로 넘어가기
이 프로젝트는 학교 프로젝트나 협업 프로젝트들 때문에 미뤄서 진행했는데, 그 사이 내가 사용하는 언어들도 좀 바뀌었다. TypeScript를 사용하게 되었는데, 한 번 사용해보니까 다시 돌아가지 못할 만큼 편했다. 벡엔드가 다 완성되고 프론트가 개발 준비 중인 상태에서 이렇게 되어서 백엔드를 TypeScript로 변경하기로 했다. 변경 작업은 쉬운 편이었는데, 유일하게 Sequelize.js 로 짜여진 데이터베이스 모델이 바꾸는데 시간이 제일 오래 걸렸다. Sequelize를 TypeScript에서 사용하기 위해서는 모델 생성 코드와 함께 Static Type과 Interface를 생성해줘야 하는데, 이를 전부 수작업으로 해줘야해서 실수도 많이 있었고, 시간도 많이 걸렸다. 다음부터는 TypeORM을 사용하는게 더 적합할 것 같다는 결론에 도달했다.

Eliverd

Deliver Your Life, Eliverd. 모두를 위한 배달 서비스
PythonDjangoMySQLDockerAWS EC2AWS S3
2020년 4월 24일177일2020년 10월 18일
소비자 앱 상품 조회소비자 앱 주문소비자 앱 결제소비자 앱 주문 내역 조회소비자 앱 상품 추천소비자 앱 검색소비자 앱 카테고리 분류소비자 앱 마이페이지상점 앱 상품 조회상점 앱 주문상점 앱 결제상점 앱 주문 내역 조회상점 앱 상품 추천상점 앱 검색
What is Eliverd?

Eliverd는 상점 관리 & 배달 서비스다. 상품 재고 관리, 온라인 몰 운영, 주문, 배달까지 모두 처리해준다.
온라인 판매나 배달 서비스를 모든 소상공인이 사용할 수 있게 하는 것을 목표로 개발했다. 2020년 GSM 졸업 프로젝트였고, 장려상을 수상했다.

구상
Eliverd는 소상공인 드론 배달 서비스라는 아이디어로 시작했다. 2018년 E-Faucet 프로젝트를 마치고 다른 대회에서 해볼만한 아이디어를 구상하던 과정의 일환이었다. 구상을 계속 할수록 규모가 계속 커져갔고, 다른 중요한 프로젝트들도 있었기에 다른 사람과 같이 팀 프로젝트로 진행하기로 구상했다.
처음 해보는 규모
Eliverd는 클라이언트 3개로 구성된 프로젝트다. 각 클라이언트는 개별의 기능을 가지고, API 서버는 하나를 사용한다. 또 기능도 재고 관리, 쇼핑몰, 추천, 주문, 결제, 배송 등을 모두 다뤄야했기에 규모가 크고 복잡해졌다. 이를 잘 해결하기 위해서 무엇이 필수적인지, 무엇을 먼저 해야하는지, 무엇을 없앨수 있는지를 생각했다. 기능이 추가로 생기거나 다른 엔드포인트가 필요해지더라도 기존 리소스를 사용할수 있도록 구상했다. 또한 문서화를 통해서 소통이 늦어지는 문제를 방지할 수 있었다. 이를 통해 프로젝트를 시작할 때 구상했던 기능을 거의 대부분 구현할 수 있었다.
실무적 설계
Eliverd는 졸업 팀 프로젝트로 진행하는 거 였지만 시스템 설계나 기능은 실제 서비스를 목적으로 만들었다. 물론 실무의 수준에는 미치지 못하지만 컨테이너화나 문서화, 그리고 확장성을 어느 정도 고려해서 설계했다. 데이터베이스는 각 상점마다 주문을 따로 전달해주는 비즈니스 로직에 맞춰서 설계되었으며, 카카오페이와 연동하여 실제 사용자의 경험에 가깝게 구현할 수 있도록 노력했다.
'그' 바이러스
원래라면 학교에서 만나서 회의하며 진행했어야 하는 프로젝트였지만, 코로나 19 때문에 온라인으로만 협업을 진행해야 했다. 회의와 의사 소통은 Discord로 진행하고, 코드 협업은 GitHub Issue를 활용했다. 이 때 온라인으로 많은 부분을 정해둘 수 있었기에 등교 개학 후에도 빠르게 개발할 수 있었다.
영화 정보 크롤링 사이트
JavaScriptNode.jsExpress.jsMySQLAWS EC2
2019년 6월 25일15일2019년 7월 10일
What is HIVE?
HIVE는 영화 정보 통합 조회 서비스이다. 네이버, 왓차피디아, IMDB, 로튼토마토의 평점을 보여주고, 넷플릭스와 왓챠에서 시청할 수 있는지 알려준다.
Promise Hell
서비스 특성 상 수많은 웹 크롤링에 의존해야 했었는데, 이 과정 자체가 시간이 굉장히 많이 걸리는 일이었다. 특히나 한글 제목으로 영어 제목도 찾아서 같이 조회했어야 하는데, 이 때문에 실행 순서가 정해지게 되었다. 이를 효율적이고 좀 더 빠르게 해결하기 위해서 수많은 Promise를 사용한다. 프로젝트를 진행하며 JavaScript Promise, async/await에 대해 더 자세히 알 수 있었다.

Lost

2D 플랫포머 게임
C#UnitySteamworks
2019년 3월 8일517일2020년 8월 6일
Project Courtesy of Tiny Beluga

SID

STARTERGATE IDENTITY: 통합 계정 서비스
JavaScriptNode.jsExpress.jsMySQLAWS EC2
2019년 1월 9일249일2019년 9월 15일

SteamBot

디스코드 스팀 크롤링 봇
PythonDiscordDockerThreading
2019년 3월 14일180일2019년 9월 10일

Basterds: Hair Naked

타워 디펜스 게임
PythonTypeScriptC++Node.jsDjangoKoa.jsUnreal EngineMySQLAWS EC2
2019년 12월 18일21일2020년 1월 8일

DoNote

간단한 메모 웹앱
PHPMySQLAWS EC2
2017년 10월 27일557일2019년 5월 7일

Nyan ID

Oauth 2.0 계정 서비스
TypeScriptNode.jsKoa.jsMySQL
2020년 1월 14일계획 중

The Intersection

PC 플랫폼 게임 통합 런처
C++JavaScriptQtExpress.jsAWS EC2
2019년 4월 23일84일2019년 7월 16일

Webinar

최대 동접자 1,800명을 기록한 마이스터고 웨비나 플랫폼
JavaScriptNode.jsExpress.jsMariaDBsocket.io
2020년 8월 10일44일2020년 9월 23일

Don't Afraid

트라우마 치료 게임
C#JavaScriptNode.jsUnityElectron
2018년 8월 7일1일2018년 8월 8일

Glack

GitHub 챗봇
Python
2020년 1월 13일계획 중

HakCam

학교 수업 스트리밍 서비스
JavaScriptNode.jsExpress.js
2019년 8월 5일2일2019년 8월 7일

Nearby

주변 정보 검색 페이지
HTMLJavaScriptGoogle Maps API
2018년 10월 29일10일2018년 11월 8일

STARTERGATE.CDN

개인 프로젝트용 CDN
JavaScriptNode.jsExpress.jsGoogle Cloud Platform
2019년 4월 29일35일2019년 6월 3일

BKNG

학원 포인트 적립 시스템
PHPMySQL
2018년 1월 27일65일2018년 4월 2일

DEEPendency

스팀 창작마당 아이템 의존성 자동 설치기
TypeScript
2020년 4월 1일계획 중

MovieBot

디스코드 영화 정보 크롤링 봇
PythonDiscord
2019년 5월 7일계획 중

FaLD

일베 콘텐츠 검출 딥러닝 모델
PythonTensorflowJupyter Notebook
2018년 12월 20일13일2019년 1월 2일

Untitled Blockchain Project

실버 택배 블록체인 보상 체계
PythonJavaScriptNode.js
2018년 8월 31일1일2018년 9월 1일
© 2022 Ho Seung Choi a.k.a. startergate, Built with , Hosted on Pages