Giter Site home page Giter Site logo

thisis's Introduction

๐Ÿ“ขํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ

์งˆ๋ณ‘์„ ์˜๋ฏธํ•˜๋Š” Disease์—์„œ ๋น„์Šทํ•œ ๋ฐœ์Œ์ธ THISIS๋กœ ํ”„๋กœ์ ํŠธ ์ด๋ฆ„์„ ์ •ํ•˜์˜€์Šต๋‹ˆ๋‹ค. ํ™˜์ž๋“ค๋ผ๋ฆฌ ๋ถ€์กฑํ•œ ์ •๋ณด๋“ค์„ ์–ป๊ธฐ ์œ„ํ•œ ๋ชฉ์ ์— ์žˆ๋Š” ์งˆ๋ณ‘ SNS๋กœ์จ ์—ญํ• ์„ ํ•˜๊ธฐ ์œ„ํ•ด ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํšŒ์›๊ฐ€์ž…, ๋กœ๊ทธ์ธ, ์œ ์ € ํŒ”๋กœ์šฐ ๋“ฑ ๋ช…์„ธ์„œ ๊ธฐ๋ฐ˜ ๊ธฐ๋ณธ ๊ธฐ๋Šฅ์„ ๋ฐ”ํƒ•์œผ๋กœ ํ•ด ์‹ค์งˆ์ ์œผ๋กœ ์œ ์šฉํ•œ ์งˆ๋ณ‘ ๊ด€๋ฆฌ SNS๋ฅผ ์ถ”๊ตฌํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ˜ ํŒ€์› ์†Œ๊ฐœ

ํŒ€์žฅ : ๊ฐ•์„ธ์‘

CTO : ๊น€์ง€ํ˜„

Frontend ์žฅ : ์กฐ์žฌ๋นˆ

Backend ์žฅ: ๊น€์žฌํ˜„

Backend Ace : ์ฑ„์ง€์€

โŒ› ํ”„๋กœ์ ํŠธ ๊ฐœ๋ฐœ ์ผ์ •

๐Ÿค Branch Rule

  • Git Branch ์ „๋žต
    • master -> develop -> feature/(๊ธฐ๋Šฅ ์ด๋ฆ„)

      • ๊ธฐ๋Šฅ ๋‹จ์œ„๋กœ feature ์ƒ์„ฑ ํ›„ ์ž‘์—… -> develop์œผ๋กœ ๋ณ‘ํ•ฉ
      • ์™„์„ฑ๋œ ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ feature ๋ธŒ๋žœ์น˜๋Š” ์ž‘์—… ์™„๋ฃŒ ํ›„ ์‚ญ์ œ
    • Commit Rule : [๋ธŒ๋žœ์น˜๋ช…]์ปค๋ฐ‹ ๋‚ด์šฉ | JIRA์ด์Šˆ ID ex)[develop] : [๋ธŒ๋žœ์น˜๋ช…] ์ปค๋ฐ‹ ๋‚ด์šฉ | JIRA์ด์Šˆ ID

  • JIRA๋ฒˆํ˜ธ ๋งˆ์ง€๋ง‰์—
    • ๋งˆ์นจํ‘œ X
    • ์˜์–ด๋งŒ ์‚ฌ์šฉ
    • ๋ธŒ๋žœ์น˜๋ช…: ๋ชจ๋‘ ์†Œ๋ฌธ์ž
    • ์ปค๋ฐ‹๋‚ด์šฉ : ์ฒซ ๊ธ€์ž๋งŒ ๋Œ€๋ฌธ์ž, ๋ช…๋ น๋ฌธ ํ˜•์‹์œผ๋กœ ์ž‘์„ฑ

โœ Ground Rule

  • 1์ผ 1 commit

  • 1์ฃผ 1 merge request

  • merge ํ›„ ๋ธŒ๋žœ์น˜ ์ง€์šฐ๊ธฐ

๐Ÿ›  ํ”„๋กœ์ ํŠธ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์„ค์ •

Frontend ๊ฐœ๋ฐœํ™˜๊ฒฝ

NPM ์‚ฌ์šฉ์„ ์œ„ํ•œ Node.js ์„ค์น˜

Node.js ๋Š” ์˜คํ”ˆ์†Œ์Šค ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋Ÿฐํƒ€์ž„ ์—”์ง„(์ปดํŒŒ์ผ๋Ÿฌ + ์ธํ„ฐํ”„๋ฆฌํ„ฐ ๋“ฑ)

๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์•„๋‹Œ ํ™˜๊ฒฝ์—์„œ๋„ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค.

  • node.js ์„ค์น˜ํ•˜๊ธฐ (LTS ๋ฒ„์ „ ๊ถŒ์žฅ)

  • ๋ช…๋ น ํ”„๋กฌํ”„ํŠธ ์ฐฝ์—์„œ node -v, npm -v ์ž…๋ ฅํ•˜์—ฌ ์„ค์น˜ ํ™•์ธ

Yarn ์„ค์น˜

๋นŒ๋“œ ์†๋„๊ฐ€ ๋ณด๋‹ค ๋น ๋ฅด๊ณ  ์ตœ๊ทผ ํ™œ์šฉ๋„๊ฐ€ ๋†’๋‹ค.

Vue.js, Vue-cli ์„ค์น˜

Vue ํ”„๋กœ์ ํŠธ์˜ Vue-cli ๋ฅผ ์ด์šฉํ•  ๊ฒฝ์šฐ Webpack, Eslint, ๊ฐœ๋ฐœ ์„œ๋ฒ„ ๋“ฑ์˜ ์„ค์ •์ด ์ž๋™์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์†์‰ฝ๊ฒŒ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๋Š” ์žฅ์ ์ด ์žˆ๋‹ค.

  • ๋ช…๋ น ํ”„๋กฌํ”„ํŠธ ์ฐฝ์—์„œ yarn global add @vue/cli ์ž…๋ ฅ

  • vue --version ์ž…๋ ฅํ•˜์—ฌ ์„ค์น˜ ํ™•์ธ

(์ฐธ๊ณ ) vue create example ๋ฅผ ์ž…๋ ฅํ•˜์—ฌ ์ƒˆ๋กœ์šด ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

Sass ์„ค์ •

Webpack์—์„œ Sass ๋ฅผ Css๋กœ ์ปดํŒŒ์ผํ•˜๊ธฐ ์œ„ํ•ด node-sass ์™€ sass-loader ๋ฅผ ์„ค์น˜ํ•œ๋‹ค.

  • yarn add node-sass sass-loader
Vue-route, Vuex ์„ค์น˜
  • yarn add vue-router vuex

Backend ๊ฐœ๋ฐœํ™˜๊ฒฝ

