[개발일지 #08 | 백엔드] 연락처 HMAC 해시 친구 매칭 & 중복 없는 1:1 / 그룹 채팅방 API 구현

카카오톡 스타일의 가족/친구용 프라이빗 크로스플랫폼 메신저 ‘딩동(DingDong)’ 만들기 프로젝트 8편입니다. 지난 [7편]에서는 Flutter 앱에서 로그인 및 회원가입을 수행하고 토큰을 자동으로 갱신하는 클라이언트 인증 흐름을 연결했습니다.이번 8편에서는 다시 Go 백엔드로 돌아와, 로그인한 이후 앱 화면을 채우는 데 필요한 연락처 기반 친구 동기화 API 와 1:1 및 그룹 채팅방 생성·목록 조회 API 를 구현합니다. 1. 핵심 설계 … 더 읽기

[개발일지 #06 | 백엔드] 초대코드 회원가입, Argon2id 암호화 & 다중 기기 JWT 인증 구현하기

안녕하세요! 카카오톡 스타일의 가족/친구용 프라이빗 크로스플랫폼 메신저 ‘딩동(DingDong)’ 만들기 프로젝트 6편입니다. 지난 [5편]에서는 메신저의 심장인 PostgreSQL 16 스키마(11개 핵심 테이블)를 구축하고, sqlc와 pgxpool을 연동해 타입 안전한 DB 레이어를 완성했습니다.이번 6편에서는 그 데이터베이스 위에 프라이빗 초대코드 검증, 요즘 권장되는 Argon2id 비밀번호 해싱, 다중 기기(스마트폰/태블릿/PC) 동시 접속을 지원하는 JWT Access/Refresh 토큰 시스템, 그리고 Chi 인증 미들웨어를 처음부터 … 더 읽기

[개발일지 #05 | 백엔드] 메신저 DB 스키마 설계 & Go sqlc 연동하기

안녕하세요! 카카오톡 스타일의 가족/친구용 프라이빗 크로스플랫폼 메신저 ‘딩동(DingDong)’ 만들기 프로젝트 5편입니다. 지난 [4편] 에서는 유그린 NAS에서 돌아가는 Go 백엔드 API 서버(chi 라우터, Graceful Shutdown, 멀티스테이지 Dockerfile)를 세팅했습니다.이번 5편에서는 메신저 백엔드의 핵심인 데이터베이스 스키마(테이블 구조) 를 설계하고, SQL을 Go 코드로 바꿔 주는 도구 sqlc 를 연동하는 과정을 다룹니다. 1. 메신저 데이터베이스 설계 시 고려해야 할 4가지 … 더 읽기

[개발일지 #04 | 백엔드] 가벼운 Go(Golang) API 서버 구축 & Docker 배포

카카오톡 같은 크로스플랫폼 메신저 ‘딩동(DingDong)’ 만들기 프로젝트 4탄!이번 글에서는 우리 집 유그린 NAS의 자원을 아껴 쓰기 위해, 가볍게 돌아가는 Go(Golang) 백엔드 서버의 뼈대를 만들고 NAS의 Docker 환경에 컨테이너로 올려 봅니다. 3편에서 준비한 Caddy를 통해 실제 도메인(HTTPS)으로 접속하는 것까지 확인합니다. 1. 왜 Node.js나 Python 대신 ‘Go(Golang)’를 선택했을까요? 개인용 NAS나 홈서버에서 24시간 백엔드 서버를 띄울 때 가장 … 더 읽기