Back to Projects

aprs

amateur-radio
aprs
aprs-is
ham-radio

📡 APRS Position Sender

Modern web arayüzlü Node.js APRS-IS konum gönderici uygulaması.

🚀 Özellikler

  • Modern Web Arayüzü - Socket.IO ile canlı loglar ve kontrol
  • Uzay Temalı Tasarım - Animasyonlu SVG uydu efektleri
  • APRS-IS Gerçek Gönderim - Euro.aprs2.net üzerinden
  • Otomatik Periyodik Gönderim - Sabit istasyon optimizasyonu
  • Demo Mode - Railway deployment için güvenli test modu
  • Auto Start on Deploy - Railway'de otomatik başlatma
  • PWA Desteği - Favicon ve web app manifest
  • Responsive Tasarım - Mobil ve masaüstü uyumlu
  • Rate Limiting Koruması - APRS ağı dostu
  • Passcode Otomatik Hesaplama
🚂 Railway Deployment (Tıklayın)

Bu projeyi Railway üzerinde ücretsiz olarak 7/24 çalıştırabilirsiniz:

📱 NPM Run Auto

NPM Run Auto

📊 Railway Deployment Logları

Railway Logs

🚀 Hızlı Kurulum

# 1. Railway CLI kur
npm install -g @railway/cli

# 2. Login ol
railway login

# 3. Proje başlat
railway init

# 4. Environment variables ekle
railway add CALLSIGN=TB2ABI
railway add LATITUDE=41.011805
railway add LONGITUDE=29.125039
railway add APRS_IS_PASSCODE=22440
railway add AUTO_START_ON_DEPLOY=true
railway add AUTO_SEND_ENABLED=true
railway add AUTO_SEND_INTERVAL=600
railway add AUTO_SEND_COUNT=10
railway add DEMO_MODE=false

# 5. Deploy et
railway up

✅ Railway Avantajları

  • Ücretsiz: 750 saat/ay + $5 kredi
  • Web Arayüzü: http://yourapp.railway.app:3000
  • Auto Start: Deploy sonrası otomatik APRS gönderimi
  • Demo Mode: Güvenli test ortamı
  • PORT Desteği: Railway'in dinamik port ataması
  • TCP Socket: APRS-IS tam destek ✅
  • Always-on: 7/24 çalışır, uyku modu yok
  • Git entegrasyonu: Otomatik deployment
  • Environment variables: Tam destek

🔧 Alternatif Deployment Seçenekleri

PlatformÜcretsiz PlanTCP DesteğiAlways-OnÖnerilen
🚂 Railway750 saat/ay⭐⭐⭐⭐⭐
🎨 Render750 saat/ay⭐⭐⭐⭐
🟣 Heroku1000 saat/ay⚠️❌ Sleep⭐⭐⭐
🐋 Fly.io3 app limit⭐⭐⭐⭐

5 dakikada Railway'de çalışır durumda! 🎉

📋 Kurulum

npm install

⚙️ Konfigürasyon

.env dosyasını düzenleyin:

# Gerekli ayarlar
CALLSIGN=TB2ABI
LATITUDE=41.011805
LONGITUDE=29.125039
COMMENT=Mustafa Genç\nhttps://mustafagenc.info
SYMBOL=/-

# APRS-IS ayarları
APRS_IS_SERVER=euro.aprs2.net
APRS_IS_PORT=14580
APRS_IS_PASSCODE=112233

# Otomatik gönderim
AUTO_SEND_ENABLED=true
AUTO_SEND_INTERVAL=600
AUTO_SEND_COUNT=10

# Railway/Deploy ayarları
AUTO_START_ON_DEPLOY=true
DEMO_MODE=false
DEMO_MESSAGE=🚨 Bu Railway demo versiyonudur. Gerçek APRS gönderimi sadece yetkili operatörler tarafından yapılabilir.

# Web server
WEB_PORT=3000

🎯 Kullanım

🌐 Web Arayüzü (Ana Özellik)

npm start
# Tarayıcıda: http://localhost:3000