Spring Boot ์„ค์น˜

๊ฐ„๋‹จํ•œ ๊ตฌ์„ฑ์„ ์œ„ํ•ด Spriong Boot ๋ฅผ ์ด์šฉํ•œ๋‹ค.

  • Spring ์‚ฌ์šฉ์„ ์œ„ํ•œ JDK ์„ค์น˜

    OpenJDK ๊ณต์‹ ์›น์‚ฌ์ดํŠธ์—์„œ ์••์ถ• ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œ ๋ฐ›๊ณ  ์••์ถ• ํ•ด์ œ ํ›„ ํ•ด๋‹น ๊ฒฝ๋กœ๋ฅผ ๊ธฐ์–ตํ•œ๋‹ค.

  • ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ •

    [๋‚ด ์ปดํ“จํ„ฐ - ์†์„ฑ] -> [๊ณ ๊ธ‰ ์‹œ์Šคํ…œ ์„ค์ •] -> [ํ™˜๊ฒฝ ๋ณ€์ˆ˜] -> [์ƒˆ๋กœ ๋งŒ๋“ค๊ธฐ]

    • ๋ณ€์ˆ˜ ์ด๋ฆ„: JAVA_HOME
    • ๋ณ€์ˆ˜ ๊ฐ’: {ํ•ด๋‹น ๊ฒฝ๋กœ}

    Path ํŽธ์ง‘ -> ๋ณ€์ˆ˜ ๊ฐ’์— %JAVA_HOME%\bin ์ถ”๊ฐ€

  • ๋ช…๋ น ํ”„๋กฌํ”„ํŠธ -> java -version ์„ค์น˜ ํ™•์ธ

  • Maven ์„ค์น˜

  • ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ •

    • ๋ณ€์ˆ˜ ์ด๋ฆ„: MAVEN_HOME
    • ๋ณ€์ˆ˜ ๊ฐ’: {ํ•ด๋‹น ๊ฒฝ๋กœ}

    Path ํŽธ์ง‘ -> ๋ณ€์ˆ˜ ๊ฐ’์— %MAVEN_HOME%\bin ์ถ”๊ฐ€

  • ๋ช…๋ น ํ”„๋กฌํ”„ํŠธ -> mvn -v ์„ค์น˜ ํ™•์ธ

  • VScode ์„ค์น˜

    • Spring Boot Extension Pack ์„ค์น˜
    • ctrl + shift + P -> Spring Initializer:Generate Maven Project ์‹คํ–‰
      • Project Language: Java
      • Spring Boot Version: 2.2.2
      • Dependency: Lombok, Spring Web ์„ ํƒ
Docker ๊ธฐ๋ฐ˜์˜ MariaDB ๊ตฌ์„ฑ
  • Docker ์„ค์น˜

  • ๋ช…๋ น ํ”„๋กฌํ”„ํŠธ Docker -v ์„ค์น˜ ํ™•์ธ

  • ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ: docker run --name {db์ด๋ฆ„} -p {port}:{port} -e MYSQL_ROOT_PASSWORD={password} -d mariadb

  • ์ธ์Šคํ„ด์Šค ์‹คํ–‰: docker exec -it {db์ด๋ฆ„} mysql -u root -p

  • docker exec -i {db์ด๋ฆ„} mysql -uroot -p{password} --database={schema ์ด๋ฆ„} < {OOO.sql}

  • MariaDB ์—ฐ๊ฒฐ

    • pom.xml ์— ์•„๋ž˜ ๊ตฌ๋ฌธ ์ถ”๊ฐ€

      <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-data-jpa</artifactId>
      </dependency>
      
      <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-jdbc</artifactId>
      </dependency>
      
      <dependency>
          <groupId>mysql</groupId>
          <artifactId>mysql-connector-java</artifactId>
          <scope>runtime</scope>
      </dependency>
    • application.properties ์— ์•„๋ž˜ ๊ตฌ๋ฌธ ์ถ”๊ฐ€

      spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver
      spring.datasource.url=jdbc:mysql://localhost:3306/{DB๋ช…}?autoReconnect=true&useUnicode=true&characterEncoding=utf8
      spring.datasource.username=root
      spring.datasource.password={๋น„๋ฐ€๋ฒˆํ˜ธ}

๊ฐœ๋ฐœ ํ™˜๊ฒฝ ๋ฐ IDE

๋„์ปค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ MariaDB ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ

STS๋ฅผ ์‚ฌ์šฉํ•ด BackEnd ์ž‘์—…

VS CODE ์‚ฌ์šฉํ•˜์—ฌ FrontEnd ์ž‘์—…

AWS ํ™œ์šฉํ•œ ์„œ๋ฒ„ ์—ฐ๋™

Docker ๋ช…๋ น์–ด ์ •๋ฆฌ

๋ช…๋ น์–ด ๋‚ด์šฉ
๋ฒ„์ „ ํ™•์ธ Docker -v
์ธ์Šคํ„ด์Šค ์ƒ์„ฑ docker run --name {db์ด๋ฆ„} -p {port}:{port} -e MYSQL_ROOT_PASSWORD={password} -d mariadb
์ธ์Šคํ„ด์Šค ์‹คํ–‰ docker exec -it {db์ด๋ฆ„} mysql -u root -p

FrontEnd ๋ช…๋ น์–ด ์ •๋ฆฌ

  • ๋ช…๋ น์–ด๋Š” Node.js์™€ Vue.js๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค
๋ช…๋ น์–ด ๋‚ด์šฉ
yarn install Node Modules์— ์žˆ๋Š” ๋‚ด์šฉ๋“ค install
yarn serve --port 3000 port๋ฒˆํ˜ธ 3000์—์„œ ๋กœ์ปฌ ์„œ๋ฒ„ ์‹คํ–‰

AWS ์„œ๋ฒ„ ๋ช…๋ น์–ด ์ •๋ฆฌ

๋ช…๋ น์–ด ๋‚ด์šฉ
ssh -i I3A301T.pem [email protected] ํ‚ค I3A301T.pem์„ ๊ฐ€์ง€๊ณ  AWS ์„œ๋ฒ„์— ์ ‘์†
sudo java -jar test/THISIS-0.0.3.jar AWS ์„œ๋ฒ„ ๋‚ด๋ถ€์—์„œ ์Šคํ”„๋ง ์„œ๋ฒ„ ์‹คํ–‰
(backend ํด๋”์—์„œ) mvn package ๋ฐฑ์—”๋“œ ์Šคํ”„๋ง ์„œ๋ฒ„ ๋นŒ๋“œ
pm2 restart War2 ์„œ๋ฒ„์— ๋ฐฑ์—”๋“œ ๋นŒ๋“œ ํŒŒ์ผ ๋ฐ˜์˜
(frontend ํด๋”์—์„œ) npm run buile ํ”„๋ก ํŠธ์—”๋“œ ๋ทฐ ๋ฐฐํฌ

