Skip to content

dolgodolah/my-playlists

Repository files navigation

내플리스(My Playlists)

🙆 프로젝트 소개

공부할 때, 비올 때, 놀러 갈 때 즐겨듣는 다양한 노래 플레이리스트들을 내플리스에 공유합니다.

💻 핵심 기능

  • 카카오 로그인, 구글 로그인으로 손쉽게 내플리스를 시작할 수 있습니다.

  • 노래 검색 시 유튜브 API를 통해 상위 5개의 검색 결과가 노출됩니다.

  • 플레이리스트 검색을 통해 내 플레이리스트다른 사용자의 플레이리스트를 쉽게 찾을 수 있습니다.

  • Public/Private 설정으로 내가 만든 플레이리스트를 여러 사람들에게 공유하거나 본인에게만 노출되도록 할 수 있습니다.

  • 즐겨 듣는 플레이리스트를 즐겨찾기에 추가할 수 있습니다.

🛠️ 기술 스택

Java, Kotlin, Spring Boot, Spring Data JPA, MySQL

React, Typescript, Next.js

Google Youtube Data API, Kakao Developers API

AWS EC2

🔍 DB 설계

CREATE TABLE `playlist` (
    `playlist_id` bigint NOT NULL AUTO_INCREMENT,
    `created_date` datetime(6) DEFAULT NULL,
    `updated_date` datetime(6) DEFAULT NULL,
    `description` varchar(255) DEFAULT NULL,
    `title` varchar(255) DEFAULT NULL,
    `visibility` bit(1) NOT NULL,
    `user_id` bigint NOT NULL,
    PRIMARY KEY (`playlist_id`),
    KEY `FK_USER_ID_PLAYLIST` (`user_id`),
    CONSTRAINT `FK_USER_ID_PLAYLIST` FOREIGN KEY (`user_id`) REFERENCES `user` (`user_id`) ON DELETE CASCADE
) ENGINE=InnoDB
CREATE TABLE `user` (
    `user_id` bigint NOT NULL AUTO_INCREMENT,
    `created_date` datetime(6) DEFAULT NULL,
    `updated_date` datetime(6) DEFAULT NULL,
    `email` varchar(255) NOT NULL,
    `name` varchar(255) DEFAULT NULL,
    `nickname` varchar(255) DEFAULT NULL,
    `oauth_type` int NOT NULL,
    PRIMARY KEY (`user_id`)
) ENGINE=InnoDB
create table song (
   song_id bigint not null auto_increment,
   playlist_id bigint,
   user_id bigint,
   created_date datetime(6),
   updated_date datetime(6),
   description varchar(255),
   title varchar(255),
   video_id varchar(255),
   primary key (song_id),
   foreign key (playlist_id)
   references playlist (playlist_id)
) engine=InnoDB
create index idx_user_id on song (user_id)
create table bookmark (
   bookmark_id bigint not null auto_increment,
   playlist_id bigint,
   user_id bigint,
   primary key (bookmark_id),
   foreign key (playlist_id)
   references playlist (playlist_id),
   foreign key (user_id)
   references user (user_id)
) engine=InnoDB