Skip to content
Open
Show file tree
Hide file tree
Changes from 35 commits
Commits
Show all changes
48 commits
Select commit Hold shift + click to select a range
3848bdf
chore: 기본 세팅
kkys00 May 21, 2025
28b8af0
Merge pull request #1 from kkys00/develop
kkys00 May 21, 2025
1d1d553
chore: 디자인 시스템 세팅
kkys00 May 21, 2025
41e1a81
Merge pull request #2 from kkys00/develop
kkys00 May 21, 2025
3299cdf
feat: 공통 컴포넌트 submit btn 추가
kkys00 May 22, 2025
bb36a5d
feat: auth 페이지 header, input 컴포넌트
kkys00 May 22, 2025
f842ee5
style: 테마 색상 수정
kkys00 May 22, 2025
0d72138
feat: 로그인, 회원가입 페이지 input UI 추가
kkys00 May 22, 2025
6a431b3
feat: 팀/팀원 선택 추가
kkys00 May 23, 2025
f3a7651
style: layout 조정
kkys00 May 23, 2025
d3d3bcd
feat: 투표 페이지
BeanMouse May 23, 2025
74019b2
feat: 결과 페이지
BeanMouse May 23, 2025
b552edb
feat: 데모데이 투표
BeanMouse May 23, 2025
c4a8a21
chore: 레이아웃 이름 변경
kkys00 May 23, 2025
84fd3e6
feat: lottie 컴포넌트 추가
kkys00 May 23, 2025
eba8801
feat: 홈페이지
kkys00 May 23, 2025
67147c5
Merge pull request #3 from kkys00/feature/sign
kkys00 May 23, 2025
93d6cb4
Merge pull request #4 from VoteDream/feature/votes
kkys00 May 23, 2025
f981a01
Merge pull request #5 from kkys00/feature/home
kkys00 May 23, 2025
f463a20
feat: 홈페이지 반응형 추가
kkys00 May 23, 2025
18e1e9e
feat: 로그인, 회원가입 페이지 반응형 추가
kkys00 May 23, 2025
bb8d7c3
style: lottie 크기 수정
kkys00 May 23, 2025
b985cf9
chore: 반응형 적용
BeanMouse May 24, 2025
b9b3b4a
feat: 홈 로그인 회원가입 반응형 추가
BeanMouse May 24, 2025
2ef3575
Merge pull request #7 from VoteDream/feature/votes
kkys00 May 24, 2025
1fbcee5
refactor: 백엔드 enum type 반영
kkys00 May 24, 2025
416249b
feat: tanstack query 추가
kkys00 May 24, 2025
476c5fa
feat: 회원가입 api 연결
kkys00 May 24, 2025
775cde7
feat: 로그인 api 연결 구현
kkys00 May 24, 2025
461cf14
chore: 주석, 파일 정리
kkys00 May 24, 2025
1186d18
feat: 회원가입 유효성 검사 추가
kkys00 May 24, 2025
7ed314b
docs: readme 작성
kkys00 May 24, 2025
de1cc9c
Merge pull request #8 from kkys00/feature/api
kkys00 May 24, 2025
84d7980
Merge pull request #9 from kkys00/docs/README
kkys00 May 24, 2025
e471545
Merge pull request #10 from VoteDream/develop
kkys00 May 24, 2025
fa65a42
refactor: enum -> as const로 변경
kkys00 Jun 14, 2025
9b5a7bc
refactor: inputField 컴포넌트 삭제
kkys00 Jun 14, 2025
10b3c5e
feat: 유저 정보 저장
kkys00 Jun 27, 2025
64127ed
Refactor: 로그인 유저 정보 저장
BeanMouse Jun 27, 2025
bba21af
feat: api 연결 로직
BeanMouse Jun 27, 2025
5cedc17
feat: api 연결
BeanMouse Jun 27, 2025
22b1344
feat: 정보 추가
BeanMouse Jun 28, 2025
717eaf6
feat: 정보 추가 및 팀 한영 변환
BeanMouse Jun 28, 2025
56a0b4d
Merge pull request #12 from VoteDream/feature/voteApi
kkys00 Jun 28, 2025
00df2e0
Refactor: 팀명 오류 수정, 투표 상태 반영 구현 (#13)
kkys00 Jun 28, 2025
a1d9abf
Fix: 로컬 스토리지 에러 수정 (#14)
kkys00 Jun 28, 2025
4b88f2a
Docs: readme 작성 (#15)
kkys00 Jun 28, 2025
39a8e99
Merge pull request #16 from VoteDream/develop
kkys00 Jun 28, 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
18 changes: 18 additions & 0 deletions .github/ISSUE_TEMPLATE/feature.md

Choose a reason for hiding this comment

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

헉 저희팀 fork한 레포지토리에서 issue를 못 파는 줄 알고 이슈 못 쓰고 있었는데 이슈 템플릿 있으셔서 찾아보니까 포크 뜬 레포지토리에서도 이슈를 생성할 수 있네요🫢

Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
---
name: Feature
about: new feature
title: "Feature:"
labels: feature
assignees: ""
---

설명을 작성해주세요.

## To Do

- [ ] todo
- [ ] todo

## ETC

기타사항을 작성해주세요.
14 changes: 14 additions & 0 deletions .github/ISSUE_TEMPLATE/fix.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
---
name: Fix
about: 트러블 슈팅
title: 'Fix:'
labels: ''
assignees: ''

---

## Description
설명을 작성해주세요.

## ETC
기타사항을 작성해주세요.
15 changes: 15 additions & 0 deletions .github/ISSUE_TEMPLATE/hotfix.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
---
name: HotFix
about: 치명적인 버그
title: "Hotfix:"
labels: ""
assignees: ""
---

## Description

설명을 작성해주세요!

## ETC

기타사항을 작성해주세요.
20 changes: 20 additions & 0 deletions .github/ISSUE_TEMPLATE/refactoring.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
---
name: Refactoring
about: 리팩토링
title: 'Refactoring:'
labels: refactor
assignees: ''

---

## Description
리팩토링 배경을 설명해주세요.

## AS-IS
기존에 구현되어있는 방식을 설명해주세요.

## TO-BE
어떻게 리팩토링 되어야하는 지 설명해주세요.

## ETC
기타사항을 작성해주세요.
20 changes: 20 additions & 0 deletions .github/ISSUE_TEMPLATE/style.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
---
name: Style
about: 디자인 요소 변경
title: "Style:"
labels: style
assignees: ""
---

## Description

설명을 작성해주세요!

## To Do

- [ ] todo
- [ ] todo

## ETC

기타사항을 작성해주세요.
21 changes: 21 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
## PR 제목

### PR을 한 이유 🎯

- (이곳에 PR을 작성한 이유를 간략하게 적어주세요.)

### 이슈 번호 📎

- (해결하고자 하는 이슈의 이름과 해시태그 번호를 적어주세요. 예: `이슈명 #123`)

### 변경사항 🛠

- (개발한 내용의 요약을 적어주세요. 예: "로그인 버그 수정", "새로운 기능 추가" 등)

### 특이사항 📌

- (이 PR에 대한 추가적인 정보나, 리뷰어가 주의깊게 봐야할 점 등을 적어주세요.)

### 테스트 결과 📝

- (테스트를 진행한 결과, 해당 결과에 따른 스크린샷 또는 기타 정보를 제공해주세요.)
32 changes: 32 additions & 0 deletions .github/workflows/eslint.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
name: ESLint Check

# Pull Request가 실행될 때만 실행
on:
pull_request:
branches:
- main
- develop

jobs:
lint:
name: Run ESLint
runs-on: ubuntu-latest

steps:
# 1. 코드 체크아웃 -> 코드를 가져오기 위해 필요
- name: Checkout code
uses: actions/checkout@v3

# 2. Node.js 설정 -> js파일 린트를 위해 필요
- name: Set up Node.js
uses: actions/setup-node@v3
with:
node-version: 18

# 3. 의존성 설치 -> ESlint 실행 필요
- name: Install dependencies
run: npm install

# 4. ESLint 실행 -> 린트 실행!
- name: Run ESLint
run: npm run lint
43 changes: 43 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.

# dependencies
/node_modules
/.pnp
.pnp.*
.yarn/*
!.yarn/patches
!.yarn/plugins
!.yarn/releases
!.yarn/versions

# testing
/coverage

# next.js
/.next/
/out/

# production
/build

# misc
.DS_Store
*.pem

# debug
npm-debug.log*
yarn-debug.log*
yarn-error.log*
.pnpm-debug.log*

# env files (can opt-in for committing if needed)
.env*

# vercel
.vercel

# typescript
*.tsbuildinfo
next-env.d.ts

.vercel
4 changes: 4 additions & 0 deletions .husky/commit-msg
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"

npx --no-install commitlint --edit
1 change: 1 addition & 0 deletions .husky/pre-commit
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
npm run lint

Choose a reason for hiding this comment

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

linting을 돌려서 코드의 품질을 체크한 뒤, 커밋을 할 수 있도록 husky를 쓰는 태도 정말 훌륭합니다

3 changes: 3 additions & 0 deletions .prettierrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"plugins": ["prettier-plugin-tailwindcss"]
}
54 changes: 34 additions & 20 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,20 @@
# next-vote-21th

## **서론**

안녕하세요! 프론트엔드 운영진 송유선입니다. 🍀
벌써 마지막 과제에 도달했네요. 이번 스터디는 특별히 **백엔드 팀원들과 함께하는 협업 과제**로 준비했습니다.

현대 웹 개발에서는 REST API가 데이터 통신의 핵심으로 자리 잡으면서, 프론트엔드와 백엔드 간의 협업이 더욱 중요해졌습니다. 백엔드는 API를 통해 데이터를 제공하고, 프론트엔드는 이를 기반으로 사용자 경험을 책임집니다. 따라서 API를 잘 활용하고 백엔드 개발자와 원활히 소통하는 능력은 필수적인 스킬입니다.

이번 과제는 앞으로 팀 프로젝트에서 **실제로 백엔드와 협업하기 전 연습을 해보는 기회**입니다. Next.js를 활용해 **투표 기능**을 가진 애플리케이션을 제작하면서 백엔드와의 소통, 역할 분담, 데이터 흐름을 다루는 경험을 쌓아 보세요. 이 경험은 추후 팀 프로젝트에서 더욱 원활한 협력을 가능하게 할 것입니다.

여러분의 멋진 결과물을 기대하며 마지막 과제를 응원합니다. 화이팅! 🔥
## CEOS 21기 이어드림 투표 페이지 - 🗳️투표드림

## 배포

1. 프론트엔드
1. 김영서(@kkys00)
1. [피그마 디자인](https://www.figma.com/design/35IM3f0mGvcA6u3BGixE2O/CEOS-DreaDream-VoteDream?node-id=0-1&t=25welsMh8qPxUilY-1)
2. 홈, 로그인, 회원가입 페이지 퍼블리싱
3. 로그인, 회원가입 api 연결
2. 이주희(@BeanMouse)
1. 파트장 투표, 데모데이 투표, 투표 결과 페이지 퍼블리싱
2. 투표 api 연결
2. 백엔드
1. 한혜수
2. 오지현

---

Expand All @@ -26,39 +31,48 @@

### **기한**

- **2025년 5월 24일 토요일**까지 1차 필수 구현 사항이 적용된 중간 결과물을 제출해주세요.
- **2025년 5월 24일 토요일**까지 1차 필수 구현 사항이 적용된 중간 결과물을 제출해주세요.

---

### **1차 필수 구현 사항**

1. **프로젝트 세팅**
1. ✅ **프로젝트 세팅**

- Next.js의 특성을 고려하여 효과적인 폴더 구조를 고민해 봅니다.
- API 통신, 스타일링, 전역 상태 관리 및 기타 라이브러리 등을 팀원과 상의하여 세팅합니다.

2. **퍼블리싱**
2. ✅ **퍼블리싱**

- 프로젝트에 필요한 모든 화면을 퍼블리싱합니다.
- 다양한 디바이스에서 최적의 사용자 경험을 제공하기 위해 반응형 디자인을 적용합니다.

3. **로그인 기능**
- 사용자는 아이디와 비밀번호를 입력하여 로그인할 수 있습니다.
3. **로그인 기능**
- 사용자는 아이디와 비밀번호를 입력하여 로그인할 수 있습니다.
- 로그인 시 JWT를 통해 인증을 처리합니다.
- 아이디 또는 비밀번호가 틀렸을 경우, 에러 메시지를 표시합니다.
- 로그아웃 기능을 구현합니다.
- ✅ 쿠키 저장까지
- ✅ 아이디 또는 비밀번호가 틀렸을 경우, 에러 메시지를 표시합니다.
- ✅ 로그아웃 기능을 구현합니다.
- **백에서 서버 배포가 안 되었을 경우**에는 다음 주로 넘겨도 괜찮습니다.
- ✅ 로그인 POST, 회원가입 POST까지 서버 배포됨.
- `https` 프로토콜 아직 불가능.
- 유저 정보에 대한 GET api 아직 없음

### **2차 필수 구현 사항**

1. **투표 기능**

- 로그인한 사용자는 투표에 참여할 수 있습니다.
- 각 후보에 대한 투표 수를 실시간으로 확인할 수 있습니다.
- 사용자는 한 번만 투표할 수 있으며, 중복 투표를 방지합니다.

2. **후보 목록 조회**

- 모든 사용자는 후보자의 목록과 상세 정보를 확인할 수 있습니다.
- 후보자의 이름, 사진, 소개 등을 표시합니다.

3. **투표 결과 조회**

- 투표 종료 후, 모든 사용자는 최종 투표 결과를 확인할 수 있습니다.
- 각 후보자의 득표 수와 득표율을 시각적으로 표현합니다.

Expand All @@ -71,23 +85,23 @@
### **디자인 참고**

다음의 리소스를 참고해 UI/UX를 개선해보세요:

- [디자인 레퍼런스1](https://www.figma.com/design/7xoPYTjMHcwPk2yl92Eynx/%ED%98%91%EB%8F%99%EA%B3%BC%EC%A0%9C-%EB%A0%88%ED%8D%BC%EB%9F%B0%EC%8A%A4?node-id=0-1&node-type=canvas)
- [디자인 레퍼런스2](https://www.figma.com/design/XpKkyWcguIFY9QzWWJHOyL/%ED%98%91%EB%8F%99%EA%B3%BC%EC%A0%9C-%EB%A0%88%ED%8D%BC%EB%9F%B0%EC%8A%A4?node-id=0-1)
- [디자인 레퍼런스3](https://www.figma.com/design/12WK4MEhjwNmt89HkRu8Gp/%EB%B0%94%EB%A6%AC%EB%B0%94%EB%A6%AC-%ED%88%AC%ED%91%9C)
- [디자인 레퍼런스4](https://www.figma.com/design/qsTGeBRrKWiWE04eVOTFQ9/CEOS-CupfeeDeal-Vote?node-id=38-503&p=f&t=sM5p1Gw4hA5G5H5D-0)

20기 과제

- [CupfeeDeal](https://github.com/CEOS-Developers/next-vote-20th/pull/6)
- [페달지니](https://github.com/CEOS-Developers/next-vote-20th/pull/2)
- [케이크WAY](https://github.com/CEOS-Developers/next-vote-20th/pull/5)


### **선택 사항**

- API 요청 방식은 자유롭게 선택 가능 (예: Fetch API, axios 등).
- 최신 자바스크립트 스타일에 익숙해지기 위해 `Promise.then()` 대신 `async/await`를 사용해 보세요.


## **Key Question**

- Zod 스키마가 무엇인지, 어떻게 활용할 수 있는지 알아봅시다.
Expand Down
1 change: 1 addition & 0 deletions commitlint.config.cjs
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
module.exports = { extends: ["@commitlint/config-conventional"] };
16 changes: 16 additions & 0 deletions eslint.config.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
import { dirname } from "path";
import { fileURLToPath } from "url";
import { FlatCompat } from "@eslint/eslintrc";

const __filename = fileURLToPath(import.meta.url);
const __dirname = dirname(__filename);

const compat = new FlatCompat({
baseDirectory: __dirname,
});

const eslintConfig = [
...compat.extends("next/core-web-vitals", "next/typescript"),
];

export default eslintConfig;
15 changes: 15 additions & 0 deletions next.config.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import type { NextConfig } from "next";
import type { Configuration } from "webpack";

const nextConfig: NextConfig = {
webpack(config: Configuration) {
config.module?.rules?.push({
test: /\.svg$/,
use: ["@svgr/webpack"],
});

return config;
},
};

export default nextConfig;
Loading