Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
61 commits
Select commit Hold shift + click to select a range
e3ba7d8
feat : packages 세팅. 동작 확인
GulSam00 Mar 17, 2025
78a2a4d
fix : gpt 리뷰 코드 수정
GulSam00 Mar 17, 2025
78f0cb3
chore : type index에서 export 하게 변경. 경로 수정.
GulSam00 Mar 17, 2025
b5b5156
feat : gpt 리뷰 수정. 쿼리 함수 키 수정. next.js 작업
GulSam00 Mar 18, 2025
0325fb7
feat : route api 변경. 해외곡 검색 불가 이슈. 해외곡 고민.
GulSam00 Mar 18, 2025
2fd39b6
feat : supabase 세팅. 동작 확인.
GulSam00 Mar 20, 2025
961165f
feat : supabase auth 인증
GulSam00 Mar 21, 2025
d90e121
feat : 카카오 auth 연결
GulSam00 Mar 21, 2025
1f62268
feat : tailwind, prettier 세팅
GulSam00 Mar 23, 2025
a201b6e
feat : shadcn 설치. #gpt
GulSam00 Mar 23, 2025
265d2e1
Merge pull request #3 from GulSam00/feat/web/init
GulSam00 Mar 24, 2025
ddbdac8
feat : cursor ui 뼈대
GulSam00 Mar 24, 2025
932855c
feat : brand color 추가. reset 충돌 이슈 해결
GulSam00 Mar 25, 2025
bc921c6
feat : DND 설치. V0 활용 퍼블리싱. 이해 필요.
GulSam00 Mar 25, 2025
74319d8
chore : prettier format
GulSam00 Mar 25, 2025
c99536a
feat : cheerio 데이터 크롤링해서 supabase DB 추가 성공
GulSam00 Mar 26, 2025
957cad3
refactor : trivago/prettier-plugin-sort-imports 적용
GulSam00 Mar 26, 2025
805f7f1
feat : 크롤링. 정규화 통해 문자열 파싱. 모든 케이스 통과 못했음
GulSam00 Mar 27, 2025
937daa7
feat : 추가 작업.
GulSam00 Mar 28, 2025
e885091
feat : 나무위키 데이터 주입 성공
GulSam00 Mar 28, 2025
7954741
feat : footer 색깔 임시 조정
GulSam00 Mar 28, 2025
0394d5d
feat : 검색 페이지 작업. Supabase DB 조회 작업
GulSam00 Mar 30, 2025
296cecf
chore : 데이터 정제 고민
GulSam00 Mar 30, 2025
06c15c7
fix : ResponseType 타입 배열 형태로 일괄 교체.
GulSam00 Mar 31, 2025
1ad0c81
chore : 공백 제거
GulSam00 Mar 31, 2025
dd5180b
feat : login, register 페이지 세팅. prettier 플러그인 적용
GulSam00 Apr 2, 2025
f665479
feat : sonner + zustand 로그인 제어 작업 #gpt
GulSam00 Apr 3, 2025
9854270
Merge pull request #4 from GulSam00/feat/home
GulSam00 Apr 3, 2025
485bff9
feat : 회원가입 중복 시 제어 뼈대. Dialog 모달 작업 준비
GulSam00 Apr 3, 2025
51dea34
feat : 로그인 메세지 모달 제어, 타입에 따른 메세지 구분
GulSam00 Apr 4, 2025
3ca1ad2
feat : SideBar 추가. 로그인 로그아웃, 문의 기능 작업업
GulSam00 Apr 4, 2025
b06f5d2
feat : 닉네임 변경 기능 작업. update 안되는 이슈 감지. #gpt
GulSam00 Apr 4, 2025
6863868
feat : 닉네임 변경 기능능
GulSam00 Apr 7, 2025
420d648
feat : 비밀 번호 재설정 기능능
GulSam00 Apr 7, 2025
7748629
feat : API 데이터 정제. store 폴더 이동 예정
GulSam00 Apr 7, 2025
d85fa73
chore : 폴더 변경. package 이름 변경
GulSam00 Apr 8, 2025
0ed2122
Merge pull request #5 from GulSam00/feat/login
GulSam00 Apr 8, 2025
e6862d3
feat : DB 조회, 좋아요 곡 추가 로직 작업
GulSam00 Apr 8, 2025
a62dda1
chore : 안 쓰는 파일 삭제
GulSam00 Apr 9, 2025
79e779c
feat : tosings 조회 삭제 순서 이동, 낙관적 업데이트 작업
GulSam00 Apr 9, 2025
307f1f3
Merge pull request #6 from GulSam00/feat/search
GulSam00 Apr 9, 2025
5a81728
feat : total_stats 하나로 모든 요청 처리하게끔 변경.
GulSam00 Apr 9, 2025
3d7c506
feat : home/노래 추가 작업
GulSam00 Apr 10, 2025
8e9bccd
chore : 코드 스타일 통일
GulSam00 Apr 10, 2025
880c00a
feat : 로딩 로직, toSing에서 요청 시 제어, 모든 페이지 뼈대 작업
GulSam00 Apr 11, 2025
cf19cc9
feat : 좋아요 곡 관리 렌더링. 삭제 기능만 넣을까 고민
GulSam00 Apr 11, 2025
3d40822
Merge pull request #7 from GulSam00/feat/tosing
GulSam00 Apr 11, 2025
94234a3
feat : 좋아요 곡 삭제 작업
GulSam00 Apr 14, 2025
1f1e117
refactor : api 코드 lib로 분리. react query 도입 고민
GulSam00 Apr 14, 2025
7963750
fix : api/songs/like SQL 간략화. sidebar 수정.eslint
GulSam00 Apr 14, 2025
41f819a
fix : build 관련 에러 수정 중. Suspense 이슈 해결 필요
GulSam00 Apr 14, 2025
d193ec2
Merge pull request #8 from GulSam00/feat/library
GulSam00 Apr 14, 2025
691a4bf
fix : Suspense build 이슈 수정
GulSam00 Apr 15, 2025
74ae3fb
fix : env 경로 수정
GulSam00 Apr 15, 2025
dc547d8
Rename footer.tsx to Footer.tsx
GulSam00 Apr 15, 2025
b4c5915
Rename SideBar.tsx to Sidebar.tsx
GulSam00 Apr 15, 2025
38c6443
Rename errorWrapper.tsx to ErrorWrapper.tsx
GulSam00 Apr 15, 2025
9901c92
feat : vercel 플러그인 세팅. (analytics, speed insights)
GulSam00 Apr 15, 2025
5240314
fix : action 디버그 추가
GulSam00 Apr 15, 2025
dd5eb57
fix : action 수정
GulSam00 Apr 15, 2025
14b255d
Merge pull request #9 from GulSam00/refactor/apiSeparate
GulSam00 Apr 15, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
113 changes: 18 additions & 95 deletions .github/workflows/gpt-review.yml
Original file line number Diff line number Diff line change
@@ -1,105 +1,28 @@
name: PR Blog Summarizer

