Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(land): 새로운 렌딩페이지 레이아웃 적용 #259

Merged
merged 70 commits into from
Feb 17, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
70 commits
Select commit Hold shift + click to select a range
28834db
chore(land): upgrade Next.js version from 14 to 15
Jeong-Ag Nov 12, 2024
6a03005
chore(land): set font and directory
Jeong-Ag Nov 13, 2024
8742239
feat(land): set layout with navbar and footer
Jeong-Ag Nov 13, 2024
4494db8
refactor(land): change directory structure
Jeong-Ag Nov 19, 2024
f9aa35f
feat(land): create sidebar and add icon package
Jeong-Ag Nov 23, 2024
2000166
style(land): add font and update font directory structure
Jeong-Ag Nov 23, 2024
38f8210
feat(land): create text slider component
Jeong-Ag Nov 23, 2024
940d670
feat(land): create home page first section
Jeong-Ag Nov 23, 2024
8802018
fix(land): change page export
Jeong-Ag Nov 23, 2024
18977b0
refactor(land): use function declaration and change tag
Jeong-Ag Nov 24, 2024
49bd4c9
refactor(land): remove 'use client' and replace button with next/link
Jeong-Ag Nov 24, 2024
f6b8a3c
refactor(land): update nav and sidebar to client-side rendering
Jeong-Ag Nov 24, 2024
aed5c79
refactor(land): replace <a> tag with Next.js <Link> components
Jeong-Ag Nov 24, 2024
0bb7e93
chore(land): add font file
Jeong-Ag Nov 28, 2024
39ea95a
refactor(land): use Section component for layout separation
Jeong-Ag Nov 28, 2024
8d8dbda
feat(land): create home page second Section
Jeong-Ag Nov 28, 2024
e670ca7
feat(land): create home page third section without animation
Jeong-Ag Nov 29, 2024
a39ba7c
chore(land): delete misplaced font file
Jeong-Ag Nov 30, 2024
9713ed7
feat(land): create home page fourth section
Jeong-Ag Dec 1, 2024
5101905
refactor(land): add dynamic class selection
Jeong-Ag Dec 1, 2024
b152ce1
feat(land): create home fifth section
Jeong-Ag Dec 13, 2024
9de2de6
feat(land): create last section, add support detail
Jeong-Ag Dec 14, 2024
1803ce4
style(land): hidden horizontal scroll
Jeong-Ag Dec 14, 2024
545af81
style(land): apply word break keep, adjust layout
Jeong-Ag Dec 14, 2024
94debbf
feat(land): change value section responsive view
Jeong-Ag Dec 15, 2024
e6eb9e8
style(land): add scroll and flip animations to value section
Jeong-Ag Dec 15, 2024
9408913
refactor(land): change sidebar position from right to top, add dark b…
Jeong-Ag Dec 15, 2024
eeeae67
style(land): set background image on last section
Jeong-Ag Dec 15, 2024
3dbced9
Merge branch 'main' into feature/181
Jeong-Ag Dec 15, 2024
54eebe5
chore(land): add eslint dependencies
Jeong-Ag Dec 15, 2024
9582f5a
fix(land): change code formate
Jeong-Ag Dec 15, 2024
29c37d4
refactor(land): apply tailwind css @layers
Jeong-Ag Dec 19, 2024
c650eb7
refactor(land): home page code splitting
Jeong-Ag Dec 19, 2024
e5b3310
feat(land): create review section
Jeong-Ag Dec 24, 2024
07334a1
feat(land): create part section
Jeong-Ag Dec 24, 2024
0ec01ae
refactor(land, member): minor code improvements
Jeong-Ag Dec 24, 2024
520dc5e
style(land): enhance layout and styling
Jeong-Ag Dec 25, 2024
b28ad83
refactor(land): replace URL with const, add code to remove warning
Jeong-Ag Jan 4, 2025
9b18e41
feat(member): add home data
Jeong-Ag Jan 6, 2025
7fcc630
chore(land): add `dayjs`, set custom color
Jeong-Ag Jan 7, 2025
dfb8c7b
feat(land): create apply process
Jeong-Ag Jan 7, 2025
acbc77e
feat(land): create recruitment notice table view
Jeong-Ag Jan 7, 2025
086dc77
feat(land): recruitment API integration
Jeong-Ag Jan 7, 2025
afa9047
feat(land): create FAQ view
Jeong-Ag Jan 7, 2025
e1170c6
feat(land): create now apply view
Jeong-Ag Jan 7, 2025
5ba650b
refactor(land): change apply path name
Jeong-Ag Jan 7, 2025
3489f39
feat(land): create apply form
Jeong-Ag Jan 9, 2025
5cfa8a4
feat(land): create error, not-found page
Jeong-Ag Jan 10, 2025
d9e6e3d
refactor(land): change recruitment type
Jeong-Ag Jan 11, 2025
12b1f04
refactor(land): change text on error page
Jeong-Ag Jan 13, 2025
9758a13
feat(land): create application detail page
Jeong-Ag Jan 13, 2025
f18ce7c
feat(land): create application result check page
Jeong-Ag Jan 15, 2025
e069d88
chore(land): add `react-toastify`
Jeong-Ag Jan 16, 2025
f7fa666
feat(land): apply toast to the layout
Jeong-Ag Jan 16, 2025
183f548
feat(land): create application form
Jeong-Ag Jan 16, 2025
0d2cd9c
feat(land): put FAQSection data
Jeong-Ag Jan 17, 2025
79a9e99
chore(land): set up access to the image on the server
Jeong-Ag Jan 18, 2025
6929027
feat(land): create ask page
Jeong-Ag Jan 18, 2025
3a22b2c
refactor(land): change review card design with image
Jeong-Ag Jan 20, 2025
85e0cd6
feat(land): add ChannelTalk
Jeong-Ag Jan 20, 2025
26b6478
refactor(land): add string utils and change interface with using extends
Jeong-Ag Jan 20, 2025
104cba7
style(land): adjust layout and change component color
Jeong-Ag Jan 21, 2025
f8c8ced
refactor(land): check recruitment status and display appropriate mess…
Jeong-Ag Jan 21, 2025
087cd7d
feat(land): create apply check section
Jeong-Ag Jan 21, 2025
aecb89b
refactor(land): use type and constant to improve application form
Jeong-Ag Jan 21, 2025
47ee72a
feat(land): add picture, replaced `ActivityCard` components with `Act…
Jeong-Ag Jan 21, 2025
29441b3
refactor(land): change responsive layout, delete `scroll={false}` in …
Jeong-Ag Jan 21, 2025
f779a55
Merge branch 'main' into feature/181
gwansikk Feb 17, 2025
c6ff3ff
chore: update
gwansikk Feb 17, 2025
5ce8787
fix: 버튼 색상
gwansikk Feb 17, 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
4 changes: 0 additions & 4 deletions apps/land/next.config.js

This file was deleted.

7 changes: 7 additions & 0 deletions apps/land/next.config.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
import { NextConfig } from 'next';

const nextConfig: NextConfig = {
/* config options here */
};

export default nextConfig;
7 changes: 6 additions & 1 deletion apps/land/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,12 @@
"@clab-platforms/icon": "workspace:*",
"@clab-platforms/utils": "workspace:*",
"@tanstack/react-query": "^5.66.0",
"balloons-js": "^0.0.2",
"dayjs": "^1.11.10",
"next": "15.1.6",
"react": "19.0.0",
"react-dom": "19.0.0"
"react-dom": "19.0.0",
"react-toastify": "^11.0.3"
},
"devDependencies": {
"@clab-platforms/config": "workspace:*",
Expand All @@ -27,6 +30,8 @@
"autoprefixer": "^10.0.1",
"eslint": "^8.57.0",
"eslint-config-next": "14.1.4",
"eslint-config-prettier": "^9.1.0",
"eslint-plugin-prettier": "^5.1.3",
"eslint-plugin-react": "^7.33.2",
"eslint-plugin-tailwindcss": "^3.15.1",
"postcss": "^8",
Expand Down
Binary file added apps/land/public/activity/activity_photo1.jpeg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added apps/land/public/activity/activity_photo2.jpeg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added apps/land/public/activity/activity_photo3.jpeg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added apps/land/public/activity/activity_photo4.jpeg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added apps/land/public/clab_picture.jpeg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added apps/land/public/review/김태현.jpeg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added apps/land/public/review/오건우.jpeg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added apps/land/public/review/유승헌.jpeg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added apps/land/public/review/이진명.jpeg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion apps/land/src/app/PageLayout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ export default function Page({
return (
<>
{nav && <Nav />}
<div className={cn('m-auto pt-12', className)}>{children}</div>
<div className={cn('m-auto pt-6', className)}>{children}</div>
{footer && <Footer />}
</>
);
Expand Down
60 changes: 60 additions & 0 deletions apps/land/src/app/applicationForm/api/application.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
import { API_BASE_URL, END_POINT } from '@/constants';
import type { ApplicationForm } from '@/types';

interface GetApplyPassedProps {
recruitmentId: number;
studentId: string;
}

/**
* 동아리 지원
*/
export async function postApplication(body: ApplicationForm) {
const apiURL = `${API_BASE_URL}${END_POINT.APPLICATIONS}`;

const res = await fetch(apiURL, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify(body),
});

if (!res.ok) {
throw new Error('동아리 지원에 실패했습니다.');
}

return res.json();
}

/**
* 합격 여부 조회
*/
export async function getApplyPassed({
recruitmentId,
studentId,
}: GetApplyPassedProps) {
const apiURL = `${API_BASE_URL}${END_POINT.APPLY_PASSED(recruitmentId, studentId)}`;

const res = await fetch(apiURL);

if (!res.ok) {
throw new Error('합격 여부 조회에 실패했습니다.');
}

return res.json();
}
/**
* 현재 모집 중인 공고 조회
*/
export async function getApplicationNow() {
const apiURL = `${API_BASE_URL}${END_POINT.OPEN}`;

const res = await fetch(apiURL);

if (!res.ok) {
throw new Error('현재 모집 중인 공고 조회에 실패했습니다.');
}

return res.json();
}
1 change: 1 addition & 0 deletions apps/land/src/app/applicationForm/api/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export * from './application';
39 changes: 39 additions & 0 deletions apps/land/src/app/applicationForm/components/ApplyCheck.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
'use client';

import { Button } from '@clab-platforms/design-system';

import Image from 'next/image';

interface Props {
handleModalConfirm: () => void;
handleModalClose: () => void;
}

export default function ApplyCheck({
handleModalConfirm,
handleModalClose,
}: Props) {
return (
<div className="flex flex-col place-items-center space-y-4">
<Image src="/favicon.ico" alt="C-Lab" width={64} height={64} />
<h3 className="text-xl font-bold">지원하기</h3>
<p className="text-gray-500">작성하신 정보로 지원하시겠습니까?</p>
<div className="flex justify-center space-x-2">
<Button
onClick={handleModalConfirm}
size="sm"
className="bg-clab-light-blue hover:bg-clab-light-blue px-4 hover:bg-opacity-70"
>
확인
</Button>
<Button
onClick={handleModalClose}
size="sm"
className="bg-clab-light-blue hover:bg-clab-light-blue px-4 hover:bg-opacity-70"
>
취소
</Button>
</div>
</div>
);
}
31 changes: 31 additions & 0 deletions apps/land/src/app/applicationForm/components/ApplyFailed.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
'use client';

import { Button } from '@clab-platforms/design-system';

import Image from 'next/image';

interface Props {
handleModalClose: () => void;
}

export default function ApplyFailed({ handleModalClose }: Props) {
return (
<div className="flex flex-col place-items-center space-y-4">
<Image src="/favicon.ico" alt="C-Lab" width={64} height={64} />
<h3 className="text-xl font-bold">지원하기</h3>
<p className="text-gray-500">
지원에 실패했어요. <br />
지원서를 검토하고 다시 시도해주세요.
</p>
<div className="flex justify-center space-x-2">
<Button
size="sm"
onClick={handleModalClose}
className="bg-clab-light-blue hover:bg-clab-light-blue px-4 hover:bg-opacity-70"
>
확인
</Button>
</div>
</div>
);
}
32 changes: 32 additions & 0 deletions apps/land/src/app/applicationForm/components/ApplySuccess.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
'use client';

import { Button } from '@clab-platforms/design-system';

import Image from 'next/image';

interface Props {
handleModalClose: () => void;
}

export default function ApplySuccess({ handleModalClose }: Props) {
return (
<div className="flex flex-col place-items-center space-y-4">
<Image src="/favicon.ico" alt="C-Lab" width={64} height={64} />
<h3 className="text-2xl font-bold">지원하기</h3>
<p className="text-lg text-gray-500">
지원이 완료됐어요!
<br />
서류 검토 후 연락 드릴 예정이에요.
</p>
<div className="flex justify-center space-x-2">
<Button
size="sm"
onClick={handleModalClose}
className="bg-clab-light-blue hover:bg-clab-light-blue px-4 hover:bg-opacity-70"
>
확인
</Button>
</div>
</div>
);
}
3 changes: 3 additions & 0 deletions apps/land/src/app/applicationForm/components/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
export { default as ApplyFailed } from './ApplyFailed';
export { default as ApplySuccess } from './ApplySuccess';
export { default as ApplyCheck } from './ApplyCheck';
2 changes: 2 additions & 0 deletions apps/land/src/app/applicationForm/hooks/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
export * from './useApplicationNow';
export * from './useApplicationMutation';
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
import { useMutation } from '@tanstack/react-query';

import { postApplication } from '../api';

interface Props {
setIsApplySuccess: (applySuccess: boolean) => void;
}

export const useApplicationMutation = ({ setIsApplySuccess }: Props) => {
const ApplicationPost = useMutation({
mutationFn: postApplication,
onSuccess: (data) => {
if (data.success) {
setIsApplySuccess(true);
} else {
setIsApplySuccess(false);
}
},
onError: () => {
setIsApplySuccess(false);
},
});

return { applicationMutate: ApplicationPost.mutate };
};
16 changes: 16 additions & 0 deletions apps/land/src/app/applicationForm/hooks/useApplicationNow.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
import { useQuery } from '@tanstack/react-query';

import { getApplicationNow } from '@/app/applicationForm/api';
import { RECRUITMENT_QUERY_KEY } from '@/constants';

/**
* 지원 합격 여부를 조회합니다.
*/
export function useApplicationNow() {
const { data, isError } = useQuery({
queryKey: RECRUITMENT_QUERY_KEY.NOW(),
queryFn: getApplicationNow,
});

return { data, isError };
}
27 changes: 27 additions & 0 deletions apps/land/src/app/applicationForm/not-found.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
'use client';

import PageLayout from '@/app/PageLayout';
import { PATH } from '@/constants';
import Link from 'next/link';

export default function NotFound() {
return (
<PageLayout
nav
footer
className="flex min-h-screen flex-col items-center justify-center space-y-6 overflow-hidden text-center"
>
<p className="text-2xl">
지금은 모집기간이 아니에요.
<br />
추후에 다시 방문해주세요!
</p>
<Link
href={PATH.HOME}
className="bg-clab-yellow border-clab-yellow hover:text-clab-yellow mx-auto rounded-full border px-8 py-1 text-xl font-bold text-black hover:bg-opacity-0"
>
HOME
</Link>
</PageLayout>
);
}
19 changes: 19 additions & 0 deletions apps/land/src/app/applicationForm/page.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import PageLayout from '@/app/PageLayout';

import { Form } from './sections';

export default function ApplicationForm() {
return (
<PageLayout
nav
footer
className="flex min-h-screen flex-col items-center overflow-hidden break-keep px-12 py-16 text-center"
>
<h1 className="mb-4 text-4xl font-bold md:text-5xl">지원서</h1>
<p className="text-clab-dark-yellow mb-8 text-lg font-bold md:text-xl">
모든 항목은 평가에 반영되므로 정성껏 작성 부탁드려요.
</p>
<Form />
</PageLayout>
);
}
Loading
Loading