Web Arayüzü Özellikleri:

  • 🎨 Uzay Temalı Dark Mode - Mor degrade + yıldızlar
  • 🛰️ Animasyonlu SVG Uydular - 6 farklı uydu çeşidi
  • 📊 Canlı Konfigürasyon Kartları - Tüm ayarlar görünür
  • 🔴🟢 Status Indicator'ları - Auto/tek gönderim durumu
  • 📋 Real-time Log Viewer - Scrollable, renkli loglar
  • 🎮 Buton Kontrolleri - Başlat/Durdur/Temizle
  • 📱 Responsive Design - Mobil ve masaüstü uyumlu
  • 🚫 Demo Mode Desteği - Railway için güvenli test

💻 Komut Satırı

# Simülasyon modu
node index.js

# Tek gönderim
npm run send
# veya: node index.js --send

# Otomatik gönderim  
npm run auto
# veya: node index.js --auto

# Web server
npm run web
# veya: node web-server.js

📊 Sabit İstasyon - Gönderim Aralıkları

🏠 İstasyon Tipi⏱️ AralıkÖnerilen📝 Açıklama
🚨 Acil Durum30 saniye1 dakikaKritik durumlar
🏠 Ev İstasyonu10 dakika15-30 dakikaSabit konum
📡 Repeater30 dakika60 dakikaAltyapı
🧪 Test/Demo2 dakika5 dakikaGeliştirme

🎯 Sabit İstasyon Optimizasyonları

  • Varsayılan aralık: 10 dakika (600 saniye)
  • Optimal aralık: 15-30 dakika
  • Maksimum gönderim: 10 paket
  • Toplam çalışma süresi: ~100 dakika
  • Ağ dostu: Minimal APRS ağı yükü

⚠️ Önemli Notlar

  • Minimum aralık: 60 saniye (güvenlik limiti)
  • Spam koruması: Aynı paket tekrarlanmaz
  • Rate limiting: Çok sık gönderim IP ban'e neden olur
  • Ağ yükü: APRS ağını gereksiz yüklemeyin
  • Demo Mode: Railway'de güvenli test için DEMO_MODE=true
  • Auto Start: AUTO_START_ON_DEPLOY=true ile deploy sonrası otomatik başlatma

🎨 Web Arayüzü Özellikleri

🌌 Uzay Teması

  • Dark Mode: Mor degrade arka plan
  • Yıldızlar: Animasyonlu twinkle efekti
  • SVG Uydular: 6 farklı uydu çeşidi (communications, GPS, weather, research, space station, deep space)
  • Responsive: Mobil ve masaüstü uyumlu

🎮 İnteraktif Kontroller

  • Otomatik Başlat: 10 dakika aralıklarla periyodik gönderim
  • Tek Gönderim: Manuel tek konum gönderimi
  • Durdur: Otomatik gönderimi durdur
  • Log Temizle: Ekranı temizle

📊 Canlı Bilgiler

  • Konfigürasyon Kartları: Çağrı işareti, konum, sembol, aralık
  • Status Indicator'ları: Yeşil/kırmızı LED'ler
  • Real-time Loglar: Renk kodlu, timestamp'li
  • Versiyon Bilgisi: Package.json'dan otomatik

🔧 Passcode Hesaplama

Uygulama otomatik olarak callsign'ınız için passcode hesaplar:

node index.js --send
# Çıktıda passcode gösterilir

📡 APRS Sembolleri

aprs-symbols.html dosyasını tarayıcıda açarak mevcut sembolleri görebilirsiniz.

🌐 Kontrol

Gönderilen paketleri şu adreslerde kontrol edebilirsiniz:

📝 Örnek Çıktı

🌐 Web Arayüzü Logları