on:
pull_request:
types: [opened, synchronize]
name: Code Review

permissions:
issues: write
contents: read
pull-requests: write

on:
pull_request:
types: [opened, reopened, synchronize]

jobs:
process:
test:
runs-on: ubuntu-latest

if: ${{ contains(github.event.pull_request.title, '#gpt') || contains(github.event.pull_request.body, '#gpt') }}
steps:
# Step 1: Check out the code
- name: Check out code
uses: actions/checkout@v3
with:
fetch-depth: 0

# Step 2: Set up Python
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.8'

# Step 3: Install dependencies
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install openai requests

# Step 4: Get Changed Files
- name: Get Changed Files
id: get_files
run: |
CHANGED_FILES=$(git diff --name-only origin/main ${{ github.sha }})

if [ -z "$CHANGED_FILES" ]; then
echo "changed_files=" >> $GITHUB_ENV
else
# .md 파일만 필터링
MD_FILES=$(echo "$CHANGED_FILES" | grep -E '^week[0-9]+/.*\.md$')
echo $MD_FILES

if [ -z "$MD_FILES" ]; then
echo "changed_files=" >> $GITHUB_ENV
else
# 환경 변수에 저장
echo "changed_files=$MD_FILES" >> $GITHUB_ENV
fi
fi

# Step 5: Process Changed Files
- name: Process Changed Files
- uses: anc95/ChatGPT-CodeReview@main
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
OPENAI_API_KEY: ${{ secrets.GPT_KEY }}
changed_files: ${{ env.changed_files }}
run: |
if [ -z "$changed_files" ]; then
echo "No changed files to process."
exit 0
fi

SUMMARY_MESSAGE="### Automated Review\n"
IFS=$'\n'
for file_path in $changed_files; do
# Skip link.md files
if [[ "$file_path" == *link.md ]]; then
continue
fi

