Project Diary/Next.js + Prisma + MariaDB (KiloFlow)(26)
-
그룹채팅 - Part1 채팅방 생성
새로운 그룹 채팅방을 만드는 방법에 대해 설명하겠습니다. 데이터베이스 스키마 chatrooms 테이블model chatrooms { id Int @id @default(autoincrement()) name String tags String image_url String? max_members Int created_at DateTime @default(now()) updated_at DateTime @updatedAt owner_id Int user users @relation(fields: [owner_id], references: [user_id], onDelete: Cascade, onU..
-
그룹채팅 - Part0 웹소켓
웹소켓(WebSocket)이란?클라이언트와 서버 간의 양방향 통신을 가능하게 하는 프로토콜입니다.웹 페이지를 새로고침하지 않고도 서버와 데이터를 주고받을 수 있어, 실시간 기능을 필요로 하는 애플리케이션에 매우 유용합니다.예를 들어, 채팅, 실시간 알림 등이 웹소켓을 사용하여 데이를 주고받습니다.※ 프로토콜 : 네트워크에서 데이터를 주고받기 위한 규칙과 절차의 집합 웹소켓의 특징 양방향 통신- 클라이언트와 서버가 서로 데이터를 주고받을 수 있습니다. 저지연성 - 데이터를 주고받을 때 생기는 지연 시간이 매우 짧습니다.(연결이 한 번 설정되면 그 연결을 유지하기 때문)효율성- 웹소켓은 한 번 연결을 설정하면 계속해서 그 연결을 유지하기 때문에 효율적입니다.- 이렇게 오버헤드(작업을 수행하기 위해 추가적으로..
-
오늘의 식단 및 운동 목록 패치하기
이 글에서는 Kiloflow 프로젝트에서 메인 페이지에 오늘의 식단과 운동 목록을 패치하고 표시하는 기능을 구현하는 방법을 다룹니다. 프론트엔드 1. 메인페이지 컴포넌트 (index.tsx) 1-1 상태값 정의const [currentUser, setCurrentUser] = useState(null); // 현재 사용자 상태const [currentTab, setCurrentTab] = useState('week'); // 현재 탭 상태const [selectedDate, setSelectedDate] = useState(dayjs().toDate()); // 선택된 날짜 상태const [todayList, setTodayList] = useState('food'); // 오늘의 목록 상태const [..
-
운동관리 - todayExercise 등록
이 글에서는 사용자가 오늘의 운동을 등록하는 기능을 구현합니다. 데이터베이스 users 테이블model users { user_id Int @id @default(autoincrement()) email String @unique password String nickname String profile_image String @default("default_image_url") isInitialSetupComplete Boolean @default(false) created_at ..
-
식단 관리 - Part 4 todayFood 등록 기능
이 글에서는 사용자가 오늘 먹은 음식을 등록하는 기능을 구현합니다. 데이터베이스 스키마 users 테이블model users { user_id Int @id @default(autoincrement()) email String @unique password String nickname String profile_image String @default("default_image_url") isInitialSetupComplete Boolean @default(false) created_at ..
-
식단관리 - Part3 추천/비추천 기능
이 글에서는 Kiloflow 프로젝트에서 사용자가 등록한 음식에 대해 다른 유저들이 추천 또는 비추천을 할 수 있는 기능을 구현하는 방법을 설명합니다. 이 기능을 통해 사용자는 음식에 대한 피드백을 제공하고, 다른 사용자들이 이를 참고할 수 있습니다.데이터베이스 스키마 users 테이블model users { user_id Int @id @default(autoincrement()) email String @unique password String nickname String profile_image String @..