DB sql๋ฌธ ์„ค์ •

ํšŒ์› ํ…Œ์ด๋ธ”
drop table IF EXISTS `THISIS`.`Userinfo`;
CREATE TABLE IF NOT EXISTS `THISIS`.`UserInfo` (
  `user_id` INT NOT NULL AUTO_INCREMENT,
  `username` VARCHAR(45) NOT NULL,
  `nickname` VARCHAR(45) NOT NULL,
  `email` VARCHAR(45) NOT NULL,
  `password` VARCHAR(150) NOT NULL,
  `introduction` VARCHAR(300) NULL,
  `userimage` VARCHAR(300) NULL,
  `role` VARCHAR(10) DEFAULT "user",
  `disabled` INT DEFAULT 0,
  `salt` VARCHAR(100) NULL,
  PRIMARY KEY (`user_id`),
  UNIQUE INDEX `email_UNIQUE` (`email` ASC) VISIBLE,
  UNIQUE INDEX `nickname_UNIQUE` (`nickname` ASC) VISIBLE)
ENGINE = InnoDB;
์ธ์ฆ ํ…Œ์ด๋ธ”
drop table IF EXISTS `THISIS`.`auth`;
CREATE TABLE IF NOT EXISTS `THISIS`.`auth` (
  `user_id` INT NOT NULL,
  `refresh_token` VARCHAR(700) NULL,
  `access_token` VARCHAR(700) NULL,
  PRIMARY KEY (`user_id`),
  CONSTRAINT `fk_auth_userinfo`
    FOREIGN KEY (`user_id`)
    REFERENCES `THISIS`.`UserInfo` (`user_id`)
    ON DELETE CASCADE
    ON UPDATE CASCADE)
ENGINE = InnoDB;
์•Œ๋žŒ/์š”์ฒญ ํ…Œ์ด๋ธ”
drop table IF EXISTS `THISIS`.`notification`;
CREATE TABLE IF NOT EXISTS `THISIS`.`notification` (
  `id` INT NOT NULL AUTO_INCREMENT,
  `newtofollower` INT NOT NULL,
  `newtofollowee` INT NOT NULL,
  `approval` INT NOT NULL,
  `time` TIMESTAMP NOT NULL,
  `follower_id` INT NOT NULL,
  `followee_id` INT NOT NULL,
  PRIMARY KEY (`id`, `follower_id`, `followee_id`),
  CONSTRAINT `fk_notification_userinfo1`
    FOREIGN KEY (`follower_id`)
    REFERENCES `THISIS`.`UserInfo` (`user_id`)
    ON DELETE CASCADE
    ON UPDATE CASCADE,
  CONSTRAINT `fk_notification_userinfo2`
    FOREIGN KEY (`followee_id`)
    REFERENCES `THISIS`.`UserInfo` ( `user_id`)
    ON DELETE CASCADE
    ON UPDATE CASCADE
    )
ENGINE = InnoDB;
๊ฒŒ์‹œ๊ธ€ ํ…Œ์ด๋ธ”
drop table IF EXISTS `THISIS`.`post`;
CREATE TABLE IF NOT EXISTS `THISIS`.`posts` (
  `posts_id` INT NOT NULL AUTO_INCREMENT,
  `user_id` INT NOT NULL,
  `posts_title` TEXT NULL,
  `posts_main` TEXT NULL,
  `post_date` DATETIME DEFAULT CURRENT_TIMESTAMP,
  `category` INT NULL,
  `diseasecode` VARCHAR(45) NULL,
  `imgsrc` VARCHAR(300) NULL,
  `hidden` INT DEFAULT 0,
  PRIMARY KEY (`posts_id`),
  CONSTRAINT `fk_posts_userinfo1`
    FOREIGN KEY (`user_id`)
    REFERENCES `THISIS`.`UserInfo` (`user_id`)
    ON DELETE CASCADE
    ON UPDATE CASCADE
)
ENGINE = InnoDB;
๋Œ“๊ธ€ ํ…Œ์ด๋ธ”
drop table IF EXISTS `THISIS`.`comment`;
CREATE TABLE IF NOT EXISTS `THISIS`.`comment` (
  `posts_id` INT NOT NULL,
  `comment_main` TEXT NULL,
  `hide` TINYINT(1) NULL,
  `comment_id` INT NOT NULL AUTO_INCREMENT,
  `comment_date` DATETIME DEFAULT CURRENT_TIMESTAMP,
  `user_id` INT NOT NULL,
  PRIMARY KEY (`comment_id`),
  CONSTRAINT `fk_comment_posts`
    FOREIGN KEY (`posts_id`)
    REFERENCES `THISIS`.`posts` (`posts_id`)
    ON DELETE CASCADE
    ON UPDATE CASCADE,
  CONSTRAINT `fk_comment_userinfo1`
    FOREIGN KEY (`user_id`)
    REFERENCES `THISIS`.`UserInfo` (`user_id`)
    ON DELETE CASCADE
    ON UPDATE CASCADE)
ENGINE = InnoDB
COMMENT = '   ';
ํŒ”๋กœ์›Œ/ํŒ”๋กœ์ž‰ ํ…Œ์ด๋ธ”
drop table IF EXISTS `THISIS`.`followers_following`;
CREATE TABLE IF NOT EXISTS `THISIS`.`followers_following` (
  `follower` INT NOT NULL,
  `followee` INT NOT NULL,
  PRIMARY KEY (`follower`, `followee`),
  CONSTRAINT `fk_follower_followering_userinfo1`
    FOREIGN KEY (`follower`)
    REFERENCES `THISIS`.`UserInfo` (`user_id`)
    ON DELETE CASCADE
    ON UPDATE CASCADE,
     CONSTRAINT `fk_follower_followering_userinfo2`
    FOREIGN KEY (`followee`)
    REFERENCES `THISIS`.`UserInfo` (`user_id`)
    ON DELETE CASCADE
    ON UPDATE CASCADE
    )
ENGINE = InnoDB;
๊ฑด๊ฐ•ํ•ด์š” ํ…Œ์ด๋ธ”
drop table IF EXISTS `THISIS`.`health`;
CREATE TABLE IF NOT EXISTS `THISIS`.`health` (
  `posts_id` INT NOT NULL,
  `user_id` INT NOT NULL,
  PRIMARY KEY (`posts_id`, `user_id`),
  CONSTRAINT `fk_health_posts1`
    FOREIGN KEY (`posts_id`)
    REFERENCES `THISIS`.`posts` (`posts_id`)
    ON DELETE CASCADE
    ON UPDATE CASCADE,
  CONSTRAINT `fk_health_userinfo1`
    FOREIGN KEY (`user_id`)
    REFERENCES `THISIS`.`UserInfo` (`user_id`)
    ON DELETE CASCADE
    ON UPDATE CASCADE)
