ข้ามไปยังเนื้อหา

สิ่งที่ต้องเตรียม

ในบทนี้เราจะเตรียมเครื่อง macOS ของคุณให้พร้อมสร้าง TaskFlow ยังไม่มีโค้ดแอปพลิเคชัน มีแค่ toolchain เท่านั้น

เมื่อจบบทนี้คุณจะติดตั้งเครื่องมือครบทุกตัว และที่สำคัญกว่าคือได้ ตรวจสอบ ด้วยคำสั่งที่เทียบ output กับที่พิมพ์ไว้ตรงนี้ได้

นี่คือเช็กลิสต์ที่เราจะทำไปด้วยกัน:

  • Rust (rustup + cargo) — compile และรัน backend
  • Node 20+ — รัน frontend ที่ทำด้วย Astro พร้อมเครื่องมือรอบ ๆ
  • Docker Desktop — รัน PostgreSQL, Redis และท้ายที่สุดคือทั้งสแตก
  • sqlx-cli — สร้างฐานข้อมูลและรัน migration
  • psql — ตรวจสอบ PostgreSQL จาก terminal
  • redis-cli — ตรวจสอบ Redis จาก terminal

ความคลาดเคลื่อนของเวอร์ชันคือฆาตกรเงียบของอาการ “มันรันได้บนเครื่องผมนะ” ล็อก toolchain ให้แน่นอนตั้งแต่ตอนนี้ และยืนยันว่าเครื่องมือแต่ละตัวรันได้จริง เมื่อโมดูลข้างหน้าบอกให้ “รัน cargo build” หรือ “apply migration” คำสั่งเหล่านั้นก็จะทำงานได้เลย การยืนยัน output ตั้งแต่ต้นเปลี่ยน “น่าจะติดตั้งแล้วมั้ง” ให้กลายเป็น “ติดตั้งแล้ว เช็กแล้ว”

ข้อดี

  • ดักจับปัญหาการตั้งค่าตั้งแต่ตอนนี้ ในบทเรียนห้านาที แทนที่จะไปเจอตอนกลางทางของโมดูล backend
  • ทุกคำสั่งมี ผลลัพธ์ที่คาดหวัง คุณจึงไม่ต้องเดา
  • การใช้ Docker รัน PostgreSQL และ Redis ทำให้เครื่องของคุณสะอาด — ไม่มี daemon ฐานข้อมูลแบบ native ให้ต้องดูแล

ข้อเสีย

  • เป็นบทที่น่าตื่นเต้นน้อยที่สุด: ติดตั้ง ตรวจสอบ ทำซ้ำ
  • Docker Desktop เป็นไฟล์ดาวน์โหลดขนาดใหญ่และต้องใช้ RAM พอสมควร
  • เราถือว่าคุณมี Homebrew อยู่แล้ว ถ้ายังไม่มี ให้ติดตั้งก่อนจาก brew.sh

ทำจากบนลงล่าง หลังติดตั้งแต่ละตัว ให้รันคำสั่งตรวจสอบและเทียบ output ให้ตรงก่อนไปต่อ

Rust คือภาษาของ backend ใน TaskFlow ตัว rustup ทำหน้าที่ติดตั้งและจัดการ toolchain ส่วน cargo คือเครื่องมือ build และตัวจัดการแพ็กเกจ ติดตั้งจาก rustup.rs:

Terminal window
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

ยอมรับค่า default แล้วโหลด shell ใหม่ (source "$HOME/.cargo/env" หรือเปิด terminal ใหม่) จากนั้นตรวจสอบ:

Terminal window
rustc --version
cargo --version

ผลลัพธ์ที่คาดหวัง (เลขเวอร์ชันอาจต่างกัน แต่รูปแบบจะเหมือน):

rustc 1.79.0 (129f3b996 2024-06-10)
cargo 1.79.0 (ffa9cf99a 2024-06-03)

Node รัน dev server และเครื่องมือ build ของ frontend ที่ทำด้วย Astro โดย TaskFlow ต้องการ Node 20 ขึ้นไป ติดตั้งผ่าน Homebrew (หรือ nodejs.org หรือ version manager อย่าง nvm):

Terminal window
brew install node

ตรวจสอบ:

Terminal window
node -v
npm -v

