Skip to content

Commit e484c88

Browse files
verus-jtco0427airman5573nan-noosc0116
authored
feat: 스터디 목록 조회 및 검색 (#40)
* 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]>
1 parent 9f5050d commit e484c88

File tree

94 files changed

+50390
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

94 files changed

+50390
-0
lines changed

backend/.gitignore

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
HELP.md
2+
.gradle
3+
build/
4+
!gradle/wrapper/gradle-wrapper.jar
5+
!**/src/main/**/build/
6+
!**/src/test/**/build/
7+
8+
### STS ###
9+
.apt_generated
10+
.classpath
11+
.factorypath
12+
.project
13+
.settings
14+
.springBeans
15+
.sts4-cache
16+
bin/
17+
!**/src/main/**/bin/
18+
!**/src/test/**/bin/
19+
20+
### IntelliJ IDEA ###
21+
.idea
22+
*.iws
23+
*.iml
24+
*.ipr
25+
out/
26+
!**/src/main/**/out/
27+
!**/src/test/**/out/
28+
29+
### NetBeans ###
30+
/nbproject/private/
31+
/nbbuild/
32+
/dist/
33+
/nbdist/
34+
/.nb-gradle/
35+
36+
### VS Code ###
37+
.vscode/

backend/build.gradle

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
plugins {
2+
id 'org.springframework.boot' version '2.6.9'
3+
id 'io.spring.dependency-management' version '1.0.11.RELEASE'
4+
id 'java'
5+
}
6+
7+
group = 'com.woowacourse'
8+
version = '0.0.1-SNAPSHOT'
9+
sourceCompatibility = '11'
10+
11+
configurations {
12+
compileOnly {
13+
extendsFrom annotationProcessor
14+
}
15+
}
16+
17+
repositories {
18+
mavenCentral()
19+
}
20+
21+
dependencies {
22+
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
23+
implementation 'org.springframework.boot:spring-boot-starter-web'
24+
implementation 'org.springframework.boot:spring-boot-starter-validation'
25+
26+
compileOnly 'org.projectlombok:lombok'
27+
annotationProcessor 'org.projectlombok:lombok'
28+
29+
testImplementation 'org.springframework.boot:spring-boot-starter-test'
30+
testImplementation 'io.rest-assured:rest-assured'
31+
runtimeOnly 'com.h2database:h2'
32+
}
33+
34+
tasks.named('test') {
35+
useJUnitPlatform()
36+
}
58.4 KB
Binary file not shown.
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
distributionBase=GRADLE_USER_HOME
2+
distributionPath=wrapper/dists
3+
distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.1-bin.zip
4+
zipStoreBase=GRADLE_USER_HOME
5+
zipStorePath=wrapper/dists

backend/gradlew