ENGINE = InnoDB;

์Šคํฌ๋žฉ ํ…Œ์ด๋ธ”

drop table IF EXISTS `THISIS`.`scrap`;
CREATE TABLE IF NOT EXISTS `THISIS`.`scrap` (
  `user_id` INT NOT NULL,
  `posts_id` INT NOT NULL,
  PRIMARY KEY (`user_id`, `posts_id`),
  CONSTRAINT `fk_scrap_userinfo1`
    FOREIGN KEY (`user_id`)
    REFERENCES `THISIS`.`UserInfo` (`user_id`)
    ON DELETE CASCADE
    ON UPDATE CASCADE,
  CONSTRAINT `fk_scrap_posts`
    FOREIGN KEY (`posts_id`)
    REFERENCES `THISIS`.`posts` (`posts_id`)
    ON DELETE CASCADE
    ON UPDATE CASCADE)
ENGINE = InnoDB;

์งˆ๋ณ‘ ํ…Œ์ด๋ธ”

drop table IF EXISTS `THISIS`.`subscribe`;
CREATE TABLE IF NOT EXISTS `THISIS`.`subscribe` (
  `diseasecode` VARCHAR(45) NOT NULL,
  `user_id` INT NOT NULL,
  PRIMARY KEY (`user_id`, `diseasecode`),
  CONSTRAINT `fk_subscribe_userinfo1`
    FOREIGN KEY (`user_id`)
    REFERENCES `THISIS`.`UserInfo` (`user_id`)
    ON DELETE CASCADE
    ON UPDATE CASCADE)
ENGINE = InnoDB;

๊ตฌ๋… ํ…Œ์ด๋ธ”

drop table IF EXISTS `THISIS`.`subscribe`;
CREATE TABLE  `THISIS`.`subscribe` (
  `user_id` INT NOT NULL,
  `diseasecode` VARCHAR(45) NULL,
  PRIMARY KEY (`user_id`, `diseasecode`))
ENGINE = InnoDB;

ํƒœ๊ทธ ํ…Œ์ด๋ธ”

drop table IF EXISTS `THISIS`.`tag`;
CREATE TABLE IF NOT EXISTS `THISIS`.`tag` (
  `tagid` INT NOT NULL AUTO_INCREMENT,
  `tagname` VARCHAR(45) NULL,
  PRIMARY KEY (`tagid`))
ENGINE = InnoDB;

ํƒœ๊ทธ ๊ด€๊ณ„ ํ…Œ์ด๋ธ”

drop table IF EXISTS `THISIS`.`tag_relation`;
CREATE TABLE IF NOT EXISTS `THISIS`.`tag_relation` (
  `tagid` INT NOT NULL,
  `posts_id` INT NOT NULL,
  PRIMARY KEY (`tagid`, `posts_id`),
  CONSTRAINT `fk_tag_has_posts_tag1`
    FOREIGN KEY (`tagid`)
    REFERENCES `THISIS`.`tag` (`tagid`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `fk_tag_has_posts_posts1`
    FOREIGN KEY (`posts_id`)
    REFERENCES `THISIS`.`posts` (`posts_id`)
    ON DELETE CASCADE
    ON UPDATE CASCADE)
ENGINE = InnoDB;

๋Œ“๊ธ€ ๊ฑด๊ฐ•ํ•ด์š” ํ…Œ์ด๋ธ”

drop table IF EXISTS `THISIS`.`comment_health`;
CREATE TABLE IF NOT EXISTS `THISIS`.`comment_health` (
  `comment_id` INT NOT NULL,
  `user_id` INT NOT NULL,
  PRIMARY KEY (`comment_id`, `user_id`),
  CONSTRAINT `fk_comment_health_comment1`
    FOREIGN KEY (`comment_id`)
    REFERENCES `THISIS`.`comment` (`comment_id`)
    ON DELETE CASCADE
    ON UPDATE CASCADE,
  CONSTRAINT `fk_comment_health_userinfo1`
    FOREIGN KEY (`user_id`)
    REFERENCES `THISIS`.`UserInfo` (`user_id`)
    ON DELETE CASCADE
    ON UPDATE CASCADE)
ENGINE = InnoDB;

์‹ ๊ณ ํ•ด์š” ํ…Œ์ด๋ธ”

drop table IF EXISTS `THISIS`.`police`;
CREATE TABLE IF NOT EXISTS `THISIS`.`police` (
  `posts_id` INT NOT NULL,
  `user_id` INT NOT NULL,
  `reason` VARCHAR(100) NULL,
  `police_id` INT NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`police_id`),
  CONSTRAINT `fk_police_posts1`
    FOREIGN KEY (`posts_id`)
    REFERENCES `THISIS`.`posts` (`posts_id`)
    ON DELETE CASCADE
    ON UPDATE CASCADE,
  CONSTRAINT `fk_police_userinfo1`
    FOREIGN KEY (`user_id`)
    REFERENCES `THISIS`.`UserInfo` (`user_id`)
    ON DELETE CASCADE
    ON UPDATE CASCADE)
ENGINE = InnoDB;

์˜์‚ฌ ์ธ์ฆ ํ…Œ์ด๋ธ”

drop table IF EXISTS `THISIS`.`doctor`;
CREATE TABLE IF NOT EXISTS `THISIS`.`doctor` (
  `user_id` INT NOT NULL,
  `doctorimg` VARCHAR(45) NULL,
  `doctorauth` VARCHAR(45) NULL,
  `doctor_id` INT NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`doctor_id`),
  CONSTRAINT `fk_doctor_userinfo1`
    FOREIGN KEY (`user_id`)
    REFERENCES `THISIS`.`UserInfo` (`user_id`)
    ON DELETE CASCADE
    ON UPDATE CASCADE)
ENGINE = InnoDB;

Rest API

