Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
51 commits
Select commit Hold shift + click to select a range
106800b
chore: app 디렉토리 생성 및 프로젝트 파일들을 이전
dioo1461 Apr 5, 2025
31aabcd
chore: pnpm 워크스페이스 설정 및 vscode 멀티-워크스페이스 설정
dioo1461 Apr 5, 2025
0f4ae07
chore: remove duplicate&redundant vscode setting
dioo1461 Apr 6, 2025
3d263ac
chore: endolphinCalendar 패키지에 컴포넌트 파일들 복제
dioo1461 Apr 6, 2025
70782ad
chore: 파일 구조 변경
dioo1461 Apr 7, 2025
3c4a42a
refactor: endolphinDateTime을 패키지로 분리
dioo1461 Apr 17, 2025
01c3702
chore: 패키지 퍼블리싱을 위한 설정 추가
dioo1461 Apr 17, 2025
58fba25
fix: 검사할 FE 파일들이 없을 시, 전체 파일에 대해 lint 검사를 수행하던 문제 수정
dioo1461 Apr 17, 2025
7afa804
chore: 모노레포 도입으로 변경된 파일 구조에 맞춰 eslint config의 ignore path 수정
dioo1461 Apr 17, 2025
9efa499
chore: client 앱에 tsconfig.json 추가
dioo1461 Apr 17, 2025
4d8e318
chore: ts의 path alias를 상대 경로로 변환해주는 `tsc-alias` 라이브러리 추가
dioo1461 Apr 17, 2025
e98dc41
refactor: EndolphinDate, EndolphinTime를 라이브러리에서 import하도록 변경
dioo1461 Apr 17, 2025
00e1320
refactor: EndolphinCalendar를 client 앱에서 분리
dioo1461 Apr 17, 2025
bcd9f45
chore: 패키지 퍼블리싱을 위한 설정 적용
dioo1461 Apr 17, 2025
e6a3d98
chore: calendar 패키지 publish를 위한 설정 작성
dioo1461 Apr 18, 2025
87bcaa7
fix: calendar 패키지 build 실패하던 문제 수정
dioo1461 Apr 18, 2025
2327b71
chore: rebase conflict로 발생한 `.lazy.tsx` 파일들 제거
dioo1461 Apr 18, 2025
5a4c770
chore: frontend 루트에 build 스크립트 추가
dioo1461 Apr 18, 2025
58fcc72
chore: 프로젝트들 사이에 공통적으로 사용되는 코드를 shared 패키지로 분리
dioo1461 Apr 18, 2025
b56c5c1
chore: pre-commit 훅에서 staged files 출력하는 콘솔문 제거
dioo1461 Apr 18, 2025
9147433
chore: `@/hooks`, `@/utils` 형식의 import 문을 `@hooks`, `@utils` 의 형식으로 포…
dioo1461 Apr 18, 2025
668d758
chore: unify import paths to use '@constants' format across the project
dioo1461 May 1, 2025
0a7a59d
chore: eslintcache 제거
dioo1461 May 1, 2025
3356e0f
chore: shared 패키지를 core, hooks, theme, ui로 분리
dioo1461 May 1, 2025
c8fbac7
chore: `@endolphin/core` 패키지화 및 publish
dioo1461 May 2, 2025
057d45a
chore: `@endolphin/theme` 패키지화 및 publish
dioo1461 May 2, 2025
19c2135
chore: `@endolphin/ui` 패키지화 및 publish
dioo1461 May 2, 2025
fd82048
fix: `@endolphin/ui`가 build 시 d.ts 파일을 생성하지 않던 문제 해결, 이를 위해 몇몇 interf…
dioo1461 May 2, 2025
f5e1ce5
chore: 앱의 진입점에서 `import '@endolphin/theme/setup'` 만 하면 theme 설정이 적용 되…
dioo1461 May 2, 2025
762ba91
chore: `@endolphin/core` 및 `@endolphin/ui` 를 client에 적용 중
dioo1461 May 2, 2025
dde828d
chore: `@endolphin/calendar` 패키지에 변경사항 적용하여 빌드 가능한 상태로 만듦
dioo1461 May 2, 2025
e4372d0
chore: client 패키지에 모든 변경사항 적용 완료
dioo1461 May 2, 2025
f5b0bfa
chore: mkcert의 상대경로가 바뀜에 따라 .gitignore에 반영
dioo1461 May 2, 2025
0cb4426
chore: mkcert 생성하는 npm 스크립트를 client 프로젝트의 package.json에 재작성
dioo1461 May 2, 2025
8e844ff
chore: update @endolphin/theme to version 1.0.6 and adjust imports
dioo1461 May 4, 2025
9c8920b
chore: theme 패키지가 woff2 폰트 파일을 포함하도록 설정
dioo1461 May 13, 2025
7aaa9a5
chore: font 에셋 파일이 dist에 포함되지 않아, tsc 빌드 이후 수동으로 포함시키는 스크립트 작성
dioo1461 May 13, 2025
fc6b7b1
chore: tsup 관련 라이브러리를 root package.json으로 이전
dioo1461 May 13, 2025
caa8a28
chore: tsup을 이용한 ui 패키지 빌드 설정
dioo1461 May 13, 2025
7de09b5
chore: theme 패키지도 tsup을 이용해 빌드하도록 변경
dioo1461 May 13, 2025
1912286
chore: theme 정의를 theme.css로 분리
dioo1461 May 13, 2025
4bc769e
chore: theme 패키지 번들러를 tsc로 변경, font asset 수동 추가 스크립트 재작성
dioo1461 May 14, 2025
71e17db
fix: ui 패키지에 css가 적용되지 않던 문제 수정
dioo1461 May 15, 2025
42ada74
chore: rebase 후 최신화되지 않은 부분 정리
dioo1461 May 15, 2025
fc61120
chore: https 관련 설정을 server 코드에 일임
dioo1461 May 15, 2025
db5ea54
chore: vite config에 넘기는 mkcert 참조 경로 변경
dioo1461 May 18, 2025
bda1be2
chore: 휴먼 에러 수정
dioo1461 May 18, 2025
3540beb
chore: VE 관련 의존성을 peerDependency로 이전
dioo1461 May 18, 2025
729ee8e
chore: 빌드 생성 부산물을 gitignore에 추가
dioo1461 May 18, 2025
53acc6a
chore: strictmode 다시 적용
dioo1461 May 18, 2025
f20e974
chore: endolphinCalendar -> calendar, endolphinDateTime -> date-time …
dioo1461 May 18, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
13 changes: 7 additions & 6 deletions .github/hooks/pre-commit
Original file line number Diff line number Diff line change
Expand Up @@ -20,15 +20,17 @@ part=$(echo "$current_branch" | cut -d'/' -f2)

