Skip to content

feature: 다운로드 페이지 추가#54

Merged
FlashingFuture merged 5 commits into
mainfrom
feature/web-home
Sep 22, 2025
Merged

feature: 다운로드 페이지 추가#54
FlashingFuture merged 5 commits into
mainfrom
feature/web-home

Conversation

@FlashingFuture

Copy link
Copy Markdown
Contributor

작업 내용

  • apk 다운로드 링크가 있는 페이지 추가
  • github releases를 이용한 apk 다운로드 연결

@vercel

vercel Bot commented Sep 22, 2025

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Preview Comments Updated (UTC)
runova-web Ready Ready Preview Comment Sep 22, 2025 2:04am

@github-actions github-actions Bot added the ✨feature 기능 label Sep 22, 2025
@gemini-code-assist

Copy link
Copy Markdown

Summary of Changes

Hello @FlashingFuture, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

이 PR은 사용자가 애플리케이션의 APK를 다운로드할 수 있는 전용 홈 페이지를 도입합니다. 이 페이지는 앱의 주요 기능을 시각적으로 매력적인 별자리 애니메이션 배경과 함께 소개하며, GitHub Releases를 통해 직접 APK를 다운로드할 수 있는 링크를 제공합니다. 이를 통해 사용자 접근성을 향상시키고 앱의 첫인상을 개선합니다.

Highlights

  • 새로운 다운로드 페이지 추가: APK 다운로드 링크와 앱 기능 소개를 포함하는 새로운 홈 페이지가 추가되었습니다.
  • 별자리 애니메이션 배경 구현: useConstellation 훅을 사용하여 동적인 별자리 애니메이션 배경을 홈 페이지에 적용했습니다.
  • 루트 경로 변경: 애플리케이션의 루트 경로(/)가 이제 새로운 홈 페이지를 렌더링하도록 변경되었습니다.
  • 파비콘 업데이트: 웹 애플리케이션의 파비콘이 vite.svg에서 favicon.png로 변경되었습니다.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

다운로드 페이지 추가 작업을 잘 보았습니다. 별자리 애니메이션 배경이 인상적이네요! 전반적으로 코드가 잘 작성되었지만, 몇 가지 부분에서 스타일 가이드 준수 및 코드 품질을 높일 수 있는 제안 사항을 남깁니다. 주로 상수를 별도 파일로 관리하고, 매직 넘버를 줄이며, HTML 시맨틱을 개선하는 내용입니다. 자세한 내용은 각 파일의 코멘트를 확인해주세요.

Comment thread apps/web/src/pages/Home/index.tsx Outdated
Comment on lines +41 to +44
<A href={DL_URL} rel="noopener">
<span>📱 Android APK (v1.0.0)</span>
<span>⬇</span>
</A>

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

critical

HTML 표준에 따르면 <ul> 태그의 직계 자식 요소로는 <li>만 올 수 있습니다. 현재 <a> 태그가 <ul> 바로 아래에 있어 시맨틱 웹 규칙에 어긋납니다. <a> 태그를 <li> 태그로 감싸주세요.

          <li>
            <A href={DL_URL} rel="noopener">
              <span>📱 Android APK (v1.0.0)</span>
              <span>⬇</span>
            </A>
          </li>

Comment on lines +17 to +18
const stars: { x: number; y: number; vx: number; vy: number; r: number }[] =
[];

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high

스타일 가이드에 따라 stars 배열의 타입을 인라인으로 정의하는 대신, 별도의 interfacetype으로 분리하는 것이 좋습니다.1 아래와 같이 Star 인터페이스를 훅 외부나 파일 상단에 정의하고 사용하면 코드 가독성이 향상되고 타입 재사용이 용이해집니다.

interface Star {
  x: number;
  y: number;
  vx: number;
  vy: number;
  r: number;
}
Suggested change
const stars: { x: number; y: number; vx: number; vy: number; r: number }[] =
[];
const stars: Star[] = [];

Style Guide References

Footnotes

  1. Props, State, Navigation Param 등은 interface 또는 type alias로 관리합니다.

Comment on lines +4 to +5
const DL_URL =
'https://github.com/prgrms-fullstack-devcourse/Runova_FE/releases/download/v1.0.0/runova.apk';

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high

