Files
kosmo-connect/backend/README.md
Tomas Kracmar 0a4fb7b55e
Some checks failed
CI / lint-docs (push) Has been cancelled
CI / build-firmware (push) Has been cancelled
CI / test-backend (push) Has been cancelled
CI / test-web (push) Has been cancelled
feat: initial KosmoConnect platform v0.1
Includes:
- Backend services: ingestion (:8001), weather API (:8002),
  gateway (:8003), billing (:8004) with BTCPay integration
- Shared asyncpg pool, TimescaleDB hypertable, Redis, Mosquitto MQTT
- React frontend: Dashboard (MapLibre) and Messaging (chat UI)
- Bridge daemon for Pi + Meshtastic (Serial/TCP T-Deck support)
- Production Docker Compose, Nginx reverse proxy, ops scripts
- DEPLOY.md with step-by-step deployment guide
2026-04-12 17:30:15 +02:00

94 lines
2.4 KiB
Markdown

# KosmoConnect Backend
This directory contains the cloud backend services for KosmoConnect.
## Quick Start
### 1. Start Infrastructure Services
You need Docker running on your machine.
```bash
cd backend
docker-compose up -d
```
This starts:
- **TimescaleDB** on port `5432`
- **Redis** on port `6379`
- **RabbitMQ** on port `5672` (management UI on `15672`)
- **Mosquitto MQTT** on port `1883`
The first time TimescaleDB starts, it will automatically run the migration in `migrations/001_initial_schema.sql`.
### 2. Install Python Dependencies
```bash
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
```
### 3. Run the Services
In terminal 1:
```bash
./run-dev.sh ingestion
```
In terminal 2:
```bash
./run-dev.sh api
```
- API docs: http://localhost:8002/docs
- Ingestion health: http://localhost:8001/health
### 4. Simulate Data (No Hardware Needed)
In terminal 3:
```bash
cd ..
python3 -m venv .venv
source .venv/bin/activate
pip install -r backend/requirements.txt
python3 scripts/simulate-bridge.py --interval 5
```
This publishes fake environmental readings every 5 seconds. The ingestion service will pick them up and write them to TimescaleDB. You can then query the API:
```bash
curl "http://localhost:8002/api/v1/weather/latest"
```
## Service Architecture
| Service | Port | Responsibility |
|---------|------|----------------|
| API | 8002 | REST API for dashboard and web clients |
| Ingestion | 8001 | Subscribes to MQTT, writes sensor data to TimescaleDB |
| Gateway | 8003 | Web-to-mesh message queue, delivery tracking, and subscription enforcement |
| Billing | 8004 | BTCPay Server integration for subscriptions and invoices |
## Database Schema
- **nodes**: Registry of all enviro-nodes and infrastructure nodes
- **enviro_readings**: Time-series hypertable for sensor data
- **mesh_messages**: Delivery tracking for gateway messages
- **users / subscriptions / allowed_nodes**: Subscriber management
## Environment Variables
Copy `.env.example` to `.env` and customize:
```bash
cp .env.example .env
```
| Variable | Default | Description |
|----------|---------|-------------|
| `DATABASE_URL` | `postgresql://kosmo:kosmo_dev_pass@localhost:5432/kosmoconnect` | TimescaleDB connection |
| `MQTT_HOST` | `localhost` | MQTT broker host |
| `MQTT_PORT` | `1883` | MQTT broker port |
| `MQTT_TOPIC` | `kosmo/ingest/enviro` | Topic for enviro data |