[17:30:15] 🔗 Web arayüzü bağlandı
[17:30:15] � Konfigürasyon yüklendi: TB2ABI
[17:30:16] 🤖 Otomatik gönderim arka planda çalışıyor...
[17:30:20] 🔗 APRS-IS sunucusuna bağlanılıyor: euro.aprs2.net:14580
[17:30:21] ✅ APRS-IS sunucusuna bağlandı
[17:30:21] 📤 Login paketi gönderildi: user TB2ABI pass 22440 vers NodeAPRS 1.0
[17:30:21] 📥 Sunucudan gelen: # logresp TB2ABI verified, server T2UK
[17:30:21] ✅ Giriş doğrulandı - gönderim izni var
[17:30:21] 📡 Paket gönderildi: TB2ABI>APRS:=4100.71N/02907.50E-Mustafa Genç\nhttps://mustafagenc.info
[17:30:23] 🔌 APRS-IS bağlantısı kapandı
[17:30:23] ✅ Paket başarıyla APRS ağına gönderildi!

💻 Terminal Çıktısı

�🚀 APRS-IS Gerçek Gönderim Modu

� Gönderilecek Paket Bilgileri:
=====================================
📍 İstasyon: TB2ABI
🌍 Konum: 41.011805°, 29.125039°
💬 Yorum: Mustafa Genç\nhttps://mustafagenc.info
🔣 Sembol: /-
📦 Paket: TB2ABI>APRS:=4100.71N/02907.50E-Mustafa Genç\nhttps://mustafagenc.info
=====================================

🔗 APRS-IS sunucusuna bağlanılıyor: euro.aprs2.net:14580
✅ APRS-IS sunucusuna bağlandı
📤 Login paketi gönderildi: user TB2ABI pass 22440 vers NodeAPRS 1.0
📥 Sunucudan gelen: # logresp TB2ABI verified, server T2UK
✅ Giriş doğrulandı - gönderim izni var
📡 Paket APRS ağına gönderiliyor...
📡 Paket gönderildi: TB2ABI>APRS:=4100.71N/02907.50E-Mustafa Genç\nhttps://mustafagenc.info
🔌 APRS-IS bağlantısı kapatıldı
✅ Paket başarıyla APRS ağına gönderildi!
🌐 https://aprs.fi adresinden kontrol edebilirsiniz.

🛡️ Güvenlik

  • Passcode Güvenliği: APRS-IS passcode'larını güvenli tutun
  • Environment Variables: Hassas bilgileri .env dosyasında saklayın
  • Git Ignore: .env dosyasını Git'e eklemeyin (.gitignore)
  • Demo Mode: Production'da DEMO_MODE=true ile güvenli test
  • Rate Limiting: APRS ağı kurallarına uyun (min 60 saniye aralık)
  • IP Ban Koruması: Çok sık gönderim yapmayın

🚀 Deployment Bilgileri

Railway

  • Port: process.env.PORT otomatik tespit
  • Auto Start: AUTO_START_ON_DEPLOY=true ile otomatik başlatma
  • Demo Mode: DEMO_MODE=true ile güvenli test ortamı
  • Environment Variables: Railway dashboard'dan ayarlayın

Render/Heroku

  • TCP Socket: APRS-IS desteği mevcut
  • Always-On: Render'da ücretsiz 750 saat/ay
  • Environment Variables: Platform dashboard'larından ayarlayın

📚 Teknik Detaylar

Kullanılan Teknolojiler

  • Backend: Node.js + Express.js
  • WebSocket: Socket.IO (real-time loglar)
  • Frontend: HTML5 + Tailwind CSS + Vanilla JS
  • Network: TCP Socket (APRS-IS)
  • Config: dotenv (environment variables)

Dosya Yapısı

├── index.js          # Ana APRS gönderim scripti
├── web-server.js     # Express + Socket.IO server
├── package.json      # NPM dependencies ve scriptler
├── .env              # Environment variables (local)
├── .env.example      # Örnek config dosyası
├── README.md         # Bu dosya
└── public/           # Web arayüzü static dosyaları
    ├── index.html    # Ana web arayüzü
    ├── favicon/      # PWA ikonları
    └── satellites/   # SVG uydu dosyaları

📄 Lisans

Licensed under the Apache License 2.0 - see LICENSE file.