#################### 프론트엔드 스크립트 ####################

if [ "$part" = "fe" ]; then
# 3) 대상 파일이 없으면 스킵
if [ -z "$frontend_files" ]; then
echo "[pre-commit] No frontend files to lint. Skipping."
elif [ "$part" = "fe" ]; then
# eslint 실행을 위해 frontend 폴더로 이동
cd frontend
echo "[pre-commit] ⏳ Checking lint for staged files..."

# Lint fix 실행
if ! pnpm exec eslint --fix $frontend_files; then
echo "[pre-commit] ❌ Lint errors remain after fixing. Commit aborted."
exit 1
fi
printf '%s\0' $frontend_files \
| xargs -0 -n 80 pnpm exec eslint --fix

# Lint로 fix된 파일들을 다시 스테이징
echo "[pre-commit] Staging fixed files..."
Expand All @@ -38,7 +40,6 @@ fi
echo ""
fi


#################### 백엔드 스크립트 ####################

if [ "$part" = "be" ]; then
Expand Down
5 changes: 4 additions & 1 deletion frontend/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -28,4 +28,7 @@ dist-ssr
routeTree.gen.ts

# localhost를 https 환경에서 동작시키기 위한 mkcert 인증서 key files
mkcert/*
mkcert/*

# build caches
tsconfig.tsbuildinfo
22 changes: 0 additions & 22 deletions frontend/.vscode/settings.json

This file was deleted.

2 changes: 2 additions & 0 deletions frontend/apps/client/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# localhost를 https 환경에서 동작시키기 위한 mkcert 인증서 key files
mkcert/*
File renamed without changes.
8 changes: 8 additions & 0 deletions frontend/apps/client/.vite/deps/_metadata.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"hash": "ba742492",
"configHash": "424a9e19",
"lockfileHash": "e3b0c442",
"browserHash": "18ebc066",
"optimized": {},
"chunks": {}
}
3 changes: 3 additions & 0 deletions frontend/apps/client/.vite/deps/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"type": "module"
}
File renamed without changes.
34 changes: 34 additions & 0 deletions frontend/apps/client/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
{
"name": "@frontend/client",
"private": true,
"version": "0.0.0",
"type": "module",
"scripts": {
"dev": "cd ../server && node index.js",
"build:client": "vite build --outDir dist/client",
"preview": "pnpm build && cross-env NODE_ENV=production node dist/server",
"build": "vite build && tsc -b",
"test": "vitest",
"lint": "eslint .",
"coverage": "vitest run --coverage",
"create-theme": "node src/scripts/create-theme.cjs & pnpm eslint --fix",
"create-icon": "node src/scripts/create-icon.cjs",
"optimize-image": "node src/scripts/optimize-image.cjs",
"storybook": "storybook dev -p 6006",
"build-storybook": "storybook build",
"generate-cert": "bash src/scripts/generate-cert.sh"
},
"dependencies": {
"@endolphin/calendar": "^1.0.5",
"@endolphin/core": "^1.0.5",
"@endolphin/date-time": "^1.0.5",
"@endolphin/theme": "1.0.17",
"@endolphin/ui": "^1.0.12",
"@tanstack/react-query": "^5.66.0",
"@tanstack/react-router": "^1.109.2",
"jotai": "^2.12.1",
"react": "^19.0.0",
"react-dom": "^19.0.0",
"zod": "^3.24.1"
}
}
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
File renamed without changes
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { useClickOutside } from '@endolphin/core/hooks';
import { useEffect } from 'react';
import { createPortal } from 'react-dom';

import { useClickOutside } from '@/hooks/useClickOutside';
import { useGlobalModal } from '@/store/global/modal';

import { Modal } from '.';
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import { Button, Chip } from '@endolphin/ui';
import type { Meta } from '@storybook/react';

import Button from '../Button';
import { Chip } from '../Chip';
import type { ModalProps } from '.';
import { Modal } from '.';

Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,12 @@
import { clsx } from '@endolphin/core/utils';
import type { PropsWithChildren } from 'react';

import clsx from '@/utils/clsx';

import { descriptionStyle } from './index.css';

interface ModalContentsProps extends PropsWithChildren {
className?: string;
}

export const ModalContents = ({ className, children }: ModalContentsProps) => (
<div className={clsx(descriptionStyle, className)}>
{children}
</div>
);
<div className={clsx(descriptionStyle, className)}>{children}</div>
);
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import { Flex } from '@endolphin/ui';
import type { PropsWithChildren } from 'react';

import { Flex } from '../Flex';

interface ModalFooterProps extends PropsWithChildren {
className?: string;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@

import { vars } from '@endolphin/theme';
import { style } from '@vanilla-extract/css';

import { vars } from '@/theme/index.css';

export const containerStyle = style({
width: '34rem',
height: '22.8125rem',
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
import clsx from '@utils/clsx';
import { clsx } from '@endolphin/core/utils';
import { vars } from '@endolphin/theme';
import { Text } from '@endolphin/ui';
import type { ForwardRefExoticComponent, ReactNode, RefAttributes } from 'react';
import { forwardRef } from 'react';

import { vars } from '@/theme/index.css';

import { Text } from '../Text';
import { containerStyle, descriptionStyle, titleStyle } from './index.css';
import { ModalContents } from './ModalContents';
import { ModalFooter } from './ModalFooter';
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
import { animation } from '@endolphin/theme';
import { useAtom } from 'jotai';
import { createPortal } from 'react-dom';

import { type NotiAtom, notiAtomsAtom } from '@/store/global/notification';
import { fadeInAndOutStyle } from '@/theme/animation.css';

import { Notification } from '.';
import { notificationsStyle } from './index.css';

const Noti = ({ noti }: { noti: NotiAtom }) => {
const [notification] = useAtom(noti);
return <Notification className={fadeInAndOutStyle} {...notification} />;
return <Notification className={animation.fadeInAndOutStyle} {...notification} />;
};

export const GlobalNotifications = () => {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@

import { vars } from '@endolphin/theme';
import { style } from '@vanilla-extract/css';
import { recipe } from '@vanilla-extract/recipes';

import { vars } from '@/theme/index.css';

export const containerStyle = recipe({
base: {
width: 'fit-content',
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,8 @@
import { clsx } from '@endolphin/core/utils';
import { vars } from '@endolphin/theme';
import { Icon, Text } from '@endolphin/ui';
import type { ReactNode } from 'react';

import { vars } from '@/theme/index.css';

import clsx from '../../utils/clsx';
import { CircleCheck, TriangleWarning } from '../Icon';
import { Text } from '../Text';
import { containerStyle, contentsStyle } from './index.css';

type NotiType = 'success' | 'error';
Expand All @@ -16,32 +14,25 @@ export interface NotificationProps {
className?: string;
}

export const Notification = ({
type,
title,
description,
className,
}: NotificationProps) => {
export const Notification = ({ type, title, description, className }: NotificationProps) => {
const typeIconMap: Record<NotiType, ReactNode> = {
success: <CircleCheck fill={vars.color.Ref.Primary[500]} />,
error: <TriangleWarning fill={vars.color.Ref.Red[500]} />,
success: <Icon.CircleCheck fill={vars.color.Ref.Primary[500]} />,
error: <Icon.TriangleWarning fill={vars.color.Ref.Red[500]} />,
};

return (
<div
className={clsx(containerStyle({ type }), className)}
role='alert'
>
<div className={clsx(containerStyle({ type }), className)} role='alert'>
{typeIconMap[type]}
<div className={contentsStyle({ style: description ? 'default' : 'noDescription' })}>
<Text color={vars.color.Ref.Netural[800]} typo='t2'>
{title}
</Text>
{description &&
{description && (
<Text color={vars.color.Ref.Netural[500]} typo='b2R'>
{description}
</Text>}
</Text>
)}
</div>
</div>
);
};
};
32 changes: 32 additions & 0 deletions frontend/apps/client/src/constants/date.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
export type Time = number | 'all' | 'empty';

export type WEEKDAY = 'SUN' | 'MON' | 'TUE' | 'WED' | 'THU' | 'FRI' | 'SAT';

export const TIMES: readonly number[] = Object.freeze(new Array(24).fill(0)
.map((_, i) => i));

export const WEEK: readonly WEEKDAY[] = Object.freeze([
'SUN',
'MON',
'TUE',
'WED',
'THU',
'FRI',
'SAT',
]);

export const WEEK_MAP: Record<string, string> = Object.freeze({
1: '첫째주',
2: '둘째주',
3: '셋째주',
4: '넷째주',
5: '다섯째주',
});

export const MINUTES = Object.freeze(new Array(4).fill(0)
.map((_, i) => i * 15));

export const MINUTES_HALF = (totalTime: number, startTime: number) =>
Object.freeze(new Array(totalTime * 2).fill(0)
.map((_, i) => startTime + i * 30));
export const TIME_HEIGHT = 66;
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { request } from '@/utils/fetch';
import { request } from '@utils/fetch';

import type {
DiscussionCalendarRequest,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { request } from '@/utils/fetch';
import { request } from '@utils/fetch';

import { InvitationJoinResponseSchema, InvitationResponseSchema } from '../model/invitation';

Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { DATE_BAR, PASSWORD, TIME } from '@constants/regex';
import { EndolphinDate } from '@endolphin/date-time';
import { z } from 'zod';

import { DATE_BAR, PASSWORD, TIME } from '@/constants/regex';
import { UserDTO } from '@/features/user/model';
import { EndolphinDate } from '@/utils/endolphin-date';

const MeetingMethodENUM = z.enum(['OFFLINE', 'ONLINE']);

Expand Down Expand Up @@ -102,4 +102,4 @@ export type DiscussionRankRequest = z.infer<typeof DiscussionRankRequest>;
export type DiscussionRankResponse = z.infer<typeof DiscussionRankResponse>;

export type MeetingMethodENUM = z.infer<typeof MeetingMethodENUM>;
export type DiscussionDTO = z.infer<typeof DiscussionDTO>;
export type DiscussionDTO = z.infer<typeof DiscussionDTO>;
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import { zCoerceToDate, zCoerceToTime } from '@utils/zod';
import { z } from 'zod';

import { zCoerceToDate, zCoerceToTime } from '@/utils/zod';

export const InvitationResponseSchema = z.object({
host: z.string(),
title: z.string(),
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@

import { Flex } from '@/components/Flex';
import { WEEK } from '@/constants/date';
import { isSameDate } from '@/utils/date';
import { WEEK } from '@constants/date';
import { isSameDate } from '@endolphin/core/utils';
import { Flex } from '@endolphin/ui';

import type { DiscussionDTO } from '../../model';
import DiscussionCard from '../DiscussionCard';
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,12 @@

import { WEEK } from '@constants/date';
import { useCalendarContext } from '@endolphin/calendar';
import { formatDateToBarString, formatDateToWeekRange } from '@endolphin/core/utils';
import { Flex } from '@endolphin/ui';
import { useParams } from '@tanstack/react-router';
import { useAtomValue } from 'jotai';

import { useCalendarContext } from '@/components/Calendar/context/CalendarContext';
import { Flex } from '@/components/Flex';
import { WEEK } from '@/constants/date';
import { checkboxAtom } from '@/store/discussion';
import { formatDateToWeekRange } from '@/utils/date';
import { formatDateToBarString } from '@/utils/date/format';

import { useDiscussionCalendarQuery } from '../../api/queries';
import type { DiscussionDTO } from '../../model';
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
import { animation, vars } from '@endolphin/theme';
import { style } from '@vanilla-extract/css';
import { recipe } from '@vanilla-extract/recipes';

import { fadeHighlightGrayProps } from '@/theme/animation.css';
import { vars } from '@/theme/index.css';

export const calendarTableStyle = style({
borderBottomLeftRadius: vars.radius[600],
borderBottomRightRadius: vars.radius[600],
Expand Down Expand Up @@ -32,7 +30,7 @@ export const dayStyle = recipe({
variants: {
selected: {
true: {
...fadeHighlightGrayProps,
...animation.fadeHighlightGrayProps,
},
false: {},
},
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { Calendar } from '@/components/Calendar';
import { Calendar } from '@endolphin/calendar';

import { CalendarTable } from './CalendarTable';

Expand Down
Loading