Challenge Day 2: Next.js → GitHub → Vercel
ประกอบ portfolio ด้วย Next.js จากชิ้นส่วนที่เลือกเองใน Component Shop เก็บโค้ดบน GitHub แล้ว deploy ขึ้น Vercel จบวันคุณจะมีลิงก์ .vercel.app ที่ส่งให้ใครดูก็ได้
At a glance
| Item | Details |
|---|---|
| เวลา | ประมาณ 2–3 ชั่วโมง |
| เริ่มจาก | portfolio-starter.zip (Next.js + TypeScript + Tailwind CSS) |
| ชิ้นส่วน | Component Shop: 12 component ที่ copy ไปใช้ได้ทันที |
| ต้องมี | Node.js LTS, Git, บัญชี GitHub และ Vercel |
| ผลลัพธ์ | repo บน GitHub + เว็บที่ your-name.vercel.app |
Starter pack
Download portfolio-starter.zipNext.js 16 · TypeScript · Tailwind CSS 4 · 5 KB| ไฟล์ | ใช้ทำอะไร |
|---|---|
app/page.tsx | หน้าแรก ที่ที่คุณเอา component มาต่อกัน |
app/layout.tsx | โครงทุกหน้า และชื่อเว็บบนแท็บเบราว์เซอร์ |
app/globals.css | เปิดใช้ Tailwind CSS (@import "tailwindcss") |
components/ | วางไฟล์ component ที่ copy มาจาก Shop |
public/ | วางรูป เช่น me.jpg แล้วเรียกเป็น "/me.jpg" |
ไม่ต้องรัน create-next-app เอง starter ตั้งค่า Tailwind และการ import แบบ @/components/... ไว้ให้แล้ว
Component Shop
ร้านขายชิ้นส่วนเว็บ (ฟรี) มี Navbar, Hero, About, Projects, Skills และ Footer หลายแบบ แต่ละชิ้นมี Live Preview, โค้ดให้ copy และตาราง props บอกว่าเปลี่ยนอะไรได้บ้าง
เลือกชิ้นส่วนที่ชอบ กรองตามหมวดและความยาก
ตัวอย่างPortfolio ที่ประกอบเสร็จNavbar + Hero + About + Projects + Skills + Footer จาก Shop ล้วน ๆ
สูตรขั้นต่ำ: Navbar + Hero + Projects + Footer อย่างละ 1 ชิ้น แล้วค่อยเพิ่ม About หรือ Skills ถ้ามีเวลา
Getting started
แตกไฟล์และรันบนเครื่อง
แตก zip แล้วเปิดโฟลเดอร์
my-portfolioใน IDE เปิด Terminal แล้วรันnpm install npm run devเปิด
http://localhost:3000ต้องเห็นหน้า Hello, I'm ___เลือกชิ้นส่วนจาก Shop
เปิด Component Shop เลือก Navbar, Hero, Projects และ Footer อย่างละ 1 แบบ กด View details เพื่อดูตัวอย่างบนจอมือถือ
Copy แล้ววางเป็นไฟล์
กด Copy code สร้างไฟล์ใน
components/ตั้งชื่อตาม component เช่นcomponents/HeroMinimal.tsxแล้ววางทั้งหมด ทำแบบนี้ทุกชิ้นต่อชิ้นส่วนใน app/page.tsx
ลบของเดิมใน
app/page.tsxแล้ว import ชิ้นที่เลือกมาเรียงจากบนลงล่างimport NavbarMinimal from "@/components/NavbarMinimal"; import HeroMinimal from "@/components/HeroMinimal"; import ProjectGrid from "@/components/ProjectGrid"; import SimpleFooter from "@/components/SimpleFooter"; export default function Home() { return ( <> <NavbarMinimal /> <main> <HeroMinimal /> <ProjectGrid /> </main> <SimpleFooter /> </> ); }ใส่ข้อมูลของคุณผ่าน props
ย้ายเนื้อหาจาก Day 1 มาใส่เป็น props ดูชื่อ props ได้ในหน้ารายละเอียดของแต่ละชิ้น วางรูปไว้ใน
public/แล้วส่งเป็นimage="/me.jpg"<HeroMinimal name="Mint" role="Grade 11 student who loves design" bio="I make posters and websites for my school clubs." image="/me.jpg" />เพิ่มหน้า About
สร้าง
app/about/page.tsxใช้AboutCardหรือAboutSplitจาก Shop แล้วเพิ่ม{ label: "About", href: "/about" }ในlinksของ Navbarเช็กว่า build ผ่าน
npm run buildถ้ามี error ให้แก้ให้ผ่านก่อน Vercel จะ build แบบเดียวกันนี้
สร้าง Git repo และ push ขึ้น GitHub
สร้าง repo ว่างชื่อ
my-portfolioที่ github.com/new (ไม่ต้องติ๊ก README) แล้วรันgit init git add . git commit -m "feat: my portfolio" git branch -M main git remote add origin https://github.com/<username>/my-portfolio.git git push -u origin mainDeploy ขึ้น Vercel
ไปที่ vercel.com/new → Import repo
my-portfolio→ Deploy รอประมาณ 1 นาทีแก้แล้ว push อีกครั้ง
เปลี่ยนสีหรือข้อความสักจุด แล้ว
git add .→git commit→git pushดูว่าเว็บบน Vercel อัปเดตเองภายใน 1 นาที
Specification
- หน้าแรกประกอบจาก component ใน Shop อย่างน้อย 4 ชิ้น: Navbar, Hero, Projects และ Footer
- ทุกชิ้นแสดงข้อมูลของคุณผ่าน props ไม่เหลือข้อมูลตัวอย่าง
- มีรูปของคุณหรือรูปผลงานอย่างน้อย 1 รูป จากโฟลเดอร์
public/ - อย่างน้อย 2 หน้า:
/และ/aboutที่ลิงก์หากันได้ npm run buildผ่าน- โค้ดอยู่บน GitHub repo ของคุณ (public) และเว็บเปิดได้จากลิงก์
.vercel.app
Hints
Module not found: ชื่อไฟล์ต้องตรงกับใน import ทุกตัวอักษร รวมตัวพิมพ์ใหญ่เล็ก (HeroMinimal.tsxไม่ใช่heroMinimal.tsx)- error เรื่อง
useStateหรือ Client Component: เช็กว่าบรรทัดแรกของไฟล์ยังมี"use client"อยู่ - รูปไม่ขึ้น: ไฟล์ต้องอยู่ใน
public/แล้วเรียกเป็น"/me.jpg"(มี/นำหน้า ไม่มีคำว่า public) - ใช้ชิ้นเดียวกันซ้ำได้ เช่น
ProjectList2 ชุด ชุดหนึ่งเป็นงานเรียน อีกชุดเป็นงานอดิเรก - Vercel build ไม่ผ่านแต่บนเครื่องผ่าน: ดู log ในหน้า Deployments มักเป็นชื่อไฟล์ตัวพิมพ์ไม่ตรง
git pushถูกปฏิเสธ: repo บน GitHub อาจมี README อยู่แล้ว ให้git pull origin main --allow-unrelated-historiesก่อน
How to submit
- ลิงก์เว็บ
.vercel.app - ลิงก์ GitHub repo
Going further
- แก้โค้ดใน component ให้เป็นแบบของคุณ เช่นเปลี่ยน layout หรือเพิ่ม prop ใหม่
- ลอง shadcn/ui ไลบรารีที่ใช้บ่อยที่สุดในงานจริง:
npx shadcn@latest initแล้วnpx shadcn@latest add button - เพิ่ม animation จาก Magic UI หรือ React Bits (บางตัวต้องลงแพ็กเกจเพิ่ม)
- ทำหน้า
/projects/[slug]แสดงรายละเอียดแต่ละโปรเจกต์ - ต่อโดเมนของตัวเองใน Vercel
Next steps
- Challenge Day 3: สร้าง full-stack web