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

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

[개발일지 #07 | 클라이언트] Flutter 앱 첫 연동: Secure Storage 토큰 관리, Dio 자동 갱신 & 로그인 화면 구현

카카오톡 스타일의 가족/친구용 프라이빗 크로스플랫폼 메신저 ‘딩동(DingDong)’ 만들기 프로젝트 7편입니다. 지난 [6편]에서는 Go 백엔드에 초대코드 기반 회원가입, Argon2id 비밀번호 해싱, 다중 기기용 JWT Access/Refresh 토큰 발급 API를 구현했습니다.백엔드 진도를 더 나가기 전에, 이번 7편에서는 [2편]에서 준비해 둔 Flutter 개발 환경을 열어 로그인/회원가입 화면과 토큰 자동 갱신 네트워크 계층을 구현하고 실제 서버와 통신하는 전체 흐름을 연결합니다. … 더 읽기

[개발일지 #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시간 백엔드 서버를 띄울 때 가장 … 더 읽기

[개발일지 #03 | 인프라] 유그린 NAS에 Caddy & PostgreSQL 구축하기

카카오톡 같은 크로스플랫폼 메신저 ‘딩동(DingDong)’ 만들기 프로젝트 3탄!이번 글에서는 우리 집 메인 서버인 유그린(Ugreen) NAS(UGOS Pro)의 Docker 환경 위에, 스마트폰 보안 통신(HTTPS)과 도메인 라우팅의 대문 역할을 맡을 Caddy 웹서버와 메신저의 핵심 데이터베이스인 PostgreSQL 16을 각각 독립된 컨테이너로 분리해서 세팅합니다. 1. 왜 Caddy와 PostgreSQL을 분리해서 설치할까요? 처음 Docker를 세팅할 때는 하나의 docker-compose.yml에 웹서버와 DB를 함께 묶기도 … 더 읽기

[개발일지 #02 | 인프라] Mac에서 Flutter & VS Code 개발 환경 구축하기 (초보자 완벽 가이드)

카카오톡 같은 크로스플랫폼 메신저 ‘딩동(DingDong)’ 만들기 프로젝트 2탄!이번 글에서는 macOS(Apple Silicon M1/M2/M3/M4 및 Intel) 환경에서 Flutter SDK를 설치하고, Visual Studio Code(VS Code)를 실무 개발용으로 완벽하게 세팅하는 과정을 다룹니다. 초보자가 따라 하다가 막히는 단골 에러 포인트까지 모두 해결해 드립니다! 1. 사전 요구사항 및 확인 Flutter로 Android, iOS, macOS, Windows 앱을 개발하려면 기본 개발 도구들이 필요합니다. 본격적인 … 더 읽기

[개발일지 #01 | 기획] 유그린 NAS와 Flutter로 만드는 나만의 프라이빗 메신저 ‘딩동’ (기획 & 아키텍처 편)

카카오톡처럼 편리하지만, 모든 데이터는 내 집 NAS에 안전하게 보관되는 크로스플랫폼 메신저 만들기 프로젝트모바일(Android, iOS)부터 데스크톱(Windows, macOS)까지 코드 하나로 개발하고, 집에 있는 Ugreen NAS(Docker)를 백엔드 서버로 구축하는 전체적인 아키텍처와 로드맵을 공유합니다. 1. 프로젝트를 시작하게 된 계기 가족들과 친구들이 매일 사용하는 메신저 앱. 카카오톡이나 라인처럼 친숙하고 편리하지만, 아래와 같은 아쉬움이나 고민이 있었습니다: 그래서 집에서 24시간 가동 중인 … 더 읽기