ผลลัพธ์ที่คาดหวัง (เลขเวอร์ชันหลักต้องเป็น 20 ขึ้นไป):

v20.11.1
10.2.4

Docker รัน PostgreSQL และ Redis ระหว่างการพัฒนา แล้วแพ็กทั้งสแตกไว้สำหรับโมดูล Docker ในภายหลัง ติดตั้ง Docker Desktop for Mac จาก docker.com (หรือ brew install --cask docker) แล้วเปิดขึ้นมาหนึ่งครั้งเพื่อให้ engine ทำงาน

ตรวจสอบทั้ง engine และปลั๊กอิน Compose:

Terminal window
docker --version
docker compose version

ผลลัพธ์ที่คาดหวัง:

Docker version 27.0.3, build 7d4bcd8
Docker Compose version v2.28.1

ถ้า docker แจ้ง error ว่า “Cannot connect to the Docker daemon” ให้ตรวจว่าแอป Docker Desktop กำลังรันอยู่จริง (ไอคอนวาฬบนแถบเมนู)

sqlx-cli คือ CLI คู่หูของ crate SQLx เราจะใช้สร้างฐานข้อมูลและรัน migration ตั้งแต่โมดูล 2 เป็นต้นไป ติดตั้งด้วย Cargo โดยจำกัด feature ให้เหลือเท่าที่ TaskFlow ต้องการ (PostgreSQL ผ่าน native TLS):

Terminal window
cargo install sqlx-cli --no-default-features --features native-tls,postgres

ตรวจสอบ:

Terminal window
sqlx --version

ผลลัพธ์ที่คาดหวัง:

sqlx-cli 0.8.2

สองตัวนี้คือ client แบบ command-line สำหรับตรวจสอบ data store ทั้งสองโดยตรง — มีประโยชน์ตอน debug ตลอดคอร์ส คุณมีสองทางเลือกง่าย ๆ

ทางเลือก A — ผ่าน Docker (ไม่ต้องติดตั้งอะไรเพิ่ม) เมื่อ container กำลังรัน (ในโมดูลถัด ๆ ไป) คุณ exec เข้าไปได้:

Terminal window
docker exec -it taskflow-db psql -U postgres
docker exec -it taskflow-redis redis-cli

ทางเลือก B — ติดตั้ง client แบบ native ผ่าน Homebrew วิธีนี้ให้คุณเชื่อมต่อจากเครื่องของคุณได้โดยไม่ต้อง exec เข้า container:

Terminal window
brew install libpq redis
brew link --force libpq # นำ psql เข้าสู่ PATH ของคุณ

ตรวจสอบ:

Terminal window
psql --version
redis-cli --version

ผลลัพธ์ที่คาดหวัง:

psql (PostgreSQL) 16.3
redis-cli 7.2.5

ทางไหนก็ได้ ทางเลือก A ทำให้เครื่องของคุณเรียบง่ายที่สุด ส่วนทางเลือก B สะดวกกว่าในการใช้งานประจำวัน จะทำทั้งสองอย่างก็ได้

รันการตรวจครั้งสุดท้ายนี้ ทุกบรรทัดควรพิมพ์เลขเวอร์ชันออกมา และไม่ควรมีคำสั่งไหนขึ้นว่า “not found”:

Terminal window
rustc --version && cargo --version && \
node -v && \
docker --version && docker compose version && \
sqlx --version && \
psql --version && redis-cli --version

ถ้าทุกคำสั่งตอบกลับด้วยข้อความเวอร์ชัน — และ Node เป็น 20 ขึ้นไป — เครื่องของคุณก็พร้อมแล้ว

toolchain บน macOS ของคุณติดตั้งครบและ ตรวจสอบ เรียบร้อย: Rust (rustc/cargo) สำหรับ backend, Node 20+ สำหรับ frontend ที่ทำด้วย Astro, Docker Desktop (engine + Compose) เพื่อรันเซอร์วิสต่าง ๆ, sqlx-cli สำหรับ migration และ psql/redis-cli เพื่อตรวจสอบ data store

จบโมดูล 0 แล้ว ต่อไปคือ โมดูล 1 · Setup & Tooling ที่เราจะสร้างโครงของโปรเจกต์จริง