Skip to content

Commit

Permalink
feat: 스터디 목록 조회 및 검색 (#40)
Browse files Browse the repository at this point in the history
* chore: 프로젝트 생성

* chore: 프로젝트 세팅

* chore: 프로젝트 설정

1. 스토리북에서 이모션을 인식할 수 있도록 스토리북 웹팩 및 바벨 설정
2. 절대 경로 추가

* feat: theme 적용

emotion ThemeProvider 적용

Co-Authored-By: airman5573 <[email protected]>

* feat: Chip 컴포넌트 구현 및 스토리 작성

Co-Authored-By: airman5573 <[email protected]>

* chore: 절대 경로 추가

* styles
* custom-types

Co-Authored-By: airman5573 <[email protected]>

* feat: Card 컴포넌트 구현 및 스토리 작성

Co-Authored-By: airman5573 <[email protected]>

* refactor: 파일 폴더 이동

Chip story + types.d.ts

Co-Authored-By: airman5573 <[email protected]>

* refactor: Chip 스타일 파일 분리

Co-Authored-By: airman5573 <[email protected]>

* style: Globalstyle 적용

Co-Authored-By: airman5573 <[email protected]>

* feat: StudyChip 컴포넌트 구현

Co-Authored-By: airman5573 <[email protected]>

* feat: StudyCard 컴포넌트 구현 및 스토리 작성

Co-Authored-By: airman5573 <[email protected]>

* chore: pages 절대 경로 추가

* fix: Chip 로직 수정

* feat: MainPage 컴포넌트 구현 및 스토리 작성

Chip, Card, StudyCard 세부 스타일 수정
반응형 그리드 적용

* style: MainPage 그리드 스타일 수정

* feat: 스터디 목록 조회

* test: 스터디 목록 조회 인수 테스트 작성

* feat: 잘못된 페이징 정보로 목록 조회시 400 반환

* chore: spring-boot 버전 다운그레이드

인텔리제이에서 스프링 부트 2.7.1 버전 사용 시 빈을 찾을 수 없는 에러로
인해 2.6.9 버전으로 다운그레이드

* feat: 기본값 페이징 정보로 목록 조회 시 200 반환

* feat: 기본값 페이징 정보로 목록 조회 시 데이터 반환

* refactor: Pageable 적용

* feat: 정상적인 페이징 정보를 통해 스터디 목록 조회

* [FE] Feat/11-header (#20)

* fix: typo 수정

custom-styles를 custom-types로 수정

Co-authored-by: TaeYoon <[email protected]>

* feat: Header 컴포넌트 구현 및 스토리 작성

Header, Logo, Avatar, SearchBar 컴포넌트 구현

Co-authored-by: TaeYoon <[email protected]>

* style: font 추가

기존 폰트에 Bold, ExtraBold, Light 폰트를 추가

Co-authored-by: TaeYoon <[email protected]>

* feat: Home화면 구성

Header와 MainPage 컴포넌트를 App에 결합

Co-authored-by: TaeYoon <[email protected]>

* refactor: css를 붙여 일관성 유지

styled component안에서 theme을 사용할때 css함수를 붙였다. 왜냐하면, 자동완성 기능과 VSC에서 가독성이 더 좋아지기 때문이다.

Co-authored-by: TaeYoon <[email protected]>

Co-authored-by: TaeYoon <[email protected]>

* feat: Header 및 Home Page UI 구현

* fix: typo 수정

custom-styles를 custom-types로 수정

Co-authored-by: TaeYoon <[email protected]>

* feat: Header 컴포넌트 구현 및 스토리 작성

Header, Logo, Avatar, SearchBar 컴포넌트 구현

Co-authored-by: TaeYoon <[email protected]>

* style: font 추가

기존 폰트에 Bold, ExtraBold, Light 폰트를 추가

Co-authored-by: TaeYoon <[email protected]>

* feat: Home화면 구성

Header와 MainPage 컴포넌트를 App에 결합

Co-authored-by: TaeYoon <[email protected]>

* refactor: css를 붙여 일관성 유지

styled component안에서 theme을 사용할때 css함수를 붙였다. 왜냐하면, 자동완성 기능과 VSC에서 가독성이 더 좋아지기 때문이다.

Co-authored-by: TaeYoon <[email protected]>

Co-authored-by: TaeYoon <[email protected]>

* refactor: 테스트 코드 및 패키지 구조 변경 (#23)

인수/통합 테스트는 HTTP 통신과 데이터베이스 상호작용을 함께 검증하는 E2E 테스트로 작성
단위 테스트는 외부적인 요소(HTTP 통신, 데이터베이스 등)을 제외하고 검증하는 가벼운 테스트로 작성
도메인 별로 패키지를 생성하고, 공통으로 사용하는 모듈의 경우 common 패키지에 위치
각 도메인 패키지 하위에 controller, service, domain 패키지 생성하여 관리

close: #22

* [BE] issue18: 스터디 제목으로 검색 (#24)

* test: 검색 관련 인수 테스트 작성

* feat: 키워드로 스터디 목록 검색

* feat: 앞뒤 공백을 제거한 키워드로 스터디 검색

* feat: cors 허용 (#29)

* feat: msw 서버 api 호출 후 렌더링 (#30)

* feat: mocking api 및 data fetch 구현

msw로 mocking api를 구현하고 |axios와 react-query를 사용하여 data fetch를 구현하였다

Co-authored-by: TaeYoon <[email protected]>

* feat: 검색 결과 렌더링

Co-authored-by: TaeYoon <[email protected]>

Co-authored-by: TaeYoon <[email protected]>

* [FE] issue27: 무한 스크롤 기능 추가 (#31)

* feat: mocking api 및 data fetch 구현

msw로 mocking api를 구현하고 |axios와 react-query를 사용하여 data fetch를 구현하였다

Co-authored-by: TaeYoon <[email protected]>

* feat: 검색 결과 렌더링

Co-authored-by: TaeYoon <[email protected]>

* style: 스터디 카드 제목 스타일 수정

일정 길이가 넘으면 ...으로 표현한다

Co-authored-by: TaeYoon <[email protected]>

* style: Footer 컴포넌트 구현

Co-authored-by: TaeYoon <[email protected]>

* perf: StudyCard memoization적용

Co-authored-by: TaeYoon <[email protected]>

* feat: Logo에 link 적용

Co-authored-by: TaeYoon <[email protected]>

* refactor: placeholder 수정

Co-authored-by: TaeYoon <[email protected]>

* refactor: 기본 로드 개수 변경

* refactor: 불필요한 코드 삭제

* refactor: infinite sc구현

* feat: dummy data 추가

* style: footer가 위쪽으로 이동하는 스타일 수정

메인 페이지에서 검색결과가 없거나 카드 데이타가 없을때 main에 최소 높이가 주어지지 않아, footer가 위로 올라오는 현상을 해결하였습니다.

Co-authored-by: TaeYoon <[email protected]>

Co-authored-by: TaeYoon <[email protected]>

* [FE] hotfix: git 충돌 에러 해결 (#32)

* feat: mocking api 및 data fetch 구현

msw로 mocking api를 구현하고 |axios와 react-query를 사용하여 data fetch를 구현하였다

Co-authored-by: TaeYoon <[email protected]>

* feat: 검색 결과 렌더링

Co-authored-by: TaeYoon <[email protected]>

* style: 스터디 카드 제목 스타일 수정

일정 길이가 넘으면 ...으로 표현한다

Co-authored-by: TaeYoon <[email protected]>

* style: Footer 컴포넌트 구현

Co-authored-by: TaeYoon <[email protected]>

* perf: StudyCard memoization적용

Co-authored-by: TaeYoon <[email protected]>

* feat: Logo에 link 적용

Co-authored-by: TaeYoon <[email protected]>

* refactor: placeholder 수정

Co-authored-by: TaeYoon <[email protected]>

* refactor: 기본 로드 개수 변경

* refactor: 불필요한 코드 삭제

* refactor: infinite sc구현

* feat: dummy data 추가

* style: footer가 위쪽으로 이동하는 스타일 수정

메인 페이지에서 검색결과가 없거나 카드 데이타가 없을때 main에 최소 높이가 주어지지 않아, footer가 위로 올라오는 현상을 해결하였습니다.

Co-authored-by: TaeYoon <[email protected]>

* fix: git 충돌 에러 해결

Co-authored-by: TaeYoon <[email protected]>

Co-authored-by: TaeYoon <[email protected]>

* docs: frontend README 파일 생성

로컬 실행 방법 작성

Co-authored-by: Donggyu <[email protected]>
Co-authored-by: airman5573 <[email protected]>
Co-authored-by: TaeYoon <[email protected]>
Co-authored-by: nan-noo <[email protected]>
Co-authored-by: airman5573 <[email protected]>
Co-authored-by: SeungCheol Shin <[email protected]>
  • Loading branch information
7 people authored Jul 12, 2022
1 parent 9f5050d commit e484c88
Show file tree
Hide file tree
Showing 94 changed files with 50,390 additions and 0 deletions.
37 changes: 37 additions & 0 deletions backend/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
HELP.md
.gradle
build/
!gradle/wrapper/gradle-wrapper.jar
!**/src/main/**/build/
!**/src/test/**/build/

### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache
bin/
!**/src/main/**/bin/
!**/src/test/**/bin/

### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr
out/
!**/src/main/**/out/
!**/src/test/**/out/

### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/

### VS Code ###
.vscode/
36 changes: 36 additions & 0 deletions backend/build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
plugins {
id 'org.springframework.boot' version '2.6.9'
id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id 'java'
}

group = 'com.woowacourse'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'

configurations {
compileOnly {
extendsFrom annotationProcessor
}
}

repositories {
mavenCentral()
}

dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-validation'

compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'

testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'io.rest-assured:rest-assured'
runtimeOnly 'com.h2database:h2'
}

tasks.named('test') {
useJUnitPlatform()
}
Binary file added backend/gradle/wrapper/gradle-wrapper.jar
Binary file not shown.
5 changes: 5 additions & 0 deletions backend/gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.1-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
234 changes: 234 additions & 0 deletions backend/gradlew
Original file line number Diff line number Diff line change
@@ -0,0 +1,234 @@
#!/bin/sh

#
# Copyright © 2015-2021 the original authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

##############################################################################
#
# Gradle start up script for POSIX generated by Gradle.
#
# Important for running:
#
# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is
# noncompliant, but you have some other compliant shell such as ksh or
# bash, then to run this script, type that shell name before the whole
# command line, like:
#
# ksh Gradle
#
# Busybox and similar reduced shells will NOT work, because this script
# requires all of these POSIX shell features:
# * functions;
# * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
# «${var#prefix}», «${var%suffix}», and «$( cmd )»;
# * compound commands having a testable exit status, especially «case»;
# * various built-in commands including «command», «set», and «ulimit».
#
# Important for patching:
#
# (2) This script targets any POSIX shell, so it avoids extensions provided
# by Bash, Ksh, etc; in particular arrays are avoided.
#
# The "traditional" practice of packing multiple parameters into a
# space-separated string is a well documented source of bugs and security
# problems, so this is (mostly) avoided, by progressively accumulating
# options in "$@", and eventually passing that to Java.
#
# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS,
# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly;
# see the in-line comments for details.
#
# There are tweaks for specific operating systems such as AIX, CygWin,
# Darwin, MinGW, and NonStop.
#
# (3) This script is generated from the Groovy template
# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
# within the Gradle project.
#
# You can find Gradle at https://github.com/gradle/gradle/.
#
##############################################################################

# Attempt to set APP_HOME

# Resolve links: $0 may be a link
app_path=$0

# Need this for daisy-chained symlinks.
while
APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path
[ -h "$app_path" ]
do
ls=$( ls -ld "$app_path" )
link=${ls#*' -> '}
case $link in #(
/*) app_path=$link ;; #(
*) app_path=$APP_HOME$link ;;
esac
done

APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit

APP_NAME="Gradle"
APP_BASE_NAME=${0##*/}

# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'

# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD=maximum

warn () {
echo "$*"
} >&2

die () {
echo
echo "$*"
echo
exit 1
} >&2

# OS specific support (must be 'true' or 'false').
cygwin=false
msys=false
darwin=false
nonstop=false
case "$( uname )" in #(
CYGWIN* ) cygwin=true ;; #(
Darwin* ) darwin=true ;; #(
MSYS* | MINGW* ) msys=true ;; #(
NONSTOP* ) nonstop=true ;;
esac

CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar


# Determine the Java command to use to start the JVM.
if [ -n "$JAVA_HOME" ] ; then
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
# IBM's JDK on AIX uses strange locations for the executables
JAVACMD=$JAVA_HOME/jre/sh/java
else
JAVACMD=$JAVA_HOME/bin/java
fi
if [ ! -x "$JAVACMD" ] ; then
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
else
JAVACMD=java
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi

# Increase the maximum file descriptors if we can.
if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
case $MAX_FD in #(
max*)
MAX_FD=$( ulimit -H -n ) ||
warn "Could not query maximum file descriptor limit"
esac
case $MAX_FD in #(
'' | soft) :;; #(
*)
ulimit -n "$MAX_FD" ||
warn "Could not set maximum file descriptor limit to $MAX_FD"
esac
fi

