尚未检测到更新。GitHub 发布版本后会显示在这里。
세종대학교 동아리 통합 플랫폼 Front-end
翻译准备中
正在加载完整 README。
查看完整 README ↗모꼬지 팀은 동아리 홍보 및 정보 탐색의 불편함을 인지하고, 이를 해결하고자 동아리 통합 서비스를 만들었어요. 동아리 입장에서는 에브리타임에 동아리 홍보글을 올려도 글이 계속 묻혀 동아리를 홍보하기 어렵다는 문제가 있어요. 학우분들 입장에서도 어떤 동아리가 있는지 한 번에 확인하기 어렵다는 문제가 있죠. 이러한 학우분들의 불편함을 조금이라도 덜어드리고자 열심히 개발했습니다.
동아리 이름이나 키워드를 입력하면 원하는 동아리를 빠르게 검색할 수 있어요!
자세한 규칙은 .claude/api-conventions.md와 .claude/forbidden.md에 있습니다. 자주 쓰는 react-query 규칙만 요약합니다.
{layer}/{domain}/api/queries.ts에 get{이름}Options 함수로 만듭니다.favoriteBaseKey 등)를 같은 파일에 두고, 모든 키와 캐시 무효화에 이 키를 씁니다. 컴포넌트에서 queryKey 배열을 직접 쓰지 않습니다.export default를 씁니다.export const favoriteBaseKey = ['favorites'] as const;
export function getFavoriteListOptions(params: { page: number; size: number }) {
return queryOptions({
queryKey: [...favoriteBaseKey, params.page, params.size],
queryFn: () => getClientFavoriteList(params),
});
}
// 사용
useSuspenseQuery(getFavoriteListOptions({ page, size }));
queryClient.invalidateQueries({ queryKey: favoriteBaseKey });
| 범위 | 기본값 | 정하는 곳 |
|---|---|---|
| 사용자 페이지 | 10분 | src/app/[universityCode]/layout.tsx, src/app/(home)/layout.tsx |
| 어드민 대시보드 | 0 | src/app/(admin)/dashboard/layout.tsx |
쿼리별로 다르게 둘 때는 get{이름}Options 안에 설정하고 이유를 남깁니다. 현재 예외는 즐겨찾기 목록(staleTime: 0, 항상 최신 목록을 다시 불러옴) 하나입니다.
프론트 작업 중 확인했지만 백엔드 API가 필요해 보류한 항목입니다.
GET /clubs?universityCode={code}&page=1&size=200으로 동아리 목록을 받아 브라우저에서 이름을 거릅니다.size=200으로 한 번만 받기 때문에, 동아리가 200개를 넘는 학교는 나머지 동아리가 자동완성에 나오지 않습니다.id, name)만 필요한데 소개글(HTML)·로고·모집 정보까지 함께 받아 응답이 무겁습니다.GET /clubs/names?universityCode=SEJONG → { data: [{ id, name }] }src/shared/api/getClientClubNameList.ts의 요청 경로만 바꾸면 됩니다. 초성 검색은 지금처럼 프론트에서 처리합니다.