POS Entegrasyonu

Node.js/TypeScript Örneği

TypeScript ile Node.js kullanan POS servisi referans uygulaması.

Bu, Saha POS Arayüzü (SPI) ile entegre olan bir POS servisinin referans uygulamasıdır. TypeScript ile Node.js kullanarak gerekli uç noktaların nasıl uygulanacağını göstermektedir.

Kaynak Kod

Tam kaynak kodu GitHub'da görüntüleyin.

Gereksinimler

  • Node.js 18+ (native ES modülleri ve modern API'ler kullanır)
  • npm veya yarn

Kurulum

Servisi Çalıştırma

Geliştirme Modu (hot reload ile)

npm run dev

Production Modu

npm run build
npm start

Servis 5000 portunda başlayacaktır.

Servisi Test Etme

Uç noktaları curl veya sağlanan Postman koleksiyonu kullanarak test edebilirsiniz.

Kimlik Doğrulama

Servis bir Authorization başlığı bekler. Örnek sabit kodlanmış bir token kullanır ancak gösterim amaçlı herhangi bir değeri kabul eder (eksikse bir uyarı loglar).

Örnek İstekler

Ürünleri Al

curl -H "Authorization: Bearer secret" http://localhost:5000/products

Sipariş Oluştur

curl -X POST http://localhost:5000/orders \
  -H "Authorization: Bearer secret" \
  -H "Content-Type: application/json" \
  -d '{
    "items": [
      {
        "product_id": "prod-1",
        "quantity": 1,
        "note": "No onions",
        "options": [
          {"name": "opt-doneness", "values": ["medium"]},
          {"name": "opt-extras", "values": ["extra-cheese"]}
        ]
      }
    ],
    "location": "loc-1",
    "note": "Allergy: Peanuts",
    "number_of_people": 2
  }'

Sipariş Durumunu Al

{order_id} yerine sipariş oluşturma yanıtından dönen ID'yi yazın.

curl -H "Authorization: Bearer secret" http://localhost:5000/orders/{order_id}

Siparişi İptal Et

curl -X POST http://localhost:5000/orders/{order_id}/cancel \
  -H "Authorization: Bearer secret" \
  -H "Content-Type: application/json" \
  -d '{"reason": "Customer changed mind"}'

Konumları Al

curl -H "Authorization: Bearer secret" http://localhost:5000/locations

Uygulama Detayları

ÖzellikAçıklama
Framework-lessNode.js native http modülünü kullanır (Express veya başka framework yok)
TypeScriptStrict mode etkinleştirilmiş tam tip desteği
ES ModulesModern ES modül sözdizimi kullanır
In-Memory StoreSipariş verilerini saklamak için Map kullanır (yeniden başlatmada sıfırlanır)
Type SafetyTüm API modelleri için kapsamlı tip tanımları
Graceful ShutdownTemiz sunucu kapatma için SIGINT işler

Proje Yapısı

src/
├── server.ts      # Ana sunucu uygulaması
├── types.ts       # TypeScript tip tanımları
└── database.ts    # In-memory veri deposu