본문 바로가기

Side Project

[외주] 버디망고 프로젝트 회고

프로젝트 기간

- 2024.11.5 ~ 2024.12.10 (5주)

실 개발 일수: 17일 (깃헙 로그 기준)

3L 회고

👍 Liked

  • cursor AI를 사용하여 개발 생산성을 높일 수 있어 좋았다.
  • Next, TailwindCss, Supabase, Vercel 조합으로 쉽고 빠르게 클라이언트, 어드민 페이지 개발할 수 있어서 좋았다.
  • Next를 사용하면서 서버사이드 렌더링, 클라이언트 사이드 렌더링의 장단점을 구별하여 적절하게 사용하고 서버가 어떤 역할을 하는지에 대해 더 깊게 알게될 수 있어서 좋았다.

📘 Learned

  • supabase 타입을 그대로 불러와서 프로젝트에서 사용할 수 있는 sync 명령어를 배워서 앞으로 유용하게 사용할 것 같다.
  • PostgreSQL 기반의 데이터베이스를 설계하고 해당 테이블에 접근할 수 있는 정책을 설정, SQL 쿼리문 등을 배웠다.
  • supabase email auth를 사용하면서 사용자에게는 이메일이 아닌 아이디를 받아 로그인 및 회원가입을 구현하는 방법을 배웠다.
    • profiles 테이블에 유저 정보를 저장했고 로그인 시 입력한 아이디를 profiles 테이블에서 유저의 이메일을 조회한 뒤 email auth 로그인을 구현했다.
    • profiles 테이블 정책을 설정할 때, 유저는 자기 자신의 테이블 데이터에만 접근이 가능하고 admin 유저는 모든 유저의 데이터에 접근 가능하도록 정책 설정하는 부분이 헷갈렸다.
    • 또한 아직 로그인 하지 못한 유저가 위 정책에서 자기 자신의 테이블만 조회하는 것은 불가능하기에 로그인 시 profiles 테이블 조회와 같은 특별한 경우의 API에서는 supabase secret key를 사용하여 정책을 무시하고 접근할 수 있다는 것을 배웠다.
  • PostgreSQL에서 컬럼에는 대문자 사용이 불가하다는 것을 배웠고 snake_case를 사용했다.
  • PostgreSQL에서 trigger, function 기능을 사용하여 auth에 유저가 추가 및 삭제 되었을 때, profiles 테이블, certificates 스토리지 폴더 제거 등 기능을 사용하는 것을 배웠다.
    • 이 부분은 처음 cursor를 통해 작성해봤기에 생성, 수정하는 작업이 아직은 어렵다.
  • supabase storage에 접근 시 next.config.ts 파일에 pattern을 추가해줘야한다는 것을 배웠다.
  • Resend API를 사용하여 사용자에게 비밀번호 찾기 링크를 보내는 방법을 배웠다.
    • Supabase 내부에서 Custom SMTP 설정이 가능했는데, 이를 사용하려면 Email이 유효한 지 체크하여 auth를 진행해야하는데, 이번 프로젝트에선 이것이 불가능하여 Resend API를 직접 코드에서 사용하였다.

😅 Lacked

  • 테스트 코드 작성을 하지 않아 나중에 코드를 수정할 때 기존 코드를 파악하는데 시간이 걸렸던 점이 아쉬웠다.
  • 중복된 코드를 컴포넌트로 추출해서 사용하고 싶었는데 그렇지 못하여 아쉬웠다.
  • profiles 테이블에 role 컬럼을 추가하여 유저인지 관리자인지 구분하는 방식을 사용한 부분이 아쉬웠다.
    • 이 경우 유저가 자신의 역할을 수정할 수 있는 가능성이 생기므로 해당 유저가 유저인지 관리자인지에 대한 정보는 profiles 테이블이 아닌 다른 테이블에서 가지고 있는 것이 올바른 것 같다.
    • 새로운 테이블에 유저의 역할을 저장하는 방법을 택하지 않고 방법을 찾다보니 어거지로 코드를 작성하는 느낌이 들었던 부분이 아쉬웠다.
  • 코드를 작성할 때, 주석을 많이 달지 않아서 아쉬웠다. 특히 cursor를 이용하여 작업할 때, 주석을 더 남기는 것을 습관화 해야겠다.

느낀점

cursor AI를 사용하면서 개발 생산성이 높아지는 것을 몸소 느낄 수 있었다.

cursor를 통해 flutter를 배워 앱 개발도 도전할 용기가 생겼다.

supabase와 postgreSQL을 사용하는게 익숙하지 않아서 database 설계와 테이블 정책 설계 작업에 시간이 오래 걸렸다.

다음번에 진행할 때는 좀 더 수월하게 진행할 수 있으면 좋겠다.