Category Task Method Path
๊ฒŒ์‹œ๋ฌผ ๋ชจ๋“  ๊ฒŒ์‹œ๊ธ€ ์กฐํšŒ GET /articles
๊ฒŒ์‹œ๋ฌผ ๊ฒŒ์‹œ๊ธ€ ์ƒ์„ฑ POST /articles
๊ฒŒ์‹œ๋ฌผ ๊ฒŒ์‹œ๊ธ€ ์ˆ˜์ • PUT /articles/{posts_id}
๊ฒŒ์‹œ๋ฌผ ๊ฒŒ์‹œ๊ธ€ ์‚ญ์ œ DELETE /articles/{posts_id}
๊ฒŒ์‹œ๋ฌผ ์œ ์ €์— ํ•ด๋‹นํ•˜๋Š” ๋ชจ๋“  ๊ฒŒ์‹œ๊ธ€ ๋ฐ˜ํ™˜ GET /articles/{user_id}
๊ฒŒ์‹œ๋ฌผ user_id ์ธ์ž์— ํ•ด๋‹นํ•˜๋Š” ๊ฒŒ์‹œํŒ ๋ชฉ๋ก๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. GET /articles/new
๊ฒŒ์‹œ๋ฌผ ๊ฒŒ์‹œ๊ธ€ ์ƒ์„ฑ : ํƒœ๊ทธํฌํ•จ POST /articles/new
๊ฒŒ์‹œ๋ฌผ ํŒŒ์ผ์„ ์ž…๋ ฅํ•œ๋‹ค. POST /articles/upload
์ด๋ฉ”์ผ ์ด๋ฉ”์ผ ์ฐพ๊ธฐ GET /email
ํŒ”๋กœ์šฐ ํŒ”๋กœ์šฐ ์ƒ์„ฑ POST /follow
ํŒ”๋กœ์šฐ ํŒ”๋กœ์šฐ ์‚ญ์ œ DELETE /follow
ํŒ”๋กœ์šฐ ํŒ”๋กœ์ž‰ ์ •๋ณด ๋ฐ˜ํ™˜ GET /follow/followee/{user_id}
ํŒ”๋กœ์šฐ ํŒ”๋กœ์ž‰ ์ง‘๊ณ„ ์ •๋ณด ๋ฐ˜ํ™˜ GET /follow/followee/sum/{user_id}
ํŒ”๋กœ์šฐ ํŒ”๋กœ์›Œ ์ •๋ณด ๋ฐ˜ํ™˜ GET /follow/follwer/{user_id}
ํŒ”๋กœ์šฐ ํŒ”๋กœ์›Œ ์ง‘๊ณ„ ์ •๋ณด ๋ฐ˜ํ™˜ GET /follow/follower/sum/{user_id}
์Šคํฌ๋žฉ ํ•ด๋‹นํ•˜๋Š” ์Šคํฌ๋žฉ ์œ ๋ฌด GET /scrap
์Šคํฌ๋žฉ ์Šคํฌ๋žฉ ์ถ”๊ฐ€ POST /scrap
์Šคํฌ๋žฉ ์Šคํฌ๋žฉ ์‚ญ์ œ DELETE /scrap/{posts_id}/{user_id}
์Šคํฌ๋žฉ ์Šคํฌ๋žฉ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ GET /scrap/{user_id}
๊ฑด๊ฐ•ํ•ด์š” ๊ฑด๊ฐ•ํ•ด์š” ์ถ”๊ฐ€ POST /health/{posts_id}
๊ฑด๊ฐ•ํ•ด์š” ์‚ฌ๋žŒ์— ํ•ด๋‹นํ•˜๋Š” ๊ฑด๊ฐ•ํ•ด์š” ๋ฐ˜ํ™˜ GET /health/{user_id}
๊ฑด๊ฐ•ํ•ด์š” ๊ฒŒ์‹œ๊ธ€์— ํ•ด๋‹นํ•˜๋Š” ๊ฑด๊ฐ•ํ•ด์š” ์ˆ˜ ๋ฐ˜ํ™˜ GET /health/post/{posts_id}
๊ฑด๊ฐ•ํ•ด์š” ์‚ฌ๋žŒ์— ํ•ด๋‹นํ•˜๋Š” ๊ฑด๊ฐ•ํ•ด์š” ์ˆ˜ ๋ฐ˜ํ™˜ GET /health/user/{user_id}
์•Œ๋žŒ/์š”์ฒญ ๋ชจ๋“  ์•Œ๋žŒ/์š”์ฒญ์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค GET /notification
์•Œ๋žŒ/์š”์ฒญ ํŒ”๋กœ์šฐ๋ฅผ ์š”์ฒญํ–ˆ์„ ๋•Œ ๋ ˆ์ฝ”๋“œ๋ฅผ ์ €์žฅํ•œ๋‹ค POST /notification
์•Œ๋žŒ/์š”์ฒญ ํ•ด๋‹น id์— ํ•ด๋‹นํ•˜๋Š” ์•Œ๋ฆผ/์š”์ฒญ ์ •๋ณด ์ˆ˜์ • PUT /notification
์•Œ๋žŒ/์š”์ฒญ ํŒ”๋กœ์šฐ ์š”์ฒญ ์ทจ์†Œ ์‹œ ๋ ˆ์ฝ”๋“œ ์‚ญ์ œ DELETE /notification
์•Œ๋žŒ/์š”์ฒญ ํ•ด๋‹น user_id๊ฐ€ followee์ธ ๋ ˆ์ฝ”๋“œ ๋ชฉ๋ก ์กฐํšŒ GET /notification/followee/{user_id}
์•Œ๋žŒ/์š”์ฒญ ํ•ด๋‹น user_id๊ฐ€ follower์ธ ๋ ˆ์ฝ”๋“œ ๋ชฉ๋ก ์กฐํšŒ GET /notification/follower/{user_id}
๋Œ“๊ธ€ ๋Œ“๊ธ€ ์ƒ์„ฑ POST /comment
๋Œ“๊ธ€ ๋Œ“๊ธ€ ์ˆ˜์ • PUT /comment/{comment_id}
๋Œ“๊ธ€ ๋Œ“๊ธ€ ์‚ญ์ œ DELETE /comment/{comment_id}
๋Œ“๊ธ€ ๊ฒŒ์‹œํŒ์— ํ•ด๋‹นํ•˜๋Š” ๋Œ“๊ธ€๋“ค์„ ๋ฐ˜ํ™˜ GET /comment/{posts_id}
๋Œ“๊ธ€ ์ˆจ๊น€ ์„ค์ • PUT /comment/hidden/{comment_id}
ํšŒ์›๊ด€๋ฆฌ ๋ชจ๋“  ํšŒ์› ์ •๋ณด๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค GET /account
ํšŒ์›๊ด€๋ฆฌ ์œ ์ € ID์— ํ•ด๋‹นํ•˜๋Š” ํšŒ์› ์ •๋ณด๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค GET /account/{user_id}
ํšŒ์›๊ด€๋ฆฌ ์œ ์ € ID์— ํ•ด๋‹นํ•˜๋Š” ํšŒ์› ์ •๋ณด๋ฅผ ์ˆ˜์ •ํ•œ๋‹ค PUT /account/{user_id}
ํšŒ์›๊ด€๋ฆฌ ํšŒ์› ํƒˆํ‡ด ์‹œ ํšŒ์› ์ •๋ณด๋ฅผ ์‚ญ์ œํ•œ๋‹ค DELETE /account/{user_id}
ํšŒ์›๊ด€๋ฆฌ ์ด๋ฉ”์ผ ์ค‘๋ณต ํ…Œ์ŠคํŠธ GET /account/email
ํšŒ์›๊ด€๋ฆฌ ํšŒ์› email๊ณผ password๋กœ ๋กœ๊ทธ์ธ ๊ฐ€๋Šฅ ์—ฌ๋ถ€ GET /account/login
ํšŒ์›๊ด€๋ฆฌ ๋‹‰๋„ค์ž„ ์ค‘๋ณต ํ…Œ์ŠคํŠธ GET /account/nickname
ํšŒ์›๊ด€๋ฆฌ ์œ ์ € id์— ํ•ด๋‹นํ•˜๋Š” ํ”„๋กœํ•„ ์ •๋ณด๋ฅผ ๋ฐ˜ํ™˜ GET /account/profile/{user_id}
ํšŒ์›๊ด€๋ฆฌ accesstoken ์žฌ์ƒ์„ฑ ํ…Œ์ŠคํŠธ POST /account/refreshAccessToken
ํšŒ์›๊ด€๋ฆฌ ๊ฒ€์ƒ‰์—์–ด ํ•ด๋‹นํ•˜๋Š” ํšŒ์› ์ •๋ณด ๋ฐ˜ํ™˜ GET /account/search
ํšŒ์›๊ด€๋ฆฌ ์œ ์ € ํšŒ์›๊ฐ€์ž… ์‹œ ํšŒ์› ์ •๋ณด ๋“ฑ๋ก POST /account/signup
ํšŒ์›๊ด€๋ฆฌ ์ด๋ฏธ์ง€ ์ฃผ์†Œ ์ž…๋ ฅ POST /account/upload
ํƒœ๊ทธ ํƒœ๊ทธ ์ถ”๊ฐ€ POST /tag
ํƒœ๊ทธ ํƒœ๊ทธ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ GET /tag/{tagid}
ํƒœ๊ทธ ํƒœ๊ทธ ์‚ญ์ œ DELETE /tag/{tagid}
ํƒœ๊ทธ ๋ฆด๋ ˆ์ด์…˜ ํƒœ๊ทธ ๋ฆด๋ ˆ์ด์…˜ ์ถ”๊ฐ€ POST /tag-relation
ํƒœ๊ทธ ๋ฆด๋ ˆ์ด์…˜ ํƒœ๊ทธ ๋ฆด๋ ˆ์ด์…˜ ์‚ญ์ œ DELETE /tag-relation/{tagid}/{posts_id}
ํƒœ๊ทธ ๋ฆด๋ ˆ์ด์…˜ ํƒœ๊ทธ ๋ฆด๋ ˆ์ด์…˜ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ(๊ฒŒ์‹œ๊ธ€) GET /tag-relation/post/{posts_id}
ํƒœ๊ทธ ๋ฆด๋ ˆ์ด์…˜ ํƒœ๊ทธ ๋ฆด๋ ˆ์ด์…˜ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ(ํƒœ๊ทธ) GET /tag-relation/tag/{tagid}
๋Œ“๊ธ€ ๊ฑด๊ฐ•ํ•ด์š” ๋Œ“๊ธ€ ๊ฑด๊ฐ•ํ•ด์š” ์ถ”๊ฐ€ POST /comment-health/{comment_id}
๋Œ“๊ธ€ ๊ฑด๊ฐ•ํ•ด์š” ์‚ฌ๋žŒ์— ํ•ด๋‹นํ•˜๋Š” ๋Œ“๊ธ€ ๊ฑด๊ฐ•ํ•ด์š” ๋ฐ˜ํ™˜ GET /comment-health/{user_id}
๋Œ“๊ธ€ ๊ฑด๊ฐ•ํ•ด์š” ๊ฒŒ์‹œ๊ธ€์— ํ•ด๋‹นํ•˜๋Š” ๋Œ“๊ธ€ ๊ฑด๊ฐ•ํ•ด์š” ์ˆ˜ ๋ฐ˜ํ™˜ GET /comment-health/comment/{comment_id}
๋Œ“๊ธ€ ๊ฑด๊ฐ•ํ•ด์š” ์‚ฌ๋žŒ์— ํ•ด๋‹นํ•˜๋Š” ๋Œ“๊ธ€ ๊ฑด๊ฐ•ํ•ด์š” ์ˆ˜ ๋ฐ˜ํ™˜ GET /comment-health/user/{user_id}
์งˆ๋ณ‘ ํƒœ๊ทธ ๋ชจ๋“  ์งˆ๋ณ‘ ์ •๋ณด๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค GET /disease
์งˆ๋ณ‘ ํƒœ๊ทธ ์งˆ๋ณ‘ ์ •๋ณด๋ฅผ ๋“ฑ๋กํ•œ๋‹ค POST /disease
์งˆ๋ณ‘ ํƒœ๊ทธ ์งˆ๋ณ‘ ์ •๋ณด๋ฅผ ์‚ญ์ œํ•œ๋‹ค DELETE /disease
์งˆ๋ณ‘ ํƒœ๊ทธ ์งˆ๋ณ‘์ฝ”๋“œ์— ํ•ด๋‹นํ•˜๋Š” ์งˆ๋ณ‘ ์ •๋ณด๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค GET /disease/diseasecode
๊ตฌ๋…ํ•˜๊ธฐ ๋ชจ๋“  ๊ตฌ๋… ์ •๋ณด๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค GET /subscribe
๊ตฌ๋…ํ•˜๊ธฐ ์œ ์ €์˜ ์งˆ๋ณ‘ ๊ตฌ๋… ์—ฌ๋ถ€๋ฅผ ์ €์žฅํ•œ๋‹ค POST /subscribe
๊ตฌ๋…ํ•˜๊ธฐ ์œ ์ €๊ฐ€ ์งˆ๋ณ‘ ๊ตฌ๋…์„ ์ทจ์†Œํ•œ๋‹ค DELETE /subscribe
๊ตฌ๋…ํ•˜๊ธฐ ์œ ์ € ์•„์ด๋””์— ํ•ด๋‹นํ•˜๋Š” ๊ตฌ๋… ์ •๋ณด๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค GET /subscribe/user
์‹ ๊ณ ํ•˜๊ธฐ ์‹ ๊ณ ํ•œ๋‹ค ์ƒ์„ฑ POST /subscribe/user
๊ด€๋ฆฌ์ž ๊ธฐ๋Šฅ ์‹ ๊ณ  ๋งŽ์ด ๋ฐ›์€ ์ˆœ์œผ๋กœ ๊ฒŒ์‹œ๊ธ€ ๋ฐ˜ํ™˜ POST /admin/post
๊ด€๋ฆฌ์ž ๊ธฐ๋Šฅ ๊ฒŒ์‹œ๊ธ€ ์ˆจ๊น€ POST /admin/post/{posts_id}
๊ด€๋ฆฌ์ž ๊ธฐ๋Šฅ ๊ฒŒ์‹œ๊ธ€ ์‚ญ์ œ DELETE /admin/post/{posts_id}
๊ด€๋ฆฌ์ž ๊ธฐ๋Šฅ ์‹ ๊ณ  ๋งŽ์ด ๋ฐ›์€ ์ˆœ์œผ๋กœ ์œ ์ € ๋ฐ˜ํ™˜ POST /admin/user
๊ด€๋ฆฌ์ž ๊ธฐ๋Šฅ ๊ณ„์ •์‚ฌ์šฉ์ •์ง€ POST /admin/user/disable
๊ด€๋ฆฌ์ž ๊ธฐ๋Šฅ ์œ ์ €๊ฐ€ ์‹ ๊ณ ๋ฐ›์€ ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. GET /admin/police/user/{user_id}
๊ด€๋ฆฌ์ž ๊ธฐ๋Šฅ ๊ฒŒ์‹œ๊ธ€์— ํ•ด๋‹นํ•˜๋Š” ์‹ ๊ณ ํ•œ๋‹ค ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค GET /admin/police/post/{posts_id}
๊ด€๋ฆฌ์ž ๊ธฐ๋Šฅ ๊ฒŒ์‹œ๊ธ€์— ํ•ด๋‹นํ•˜๋Š” ๋ชจ๋“  ์‹ ๊ณ ํ•œ๋‹ค๋ฅผ ๋ฐ˜ํ™˜ GET /admin/police/post/{posts_id}
๊ด€๋ฆฌ์ž ๊ธฐ๋Šฅ ์œ ์ €์— ํ•ด๋‹นํ•˜๋Š” ๋ชจ๋“  ์‹ ๊ณ  ์ž๋ฃŒ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค GET /admin/police/users/{user_id}
๊ด€๋ฆฌ์ž ๊ธฐ๋Šฅ ๋ชจ๋“  ์˜์‚ฌ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค GET /admin/doctor-auth
๊ด€๋ฆฌ์ž ๊ธฐ๋Šฅ ์ฒดํฌํ•˜์ง€ ์•Š์€ ์‚ฌ๋žŒ๋“ค์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค GET /admin/doctor-auth/check
๊ด€๋ฆฌ์ž ๊ธฐ๋Šฅ ์˜์‚ฌ ๊ฒฐ์ • PUT /admin/doctor-auth
์˜์‚ฌ์‹ ์ฒญ ์˜์‚ฌ ์ •๋ณด๋ฅผ ์‹ ์ฒญํ•œ๋‹ค POST /doctor/register
์˜์‚ฌ์‹ ์ฒญ ๋‚ด ์‹ ์ฒญ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค GET /doctor/result

