Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
56 changes: 19 additions & 37 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,50 +1,32 @@
# 🐼 판다마켓 프로젝트
# 🐼 판다마켓 프로젝트 (Sprint 1, 2)

> _이 저장소는 판다마켓 프로젝트의 프론트엔드 코드를 관리하는 곳입니다. 프로젝트를 클론하여 개발 환경을 설정하고, 각 브랜치에서 해당 스프린트 미션을 수행해 주세요!_ 🛠️
## 📌 프로젝트 소개

## 소개
이번 프로젝트에서는 판다마켓 웹사이트의 기본 구조를 직접 구현하며
HTML과 CSS의 기초를 학습하고 적용했습니다.

안녕하세요! 판다마켓 프로젝트에 오신 것을 환영합니다! 🥳
판다마켓은 따뜻한 중고거래를 위한 커뮤니티 플랫폼이에요. 여러분은 이곳에서 상품을 등록하고, 다른 사용자들과 소통하며, 자유롭게 이야기를 나눌 수 있어요. 매주 스프린트 미션을 통해 기능을 하나씩 만들어 가며 성장해 나가는 여정을 함께해요. 🚀

![PandaMarket](https://github.com/user-attachments/assets/3784b99f-73c9-4349-a9a9-92b2a7563574)
_위 이미지는 판다마켓의 대표 이미지입니다._ 📸

## 스프린트 미션이란? 🤔

스프린트 미션은 **하나의 개인 프로젝트를 길게 진행하면서, 그 과정에서 주기적으로 피드백을 받을 수 있는 시스템**이에요. 각 스프린트마다 배운 이론을 적용해 보고, **멘토님께 코드 리뷰를 받아가며 실력을 쑥쑥 키워갈 수 있는 중요한 개인 과제**랍니다. 💪

## 주요 기능 ✨

1. **상품 등록**: 내가 가진 물건을 올리고, 사진과 설명을 추가해 직접 판매할 수 있어요!
2. **문의 댓글**: 상품에 대한 궁금한 점이나 의견을 자유롭게 남길 수 있답니다. 📝
3. **자유게시판**: 다양한 주제로 친구들과 이야기를 나누고, 정보를 공유할 수 있는 공간이에요! 🗣️

## 프로젝트 브랜치 구조 🏗️

프로젝트는 단계별로 나뉘어 있고, 각 스프린트 미션에 맞는 브랜치가 있어요. 각 브랜치를 통해 체계적으로 개발하며 학습할 수 있어요. 🎯
---

### 브랜치 설명
## 🛠️ 개발 내용

1. **basic (part1): 스프린트 미션 1 ~ 3 FE 요구사항**
### ✅ Sprint Mission 1

- 기본적인 웹 애플리케이션 기능 구현을 위한 초기 브랜치입니다. HTML, CSS, JavaScript 등을 사용해 기본을 다집니다.
- **스프린트 미션 1부터 4까지**의 프론트엔드 내용을 포함하고 있어요.
- 판다마켓 메인(루트) 페이지 구현
- 다른 페이지로 이동할 수 있는 링크 연결
- 로그인 페이지(빈 페이지) 연결

2. **react (part2): 스프린트 미션 5 ~ 6 FE 요구사항**
👉 웹사이트의 기본 구조와 페이지 이동 흐름을 구성하는 데 집중했습니다.

- React 라이브러리를 사용해 프론트엔드 기능을 구현하는 브랜치입니다. 컴포넌트 기반 아키텍처와 상태 관리를 배웁니다.
- **스프린트 미션 5부터 6까지, 그 이후**의 프론트엔드 내용을 포함하고 있어요.
- 만약 스프린트 미션 9부터 프론트엔드 코드를 Next가 아닌 React로 구현하고 싶다면 react 브랜치를 사용해요.
---

3. **next (part3,4): 스프린트 미션 7 FE 요구사항~**
### ✅ Sprint Mission 2

- Next.js를 사용해 서버 사이드 렌더링(SSR)과 정적 사이트 생성(SSG) 등 고급 기능을 구현합니다.
- **스프린트 미션 7부터** 시작하는 프론트엔드 내용을 포함하고 있어요.
- 만약 스프린트 미션 8부터 프론트엔드 코드를 React가 아닌 Next로 구현하고 싶다면 next 브랜치를 사용해요.
- 로그인 페이지 구현
- 회원가입 페이지 구현 (로그인 페이지와 연결)
- input 요소 활용
- placeholder 적용
- focus 상태에 따른 CSS 스타일 적용

> _스프린트 미션 내 백엔드 요구사항은 [백엔드 레포지토리](https://github.com/codeit-sprint-fullstack/11-sprint-mission-be)의 브랜치에서 관리해주세요_
👉 사용자 입력과 관련된 UI 요소 및 상태 변화에 따른 스타일링을 구현했습니다.

---

본 프로젝트는 [코드잇](https://www.codeit.kr)의 소유이며, 교육 목적으로만 사용됩니다. © 2026 Codeit. All rights reserved.
9 changes: 9 additions & 0 deletions faq.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>faq</title>
</head>
<body></body>
</html>
Binary file added image/Component 2.png
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 image/Component 3.png
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 image/Img_home_01.png
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 image/Img_home_02.png
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 image/Img_home_03.png
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 image/Img_home_bottom.png
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 image/Img_home_top.png
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 image/Property 1=Variant2.png
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 image/Property 1=sm.png
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 image/btn_large.png
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 image/btn_small_48.png
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 image/ic_facebook.png
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 image/ic_instagram.png
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 image/ic_twitter.png
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 image/ic_youtube.png
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 image/logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
156 changes: 156 additions & 0 deletions index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,156 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>판다마켓</title>
<link rel="stylesheet" href="style.css" />
</head>

<body>
<header>
<div class="gnb-container">
<div class="gnb-frame1">
<div class="gnb-logo1">
<img src="image/Property 1=sm.png" alt="로고" />
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Thanking...

아직 진도가 나가지 않았거나, 이렇게 구현하라고 한 것일수도 있지만...
보통 이러한 로고의 경우 클릭 이벤트를 함께 넣어주는 게 좋습니다.
<a> 태그를 사용하거나, js 이벤트를 연결하여 홈으로 이동하게 하는 등 이동 링크를 구현 해 주면 좋을 것 같아요 😊

</div>
<div class="gnb-button1">
<a href="login.html">
<img src="image/btn_small_48.png" alt="로그인버튼" />
</a>
</div>
</div>
</div>
</header>

<main>
<section1>
<div class="section1-container">
<div class="section1-frame1">
<div class="section1-box1">
<div class="section1-text1">
일상의 모든 물건을<br />
거래해 보세요
</div>
<div class="section1-button1">
<a href="items.html">
<img src="image/btn_large.png" alt="구경버튼" />
</a>
</div>
</div>
<div class="section1-img1">
<img src="image/Img_home_top.png" alt="섹션1이미지" />
</div>
</div>
</div>
</section1>

<section2>
Copy link
Copy Markdown
Collaborator

@devbini devbini Apr 8, 2026

Choose a reason for hiding this comment

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

Thinking...

<section1>이나 <section2>같은 커스텀 태그도 브라우저가 바로 깨지진 않아서 지금 화면은 나옵니다.

그래도 장기적으로는 시맨틱한 <section> 태그와 class 조합으로 가는 편이 더 표준적이기도 하고, SEO 관점에서 이익을 볼 수 있어요.
타 개발자가 참여했을 때 유지보수 측면에서도 이점을 가지겠죠!

예를 들면...

<section class="section section-1-item">

처럼 작성해서 시멘틱 태그는 유지하고,
스타일은 class로 충분히 구분할 수 있습니다 😊

<div class="section2-container">
<div class="section2-frame1">
<div class="section2-img1">
<img src="image/Img_home_01.png" alt="섹션2이미지" />
</div>
<div class="section2-box1">
<div class="section2-text1">Hot item</div>
<div class="section2-text2">인기 상품을<br />확인해 보세요</div>
<div class="section2-text3">
가장 HOT한 중고거래 물품을<br />판다 마켓에서 확인해 보세요
</div>
</div>
</div>
</div>
</section2>

<section3>
<div class="section3-container">
<div class="section3-frame1">
<div class="section3-box1">
<div class="section3-text1">Search</div>
<div class="section3-text2">
구매를 원하는<br />상품을 검색하세요
</div>
<div class="section3-text3">
구매하고 싶은 물품은 검색해서<br />쉽게 찾아보세요
</div>
</div>
<div class="section3-img1">
<img src="image/Img_home_02.png" alt="섹션3이미지" />
</div>
</div>
</div>
</section3>

<section4>
<div class="section4-container">
<div class="section4-frame1">
<div class="section4-img1">
<img src="image/Img_home_03.png" alt="섹션4이미지" />
</div>
<div class="section4-box1">
<div class="section4-text1">Register</div>
<div class="section4-text2">
판매를 원하는<br />상품을 등록하세요
</div>
<div class="section4-text3">
어떤 물건이든 판매하고 싶은 상품을<br />
쉽게 등록하세요
</div>
</div>
</div>
</div>
</section4>

<sectino5>
<div class="section5-container">
<div class="section5-frame1">
<div class="section5-text1">
믿을 수 있는<br />판다마켓 중고 거래
</div>
<div class="section5-img1">
<img src="image/Img_home_bottom.png" alt="섹션5이미지" />
</div>
</div>
</div>
</sectino5>
</main>

<footer>
<div class="footer-container">
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

👍 Good Point!

footer 안에서 정책 링크와 SNS 링크를 분리해서 배치한 구성이 좋았습니다.
어떻게 보면 기본적인 거지만, 정보 성격이 다른 링크들을 섞지 않아서, 사용자가 필요한 영역을 더 빠르게 찾을 수 있어요. (레이아웃 관점으로~!)

<div class="footer-frame1">
<div class="footer-box1">©codeit - 2024</div>
<div class="footer-box2">
<div class="footer-text1">
<a href="privacy.html">Privacy Policy</a>
</div>
<div class="footer-text2">
<a href="faq.html">FAQ</a>
</div>
</div>
<div class="footer-box3">
<div class="footer-img1">
<a href="http://facebook.com" target="_blank">
<img src="image/ic_facebook.png" alt="페이스북" />
</a>
</div>
<div class="footer-img2">
<a href="http://x.com" target="_blank">
<img src="image/ic_twitter.png" alt="트위터" />
</a>
</div>
<div class="footer-img3">
<a href="http://youtube.com" target="_blank">
<img src="image/ic_youtube.png" alt="유튜브" />
</a>
</div>
<div class="footer-img4">
<a href="http://instagram.com" target="_blank">
<img src="image/ic_instagram.png" alt="인스타그램" />
</a>
</div>
</div>
</div>
</div>
</footer>
</body>
</html>
9 changes: 9 additions & 0 deletions items.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>items</title>
</head>
<body></body>
</html>
72 changes: 72 additions & 0 deletions login.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>로그인 페이지</title>
<link rel="stylesheet" href="loginstyle.css" />
</head>
<body>
<div class="container">
<a href="/">
<img src="image/logo.png" alt="로고" class="logo" />
</a>

<div class="frame1">
<!-- 박스1은 이메일부터 로그인까지 -->
<div class="box1">
<div class="input-box">
<div class="email-box">
<span class="email">이메일</span>
<input
type="text"
class="email-inputbox"
placeholder="이메일을 입력해주세요"
/>
</div>
<div class="password-box">
<span class="password">비밀번호</span>
<div class="password-inputbox-box">
<input
type="text"
class="password-inputbox"
placeholder="비밀번호를 입력해주세요"
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

🚩 Check Point!

input 태그의 경우, type 속성 중 password라는 속성도 있답니다.
지금 상태는 입력하는 비밀번호가 그대로 노출이 되어서 차후 큰 일이 발생할 수 있어요.
가능한 비밀번호 등 민감한 정보는 password 타입으로 설정 해 주세요 🗡️

이 경우 값이 점으로 표시됩니다!

/>
<img
class="password-img"
src="image/Property 1=Variant2.png"
alt="비밀번호표시"
/>
</div>
</div>
</div>

<div class="login-btn">로그인</div>
</div>
<div class="box2">
<div class="social-login-box">
<span class="social-login-text">간편 로그인하기</span>
<div class="social-icon-box">
<div class="social-icon1">
<a href="https://www.google.com/">
<img src="image/Component 2.png" alt="구글" />
</a>
</div>
<div class="social-icon2">
<a href="https://www.kakaocorp.com/page/">
<img src="image/Component 3.png" alt="카카오" />
</a>
</div>
</div>
</div>
</div>
<div class="box3">
<span class="box3-text1">판다마켓이 처음이신가요?</span>
<a href="signup.html">
<span class="box3-text2">회원가입</span>
</a>
</div>
</div>
</div>
</body>
</html>
Loading