Lines changed: 234 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,234 @@
1+
#!/bin/sh
2+
3+
#
4+
# Copyright © 2015-2021 the original authors.
5+
#
6+
# Licensed under the Apache License, Version 2.0 (the "License");
7+
# you may not use this file except in compliance with the License.
8+
# You may obtain a copy of the License at
9+
#
10+
# https://www.apache.org/licenses/LICENSE-2.0
11+
#
12+
# Unless required by applicable law or agreed to in writing, software
13+
# distributed under the License is distributed on an "AS IS" BASIS,
14+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15+
# See the License for the specific language governing permissions and
16+
# limitations under the License.
17+
#
18+
19+
##############################################################################
20+
#
21+
# Gradle start up script for POSIX generated by Gradle.
22+
#
23+
# Important for running:
24+
#
25+
# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is
26+
# noncompliant, but you have some other compliant shell such as ksh or
27+
# bash, then to run this script, type that shell name before the whole
28+
# command line, like:
29+
#
30+
# ksh Gradle
31+
#
32+
# Busybox and similar reduced shells will NOT work, because this script
33+
# requires all of these POSIX shell features:
34+
# * functions;
35+
# * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
36+
# «${var#prefix}», «${var%suffix}», and «$( cmd )»;
37+
# * compound commands having a testable exit status, especially «case»;
38+
# * various built-in commands including «command», «set», and «ulimit».
39+
#
40+
# Important for patching:
41+
#
42+
# (2) This script targets any POSIX shell, so it avoids extensions provided
43+
# by Bash, Ksh, etc; in particular arrays are avoided.
44+
#
45+
# The "traditional" practice of packing multiple parameters into a
46+
# space-separated string is a well documented source of bugs and security
47+
# problems, so this is (mostly) avoided, by progressively accumulating
48+
# options in "$@", and eventually passing that to Java.
49+
#
50+
# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS,
51+
# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly;
52+
# see the in-line comments for details.
53+
#
54+
# There are tweaks for specific operating systems such as AIX, CygWin,
55+
# Darwin, MinGW, and NonStop.
56+
#
57+
# (3) This script is generated from the Groovy template
58+
# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
59+
# within the Gradle project.
60+
#
61+
# You can find Gradle at https://github.com/gradle/gradle/.
62+
#
63+
##############################################################################
64+
65+
# Attempt to set APP_HOME
66+
67+
# Resolve links: $0 may be a link
68+
app_path=$0
69+
70+
# Need this for daisy-chained symlinks.
71+
while
72+
APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path
73+
[ -h "$app_path" ]
74+
do
75+
ls=$( ls -ld "$app_path" )
76+
link=${ls#*' -> '}
77+
case $link in #(
78+
/*) app_path=$link ;; #(
79+
*) app_path=$APP_HOME$link ;;
80+
esac
81+
done
82+
83+
APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
84+
85+
APP_NAME="Gradle"
86+
APP_BASE_NAME=${0##*/}
87+
88+
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
89+
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
90+
91+
# Use the maximum available, or set MAX_FD != -1 to use that value.
92+
MAX_FD=maximum
93+
94+
warn () {
95+
echo "$*"
96+
} >&2
97+
98+
die () {
99+
echo
100+
echo "$*"
101+
echo
102+
exit 1
103+
} >&2
104+
105+
# OS specific support (must be 'true' or 'false').
106+
cygwin=false
107+
msys=false
108+
darwin=false
109+
nonstop=false
110+
case "$( uname )" in #(
111+
CYGWIN* ) cygwin=true ;; #(
112+
Darwin* ) darwin=true ;; #(
113+
MSYS* | MINGW* ) msys=true ;; #(
114+
NONSTOP* ) nonstop=true ;;
115+
esac
116+
117+
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
118+
119+
120+
# Determine the Java command to use to start the JVM.
121+
if [ -n "$JAVA_HOME" ] ; then
122+
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
123+
# IBM's JDK on AIX uses strange locations for the executables
124+
JAVACMD=$JAVA_HOME/jre/sh/java
125+
else
126+
JAVACMD=$JAVA_HOME/bin/java
127+
fi
128+
if [ ! -x "$JAVACMD" ] ; then
129+
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
130+
131+
Please set the JAVA_HOME variable in your environment to match the
132+
location of your Java installation."
133+
fi
134+
else
135+
JAVACMD=java
136+
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
137+
138+
Please set the JAVA_HOME variable in your environment to match the
139+
location of your Java installation."
140+
fi
141+
142+
# Increase the maximum file descriptors if we can.
143+
if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
144+
case $MAX_FD in #(
145+
max*)
146+
MAX_FD=$( ulimit -H -n ) ||
147+
warn "Could not query maximum file descriptor limit"
148+
esac
149+
case $MAX_FD in #(
150+
'' | soft) :;; #(
151+
*)
152+
ulimit -n "$MAX_FD" ||
153+
warn "Could not set maximum file descriptor limit to $MAX_FD"
154+
esac
155+
fi
156+
157+
# Collect all arguments for the java command, stacking in reverse order:
158+
# * args from the command line
159+
# * the main class name
160+
# * -classpath
161+
# * -D...appname settings
162+
# * --module-path (only if needed)
163+
# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.
164+
165+
# For Cygwin or MSYS, switch paths to Windows format before running java
166+
if "$cygwin" || "$msys" ; then
167+
APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
168+
CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )
169+
170+
JAVACMD=$( cygpath --unix "$JAVACMD" )
171+
172+
# Now convert the arguments - kludge to limit ourselves to /bin/sh
173+
for arg do
174+
if
175+
case $arg in #(
176+
-*) false ;; # don't mess with options #(
177+
/?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath
178+
[ -e "$t" ] ;; #(
179+
*) false ;;
180+
esac
181+
then
182+
arg=$( cygpath --path --ignore --mixed "$arg" )
183+
fi
184+
# Roll the args list around exactly as many times as the number of
185+
# args, so each arg winds up back in the position where it started, but
186+
# possibly modified.
187+
#
188+
# NB: a `for` loop captures its iteration list before it begins, so
189+
# changing the positional parameters here affects neither the number of
190+
# iterations, nor the values presented in `arg`.
191+
shift # remove old arg
192+
set -- "$@" "$arg" # push replacement arg
193+
done
194+
fi
195+
196+
# Collect all arguments for the java command;
197+
# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of
198+
# shell script including quotes and variable substitutions, so put them in
199+
# double quotes to make sure that they get re-expanded; and
200+
# * put everything else in single quotes, so that it's not re-expanded.
201+
202+
set -- \
203+
"-Dorg.gradle.appname=$APP_BASE_NAME" \
204+
-classpath "$CLASSPATH" \
205+
org.gradle.wrapper.GradleWrapperMain \
206+
"$@"
207+
208+
# Use "xargs" to parse quoted args.
209+
#
210+
# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
211+
#
212+
# In Bash we could simply go:
213+
#
214+
# readarray ARGS < <( xargs -n1 <<<"$var" ) &&
215+
# set -- "${ARGS[@]}" "$@"
216+
#
217+
# but POSIX shell has neither arrays nor command substitution, so instead we
218+
# post-process each arg (as a line of input to sed) to backslash-escape any
219+
# character that might be a shell metacharacter, then use eval to reverse
220+
# that process (while maintaining the separation between arguments), and wrap
221+
# the whole thing up as a single "set" statement.
222+
#
223+
# This will of course break if any of these variables contains a newline or
224+
# an unmatched quote.
225+
#
226+
227+
eval "set -- $(
228+
printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" |
229+
xargs -n1 |
230+
sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' |
231+
tr '\n' ' '
232+
)" '"$@"'
233+
234+
exec "$JAVACMD" "$@"

0 commit comments

Comments
 (0)