Browser Support

latestโœ” latestโœ” latestโœ”

๐Ÿ‘€ ์„œ๋น„์Šค ์„ค๋ช…

โ€‹ ๋กœ๋”ฉ ํ™”๋ฉด - ๋กœ๊ทธ์ธ์œผ๋กœ ๋„˜์–ด๊ฐ€๊ธฐ ์ „์— ์ฒ˜์Œ์œผ๋กœ ๋ณด์—ฌ์ฃผ๋Š” ํŽ˜์ด์ง€

โ€‹ ๋กœ๊ทธ์ธ ํ™”๋ฉด - ์ €์žฅ๋œ ๊ณ„์ •์„ ๊ฐ€์ง€๊ณ  ์ด๋ฉ”์ผ๊ณผ ํŒจ์Šค์›Œ๋“œ๋ฅผ ์ž…๋ ฅ๋ฐ›๋Š” ํŽ˜์ด์ง€

โ€‹ ํšŒ์›๊ฐ€์ž… ํ™”๋ฉด - ๊ณ„์ •์„ ํšŒ์›๊ฐ€์ž… ํ•  ์ˆ˜ ์žˆ๋Š” ํƒญ์œผ๋กœ ์ค‘๋ณต์—ฌ๋ถ€๋„ ์•Œ๋ ค์ค€๋‹ค

