Skip to content

DHyeon98/narjoa

Repository files navigation

Narjoa☀️

소개

  • 날씨, 여성안심지킴이집, 범죄 관련 뉴스를 알 수 있는 반응형 홈페이지를 Next.js로 개발했습니다.

어플리케이션 링크

기획의도

  • tailwind, 차트, 웹접근성, SEO, 배포자동화, 도커 등 실무에서 자주 사용하는 기능을 적용해 보자는 취지에서 기획하였습니다.

Skills

FlatForms & Language


주요 기능

1. 카카오맵 & 차트 활용

  • 카카오맵과 Recharts를 활용하여 개발했습니다.
  • 카카오맵을 클릭해서 위치를 설정하거나, 지킴이집의 위치를 확인할 수 있는 마커를 표시하였습니다.
  • Chart.js와 D3.js를 사용하지 않고 Recharts를 사용한 이유는 러닝 커브가 낮으며 커스텀이 쉽고, 리액트 친화적인 라이브러리라 선택하였습니다.

2. Pre-Fetching

  • TanStack Query의 주요 기능인 Pre-Fetching을 사용하였습니다.
  • 페이지네이션은 사용자가 누를 확률이 높은 곳이기 때문에 Pre-Fetching을 사용하여 사용자 경험을 향상시켰습니다.

3. 배포 자동화

  • Github Action과 Docker, ec2를 활용한 배포 자동화로, 배포까지의 시간을 단축하였습니다.
  • Workflow에서 타입과 빌드 테스트를 통과하면 Docker로 이미지를 푸시하고 ec2에서 Docker 배포를 하는 파이프라인을 구성하였습니다.

4. SEO (검색엔진 최적화), 웹 접근성

  • 검색엔진 최적화를 위해 meta 태그와 시맨틱 태그 등 기본적인 웹 접근성을 지키면서 개발을 진행했습니다.
  • 결과적으로 구글 상위에 랭크되었으며 위 사진에서 확인할 수 있습니다.

에러 처리

Error-Boundary

  • api 요청마다 에러 처리를 하여 어떤 요청이 실패가 되었는지 사용자가 알아볼 수 있도록 설계하였습니다.
  • 카카오 맵의 경우, 대한민국 권외 클릭시 요청처리가 되지 않게 하였습니다.
// 날씨 정보 요청
export const getWeather = async (lat: number, lng: number) => {
  try {
    const response = await weatherInstance.get(
      `onecall?lat=${lat}&lon=${lng}&exclude=minutely,alerts&appid=${process.env.NEXT_PUBLIC_WEATHER_API_KEY}&units=metric`,
    );
    return response.data;
  } catch {
    throw new Error('날씨 정보를 가져오는 중 오류가 발생했습니다.');
  }
};

// 전역 에러 바운더리
export default function App({ Component, pageProps }: AppProps) {
  return (
    <QueryClientProvider client={queryClient}>
      <Header />
      <ErrorBoundary FallbackComponent={ErrorFallback}>
        <Component {...pageProps} />
      </ErrorBoundary>
      <Footer />
    </QueryClientProvider>
  );
}

트러블 슈팅

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published