# Process non-link.md files
echo "Processing file: $file_path"
FILE_CONTENT=$(cat "$file_path" || echo "")
if [ -z "$FILE_CONTENT" ]; then
SUMMARY_MESSAGE+="Error: Could not read content of $file_path\n"
continue
fi

# Run feedback.py
FEEDBACK=$(python feedback.py --content "$FILE_CONTENT" || echo "Error: feedback.py failed for $file_path")
SUMMARY_MESSAGE+="Feedback for file: $file_path\n"
SUMMARY_MESSAGE+="$FEEDBACK\n"
done

echo "summary_message<<EOF" >> $GITHUB_ENV
echo -e "$SUMMARY_MESSAGE" >> $GITHUB_ENV
echo "EOF" >> $GITHUB_ENV

# Step 6: Post Comment on Pull Request
- name: Post Comment on Pull Request
uses: actions/github-script@v6
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
const summary = process.env.summary_message;
if (summary && summary.trim().length > 0) {
await github.rest.issues.createComment({
...context.repo,
issue_number: context.payload.pull_request.number,
body: summary
});
}
# optional
LANGUAGE: Korean
max_tokens: 10000
MAX_PATCH_LENGTH: 10000
ACTIONS_STEP_DEBUG: true

IGNORE_PATTERNS: /dist, /node_modules,*.md # Regex pattern to ignore files, separated by comma
# INCLUDE_PATTERNS: '*.js, *.ts, *.jsx, *.tsx' # glob pattern or regex pattern to include files, separated by comma
1 change: 0 additions & 1 deletion .prettierrc.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
{
"$schema": "https://json.schemastore.org/prettierrc",
"semi": true,
"tabWidth": 2,
"singleQuote": true,
"printWidth": 120,
Expand Down
3 changes: 2 additions & 1 deletion apps/mobile/app/(tabs)/_layout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,8 @@ export default function TabLayout() {
},
default: {},
}),
}}>
}}
>
<Tabs.Screen
name="index"
options={{
Expand Down
31 changes: 14 additions & 17 deletions apps/mobile/app/(tabs)/explore.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -18,20 +18,20 @@ export default function TabTwoScreen() {
name="chevron.left.forwardslash.chevron.right"
style={styles.headerImage}
/>
}>
}
>
<ThemedView style={styles.titleContainer}>
<ThemedText type="title">Explore</ThemedText>
</ThemedView>
<ThemedText>This app includes example code to help you get started.</ThemedText>
<Collapsible title="File-based routing">
<ThemedText>
This app has two screens:{' '}
<ThemedText type="defaultSemiBold">app/(tabs)/index.tsx</ThemedText> and{' '}
This app has two screens: <ThemedText type="defaultSemiBold">app/(tabs)/index.tsx</ThemedText> and{' '}
<ThemedText type="defaultSemiBold">app/(tabs)/explore.tsx</ThemedText>
</ThemedText>
<ThemedText>
The layout file in <ThemedText type="defaultSemiBold">app/(tabs)/_layout.tsx</ThemedText>{' '}
sets up the tab navigator.
The layout file in <ThemedText type="defaultSemiBold">app/(tabs)/_layout.tsx</ThemedText> sets up the tab
navigator.
</ThemedText>
<ExternalLink href="https://docs.expo.dev/router/introduction">
<ThemedText type="link">Learn more</ThemedText>
Expand All @@ -46,8 +46,7 @@ export default function TabTwoScreen() {
<Collapsible title="Images">
<ThemedText>
For static images, you can use the <ThemedText type="defaultSemiBold">@2x</ThemedText> and{' '}
<ThemedText type="defaultSemiBold">@3x</ThemedText> suffixes to provide files for
different screen densities
<ThemedText type="defaultSemiBold">@3x</ThemedText> suffixes to provide files for different screen densities
</ThemedText>
<Image source={require('@/assets/images/react-logo.png')} style={{ alignSelf: 'center' }} />
<ExternalLink href="https://reactnative.dev/docs/images">
Expand All @@ -57,9 +56,7 @@ export default function TabTwoScreen() {
<Collapsible title="Custom fonts">
<ThemedText>
Open <ThemedText type="defaultSemiBold">app/_layout.tsx</ThemedText> to see how to load{' '}
<ThemedText style={{ fontFamily: 'SpaceMono' }}>
custom fonts such as this one.
</ThemedText>
<ThemedText style={{ fontFamily: 'SpaceMono' }}>custom fonts such as this one.</ThemedText>
</ThemedText>
<ExternalLink href="https://docs.expo.dev/versions/latest/sdk/font">
<ThemedText type="link">Learn more</ThemedText>
Expand All @@ -68,8 +65,8 @@ export default function TabTwoScreen() {
<Collapsible title="Light and dark mode components">
<ThemedText>
This template has light and dark mode support. The{' '}
<ThemedText type="defaultSemiBold">useColorScheme()</ThemedText> hook lets you inspect
what the user's current color scheme is, and so you can adjust UI colors accordingly.
<ThemedText type="defaultSemiBold">useColorScheme()</ThemedText> hook lets you inspect what the user's current
color scheme is, and so you can adjust UI colors accordingly.
</ThemedText>
<ExternalLink href="https://docs.expo.dev/develop/user-interface/color-themes/">
<ThemedText type="link">Learn more</ThemedText>
Expand All @@ -78,15 +75,15 @@ export default function TabTwoScreen() {
<Collapsible title="Animations">
<ThemedText>
This template includes an example of an animated component. The{' '}
<ThemedText type="defaultSemiBold">components/HelloWave.tsx</ThemedText> component uses
the powerful <ThemedText type="defaultSemiBold">react-native-reanimated</ThemedText>{' '}
library to create a waving hand animation.
<ThemedText type="defaultSemiBold">components/HelloWave.tsx</ThemedText> component uses the powerful{' '}
<ThemedText type="defaultSemiBold">react-native-reanimated</ThemedText> library to create a waving hand
animation.
</ThemedText>
{Platform.select({
ios: (
<ThemedText>
The <ThemedText type="defaultSemiBold">components/ParallaxScrollView.tsx</ThemedText>{' '}
component provides a parallax effect for the header image.
The <ThemedText type="defaultSemiBold">components/ParallaxScrollView.tsx</ThemedText> component provides a
parallax effect for the header image.
</ThemedText>
),
})}
Expand Down
20 changes: 6 additions & 14 deletions apps/mobile/app/(tabs)/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -9,42 +9,34 @@ export default function HomeScreen() {
return (
<ParallaxScrollView
headerBackgroundColor={{ light: '#A1CEDC', dark: '#1D3D47' }}
headerImage={
<Image
source={require('@/assets/images/partial-react-logo.png')}
style={styles.reactLogo}
/>
}>
headerImage={<Image source={require('@/assets/images/partial-react-logo.png')} style={styles.reactLogo} />}
>
<ThemedView style={styles.titleContainer}>
<ThemedText type="title">Welcome!</ThemedText>
<HelloWave />
</ThemedView>
<ThemedView style={styles.stepContainer}>
<ThemedText type="subtitle">Step 1: Try it</ThemedText>
<ThemedText>
Edit <ThemedText type="defaultSemiBold">app/(tabs)/index.tsx</ThemedText> to see changes.
Press{' '}
Edit <ThemedText type="defaultSemiBold">app/(tabs)/index.tsx</ThemedText> to see changes. Press{' '}
<ThemedText type="defaultSemiBold">
{Platform.select({
ios: 'cmd + d',
android: 'cmd + m',
web: 'F12'
web: 'F12',
})}
</ThemedText>{' '}
to open developer tools.
</ThemedText>
</ThemedView>
<ThemedView style={styles.stepContainer}>
<ThemedText type="subtitle">Step 2: Explore</ThemedText>
<ThemedText>
Tap the Explore tab to learn more about what's included in this starter app.
</ThemedText>
<ThemedText>Tap the Explore tab to learn more about what's included in this starter app.</ThemedText>
</ThemedView>
<ThemedView style={styles.stepContainer}>
<ThemedText type="subtitle">Step 3: Get a fresh start</ThemedText>
<ThemedText>
When you're ready, run{' '}
<ThemedText type="defaultSemiBold">npm run reset-project</ThemedText> to get a fresh{' '}
When you're ready, run <ThemedText type="defaultSemiBold">npm run reset-project</ThemedText> to get a fresh{' '}
<ThemedText type="defaultSemiBold">app</ThemedText> directory. This will move the current{' '}
<ThemedText type="defaultSemiBold">app</ThemedText> to{' '}
<ThemedText type="defaultSemiBold">app-example</ThemedText>.
Expand Down
5 changes: 1 addition & 4 deletions apps/mobile/components/Collapsible.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,7 @@ export function Collapsible({ children, title }: PropsWithChildren & { title: st

return (
<ThemedView>
<TouchableOpacity
style={styles.heading}
onPress={() => setIsOpen((value) => !value)}
activeOpacity={0.8}>
<TouchableOpacity style={styles.heading} onPress={() => setIsOpen((value) => !value)} activeOpacity={0.8}>
<IconSymbol
name="chevron.right"
size={18}
Expand Down
2 changes: 1 addition & 1 deletion apps/mobile/components/HelloWave.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ export function HelloWave() {
useEffect(() => {
rotationAnimation.value = withRepeat(
withSequence(withTiming(25, { duration: 150 }), withTiming(0, { duration: 150 })),
4 // Run the animation 4 times
4, // Run the animation 4 times
);
}, []);

Expand Down
25 changes: 7 additions & 18 deletions apps/mobile/components/ParallaxScrollView.tsx
Original file line number Diff line number Diff line change
@@ -1,11 +1,6 @@
import type { PropsWithChildren, ReactElement } from 'react';
import { StyleSheet } from 'react-native';
import Animated, {
interpolate,
useAnimatedRef,
useAnimatedStyle,
useScrollViewOffset,
} from 'react-native-reanimated';
import Animated, { interpolate, useAnimatedRef, useAnimatedStyle, useScrollViewOffset } from 'react-native-reanimated';

import { ThemedView } from '@/components/ThemedView';
import { useBottomTabOverflow } from '@/components/ui/TabBarBackground';
Expand All @@ -18,11 +13,7 @@ type Props = PropsWithChildren<{
headerBackgroundColor: { dark: string; light: string };
}>;

export default function ParallaxScrollView({
children,
headerImage,
headerBackgroundColor,
}: Props) {
export default function ParallaxScrollView({ children, headerImage, headerBackgroundColor }: Props) {
const colorScheme = useColorScheme() ?? 'light';
const scrollRef = useAnimatedRef<Animated.ScrollView>();
const scrollOffset = useScrollViewOffset(scrollRef);
Expand All @@ -34,7 +25,7 @@ export default function ParallaxScrollView({
translateY: interpolate(
scrollOffset.value,
[-HEADER_HEIGHT, 0, HEADER_HEIGHT],
[-HEADER_HEIGHT / 2, 0, HEADER_HEIGHT * 0.75]
[-HEADER_HEIGHT / 2, 0, HEADER_HEIGHT * 0.75],
),
},
{
Expand All @@ -50,13 +41,11 @@ export default function ParallaxScrollView({
ref={scrollRef}
scrollEventThrottle={16}
scrollIndicatorInsets={{ bottom }}
contentContainerStyle={{ paddingBottom: bottom }}>
contentContainerStyle={{ paddingBottom: bottom }}
>
<Animated.View
style={[
styles.header,
{ backgroundColor: headerBackgroundColor[colorScheme] },
headerAnimatedStyle,
]}>
style={[styles.header, { backgroundColor: headerBackgroundColor[colorScheme] }, headerAnimatedStyle]}
>
{headerImage}
</Animated.View>
<ThemedView style={styles.content}>{children}</ThemedView>
Expand Down
8 changes: 1 addition & 7 deletions apps/mobile/components/ThemedText.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,7 @@ export type ThemedTextProps = TextProps & {
type?: 'default' | 'title' | 'defaultSemiBold' | 'subtitle' | 'link';
};

export function ThemedText({
style,
lightColor,
darkColor,
type = 'default',
...rest
}: ThemedTextProps) {
export function ThemedText({ style, lightColor, darkColor, type = 'default', ...rest }: ThemedTextProps) {
const color = useThemeColor({ light: lightColor, dark: darkColor }, 'text');

return (
Expand Down
5 changes: 1 addition & 4 deletions apps/mobile/components/ui/IconSymbol.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,7 @@ const MAPPING = {
'chevron.left.forwardslash.chevron.right': 'code',
'chevron.right': 'chevron-right',
} as Partial<
Record<
import('expo-symbols').SymbolViewProps['name'],
React.ComponentProps<typeof MaterialIcons>['name']
>
Record<import('expo-symbols').SymbolViewProps['name'], React.ComponentProps<typeof MaterialIcons>['name']>
>;

export type IconSymbolName = keyof typeof MAPPING;
Expand Down
2 changes: 1 addition & 1 deletion apps/mobile/hooks/useThemeColor.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import { useColorScheme } from '@/hooks/useColorScheme';

export function useThemeColor(
props: { light?: string; dark?: string },
colorName: keyof typeof Colors.light & keyof typeof Colors.dark
colorName: keyof typeof Colors.light & keyof typeof Colors.dark,
) {
const theme = useColorScheme() ?? 'light';
const colorFromProps = props[theme];
Expand Down
Loading
Loading