Bu proje, Offboard Studio platformu için blok-tabanlı görsel programlama bileşenlerini sunan bir API servisidir. NestJS framework'ü kullanılarak geliştirilmiş, robotik, makine öğrenmesi, bilgisayarlı görü ve kontrol sistemleri için modüler bloklar sağlar.
- Offboard Studio görsel programlama ortamı için blok katalogu API'si sunmak
- Robotik, OpenCV, TensorFlow ve ROS bileşenlerini organize etmek
- Blok-tabanlı programlama için JSON formatında blok tanımları sağlamak
- Backend Framework: NestJS (Node.js + TypeScript)
- API Documentation: Swagger UI + Redoc
- Deployment: Vercel
- Testing: Jest
- Code Quality: ESLint + Prettier
src/
├── main.ts # Uygulama giriş noktası
├── app.module.ts # Ana modül
├── app.controller.ts # Ana controller
├── app.service.ts # Ana servis
├── blocks/ # Blok katalog modülü
│ ├── block-catalog.controller.ts
│ ├── block-catalog.service.ts
│ └── block-catalog.module.ts
├── collection_blocks/ # Blok koleksiyon tanımları
│ └── collection_factory.ts
└── assets/
└── collection/ # JSON blok dosyaları
├── control/ # Kontrol sistemi blokları
├── opencv/ # OpenCV blokları
├── ros-sensors/ # ROS sensor blokları
├── tensorflow/ # TensorFlow blokları
└── industrial/ # Endüstriyel bloklar
Tüm blok kategorilerini listeler
{
"id": "blocks",
"label": "Blocks Components",
"items": [
{
"id": "motorDriver",
"path": "control",
"file": "MotorDriver.json"
}
]
}Belirli bir gruptaki tüm blokları getir
group: blocks, processing, drivers
Spesifik blok detayını getir
group: Ana kategori (blocks, processing, drivers)category: Alt kategori (control, opencv, tensorflow, vb.)blockId: Blok kimliği
- MotorDriver: Motor kontrolü
- PID: PID kontrol algoritması
- Teleoperator: Uzaktan kumanda
- Camera: Kamera görüntü yakalama
- Blur: Görüntü bulanıklaştırma
- ColorFilter: Renk filtreleme
- EdgeDetector: Kenar algılama
- FaceDetector: Yüz tanıma
- Threshold: Eşikleme
- IMU: Atalet ölçüm birimi
- Odometer: Mesafe sensörü
- ROS2Camera: ROS2 kamera entegrasyonu
- LaserScan: LIDAR sensörü
- ObjectDetector: Nesne algılama
- Node.js (v18+)
- npm veya yarn
# Projeyi klonla
git clone [repository-url]
cd offboard.studio.components.store
# Bağımlılıkları yükle
npm install
# Geliştirme ortamında çalıştır
npm run start:dev
# Production build
npm run build
npm run start:prod# Geliştirme
npm run start:dev # Watch mode ile çalıştır
npm run start:debug # Debug mode
# Test
npm run test # Unit testler
npm run test:e2e # End-to-end testler
npm run test:cov # Test coverage
# Code Quality
npm run lint # ESLint ile kod kontrolü
npm run format # Prettier ile kod formatlaUygulama çalıştırıldıktan sonra:
- Swagger UI: http://localhost:3000/docs
- Redoc: http://localhost:3000/redoc
- Development: http://localhost:3000/api
- Production: [Vercel deployment URL]/api
- JSON Blok Dosyası:
src/assets/collection/[category]/altına blok JSON dosyasını ekle - Collection Factory:
collection_factory.tsdosyasında blok tanımını güncelle - Test: API endpoint'ini test et
{
"editor": {
"id": "unique-id",
"layers": [...],
"version": "3.0"
},
"package": {
"name": "BlockName",
"version": "1.0.0",
"description": "Block açıklaması",
"author": "Geliştirici Adı"
},
"design": {
"board": "Python3-Noetic",
"graph": {
"blocks": [...],
"wires": [...]
}
}
}PORT=3000 # Sunucu portu
NODE_ENV=development # Ortam (development/production)Tüm origin'lere açık (origin: '*')
Swagger UI static dosyaları için özel webpack config
Proje Vercel'de otomatik deploy edilir:
vercel.jsonkonfigürasyon dosyası mevcut- Build output:
dist/main.js - Static dosyalar otomatik serve edilir
npm run build
node dist/main.js- TypeScript: Full type safety
- Modüler Yapı: NestJS module sistemi
- API Documentation: Otomatik Swagger/Redoc
- Error Handling: Merkezi hata yönetimi
- CORS Support: Cross-origin resource sharing
- Static File Serving: Swagger UI assets
- Lazy loading ile optimize edilmiş module yükleme
- Efficient file system operations
- Cached JSON responses
- CORS politikaları
- Input validation
- Error sanitization
test/
├── app.e2e-spec.ts # End-to-end testler
└── jest-e2e.json # E2E test konfigürasyonu
src/
└── app.controller.spec.ts # Unit testlerBu proje özel lisansa sahiptir (UNLICENSED).
- Fork yapın
- Feature branch oluşturun (
git checkout -b feature/AmazingFeature) - Değişiklikleri commit edin (
git commit -m 'Add some AmazingFeature') - Branch'i push edin (
git push origin feature/AmazingFeature) - Pull Request açın
Bu proje Offboard Studio ekibi tarafından geliştirilmektedir.
Bu README dosyası projenin mevcut durumunu yansıtmaktadır ve geliştirme sürecinde güncellenecektir.