โ€‹ ๋น„๋ฐ€๋ฒˆํ˜ธ ์ฐพ๊ธฐ ํƒญ - ์ž„์˜๋กœ ์žฌ์ƒ์„ฑ๋œ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ด๋ฉ”์ผ๋กœ ๋ณด๋‚ด์ฃผ๊ณ  ํ”„๋กœํ•„ ๋ณ€๊ฒฝ์—์„œ ๋น„๋ฐ€๋ฒˆํ˜ธ ์ˆ˜์ •์ด ๊ฐ€๋Šฅํ•˜๋‹ค

โ€‹ ๊ฒ€์ƒ‰ ํ™”๋ฉด - ์‚ฌ์šฉ์ž๋ฅผ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ๋Š” ํ™”๋ฉด์œผ๋กœ ๋ˆ„๋ฅผ ์‹œ ์ƒ๋Œ€๋ฐฉ ํ”„๋กœํ•„์— ๋“ค์–ด๊ฐ€์ง

โ€‹ ๊ฒ€์ƒ‰ ํ™”๋ฉด - ์งˆ๋ณ‘์„ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ๋Š” ํ™”๋ฉด์œผ๋กœ ์งˆ๋ณ‘ ํŒ”๋กœ์šฐ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค

โ€‹ ๋ฉ”์ธ ํ”ผ๋“œ - ๋ฉ”์ธ ํ™”๋ฉด์œผ๋กœ ํŒ”๋กœ์šฐํ•œ ์‚ฌ๋žŒ๋“ค์˜ ๊ฒŒ์‹œ๊ธ€๋“ค์„ ๋ณด์—ฌ์ฃผ๋Š” ํ™”๋ฉด์œผ๋กœ ๊ฑด๊ฐ•ํ•ด์š”, ๋Œ“๊ธ€, ์Šคํฌ๋žฉ, (์ž์‹ ์˜ ๊ฒŒ์‹œ๊ธ€์ผ ๊ฒฝ์šฐ) ์ˆ˜์ • ๊ฐ€๋Šฅ

