diff --git a/.env.sample b/.env.sample index 4e26a3d..2fbd861 100644 --- a/.env.sample +++ b/.env.sample @@ -1,6 +1,7 @@ '.env.development (개발 환경), .env.production (배포 환경)' NEXT_PUBLIC_BASE_URL=<'server url here'> +NEXT_PUBLIC_VELOG_URL=https://velog.io NEXT_PUBLIC_ABORT_MS=<'abort time(ms) for fetch here'> SENTRY_AUTH_TOKEN=<'sentry auth token here'> NEXT_PUBLIC_EVENT_LOG=<'Whether to send an event log here (true | false)'> diff --git a/readme.md b/readme.md index 6d0356c..91dc03d 100644 --- a/readme.md +++ b/readme.md @@ -37,3 +37,13 @@ docker push nuung/velog-dashboard-v2-fe:latest docker pull nuung/velog-dashboard-v2-fe:latest docker run -p 3000:3000 nuung/velog-dashboard-v2-fe:latest ``` + +## docker 관련, 이미지 정리 + +```shell +# 사용하지 않는 모든 이미지 정리 +docker image prune -af + +# 볼륨, 캐시, 컨테이너 포함 등 모든 사용하지 않는 리소스 정리 +docker system prune -af --volumes +``` diff --git a/src/app/(with-tracker)/(auth-required)/leaderboards/Content.tsx b/src/app/(with-tracker)/(auth-required)/leaderboards/Content.tsx index d0c8e65..8cdd3af 100644 --- a/src/app/(with-tracker)/(auth-required)/leaderboards/Content.tsx +++ b/src/app/(with-tracker)/(auth-required)/leaderboards/Content.tsx @@ -3,7 +3,7 @@ import { Dropdown, Ranker, Rank } from '@/components'; import { SCREENS } from '@/constants'; import { useResponsive, useSearchParam } from '@/hooks'; -import { trackUserEvent } from '@/utils/trackUtil'; +import { trackUserEvent, MessageEnum } from '@/utils/trackUtil'; const data = [ { rank: 1, name: '정현우', count: 1235 }, @@ -26,7 +26,7 @@ export const Content = () => { ['좋아요', 'likes'], ]} onChange={(data) => { - trackUserEvent('SORT_INTERACT_BOARD'); + trackUserEvent(MessageEnum.SORT_INTERACT_BOARD); setSearchParams({ type: data as string }); }} defaultValue={'조회수'} diff --git a/src/app/(with-tracker)/(auth-required)/main/Content.tsx b/src/app/(with-tracker)/(auth-required)/main/Content.tsx index 0117642..27acfc8 100644 --- a/src/app/(with-tracker)/(auth-required)/main/Content.tsx +++ b/src/app/(with-tracker)/(auth-required)/main/Content.tsx @@ -14,7 +14,7 @@ import { import { postList, postSummary } from '@/apis'; import { PATHS } from '@/constants'; import { useSearchParam } from '@/hooks/useSearchParam'; -import { trackUserEvent } from '@/utils/trackUtil'; +import { trackUserEvent, MessageEnum } from '@/utils/trackUtil'; const sorts: Array = [ ['작성일순', ''], @@ -68,7 +68,9 @@ export const Content = () => { @@ -80,7 +82,7 @@ export const Content = () => {
{ - trackUserEvent('SORT_INTERACT_MAIN'); + trackUserEvent(MessageEnum.SORT_INTERACT_MAIN); setSearchParams({ asc: `${!(searchParams.asc === 'true')}`, }); @@ -94,7 +96,7 @@ export const Content = () => { } options={sorts} onChange={(data) => { - trackUserEvent('SORT_INTERACT_MAIN'); + trackUserEvent(MessageEnum.SORT_INTERACT_MAIN); setSearchParams({ sort: encodeURI(data as string) }); }} /> diff --git a/src/app/(with-tracker)/(login)/Content.tsx b/src/app/(with-tracker)/(login)/Content.tsx index 8c9b932..bad17fb 100644 --- a/src/app/(with-tracker)/(login)/Content.tsx +++ b/src/app/(with-tracker)/(login)/Content.tsx @@ -7,7 +7,7 @@ import { useMutation } from '@tanstack/react-query'; import { Input, Button } from '@/components'; import { LoginVo } from '@/types'; import { login, sampleLogin } from '@/apis'; -import { trackUserEvent } from '@/utils/trackUtil'; +import { trackUserEvent, MessageEnum } from '@/utils/trackUtil'; const responsiveStyle = "flex items-center gap-5 max-MBI:before:inline-block max-MBI:before:bg-[url('/favicon.png')] max-MBI:before:[background-size:_100%_100%] max-MBI:before:w-16 max-MBI:before:h-16"; @@ -22,7 +22,7 @@ export const Content = () => { } = useForm({ mode: 'all' }); const onSuccess = () => { - trackUserEvent('LOGIN'); + trackUserEvent(MessageEnum.LOGIN); replace('/main?asc=false&sort='); }; diff --git a/src/components/auth-required/header/Section.tsx b/src/components/auth-required/header/Section.tsx index 982082a..9a46851 100644 --- a/src/components/auth-required/header/Section.tsx +++ b/src/components/auth-required/header/Section.tsx @@ -2,7 +2,7 @@ import Link from 'next/link'; import { usePathname } from 'next/navigation'; import { Icon, NameType } from '@/components'; import { COLORS } from '@/constants'; -import { trackUserEvent } from '@/utils/trackUtil'; +import { trackUserEvent, MessageEnum } from '@/utils/trackUtil'; export const defaultStyle = 'w-[180px] h-[65px] px-9 transition-all duration-300 shrink-0 max-MBI:w-[65px] max-MBI:px-0 '; @@ -48,7 +48,7 @@ export const Section = ({ href={action} className={defaultStyle + navigateStyle} id="navigation" - onClick={() => trackUserEvent('NAVIGATE')} + onClick={() => trackUserEvent(MessageEnum.NAVIGATE)} > { className="text-DESTRUCTIVE-SUB text-I3 p-5 max-MBI:p-4 flex whitespace-nowrap w-auto" onClick={() => { out(); - trackUserEvent('LOGOUT'); + trackUserEvent(MessageEnum.LOGOUT); }} > 로그아웃 diff --git a/src/components/auth-required/main/Section/index.tsx b/src/components/auth-required/main/Section/index.tsx index ef18770..6292e82 100644 --- a/src/components/auth-required/main/Section/index.tsx +++ b/src/components/auth-required/main/Section/index.tsx @@ -6,7 +6,7 @@ import { parseNumber } from '@/utils/numberUtil'; import { COLORS, PATHS } from '@/constants'; import { Icon } from '@/components'; import { PostType, UserDto } from '@/types'; -import { trackUserEvent } from '@/utils/trackUtil'; +import { trackUserEvent, MessageEnum } from '@/utils/trackUtil'; import { Graph } from './Graph'; export const Section = (p: PostType) => { @@ -21,7 +21,7 @@ export const Section = (p: PostType) => {
{ - trackUserEvent('SECTION_INTERACT_MAIN'); + trackUserEvent(MessageEnum.SECTION_INTERACT_MAIN); setOpen((prev) => !prev); }} > diff --git a/src/components/auth-required/main/Summary/index.tsx b/src/components/auth-required/main/Summary/index.tsx index e0a54dc..c3c36e2 100644 --- a/src/components/auth-required/main/Summary/index.tsx +++ b/src/components/auth-required/main/Summary/index.tsx @@ -3,7 +3,7 @@ import { useState } from 'react'; import { Icon } from '@/components'; import { PostSummaryDto } from '@/types'; -import { trackUserEvent } from '@/utils/trackUtil'; +import { trackUserEvent, MessageEnum } from '@/utils/trackUtil'; import { SidebarContent } from './SidebarContent'; import { BarContent } from './BarContent'; @@ -38,7 +38,7 @@ export const Summary = ({ totalPostCount, stats }: PostSummaryDto) => {
{ - trackUserEvent('SECTION_INTERACT_MAIN'); + trackUserEvent(MessageEnum.SECTION_INTERACT_MAIN); setOpen((prev) => !prev); }} > diff --git a/src/utils/trackUtil.tsx b/src/utils/trackUtil.tsx index 287bd10..aab640d 100644 --- a/src/utils/trackUtil.tsx +++ b/src/utils/trackUtil.tsx @@ -21,10 +21,12 @@ export const MessageEnum = { const EVENT_LOG = process.env.NEXT_PUBLIC_EVENT_LOG || 'false'; const STATUS = process.env.NODE_ENV; -export const trackUserEvent = (event_type: keyof typeof MessageEnum) => { +export const trackUserEvent = (event: keyof typeof MessageEnum | number) => { + const eventType = typeof event === 'number' ? event : MessageEnum[event]; + if (EVENT_LOG === 'true') { instance('/event', { - body: { eventType: MessageEnum[event_type] }, + body: { eventType }, method: 'POST', }); }