소셜미디어 앱 'PeaNutter' 마이그레이션 계획

PeaNutter
PeaNutter는 좋아하는 만화 Peanuts를 테마로 한 소셜미디어로, 노마드코더 트위터 클론코딩 컨테스트에 참여하여 만들었던 프로젝트이다.
(컨테스트와 관련된 이야기는 👉🏻여기에서 확인 가능하다)
Peanuts는 땅콩을 가리키는 단어로, '별 볼 일 없는 것들'이라는 의미로도 쓰인다. 이 의미에서 착안하여 누구나 자신의 소소한 일상의 이야기나 생각, 감정 등을 가볍게 나누는 공간을 상징하고자 PeaNutter라는 이름을 붙였다.
PeaNutter에서 사람들은 자신의 생각이나 일상의 순간들을 'nut'으로 게시하고, 서로간의 'nut'을 공유하여 의견을 나눌 수 있으며, 친구들과 관심 있는 사람들의 'nuts'를 타임라인에서 간편하게 확인하고 소통할 수 있다.
마이그레이션을 하는 이유
당시에는 2주동안 매주 제공되는 미션을 진행하며 기획안부터 필수 기능 3가지까지 구현해야 했었다. 게다가 개인적으로 적용하고 싶었던 부가적인 기능까지 욕심내다보니 (컨테스트 결과가 좋았던 것과는 별개로) 원하는만큼 완성하지는 못했었다.
그렇게 PeaNutter는 내 마음속의 리팩토링 혹은 마이그레이션 작업대상 1순위로 자리매김하게 되었다.
기술 스택
Vite, TypeScript, Firebase와 같은 기존 기술 스택을 유지하되, Recoil로 상태를 관리하고, 스타일 언어의 학습을 위해 styled-components 대신 SCSS를 사용할 계획이다.
Recoil
페이스북에서 개발한 상태 관리 라이브러리로, 컴포넌트 간의 상태 공유와 업데이트가 용이한 것이 장점이다.
Recoil은 상태 관리를 간편화하기 위해 전역 상태를 간단하게 관리할 수 있는 API를 제공하며, 유연한 아키텍처를 통해 코드의 복잡성을 줄여준다. 또, 비동기 상태 관리도 지원하기 때문에 비동기 데이터 흐름을 처리하는 데 도움이 된다.
SASS (SCSS)
Syntactically Awesome Style Sheets
![]()
CSS 전처리기 언어로 CSS의 단점을 보완하고 개발과 유지보수를 더욱 용이하게 만든다. 중첩된 구조를 통해 가독성을 높이고, 모듈화를 통해 재사용성을 높이며, 변수와 믹스인을 활용하여 생산성을 향상시킬 수 있다.
추가로 구현할 기능
- 좋아요
- 팔로잉 / 팔로우
- 해시태그 생성 / 수정 기능
- 해시태그로 필터링 검색
- 다국어 처리