โ€‹ Q&A ๊ฒŒ์‹œํŒ - Q&A ๊ฒŒ์‹œํŒ์œผ๋กœ ์งˆ๋ฌธํ•˜๊ณ  ๋‹ต๋ณ€ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒŒ์‹œํŒ

โ€‹ ๋‰ด์Šค ๊ฒ€์ƒ‰ - ํ‚ค์›Œ๋“œ๋กœ ๊ฒ€์ƒ‰์„ ํ•˜๋ฉด ๋‰ด์Šค๋ฅผ ๊ฒ€์ƒ‰ํ•ด์คŒ

โ€‹ ๊ฒŒ์‹œ๊ธ€ ์ž‘์„ฑ - ๊ฒŒ์‹œ๊ธ€์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ํ™”๋ฉด์œผ๋กœ ์ด๋ฏธ์ง€ ์—…๋กœ๋“œ๊ฐ€ ๊ฐ€๋Šฅํ•˜๊ณ  ํƒœ๊ทธ๋“ค์„ ๊ฒŒ์‹œ๊ธ€์— ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

โ€‹ ์•Œ๋ฆผ ์š”์ฒญ - ํŒ”๋กœ์ž‰์„ ํ–ˆ์„ ๊ฒฝ์šฐ & ํŒ”๋กœ์ž‰ ๊ฒฐ๊ณผ๋ฅผ ์•Œ๋ ค์ค„ ๋•Œ ์•Œ๋žŒ์—์„œ ํŒ”๋กœ์ž‰์„ ๋ฐ›์•˜์„ ๋•Œ๋Š” ์š”์ฒญํƒญ์œผ๋กœ ์š”์ฒญ์ด ์™€์„œ ์Šน๋‚™ ํ˜น์€ ๊ฑฐ์ ˆ์„ ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ๋‹ค

โ€‹ ๋ฉ”์ธ ํ”„๋กœํ•„ ํ™”๋ฉด - ๋ฉ”์ธ ํ”„๋กœํ•„ ํ™”๋ฉด์œผ๋กœ ๋‚ด ์ •๋ณด๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ํ™”๋ฉด์œผ๋กœ ๋‚ด๊ฐ€ ์“ด ๊ฒŒ์‹œ๊ธ€, ๋‚˜์˜ ์Šคํฌ๋žฉ ๋“ฑ๋„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

โ€‹ ํ”„๋กœํ•„ ๋ณ€๊ฒฝ - ์ž์‹ ์˜ ํ”„๋กœํ•„์„ ๋ณ€๊ฒฝํ•˜๋Š” ํƒญ์œผ๋กœ ์˜ค๋ฅธ์ชฝ ํ‚ค ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ๋น„๋ฐ€๋ฒˆํ˜ธ ๋ณ€๊ฒฝ ์—ญ์‹œ ๊ฐ€๋Šฅํ•˜๋‹ค

โ€‹ ๋น„๋ฐ€๋ฒˆํ˜ธ ๋ณ€๊ฒฝ - ์ž์‹ ์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ํƒญ์œผ๋กœ ์˜์‚ฌ์ธ์ฆ๊ณผ ํšŒ์› ํƒˆํ‡ด๊ฐ€ ๊ฐ€๋Šฅํ•œ ํƒญ์ด๋‹ค

โ€‹ ์˜์‚ฌ ์ธ์ฆ - ์˜์‚ฌ๋ฅผ ์ธ์ฆ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ํƒญ์œผ๋กœ ์‚ฌ์ง„์„ ํ†ตํ•ด ์˜์‚ฌ ์ธ์ฆ ์‹ ์ฒญ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

๐Ÿ’ช๊ธฐ์—ฌ ๋ฐฉ๋ฒ•

๊ณ ๋ ค ์‚ฌํ•ญ

  • ํ”„๋กœ์ ํŠธ๋ฅผ ๋ณ€๊ฒฝํ•˜๋ ค๋Š” ์‚ฌ๋žŒ๋“ค์€ ์‹œ์ž‘ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๋ฌธ์„œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.
  • ์‹คํ–‰ํ•ด์•ผํ•˜๋Š” ์Šคํฌ๋ฆฝํŠธ ๋‚˜ ์„ค์ •ํ•ด์•ผ ํ•  ํ™˜๊ฒฝ ๋ณ€์ˆ˜๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ด ๋‹จ๊ณ„๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ์ž‘์„ฑํ•˜์‹ญ์‹œ์˜ค.
  • AWS ์„œ๋ฒ„์˜ ์ž‘๋™ ์œ ๋ฌด๋ฅผ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.

Git Rules

  • git pull origin develop๋ฅผ ํ†ตํ•ด develop์™€ ๋จผ์ € merge ํ•œ ์ƒํƒœ๋กœ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  • git status๋ฅผ ํ†ตํ•ด ๋ณ€๊ฒฝ ๋œ ์ ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค
  • git add ๋ฅผ ํ†ตํ•ด์„œ ๋ณ€๊ฒฝ์„ ์ฃผ๊ณ  ์‹ถ์€ ์ ์„ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  • git commit -m "์ง€๋ผ๋ฒˆํ˜ธ" ๋ฅผ ํ†ตํ•ด์„œ ๊ฐ ์ง€๋ผ์— ๋“ฑ๋ก์„ ํ•ด์„œ ์ปค๋ฐ‹ํ•ฉ๋‹ˆ๋‹ค.
  • git push origin feature/"๊ฐœ๋ฐœ ๊ธฐ๋Šฅ"๋ฅผ ํ†ตํ•ด์„œ ๊ธฐ๋Šฅ๊ธฐ๋ฆฌ ๊ฒน์น˜์ง€ ์•Š๊ฒŒ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  • git bash์—์„œ merge request๋ฅผ ์‹ ์ฒญํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ“œLicense

๋ณธ ๊ฐ€์ด๋“œ๋Š” MIT ๋ผ์ด์„ ์Šค ํ•˜์— ๊ณต๊ฐœํ•ฉ๋‹ˆ๋‹ค

  • ๊ณต์œ  - ๋ณต์ œ, ๋ฐฐํฌ, ํฌ๋งท ๋ณ€๊ฒฝ, ์ „์†ก, ์ „์‹œ, ๊ณต์—ฐ, ๋ฐฉ์†กํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋ณ€๊ฒฝ - ๋ฆฌ๋ฏน์Šค, ๋ณ€ํ˜•, 2์ฐจ์  ์ €์ž‘๋ฌผ ์ž‘์„ฑ ๋ฐ ์˜๋ฆฌ๋ชฉ์ ์˜ ์ด์šฉ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

thisis's People

Contributors

jieunchae avatar seeungkang avatar kimjaehyun94 avatar jaebee94 avatar

Stargazers

 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.