# Collect all arguments for the java command, stacking in reverse order:
# * args from the command line
# * the main class name
# * -classpath
# * -D...appname settings
# * --module-path (only if needed)
# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.

# For Cygwin or MSYS, switch paths to Windows format before running java
if "$cygwin" || "$msys" ; then
APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )

JAVACMD=$( cygpath --unix "$JAVACMD" )

# Now convert the arguments - kludge to limit ourselves to /bin/sh
for arg do
if
case $arg in #(
-*) false ;; # don't mess with options #(
/?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath
[ -e "$t" ] ;; #(
*) false ;;
esac
then
arg=$( cygpath --path --ignore --mixed "$arg" )
fi
# Roll the args list around exactly as many times as the number of
# args, so each arg winds up back in the position where it started, but
# possibly modified.
#
# NB: a `for` loop captures its iteration list before it begins, so
# changing the positional parameters here affects neither the number of
# iterations, nor the values presented in `arg`.
shift # remove old arg
set -- "$@" "$arg" # push replacement arg
done
fi

# Collect all arguments for the java command;
# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of
# shell script including quotes and variable substitutions, so put them in
# double quotes to make sure that they get re-expanded; and
# * put everything else in single quotes, so that it's not re-expanded.

set -- \
"-Dorg.gradle.appname=$APP_BASE_NAME" \
-classpath "$CLASSPATH" \
org.gradle.wrapper.GradleWrapperMain \
"$@"

# Use "xargs" to parse quoted args.
#
# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
#
# In Bash we could simply go:
#
# readarray ARGS < <( xargs -n1 <<<"$var" ) &&
# set -- "${ARGS[@]}" "$@"
#
# but POSIX shell has neither arrays nor command substitution, so instead we
# post-process each arg (as a line of input to sed) to backslash-escape any
# character that might be a shell metacharacter, then use eval to reverse
# that process (while maintaining the separation between arguments), and wrap
# the whole thing up as a single "set" statement.
#
# This will of course break if any of these variables contains a newline or
# an unmatched quote.
#

eval "set -- $(
printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" |
xargs -n1 |
sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' |
tr '\n' ' '
)" '"$@"'

exec "$JAVACMD" "$@"
Loading

0 comments on commit e484c88

Please sign in to comment.