Skip to content

xemoe/xemoe-exchange-app

Repository files navigation

📌 ข้อสอบ Backend

โจทย์ข้อ 1 ให้ออกแบบระบบฐานข้อมูล(ทำเป็นรูปแบบ ER) ที่เป็นตัวกลางของการแลกเปลี่ยน Cryptocurrencies เช่น Bitcoin โดย สามารถนำเงิน Fiat (THB,USD) มาซื้อเหรียญ จาก User คนอื่นๆในระบบได้ และสามารถจะโอนเหรียญหากันภายในระบบ หรือ โอนหาคนอื่นภายนอกระบบได้ ยกตัวอย่าง https://c2c.binance.com/th/trade/buy/BTC

  • ระบบสามารถตั้ง ซื้อ-ขาย Cryptocurrencies (BTC,ETH,XRP, DOGE)
  • ระบบบันทึกการโอนเงินและซื้อ-ขายแลกเปลี่ยน
  • ระบบมีการสร้างบัญชีผู้ใช้

โจทย์ข้อ 2 นำ ER Diagram จากข้อ 1 มาเขียนโดยใช้ Laravel Framework เขียน Method ใน Model เพื่อดึงข้อมูลของ Model อื่นๆที่ความสัมพันธ์กัน ตัวอย่าง https://laravel.com/docs/8.x/eloquent-relationships#one-to-many เขียน Controller และ Routing ในส่วนหลักๆของระบบ ไม่จำเป็นต้องทำทั้งหมด สร้างไฟล์สำหรับ Seed ข้อมูล เพื่อใช้ในการทดสอบ


🌈 ER Diagram

  1. User with Role and Permission

  2. User with Wallet

  3. User with OrderBook

  4. User with Transaction

  5. User with TradeFiat (Buy/Sell)

  6. All Entity


📌 Migrate & Seed


📌 API Endpoint

Method Endpoint Description Status
POST /api/v1/auth/login สำหรับ Login และสร้าง JWT Token
POST /api/v1/auth/register สำหรับ Register สมาชิก
GET /api/v1/auth/user สำหรับดูข้อมูลส่วนตัวของผู้ใช้งาน
GET /api/v1/wallets สำหรับดูข้อมูล Wallet ของผู้ใช้งาน
POST /api/v1/wallets สำหรับสร้าง Wallet ของผู้ใช้งาน
DELETE /api/v1/wallets/{id} สำหรับลบ Wallet ของผู้ใช้งาน
GET /api/v1/fiat/trading_pairs สำหรับดูข้อมูล Fiat Trading Pairs
GET /api/v1/fiat/orders สำหรับดูข้อมูล Fiat Order ของผู้ใช้งาน
POST /api/v1/fiat/orders สำหรับสร้าง Fiat Order ของผู้ใช้งาน
GET /api/v1/fiat/orders/{id} สำหรับดูข้อมูล Fiat Order ของผู้ใช้งาน
PUT /api/v1/fiat/orders/{id} สำหรับแก้ไข Fiat Order ของผู้ใช้งาน
DELETE /api/v1/fiat/orders/{id} สำหรับลบ Fiat Order ของผู้ใช้งาน
GET /api/v1/fiat/trades สำหรับดูข้อมูล Fiat Trade ของผู้ใช้งาน
GET /api/v1/crypto/trading_pairs สำหรับดูข้อมูล Crypto Trading Pairs
GET /api/v1/crypto/orders สำหรับดูข้อมูล Crypto Order ของผู้ใช้งาน

📝 How to run (with sail)

requirement

  • linux
  • docker

step

  1. clone this repo
  2. install composer dependencies
    docker run --rm \
        -u "$(id -u):$(id -g)" \
        -v "$(pwd):/var/www/html" \
        -w /var/www/html \
        laravelsail/php82-composer:latest \
        composer install --ignore-platform-reqs
  3. copy .env.sail to .env
    cp .env.sail .env
  4. run docker with sail
    ./vendor/bin/sail up -d
  5. generate key
    ./vendor/bin/sail artisan key:generate
  6. run migration
    ./vendor/bin/sail artisan migrate
  7. run seed
    ./vendor/bin/sail artisan db:seed
  8. run test
    ./vendor/bin/sail artisan test

🖥️ Contributors