초대장 앱을 만들어 보자!
/dearU
├── frontend (React + TypeScript)
│ ├── src
│ │ ├── components (재사용 가능한 UI 컴포넌트)
│ │ ├── pages (각 페이지 라우트)
│ │ ├── assets (이미지, 아이콘 등)
│ │ ├── store (상태 관리)
│ │ ├── services (API 호출)
│ │ ├── types (TypeScript 타입 정의)
│ ├── tsconfig.json (TypeScript 설정)
│ ├── package.json
│
├── backend (Spring Boot)
│ ├── src/main/java/com/dearu
│ │ ├── config
│ │ ├── controller (API 엔드포인트)
│ │ ├── service (비즈니스 로직)
│ │ ├── repository (DB 연동)
│ │ ├── model (데이터 모델)
│ ├── pom.xml
│
├── README.md
npx create-react-app frontend --template typescript --use-npm
cd frontend
npm install react@18 react-dom@18
npm install --save-dev @types/react@18 @types/react-dom@18
npm start
https://github.com/sein0121/dearU
application.properties
# ✅ MySQL 연결 정보
spring.datasource.url=jdbc:mysql://localhost:3306/dearu?serverTimezone=UTC&characterEncoding=UTF-8
spring.datasource.username=root
spring.datasource.password=your_password # ← 본인의 MySQL 비밀번호 입력
# ✅ JPA 설정
spring.jpa.hibernate.ddl-auto=update # 애플리케이션 실행 시 자동 테이블 생성
spring.jpa.show-sql=true # 콘솔에 SQL 출력
spring.jpa.database-platform=org.hibernate.dialect.MySQL8Dialect
spring.sql.init.mode=always # 초기 SQL 실행 (선택사항)
# ✅ 서버 포트 설정 (기본값: 8080)
server.port=8080
npm install axios
api.ts 생성
import axios from "axios";
const API_BASE_URL = "http://localhost:8080/api";
export const getEvents = async () => {
const response = await axios.get(`${API_BASE_URL}/events`);
return response.data;
};
export const createEvent = async (event: { title: string; description: string }) => {
const response = await axios.post(`${API_BASE_URL}/events`, event);
return response.data;
};