-
- ๊ฒฐํผ์ ๊ฒฐ์ฌํ์ง๋ง, ๋ง์ ์ค๋นํ๋ ค๋ ๋ฌด์๋ถํฐ ์ค๋นํด์ผ ํ ์ง ๋ง๋งํ ์ฌ๋๋ค์ด ๋ง์ด ์์ต๋๋ค. ๋ ๊ฒฐํผ ์ค๋น๋ฅผ ์์ํด๋ โํจ๊ปํ๋ ๊ฒฐํผ์ธ๋ฐ ์ ๋ ํผ์๋ง ์ค๋นํ๋ ๊ฑฐ์ผ!โ๋ผ๊ณ ๋ถ๋ง์ ๋งํ๋ฉฐ, ํจ๊ป ๊ณ ๋ฅด๊ณ ์ค๋นํ๊ณ ์ถ๋ค๋ ์๋น ์ ๋ ๋๋ ์๋น ์ ๋ถ๊ฐ ๋ง์ด ๋ณด์ ๋๋ค. Blooming์ ์ด๋ฐ ๋ถ๋ค์ ์ํด ํ์ํ ์๋น ์ ๋, ์๋น ์ ๋ถ์ ์ํต ์ฐ๊ฒฐ ๋ค๋ฆฌ ์ญํ ์ ํ๋ ์๋น์ค์ ๋๋ค. Blooming๊ณผ ํจ๊ป ๋ผ๋ฉด ๋๊ตฌ๋ ์ฆ๊ฒ๊ณ ์ค๋ ๋ ๋ง์์ผ๋ก ๊ฒฐํผ์ ์ค๋นํ๊ณ ๋ง์ดํ ์ ์์ต๋๋ค.
-
-
์ด์๊ด๋ฆฌ : JIRA
-
ํ์๊ด๋ฆฌ : Gitlab
-
์ปค๋ฎค๋์ผ์ด์ : Notion, Mattermost Discord
-
๋์์ธ : Figma
-
UCC : ๋ชจ๋ฐ๋น, vllo
-
-
-
React : ^18.2.0
-
Vite : ^4.4.5
-
react-router-dom : ^6.14.2
-
recoil : ^0.7.7
-
Flutter : 3.10.6
-
inapp_webview
-
Android Studio :
-
axios : ^1.4.0
-
VS Code : 1.18.1
-
IntelliJ : 11.0.19
-
Springboot : 2.7.13
-
Lombok
-
Spring Data JPA
-
Spring Data Redis(lecttuce)
-
Spring Web
-
Springdoc-openapi-ui 1.6.11
-
Oauth2
-
Swagger 3.0.0
-
SSL
-
CertBot(CA Certificates)
-
Node.js : 18.16.1
-
SERVER : AWS EC2 Ubuntu 20.04.6 LTS
-
DB : MySQL 8.0.34, Redis
-
-
-
Kakao OAuth2 : application-oauth.yml์ ์ค์
-
AWS S3 : application-local๊ณผ application-prod์ ๋ก์ปฌ๊ณผ ๋ฐฐํฌ ์๋ฒ๋ฅผ ๋ฐ๋ก ์ค์
-
FCM :14.6.4
-
-
-
React-Vite : .env
-
Spring : application-jwt.yml, application-local.yml, application-prod.yml, application-oauth.yml(\src\main\resources์ ์์น)
-
-
-
.env
- VITE_KAKAO_API_KEY="์นด์นด์ค ์๋ฐ์คํฌ๋ฆฝํธ ํค" - VITE_BASE_URL="์์ฒญํ๋ API ๊ธฐ๋ณธ์ฃผ์" - VITE_S3_URL="ํ์ผ ์ ๋ก๋ํ๋ AWS ์ฃผ์" - VITE_AUTOLOGIN_URL="์๋๋ก๊ทธ์ธ์ ํ์ฉ๋๋ URL" - VITE_LOGIN_URL="์ด๋์ฝ๋๋ฅผ ํตํด ์ฐ๊ฒฐ๋๋ URL" - VITE_KAKAO_LOGIN="KAKAO ๋ก๊ทธ์ธ์ ํ์ฉ๋๋ ์ฃผ์" - VITE_QR_CODE="QRCODE๋ฅผ ํตํด Blooming.apk๋ค์ด๋ก๋ํ๋ ์ฃผ์" - VITE_MOBILE_INVITATION_URL="๋ง๋ค์ด์ง ๋ชจ๋ฐ์ผ ์ฒญ์ฒฉ์ฅ URL"
-
application-local.yml
spring: datasource: url: <MySQL DB ์ฃผ์> username: <์ ์ ์ด๋ฆ> password: <์ ์ ๋น๋ฐ๋ฒํธ> driver-class-name: com.mysql.cj.jdbc.Driver jpa: hibernate: ddl-auto: create properties: hibernate: show_sql: true format_sql: true cloud: aws: s3: bucket: <S3 ๋ฒํท ์ด๋ฆ> credentials: access-key: <S3 ๋ฒํท access-key> secret-key: <S3 ๋ฒํท secret-key> region: static: ap-northeast-2 auto: false stack: auto: false
-
application-prod.yml
spring: datasource: url: <MySQL DB ์ฃผ์> username: <์ ์ ์ด๋ฆ> password: <์ ์ ๋น๋ฐ๋ฒํธ> driver-class-name: com.mysql.cj.jdbc.Driver jpa: hibernate: ddl-auto: validate properties: hibernate: show_sql: true format_sql: true redis: lettuce: pool: max-active: '5' max-idle: '5' min-idle: '2' host: <host ip ์ฃผ์> port: <์ฌ์ฉํ ํฌํธ ๋ฒํธ> password: <redis ๋น๋ฐ๋ฒํธ> cloud: aws: s3: bucket: <S3 ๋ฒํท ์ด๋ฆ> credentials: access-key: <S3 ๋ฒํท access-key> secret-key: <S3 ๋ฒํท secret-key> region: static: ap-northeast-2 auto: false stack: auto: false
-
application-oauth.yml
spring: security: oauth2: client: registration: kakao: client-id: <Kakao Developers REST APIํค> client-secret: <Kakao Developers Client Secret ์ฝ๋> redirect-uri: <Kakao Developers์ ์ค์ ํ Redirect url> client-authentication-method: POST authorization-grant-type: authorization_code scope: - profile_nickname - account_email - gender - profile_image client-name: Kakao provider: kakao: authorization-uri: https://kauth.kakao.com/oauth/authorize token-uri: https://kauth.kakao.com/oauth/token user-info-uri: https://kapi.kakao.com/v2/user/me user-name-attribute: id
-
application-jwt.yml
jwt: secretKey: <์ค์ ํ๊ณ ์ ํ๋ JWT secretKey> access: expiration: 1800000 # 30๋ถ header: Authorization refresh: expiration: 1209600000 # 2์ฃผ header: Authorization_refresh
-
-
-
Front: React-Vite
-
npm install
-
npm run build
-
-
Back: Spring
- Gradle ์คํ
-
flutter
- flutter build apk --release --target-platform=android-arm64
-
-
๋ฐฐํฌํ๊ธฐ
-
Nginx ์ค์
-
๋์ปค
-
MySQL
-
์ํ๋ ์คํค๋ง๋ช ์ผ๋ก ์คํค๋ง ์์ฑ
-
DumpSsafy_first.sql ์คํ
-- MySQL dump 10.13 Distrib 8.0.33, for Win64 (x86_64) -- -- Host: 43.200.254.50 Database: ssafy -- ------------------------------------------------------ -- Server version 8.0.34 /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!50503 SET NAMES utf8 */; /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; /*!40103 SET TIME_ZONE='+00:00' */; /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; -- -- Table structure for table `couple` -- DROP TABLE IF EXISTS `couple`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `couple` ( `couple_id` bigint NOT NULL, `created_at` datetime(6) DEFAULT NULL, `updated_at` datetime(6) DEFAULT NULL, `couple_code` varchar(8) NOT NULL, `wedding_date` date DEFAULT NULL, PRIMARY KEY (`couple_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `diary` -- DROP TABLE IF EXISTS `diary`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `diary` ( `diary_id` bigint NOT NULL, `created_at` datetime(6) DEFAULT NULL, `updated_at` datetime(6) DEFAULT NULL, `content` varchar(255) DEFAULT NULL, `date` date DEFAULT NULL, `image` varchar(255) DEFAULT NULL, `title` varchar(255) DEFAULT NULL, `user_id` bigint DEFAULT NULL, PRIMARY KEY (`diary_id`), KEY `FK74rd0bn5raxejw2ukenelbdmt` (`user_id`), CONSTRAINT `FK74rd0bn5raxejw2ukenelbdmt` FOREIGN KEY (`user_id`) REFERENCES `users` (`user_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `hibernate_sequence` -- DROP TABLE IF EXISTS `hibernate_sequence`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `hibernate_sequence` ( `next_val` bigint DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `invitation` -- DROP TABLE IF EXISTS `invitation`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `invitation` ( `invitation_id` bigint NOT NULL, `address` varchar(255) DEFAULT NULL, `bride_father_name` varchar(255) DEFAULT NULL, `bride_father_phone` varchar(255) DEFAULT NULL, `bride_mother_name` varchar(255) DEFAULT NULL, `bride_mother_phone` varchar(255) DEFAULT NULL, `bride_name` varchar(255) DEFAULT NULL, `bride_phone` varchar(255) DEFAULT NULL, `content` varchar(255) DEFAULT NULL, `date` date DEFAULT NULL, `floor` varchar(255) DEFAULT NULL, `groom_father_name` varchar(255) DEFAULT NULL, `groom_father_phone` varchar(255) DEFAULT NULL, `groom_mother_name` varchar(255) DEFAULT NULL, `groom_mother_phone` varchar(255) DEFAULT NULL, `groom_name` varchar(255) DEFAULT NULL, `groom_phone` varchar(255) DEFAULT NULL, `thumbnail` varchar(255) DEFAULT NULL, `time` time DEFAULT NULL, `title` varchar(255) DEFAULT NULL, `wedding_hall_name` varchar(255) DEFAULT NULL, `couple_id` bigint DEFAULT NULL, PRIMARY KEY (`invitation_id`), KEY `FK9fil2lc64dryhvtawmk5pe6lk` (`couple_id`), CONSTRAINT `FK9fil2lc64dryhvtawmk5pe6lk` FOREIGN KEY (`couple_id`) REFERENCES `couple` (`couple_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `liked` -- DROP TABLE IF EXISTS `liked`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `liked` ( `liked_id` bigint NOT NULL, `created_at` datetime(6) DEFAULT NULL, `review_id` bigint DEFAULT NULL, `user_id` bigint DEFAULT NULL, PRIMARY KEY (`liked_id`), KEY `FKej1jde2ycpdww3eapmgbifv68` (`review_id`), KEY `FKcc0jrw2vianbjig6suh66syiw` (`user_id`), CONSTRAINT `FKcc0jrw2vianbjig6suh66syiw` FOREIGN KEY (`user_id`) REFERENCES `users` (`user_id`), CONSTRAINT `FKej1jde2ycpdww3eapmgbifv68` FOREIGN KEY (`review_id`) REFERENCES `review` (`review_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `notification` -- DROP TABLE IF EXISTS `notification`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `notification` ( `notification_id` bigint NOT NULL, `created_at` datetime(6) DEFAULT NULL, `content` varchar(255) DEFAULT NULL, `notification_type` varchar(255) DEFAULT NULL, `read_status` varchar(255) DEFAULT NULL, `title` varchar(255) DEFAULT NULL, `user_id` bigint DEFAULT NULL, PRIMARY KEY (`notification_id`), KEY `FKnk4ftb5am9ubmkv1661h15ds9` (`user_id`), CONSTRAINT `FKnk4ftb5am9ubmkv1661h15ds9` FOREIGN KEY (`user_id`) REFERENCES `users` (`user_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `reservation` -- DROP TABLE IF EXISTS `reservation`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `reservation` ( `reservation_id` bigint NOT NULL, `reserved_date` date DEFAULT NULL, `reserved_time` time DEFAULT NULL, `product_id` bigint DEFAULT NULL, `user_id` bigint DEFAULT NULL, PRIMARY KEY (`reservation_id`), KEY `FKgoouhtuwwm277879njd9atahw` (`product_id`), KEY `FKrea93581tgkq61mdl13hehami` (`user_id`), CONSTRAINT `FKgoouhtuwwm277879njd9atahw` FOREIGN KEY (`product_id`) REFERENCES `product` (`product_id`), CONSTRAINT `FKrea93581tgkq61mdl13hehami` FOREIGN KEY (`user_id`) REFERENCES `users` (`user_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `review` -- DROP TABLE IF EXISTS `review`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `review` ( `review_id` bigint NOT NULL, `created_at` datetime(6) DEFAULT NULL, `updated_at` datetime(6) DEFAULT NULL, `content` varchar(255) DEFAULT NULL, `image` varchar(255) DEFAULT NULL, `like_cnt` int NOT NULL, `star` int NOT NULL, `product_id` bigint DEFAULT NULL, `user_id` bigint DEFAULT NULL, PRIMARY KEY (`review_id`), KEY `FKiyof1sindb9qiqr9o8npj8klt` (`product_id`), KEY `FK6cpw2nlklblpvc7hyt7ko6v3e` (`user_id`), CONSTRAINT `FK6cpw2nlklblpvc7hyt7ko6v3e` FOREIGN KEY (`user_id`) REFERENCES `users` (`user_id`), CONSTRAINT `FKiyof1sindb9qiqr9o8npj8klt` FOREIGN KEY (`product_id`) REFERENCES `product` (`product_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `schedule` -- DROP TABLE IF EXISTS `schedule`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `schedule` ( `schedule_id` bigint NOT NULL, `created_at` datetime(6) DEFAULT NULL, `content` varchar(255) DEFAULT NULL, `reservation_id` bigint DEFAULT NULL, `scheduled_date` date DEFAULT NULL, `scheduled_time` time DEFAULT NULL, `schedule_type` varchar(255) DEFAULT NULL, `scheduled_by` varchar(255) DEFAULT NULL, `title` varchar(255) DEFAULT NULL, `couple_id` bigint DEFAULT NULL, PRIMARY KEY (`schedule_id`), KEY `FKka3k3mjq8da6a28wjm4d57154` (`couple_id`), CONSTRAINT `FKka3k3mjq8da6a28wjm4d57154` FOREIGN KEY (`couple_id`) REFERENCES `couple` (`couple_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `users` -- DROP TABLE IF EXISTS `users`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `users` ( `user_id` bigint NOT NULL, `created_at` datetime(6) DEFAULT NULL, `updated_at` datetime(6) DEFAULT NULL, `email` varchar(255) DEFAULT NULL, `fcm_token` varchar(255) DEFAULT NULL, `gender` varchar(255) DEFAULT NULL, `name` varchar(255) DEFAULT NULL, `nickname` varchar(255) DEFAULT NULL, `password` varchar(255) DEFAULT NULL, `phone_number` varchar(255) DEFAULT NULL, `profile_image` varchar(255) DEFAULT NULL, `refresh_token` varchar(500) DEFAULT NULL, `role` varchar(255) DEFAULT NULL, `social_id` varchar(255) DEFAULT NULL, `couple_id` bigint DEFAULT NULL, `notification_setting` varchar(20) DEFAULT 'agree', PRIMARY KEY (`user_id`), KEY `FKmr4ayf55g49na319xofm1h7bf` (`couple_id`), CONSTRAINT `FKmr4ayf55g49na319xofm1h7bf` FOREIGN KEY (`couple_id`) REFERENCES `couple` (`couple_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `wishlist` -- DROP TABLE IF EXISTS `wishlist`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `wishlist` ( `wishlist_id` bigint NOT NULL, `created_at` datetime(6) DEFAULT NULL, `product_id` bigint DEFAULT NULL, `user_id` bigint DEFAULT NULL, PRIMARY KEY (`wishlist_id`), KEY `FKqchevbfw5wq0f4uqacns02rp7` (`product_id`), KEY `FKtrd6335blsefl2gxpb8lr0gr7` (`user_id`), CONSTRAINT `FKqchevbfw5wq0f4uqacns02rp7` FOREIGN KEY (`product_id`) REFERENCES `product` (`product_id`), CONSTRAINT `FKtrd6335blsefl2gxpb8lr0gr7` FOREIGN KEY (`user_id`) REFERENCES `users` (`user_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; /*!40101 SET character_set_client = @saved_cs_client */; /*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; /*!40101 SET SQL_MODE=@OLD_SQL_MODE */; /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; /*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; -- Dump completed on 2023-08-16 23:29:35
-
-
Redis
docker pull redis sudo docker run -p 6379:6379 redis
-
-
-
์นด์นด์ค API
-
FCM
-
Spring boot์์ ํธ์ ์๋ฆผ์ firebase์ ์์ฒญํ๊ธฐ ์ํด์๋ firebase์ ๋น๊ณต๊ฐ ํค ํ์ผ์ด ํ์ํ๋ค. firebase ์ฝ์์์ ์๋ ์ ์ฐจ๋๋ก ๋น๊ณต๊ฐ ํค๋ฅผ ์์ฑํ ์ ์๋ค.
-
์๋ ๋งํฌ๋ก firebase์ ๋ค์ด๊ฐ๋ค
Firebase | Googleโs Mobile and Web App Development Platform
-
์์ํ๊ธฐ
-
ํ๋ก์ ํธ ์ถ๊ฐ๋ฅผ ๋๋ฅด๊ณ ํ๋ก์ ํธ ์ด๋ฆ์ ์์ฑํ์ฌ ์๋ก์ด ํ๋ก์ ํธ๋ฅผ ๋ง๋ค์ด์ค๋ค.
-
์ฑ์ ์ถ๊ฐํด์ค๋ค. Blooming์ ์๋๋ก์ด๋ ์ฑ์ ์ถ๊ฐํ๋ค.
-
์ด์ Android ์ฑ์ Firebase๋ฅผ ์ถ๊ฐํด์ผ ํ๋ค.
-
์ฑ ๋ฑ๋ก ์ ํจํค์ง ์ด๋ฆ์ ํ๋ก์ ํธ์ ์๋๋ก์ด๋ ์ฑ ์ด๋ฆ์ผ๋ก ๋ง์ถฐ์ฃผ์ด์ผ ํ๋ค. ์ด ์ธ์๋ ์์ ๋กญ๊ฒ ์์ฑํ๋ค.
-
์ฑ ๋ฑ๋ก ํ โgoogle-services.jsonโ ๊ตฌ์ฑ ํ์ผ์ ๋ค์ดํ์ฌ app ๋ฃจํธ ๋๋ ํฐ๋ฆฌ์ ๋ฃ์ด์ค๋ค.
-
๊ณต์ ์ค๋ช ์ ๋ฐ๋ผ ์ถ๊ฐํด์ค๋ค.
์ด๋ ๊ฒ ํ๋ฉด Android ์ฑ์ Firebase ์ถ๊ฐํ๋ ๊ณผ์ ์ ๋์ด๋ค. ์ฝ์๋ก ์ด๋ํ๋ค.
-
-
Spring boot์ FCM