스타일 가이드에 따라 DL_URL과 같은 상수는 컴포넌트 파일 내에 하드코딩하기보다 src/constants.ts와 같은 파일에서 관리하는 것이 좋습니다.1 이렇게 하면 상수를 중앙에서 관리할 수 있어 유지보수성이 향상됩니다.

Style Guide References

Footnotes

  1. 상수는 하드코딩하지 말고 constants.ts 또는 theme.ts에 관리합니다.

const gen = () => {
stars.length = 0;
const { clientWidth: w, clientHeight: h } = canvas;
const count = Math.floor((w * h) / 14000); // 화면 크기에 따른 밀도

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

코드 내에 14000과 같은 매직 넘버가 여러 곳에 사용되고 있습니다. 스타일 가이드에 따라 이러한 값들은 의미를 알 수 있는 이름의 상수로 선언하여 관리하는 것이 좋습니다.1 예를 들어, STAR_DENSITY_FACTOR = 14000과 같이 정의할 수 있습니다. 다른 매직 넘버들(e.g., 0.15, 1.6, 120, 20)도 마찬가지로 상수로 추출해주세요.

Style Guide References

Footnotes

  1. 매직 넘버(예: 200, 0.5 등)는 이름 있는 상수로 치환합니다.

ctx.globalAlpha = 0.9;
ctx.beginPath();
ctx.arc(s.x, s.y, s.r, 0, Math.PI * 2);
ctx.fillStyle = '#fff';

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

스타일 가이드에 따르면 재사용 가능한 색상은 theme 또는 constants 파일로 관리해야 합니다.1 #fff와 같은 하드코딩된 색상 값을 디자인 시스템의 일부인 theme.colors.white와 같은 형태로 참조하도록 변경하는 것을 권장합니다. 73번째 줄의 #ffffff도 마찬가지입니다.

Style Guide References

Footnotes

  1. 재사용 가능한 색상, 폰트, spacing은 theme 또는 constants 파일로 관리합니다.

Comment on lines +51 to +61
const Wrap = styled.main`
position: relative;
min-height: 100dvh;
display: grid;
place-items: center;
gap: 18px;
padding: 24px 16px 40px;
background: #000;
color: #fff;
overflow: hidden;
`;

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

스타일 가이드에 따라 색상, 간격(spacing), 폰트 크기 등 재사용 가능한 스타일 속성은 theme 또는 constants 파일로 관리하는 것이 좋습니다.1 현재 Wrap, Card 등 여러 컴포넌트에 스타일 값이 하드코딩되어 있습니다. 예를 들어 gap: 18px, padding: 24px 16px 40px, background: #000 등을 theme.spacing.md, theme.colors.black와 같이 theme 객체를 참조하도록 리팩토링하면 일관성 유지와 유지보수에 도움이 됩니다.

Style Guide References

Footnotes

  1. 재사용 가능한 색상, 폰트, spacing은 theme 또는 constants 파일로 관리합니다.

Comment on lines +128 to +139
const H = styled.h3`
margin: 0 0 6px;
font-size: 16px;
line-height: 1.3;
`;

const P = styled.p`
margin: 0;
color: #cfcfcf;
font-size: 13px;
line-height: 1.5;
`;

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

컴포넌트의 이름을 H, P와 같이 한 글자로 지정하면 코드의 가독성을 해칠 수 있습니다. 다른 개발자가 코드를 이해하기 어렵게 만들고, 유지보수를 어렵게 할 수 있습니다. FeatureTitle, FeatureDescription과 같이 역할이 명확히 드러나는 이름으로 변경하고, JSX에서도 <H> 대신 <FeatureTitle>로 사용하는 것을 권장합니다.


const FeatImg = styled.img`
width: 100%;
height: 380px;

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

height: 380px로 높이를 고정하면 다양한 화면 크기에서 이미지 비율이 왜곡될 수 있습니다. aspect-ratio 속성을 사용하여 이미지의 종횡비를 유지하거나, height: auto로 설정하여 자연스러운 크기를 유지하는 것을 고려해 보세요. 이는 반응형 디자인에 더 적합합니다.

@github-actions github-actions Bot added the 🎨style ui, 스타일 label Sep 22, 2025
@FlashingFuture FlashingFuture merged commit dcc998d into main Sep 22, 2025
3 checks passed
@FlashingFuture FlashingFuture deleted the feature/web-home branch September 22, 2025 02:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant