| 구분 | 내용 |
|---|---|
| 프로젝트명 | SideFit |
| 프로젝트 기간 | 2026.07 ~ 진행 중 |
| 프로젝트 형태 | AI 추천 기반 사이드 프로젝트 매칭 웹 서비스 |
| 주요 사용자 | 개발자, 기획자, 디자이너, 사이드 프로젝트 리더 |
| 핵심 가치 | 탐색 비용 감소, 모집 정보 구조화, 적합도 기반 연결, 추천 근거의 투명성 |
| 핵심 목표 | 프로젝트 탐색부터 지원과 팀 구성까지의 과정을 하나의 서비스에서 관리할 수 있는 환경 구축 |
개발자, 기획자와 디자이너는 새로운 기술을 실제 서비스에 적용하거나 협업 경험과 포트폴리오를 만들기 위해 사이드 프로젝트에 참여합니다.
하지만 현재 사이드 프로젝트 모집 정보는 개발 커뮤니티, 오픈 채팅방, SNS와 게시판 등에 분산되어 있으며 대부분 자유로운 형식으로 작성됩니다.
참여 희망자는 프로젝트의 주제, 기술 스택, 모집 역할, 예상 기간과 진행 방식을 확인하기 위해 여러 게시글을 반복해서 살펴봐야 합니다. 동일하거나 유사한 분야라도 서로 다른 표현을 사용하면 단순 키워드 검색에서 누락될 수 있습니다.
모집자 역시 지원자의 기술 경험, 관심 분야, 희망 역할과 참여 조건을 개별적으로 확인해야 합니다. 충분한 정보가 공유되지 않은 상태에서 팀이 구성되면 기대한 역할과 실제 업무가 다르거나 프로젝트의 목표가 맞지 않아 중도 이탈로 이어질 수 있습니다.
SideFit은 사용자 프로필과 모집 정보를 구조화하고, 조건 일치도와 설명의 의미적 유사성을 함께 분석하여 프로젝트와 참여자 사이의 탐색 및 조율 비용을 줄이고자 합니다.
사이드 프로젝트 모집 글이 여러 커뮤니티와 채널에 흩어져 있어 사용자가 자신에게 적합한 프로젝트를 발견하기 어렵습니다.
SideFit은 프로젝트 모집과 탐색, 지원 및 팀 구성 과정을 하나의 웹 서비스에서 관리할 수 있도록 구성합니다.
모집 글마다 작성 형식과 표현이 달라 프로젝트의 기술 스택, 역할, 기간과 진행 조건을 한눈에 비교하기 어렵습니다.
SideFit은 토픽, 기술 스택, 모집 역할, 역할별 인원, 진행 방식과 모집 상태를 구조화된 데이터로 관리합니다.
참여 희망자는 자신의 관심 분야와 기술 역량에 맞는 프로젝트를 찾기 위해 다수의 모집 글을 직접 확인해야 합니다.
SideFit은 사용자 프로필과 모집 글의 적합도를 계산하여 관련성이 높은 프로젝트를 우선적으로 제공합니다.
프로젝트에 참여한 뒤 희망 역할, 기술 수준이나 진행 방식이 예상과 다르다는 사실을 확인하면 팀 구성 이후 이탈이 발생할 수 있습니다.
SideFit은 지원 전에 프로젝트 조건과 사용자 정보를 명확하게 확인할 수 있도록 하여 역할과 참여 조건의 불일치를 줄입니다.
추천 점수만 제공하면 사용자는 어떤 이유로 프로젝트가 추천되었는지 판단하기 어렵습니다.
SideFit은 일치한 관심 토픽, 기술 스택, 희망 역할과 진행 조건을 추천 근거로 함께 제공합니다.
flowchart LR
User[사용자] --> Profile[프로필 등록]
Leader[프로젝트 리더] --> Project[모집 글 등록]
Profile --> Platform[SideFit 플랫폼]
Project --> Platform
Platform --> Search[검색 및 조건 필터링]
Platform --> Recommend[적합도 기반 추천]
Platform --> Application[프로젝트 지원 관리]
Search --> Detail[프로젝트 상세 확인]
Recommend --> Detail
Detail --> Apply[프로젝트 지원]
Apply --> Application
Application --> Review[지원자 검토]
Review --> Decision{승인 또는 거절}
Decision -->|승인| Team[팀원 확정]
Decision -->|거절| History[지원 결과 기록]
Team --> User
History --> User
사용자는 관심 토픽, 기술 스택과 희망 역할을 프로필에 등록하고 검색 또는 추천을 통해 프로젝트를 탐색합니다.
프로젝트 리더는 모집 조건을 구조화하여 등록하고, 프로젝트에 지원한 사용자를 확인한 뒤 승인 또는 거절할 수 있습니다.
사용자의 관심 토픽, 보유 및 학습 중인 기술 스택, 희망 역할과 선호하는 프로젝트 진행 방식을 관리합니다.
자기소개와 포트폴리오를 함께 등록하여 프로젝트 리더가 지원자의 경험과 참여 목적을 확인할 수 있도록 합니다.
프로젝트 주제와 소개뿐 아니라 토픽, 사용 기술, 모집 역할, 역할별 인원, 진행 기간, 진행 방식과 모집 마감일을 구조화하여 관리합니다.
프로젝트 상태를 모집 중, 모집 완료, 진행 중과 완료 등의 단계로 구분하여 현재 상태를 명확하게 제공합니다.
키워드뿐 아니라 토픽, 기술 스택, 역할, 진행 방식과 모집 상태를 조합하여 프로젝트를 검색할 수 있도록 합니다.
목록 조회에는 페이지네이션을 적용하고 프로젝트별 핵심 조건을 비교할 수 있도록 제공합니다.
사용자는 프로젝트에 지원하거나 지원을 취소할 수 있으며, 프로젝트 리더는 지원자를 승인하거나 거절할 수 있습니다.
중복 지원과 마감된 프로젝트에 대한 지원을 방지하고, 승인된 지원자는 프로젝트 팀원으로 관리합니다.
사용자의 관심 토픽, 기술 스택, 희망 역할과 진행 조건을 프로젝트 정보와 비교하여 적합도를 계산합니다.
구조화된 조건의 일치도와 프로젝트 설명의 의미적 유사도를 결합하고, 추천 결과와 함께 구체적인 추천 이유를 제공합니다.
SideFit은 서비스 구현과 설계 산출물의 책임을 분리하기 위해 여러 저장소로 운영됩니다.
| 저장소 | 담당 영역 | 설명 |
|---|---|---|
| sidefit12-backend | Backend Platform | 인증, 사용자, 프로필, 프로젝트 모집, 지원, 팀 구성과 추천 API를 관리합니다. |
| sidefit12-data-modeling | Data Modeling | 서비스의 개념·논리·물리 데이터 모델과 PostgreSQL DDL, 데이터 사전 및 검증 문서를 관리합니다. |
| .github | Organization Profile | SideFit 조직 소개와 공통 GitHub 협업 설정을 관리합니다. |
Vue 기반 웹 클라이언트는 UI/UX 설계와 핵심 백엔드 API가 확정된 이후 별도의 저장소로 분리할 예정입니다.
각 저장소의 구체적인 구현 기능, 내부 구조와 실행 방법은 해당 저장소의 README에서 확인할 수 있습니다.
flowchart TB
Client[Vue Web Client<br/>프로젝트 탐색·지원·관리]
API[FastAPI Application<br/>REST API·인증·권한 검증]
Auth[회원·인증]
Profile[프로필·온보딩]
Project[프로젝트 모집]
Application[지원·팀 구성]
Bookmark[관심 목록]
Recommendation[추천 모듈]
Database[(PostgreSQL)]
Vector[(pgvector)]
Embedding[Sentence Transformers]
Client -->|HTTPS REST API| API
API --> Auth
API --> Profile
API --> Project
API --> Application
API --> Bookmark
API --> Recommendation
Auth --> Database
Profile --> Database
Project --> Database
Application --> Database
Bookmark --> Database
Recommendation --> Database
Recommendation --> Vector
Recommendation --> Embedding
초기 서비스는 운영 복잡도를 줄이기 위해 하나의 FastAPI 애플리케이션과 PostgreSQL을 사용하는 모듈형 모놀리스 구조로 개발합니다.
각 도메인은 router-service-repository 계층으로 책임을 분리하고 공통 설정, 데이터베이스 세션, 인증과 예외 처리는 core 영역에서 관리합니다.
| 기능 영역 | 주요 기능 |
|---|---|
| 회원 및 인증 | 이메일 회원가입·로그인, 이메일 인증, JWT 인증, 로그아웃, 회원 탈퇴 |
| 프로필 관리 | 관심 토픽, 보유·학습 기술, 희망 역할, 자기소개, 포트폴리오와 선호 조건 등록 |
| 모집 글 관리 | 모집 글 작성·조회·수정·삭제, 역할별 모집 인원, 마감일과 프로젝트 상태 관리 |
| 검색 및 필터 | 키워드 검색, 토픽·기술·역할·진행 방식·모집 상태 조합 필터, 페이지네이션 |
| 프로젝트 지원 | 지원·취소, 모집자의 승인·거절, 중복 지원 방지와 지원 상태 관리 |
| 팀원 관리 | 승인된 지원자의 팀원 확정, 합류·탈퇴·퇴출과 관련 이력 관리 |
| AI 추천 | 사용자 맞춤 프로젝트 추천, 유사 프로젝트 추천, 추천 점수와 추천 이유 제공 |
| 관심 목록 | 관심 프로젝트 저장·해제와 저장 목록 조회 |
| 마이페이지 | 작성한 모집 글, 지원한 프로젝트, 받은 지원과 상태별 활동 이력 조회 |
| 운영 관리 | 사용자·프로젝트 신고, 신고 처리, 제재와 기준 데이터 관리 |
flowchart TD
UserProfile[사용자 프로필<br/>관심 토픽·기술 스택·희망 역할]
Projects[모집 중인 프로젝트]
UserProfile --> Candidate[추천 후보 생성]
Projects --> Candidate
Candidate --> Filter[작성·지원한 프로젝트 제외]
Filter --> Rule[구조화 조건 점수 계산]
Filter --> Semantic[설명 의미 유사도 계산]
Rule --> Normalize[점수 정규화]
Semantic --> Normalize
Normalize --> Hybrid[하이브리드 추천 점수]
Hybrid --> Reason[추천 이유 생성]
Reason --> Result[추천 결과 반환]
희망 역할, 관심 토픽, 보유 기술과 선호 진행 방식의 일치도를 기준으로 점수를 계산합니다.
계산 규칙이 명확하여 데이터가 적은 초기 서비스에서도 추천 결과를 재현할 수 있고, 일치한 항목을 추천 이유로 제공할 수 있습니다.
사용자의 관심 정보와 프로젝트 제목, 소개 및 토픽을 문장 임베딩으로 변환하고 코사인 유사도를 계산합니다.
이를 통해 표현은 다르지만 의미가 유사한 프로젝트도 추천 후보에 포함할 수 있습니다.
구조화된 조건 점수와 의미적 유사도 점수를 정규화하여 하나의 추천 점수로 결합합니다.
추천 기능은 사용자의 참여 여부를 대신 결정하지 않고, 사용자가 먼저 확인할 프로젝트 후보를 좁혀 주는 탐색 보조 기능으로 사용합니다.
최종 점수와 함께 다음과 같은 추천 근거를 제공합니다.
- 희망 역할과 모집 역할의 일치
- 관심 토픽과 프로젝트 토픽의 일치
- 보유 또는 학습 기술과 사용 기술의 일치
- 선호하는 진행 방식과 프로젝트 진행 방식의 일치
- 사용자 관심 정보와 프로젝트 설명의 의미적 유사성
SideFit은 프로젝트 탐색부터 팀 구성과 활동 이력까지의 상태를 안정적으로 관리하기 위해 데이터 모델을 구현에 앞서 설계합니다.
| 구분 | 설계 범위 |
|---|---|
| 개념 모델 | 24개 비즈니스 엔티티 |
| 논리 모델 | 26개 엔티티와 속성, 식별자 및 관계 |
| 물리 모델 | PostgreSQL 기준 26개 테이블과 PK·UK·FK·CHECK·인덱스 |
| 외래키 관계 | 45개 |
| 관리 산출물 | ERD, PostgreSQL DDL, 데이터 사전, 변경 이력과 무결성 검증 보고서 |
- 사용자와 프로젝트의 토픽, 기술 스택과 역할은 기준 테이블 및 연결 테이블로 관리합니다.
- 동일한 사용자가 하나의 프로젝트에 중복 지원하지 못하도록 유일성 제약조건을 적용합니다.
- 지원 상태는
PENDING,ACCEPTED,REJECTED,CANCELED로 관리합니다. - 마감되거나 모집이 완료된 프로젝트에는 새로운 지원을 허용하지 않습니다.
- 프로젝트와 사용자 데이터에는 필요한 소프트 삭제 및 개인정보 익명화 정책을 적용합니다.
- 팀원 합류, 탈퇴와 퇴출처럼 이력 보존이 필요한 변경은 이벤트 이력으로 관리합니다.
| 구분 | 기술 |
|---|---|
| Frontend | Vue 3, TypeScript, Vite, Vue Router, Pinia, Axios, Tailwind CSS |
| Backend | Python 3, FastAPI, Uvicorn, SQLAlchemy 2, Alembic, Pydantic 2 |
| Database | PostgreSQL, pgvector |
| Authentication | JWT Access Token·Refresh Token, 비밀번호 단방향 해시 |
| Recommendation | 규칙 기반 스코어링, Sentence Transformers, 문장 임베딩, 코사인 유사도 |
| Test & Quality | pytest, HTTPX TestClient, Ruff, API 통합 테스트 |
| Infrastructure | Docker, Docker Compose, GitHub Actions |
| Documentation | OpenAPI/Swagger, Figma, ERD, README |
| Collaboration | GitHub Issues, GitHub Flow, Pull Request, Conventional Commits |
pgvector, Redis, Sentence Transformers와 외부 AI API는 각 기능의 개발 단계와 실제 필요성에 따라 순차적으로 적용합니다.
개인 학습을 넘어 역할 분담, API 계약, 코드 리뷰와 일정 조율 등의 협업 경험을 만들고 싶은 사용자입니다.
학습한 기술을 실제 서비스에 적용하고 다른 직군과 함께 프로젝트를 완성하려는 사용자입니다.
자신의 서비스 아이디어와 디자인을 실제 웹 서비스로 구현할 개발자를 찾는 사용자입니다.
프로젝트에 필요한 역할과 기술 역량을 갖춘 지원자를 체계적으로 모집하고 관리하려는 사용자입니다.
관심 분야와 희망 역할은 명확하지만 여러 모집 채널에서 자신에게 맞는 프로젝트를 찾는 데 어려움을 겪는 사용자입니다.
자유 형식의 게시글만 제공하지 않고 토픽, 기술 스택, 역할, 모집 인원과 진행 조건을 구조화하여 프로젝트 간 비교가 가능하도록 합니다.
검색어를 직접 입력하는 방식에 더해 사용자의 관심 토픽, 기술과 희망 역할을 기준으로 개인화된 프로젝트를 제공합니다.
명시적인 조건 일치도와 프로젝트 설명의 의미적 유사도를 함께 활용하여 단순 키워드 검색의 한계를 보완합니다.
추천 점수만 제공하지 않고 일치한 토픽, 기술 스택, 역할과 진행 조건을 구체적인 추천 이유로 제공합니다.
프로젝트 검색뿐 아니라 지원, 승인·거절, 모집 마감과 팀원 확정까지의 상태를 하나의 서비스 안에서 관리합니다.
백엔드 구현에 앞서 개념·논리·물리 데이터 모델을 설계하고 유일성 제약조건, 상태 전이와 참조 무결성을 검증합니다.
백현빈 Project Lead · Backend AI Recommendation · Infrastructure |
| 이름 | 담당 역할 |
|---|---|
| 백현빈 | 서비스 기획 및 PM, 데이터 모델링, FastAPI 백엔드 아키텍처, 인증·프로필·프로젝트·지원 도메인, 추천 시스템, 테스트 자동화와 배포 환경 구성 |
사용자 흐름과 기능 명세를 먼저 정의하고, 이를 기준으로 API와 데이터 모델을 설계합니다.
API 경로나 데이터 형식이 변경되는 경우 구현보다 명세를 먼저 수정하여 문서와 코드의 불일치를 줄입니다.
모든 작업은 GitHub Issue로 정의하고 작업 목적, 구현 범위, 완료 조건과 관련 문서를 기록합니다.
기능별 브랜치에서 작업한 뒤 Pull Request를 통해 main 브랜치에 병합합니다.
Pull Request에는 구현 내용, 테스트 결과와 API 또는 데이터베이스 변경 여부를 작성합니다.
ERD, PostgreSQL DDL, 데이터 사전과 모델 변경 이력을 동일한 저장소에서 관리합니다.
데이터 모델 변경 시 참조 무결성, 제약조건과 기존 데이터에 미치는 영향을 함께 검토합니다.
GitHub Actions에서 코드 검사, 단위·통합 테스트와 Docker 이미지 빌드 여부를 확인합니다.
회원가입부터 프로젝트 작성, 지원, 승인과 추천 조회까지의 핵심 흐름을 통합 테스트로 검증합니다.
비밀번호와 토큰 등 민감한 정보는 로그와 API 응답에 포함하지 않습니다.
프로젝트 수정·삭제, 지원자 조회와 승인·거절에는 사용자 인증뿐 아니라 객체 소유권과 역할을 함께 검증합니다.
| 단계 | 기간 | 주요 목표 |
|---|---|---|
| 기획 | 1주차 | 서비스 문제 정의, 목표 확정, 유사 서비스 조사와 MVP 범위 결정 |
| 기능·데이터 설계 | 2주차 | 기능 명세, 사용자 흐름, 상태 정의, ERD와 기준 데이터 설계 |
| 와이어프레임 | 3주차 | 정보 구조 설계, 핵심 화면 와이어프레임과 사용자 흐름 검증 |
| UI 프로토타입 | 4주차 | 디자인 시스템 정의, 주요 화면 UI와 클릭 가능한 프로토타입 완성 |
| API 설계·기반 구현 | 5주차 | API 명세, FastAPI 프로젝트 구조, 인증과 PostgreSQL·Alembic 설정 |
| 핵심 기능 구현 | 6주차 | 프로필, 모집 글, 검색, 관심 목록과 웹 화면 API 연동 |
| 지원·추천 구현 | 7주차 | 지원 상태 관리, 규칙 기반 추천, 추천 이유와 임베딩 추천 실험 |
| 통합·배포 | 8주차 | 통합 테스트, 오류 수정, CI/CD, 운영 배포와 문서 정리 |
프로젝트의 세부 구현 및 설계 내용은 각 저장소에서 확인할 수 있습니다.
- 백엔드 API와 서비스 아키텍처: sidefit12-backend
- 데이터 모델과 PostgreSQL DDL: sidefit12-data-modeling
- 조직 소개 및 공통 설정: .github
