현재 대학의 여러 학생회는 자대생들을 위한 제휴 사업을 진행하고 있습니다. 제휴 사업이란 학생회가 학교 주위 가게들과 제휴를 맺어, 학생이 해당 학교 혹은 단과대 소속이라면 가게에서 할인 혹은 서비스 제공과 같은 혜택을 제공받는 사업입니다. 학생회는 학생들에게 혜택을 제공하기 위해 제휴 사업을 추진하며, 가게에서는 고객 유입과 같은 효과를 기대하며 제휴를 맺고 있습니다. 그러나 제휴사업의 홍보가 단톡방, 인스타그램에서 주로 이루어져, 학생들에게 원활히 전달되지 못하고 있습니다. 이러한 이유로 학생들은 어떤 제휴 업체가 있고 어떤 종류의 제휴를 받을 수 있는지 쉽게 인지하지 못하는 경우가 많습니다. 이 문제는 ‘학생’들만의 pain point가 아닌 여러 이해관계자들의 pain point입니다.
- 학생 : 제휴 혜택 인지 어려움(받을 수 있는 혜택을 받지 못함), 정보 획득의 어려움(인지했더라도 정보를 획득하는 것이 어려움
- 학생회 : 제휴 사업 유지보수의 어려움(임기로 인해 유사 서비스를 제공할 수 없음, 때문에 현재 인스타와 카톡만을 활용 중) 제휴 사업 비활성화
- 가게 : 고객 유입 효과 및 홍보효과 미미
이러한 문제를 해결하기 위해 본 서비스 '제대로'를 기획하고자 합니다.
학생(유저)에게 제휴업체를 한눈에, 빠르게 알 수 있도록 하고, 동시에 제휴사업을 진행하고 주관하는 학생회에게는 '제대로'를 통해 학생들이 제휴사업을 잘 이용하고 있는지, 잘 이용하지 못한다면 어떤 부분에서 문제점이 있는 지 등을 확인할 수 있도록 하고자 합니다.
분야 | 이름 | 포지션 |
---|---|---|
기획 | 김대헌 | 🔑 프로젝트 매니징, 서비스 기획 - 서비스 정책 확립, 유저 리서치, 기능 구체화 |
기획 | 도원희 | 📈서비스 기획 - 서비스 정책 확립, 유저 리서치, 기능 구체화 |
기획 | 주은혜 | 🗒️ 서비스 기획 - 서비스 정책 확립, 유저 리서치, 기능 구체화 |
디자인 | 김지은 | 🗂️ 서비스 디자인 |
개발 | 김수진 | 🔦 화면 UI 구현, 서버 연동 |
개발 | 임수원 | 🔦개발 및 프론트엔드 리드, 화면 UI 구현, 서버 연동 |
개발 | 김도형 | 💻 DB 및 API 구축, 서버 배포 |
개발 | 김희엽 | 💻 DB 및 API 구축, 서버 배포 |
본 서비스는 대학생, 학생회, 가게 사장님을 위한 제휴사업 정보 제공 서비스로, 각 이해관계자의 요구를 모두 충족할 수 있습니다.
🔷 대학생: 기존 SNS를 통해 일일이 정보를 찾아야 했던 불편함을 해소하고, 직관적이고 간편하게 제휴사업의 정보를 찾을 수 있도록 합니다.
🔷 학생회: 기존의 SNS 홍보 방식에서 벗어나, 학생들이 서비스를 통해 편리하고 직관적으로 제휴사업 정보를 확인 및 이용할 수 있도록 함으로써 사업 효과를 극대화합니다. 뿐만 아니라 사업 효과를 데이터로 확인하여 효율적으로 사업을 운영할 수 있도록 합니다.
🔷 가게 사장님: 제휴사업을 통해 가게 매출을 증대하고 수익을 극대화할 수 있습니다.
통계청 ‘2022 대학생 생활실태 조사’ 및 ‘2023 7월 대학생 제휴업체 이용 경험 조사’ 따르면, “제휴 혜택을 확인하고 이용하기 위한 절차가 복잡하다”는 의견이 각각의 조사에서 가장 많은 비중을 차지하는 것을 확인할 수 있습니다. 이는 제휴 사업 전반적인 부분에 문제가 있음을 시사하는 것으로, 이를 개선하기 위한 노력이 분명 필요하다는 것을 보여줍니다.
TAM | SAM | SOM |
---|---|---|
000만 명 | 000만 명 | 00만 명 |
앱 다운로드 건 수 00만 건(수익시장의 00%) 확보를 시작으로, 점차 시장을 넓혀갈 예정입니다.
00의 목표 타겟은 … 입니다.
분류 | 1차 타겟 유저 | 2차 타겟 유저 |
---|---|---|
타겟 설정 | ||
관련 기능 |
대학생, 학생회, 가게 사장님을 위한 제휴사업 정보 제공 서비스로, 각 이해관계자의 요구를 모두 충족할 수 있습니다.
관련 파트너 1 | 관련 파트너 2 | 내용 | |
---|---|---|---|
STEP 1 | |||
STEP 2 |
- Web / App
- WEB
- Next.js
- Typescript
- React Emotion
- Recoil
- MUI
- APP
- React native expo
- styled-components
- Jotai
- React native paper
- WEB
-
Server
- Server Application
- Spring Boot
- Spring Security
- Spring Data JPA
- DataBase
- MySQL
- CI/CD
- Docker
- Docker
- Server Application
-
Co-working-tool
- 개발진행상황 동기화
- Trello
- 의사소통 / 회의
- Slack, Discord
- 형상관리
- Github
- 개발진행상황 동기화
개발요소는 다음과 같습니다. 웹 그리고 크로스플랫폼 어플리케이션입니다. 대부분의 요소를 웹에 올리되, 갈 가게를 정하고 가게까지 이동하기의 여정은 어플로 진행합니다. 어플에 들어가는 기능은 최소화합니다.
next.js 선정이유 먼저 검색최적화가 손쉽습니다. html 틀을 받아서 먼저 렌더링 시킨 후 후에 안에 들어갈 내용이나 js코드를 주입하는 리액트와 달리 next.js는 서버에서 애초에 내용을 포함하여 빌드된 코드를 받습니다. 때문에 검색포털에서 봇이 검색엔진을 인덱싱할때 우리 사이트의 내용이 포함되어 검색 결과가 더 잘 노출됩니다. ( 하지만 구글의 검색 엔진은 리액트에도 최적화되어있다고 알려져 있습니다 )
선택할 수 있는 렌더링 방식이 다양합니다. 클라이언트 사이드 렌더링, 서버사이드 렌더링, 정적 사이트 생성 등 페이지에 필요한 렌더링 방식을 선택하여 개발할 수 있습니다. 예시로 어떤 카테고리를 선택한 이후부터 새로고침 깜빡이 현상이 없는 것을 원한다면 그곳부터는 CSR로 개발이 가능합니다.
더하여, 리액트의 모든 문법이 호환됩니다. 생명주기, 훅 등 모든 요소가 호환되어, 기존의 리액트에서 넘어오기 어렵지 않습니다.
api를 직접짤 수 있다는 장점이 있습니다. 이것을 직접 쓸지는 모르겠지만, 리액트에서 타 라이브러리를 불러와서 사용해야했던 것에 비하면 장점이라 칠 만합니다. 마지막으로 페이지 기반 라우팅또한 큰 장점 중 하나입니다. 기존에 라우터를 따로 작성해야했던 것과 달리 구조에 맞춰 파일을 생성하면 자동으로 라우팅된다는 장점이 있어 개발소요를 줄일 수 있고, 직관적인 라우팅이 가능합니다.
react-native expo 리액트 네이티브 엑스포는 크로스플랫폼 어플리케이션을 빌드할 수 있는 프레임워크입니다. 리액트 네이티브는 bare flow, 그리고 expo로 개발할 수 있는 방법이 크게 2가지로 나뉘는데, 저희는 빌드 시에 들어가는 복잡함을 최대한으로 줄이고, 개발까지의 소요가 가장 적은 expo를 선택했습니다.
리액트 네이티브는 리액트에서의 생명주기, 훅을 그대로 가져가며, 디자인 시에 필요한 stylesheet의 문법은 웹의 css와 비슷합니다.
크로스플랫폼 어플리케이션은 한번 개발하여 2가지 플랫폼(ios, aos)에 한번에 대응이 가능합니다. 물론 최근에 해당 플랫폼에서 추가된 기능이나 컴포넌트가 있다면 그것에 바로 대응하지는 못할 수는 있습니다. 하지만 그런 경우는 빈번하지 않습니다.
Spring Boot
설정이 간편합니다. 기본 설정을 제공하여 개발자가 복잡한 설정 작업 없이 필요한 부분만 설정하여 애플리케이션을 개발할 수 있습니다. 자동 구성 기능을 통해 프로젝트의 종속성을 기반으로 설정을 자동으로 조정합니다. 스프링 부트에서 지원하는 라이브러리와의 버전이 설정되어있어 라이브러리 버전을 맞추기 위한 시간을 사용하지 않아도 됩니다.
내장형 데이터베이스를 지원합니다. H2, HSQLDB를 사용하여 개발 및 테스트 단계에서 데이터베이스를 사용할 수 있습니다. 데이터베이스를 확인할 수 있는 콘솔을 제공합니다. 또한 메모리 형식으로 데이터베이스를 사용하여 빠르게 테스트를 진행해볼 수 있습니다.
풍부한 커뮤니티가 구축되어 있습니다. 구글 트렌드 검색 결과 Spring Boot, Node js, Django 세 프레임워크 명에 대한 검색 결과가 51퍼센트를 차지할 만큼 한국내 인기있는 프레임워크이며 그에 따른 다양한 지식들을 쉽게 접할 수 있습니다. 또한 많은 문서 및 튜토리얼이 제공되어 학습에 용이합니다.
서비스를 분리하고 확장하기 용이합니다. 서비스의 사이즈가 작아 현재는 모놀리식으로 구성하지만 이후 트래픽의 증가와 서비스 추가로 인한 프로그램의 복잡도가 높아졌을 때 마이크로서비스로의 전환을 고려할 수 있으며, 스프링 클라우드(Spring Cloud)와 통합하여 분산 시스템을 구축할 수 있습니다.
Spring Security
Spring Boot과 손쉽게 통합할 수 있습니다.
인증, 권한 부여, 세션 관리, CSRF(크로스 사이트 요청 위조) 및 보안 헤더 관리와 같은 다양한 보안 기능을 제공합니다.
다양한 인증 및 인가 방식을 지원합니다. 폼 기반 인증, HTTP 기본 인증, OAuth, JWT(토큰 기반 인증) 등을 사용할 수 있습니다.
다양한 사용자 정의 가능한 확장 포인트를 제공하므로 프로젝트의 고유한 보안 요구 사항을 충족시킬 수 있습니다. 다양한 인터페이스를 구현하여 사용하여 목적에 맞게 변경하여 사용할 수 있으며 다양한 필터에 필요한 작업들을 추가하여 인증, 인가에 필요한 작업을 수행할 수 있습니다.
Spring Data JPA
복잡한 JDBC 코드를 작성하지 않고도 데이터베이스에 쉽게 접근할 수 있도록 도와줍니다. 개발자는 JPA 엔티티 클래스를 정의하고 간단한 인터페이스를 작성하여 코드 추가 없이 CRUD(Create, Read, Update, Delete) 작업을 수행할 수 있습니다. 메소드 이름을 기반으로 쿼리를 자동으로 생성하는 기능을 제공합니다. 이를 통해 생산성을 향상할 수 있습니다.
JPA를 사용하면 데이터베이스 테이블과 Java 객체 간의 매핑을 쉽게 수행할 수 있습니다. 이를 통해 객체지향적인 코드를 작성하면서 데이터베이스와의 일관성을 유지할 수 있습니다.
다양한 데이터 소스 (예: MySQL, PostgreSQL, Oracle, MongoDB)와 함께 사용할 수 있으며, 데이터베이스 변경 시에도 코드를 수정하지 않고 데이터 소스를 교체할 수 있습니다.
페이징 및 정렬을 처리하기 위한 내장 메소드와 애노테이션을 제공합니다. 이를 사용하여 대용량 데이터셋을 효과적으로 관리할 수 있습니다.
MySQL
MySQL은 오픈 소스 라이선스를 사용하며, 무료로 사용할 수 있습니다.
국내 MySQL, PostgreSQL, MariaDB 세 관계형데이터베이스에 대한 검색 중 65%가 MySQL일 정도로 국내의 많은 사용자를 보유하고 있습니다. 따라서 MySQL에 대한 풍부한 해석된 문서와 활발한 개발자 커뮤니티가 존재하며, 문제 해결과 지원을 얻기 쉽습니다.
카멜케이스
[프론트엔드]
type(scope) : (subject)
분류(작업영향범위) : 설명
[백엔드]
(type) : (subject)
: 커밋 내 추가, 수정 내용 요약한 텍스트
[프론트엔드]
commit 명 | commit 뜻 |
---|---|
feat | 새로운 기능 추가 |
fix | 버그 수정 |
chore | 기타 변경사항 |
refactor | 코드 리팩토링 |
style | 스타일 |
test | 테스트 추가/수정 |
[백엔드]
commit 명 | commit 뜻 |
---|---|
feat | 새로운 기능 추가 |
fix | 버그 수정 |
chore | 의존성 추가, 설정 추가와 수정, 패키지 구조 변경, 파일 이동 |
refactor | 코드 리팩토링 |
style | 로직을 포함하지 않은 단순 코드, 파일 명 변경 |
test | 테스트 추가/수정 |
docs | README나 wiki 등의 문서 작성 및 수정 |
[프론트엔드, 백엔드]
- main : develop 에서 테스트를 마친 후 운영 서버에 배포되는 브랜치
- develop : 기능 구현 후 개발 서버에 배포되는 브랜치
- feature : 각각의 기능을 개발 및 수정하는 브랜치
- hotfix : 오류 등 main에 병합된 이후 수정이 필요한 경우 사용하는 브랜치