From a5e8afc7faf8221c2d69fdaaaf7911d9992d97d1 Mon Sep 17 00:00:00 2001 From: kinhdev24 Date: Wed, 29 Apr 2026 09:34:07 +0700 Subject: [PATCH 1/2] chore: Refactor release notes --- src/app/blog/(post)/v2026.02.13/page.mdx | 2 +- src/app/blog/(post)/v2026.03.20/page.mdx | 18 +++++++++--------- src/app/blog/(post)/v2026.04.03/page.mdx | 18 +++++++++--------- src/app/blog/(post)/v2026.04.17/page.mdx | 18 +++++++++--------- src/content/getting-started/cloud-setup.mdx | 11 +++++------ src/content/getting-started/index.mdx | 4 +++- .../self-hosting/docker/advanced-setup.mdx | 2 +- 7 files changed, 37 insertions(+), 36 deletions(-) diff --git a/src/app/blog/(post)/v2026.02.13/page.mdx b/src/app/blog/(post)/v2026.02.13/page.mdx index d752323..415b4c9 100644 --- a/src/app/blog/(post)/v2026.02.13/page.mdx +++ b/src/app/blog/(post)/v2026.02.13/page.mdx @@ -1,5 +1,5 @@ --- -title: Release v2026.02.13 +title: v2026.02.13 date: 2026-02-13 type: Initial Release author: SpaceDF Team diff --git a/src/app/blog/(post)/v2026.03.20/page.mdx b/src/app/blog/(post)/v2026.03.20/page.mdx index 2c5b02d..1d3d4c3 100644 --- a/src/app/blog/(post)/v2026.03.20/page.mdx +++ b/src/app/blog/(post)/v2026.03.20/page.mdx @@ -1,11 +1,11 @@ ---- -title: Release v2026.03.20 -date: 2026-03-20 -type: Release -author: SpaceDF Team -description: "Welcome to the official release of SpaceDF - an all-in-one IoT platform designed for advanced asset tracking, monitoring, and management. SpaceDF empowers developers and organizations to build robust IoT solutions with ease, providing multi-protocol support and powerful visualization tools." ---- - +--- +title: "v2026.03.20" +date: 2026-03-20 +type: Release +author: SpaceDF Team +description: "This release introduces Geofencing and Automation capabilities, along with API improvements and internal refactoring to enhance system reliability and scalability." +--- + # SpaceDF Release v0.0.2 This release introduces **Geofencing** and **Automation capabilities**, along with API improvements and internal refactoring to enhance system reliability and scalability. @@ -46,4 +46,4 @@ Initial release of the automation system. ## Maintenance -- General internal improvements and codebase cleanup +- General internal improvements and codebase cleanup diff --git a/src/app/blog/(post)/v2026.04.03/page.mdx b/src/app/blog/(post)/v2026.04.03/page.mdx index 06611f7..92219d7 100644 --- a/src/app/blog/(post)/v2026.04.03/page.mdx +++ b/src/app/blog/(post)/v2026.04.03/page.mdx @@ -1,11 +1,11 @@ ---- -title: Release v2026.04.03 -date: 2026-04-03 -type: Release -author: SpaceDF Team -description: "Welcome to the official release of SpaceDF - an all-in-one IoT platform designed for advanced asset tracking, monitoring, and management. SpaceDF empowers developers and organizations to build robust IoT solutions with ease, providing multi-protocol support and powerful visualization tools." ---- - +--- +title: v2026.04.03 +date: 2026-04-03 +type: Release +author: SpaceDF Team +description: "This release implements Automation capabilities, along with GeoFences improvements and internal refactoring to enhance system reliability and scalability." +--- + # SpaceDF Release v0.0.3 This release implements **Automation capabilities**, along with GeoFences improvements and internal refactoring to enhance system reliability and scalability. @@ -60,4 +60,4 @@ This release implements **Automation capabilities**, along with GeoFences improv - General internal improvements and codebase cleanup - Performance optimizations -- UI consistency improvements across modules +- UI consistency improvements across modules diff --git a/src/app/blog/(post)/v2026.04.17/page.mdx b/src/app/blog/(post)/v2026.04.17/page.mdx index deeadad..083960b 100644 --- a/src/app/blog/(post)/v2026.04.17/page.mdx +++ b/src/app/blog/(post)/v2026.04.17/page.mdx @@ -1,11 +1,11 @@ ---- -title: Release v2026.04.17 -date: 2026-04-17 -type: Release -author: SpaceDF Team -description: "Welcome to the official release of SpaceDF - an all-in-one IoT platform designed for advanced asset tracking, monitoring, and management. SpaceDF empowers developers and organizations to build robust IoT solutions with ease, providing multi-protocol support and powerful visualization tools." ---- - +--- +title: v2026.04.17 +date: 2026-04-17 +type: Release +author: SpaceDF Team +description: "This release introduces the initial Smart Building Onboarding flow and expands device integration capabilities, along with system optimizations and stability improvements." +--- + # 🚀 SpaceDF Release v0.0.4 This release introduces the initial **Smart Building Onboarding flow** and expands device integration capabilities, along with system optimizations and stability improvements. @@ -60,4 +60,4 @@ This release introduces the initial **Smart Building Onboarding flow** and expan - Updated API response for organization validation - Removed unused metadata extraction logic -- General internal refactoring and cleanup +- General internal refactoring and cleanup diff --git a/src/content/getting-started/cloud-setup.mdx b/src/content/getting-started/cloud-setup.mdx index e28e38f..41d2660 100644 --- a/src/content/getting-started/cloud-setup.mdx +++ b/src/content/getting-started/cloud-setup.mdx @@ -106,17 +106,16 @@ With SpaceDF Cloud Platform, you get: After setting up your cloud account: -1. **[Complete Onboarding](/onboarding)** - Follow the step-by-step guide to add devices and configure tracking -2. **[Device Management](/devices)** - Learn how to register and manage your IoT devices -3. **[Organization Setup](/organizations)** - Configure users, roles, and organization settings -4. **[Space Configuration](/spaces)** - Set up tracking areas and customize your dashboards +1. **[Complete Onboarding](/docs/onboarding)** - Follow the step-by-step guide to add devices and configure tracking +2. **[Device Management](/docs/devices)** - Learn how to register and manage your IoT devices +3. **[Organization Setup](/docs/organizations)** - Configure users, roles, and organization settings +4. **[Space Configuration](/docs/spaces)** - Set up tracking areas and customize your dashboards ## Need Help? - **[Community Forum](https://docs.spacedf.com/community)** - Get help from the SpaceDF community - **[Discord Server](https://discord.gg/HxCTyMCzuK)** - Real-time chat with other users and developers -- **[Documentation](/devices)** - Comprehensive guides and tutorials -- **[Professional Support](/support)** - Enterprise support with SLA guarantees +- **[Documentation](/docs/devices)** - Comprehensive guides and tutorials --- diff --git a/src/content/getting-started/index.mdx b/src/content/getting-started/index.mdx index 4b29a07..2816337 100644 --- a/src/content/getting-started/index.mdx +++ b/src/content/getting-started/index.mdx @@ -92,6 +92,7 @@ Choose from our growing ecosystem of supported devices and integration platforms -[**View All Supported Devices & Platforms →**](/docs/integrations) +[**View All Supported Devices →**](/docs/devices#supported-devices) ## Ready to Start? diff --git a/src/content/getting-started/self-hosting/docker/advanced-setup.mdx b/src/content/getting-started/self-hosting/docker/advanced-setup.mdx index d5d615b..d2e13a0 100644 --- a/src/content/getting-started/self-hosting/docker/advanced-setup.mdx +++ b/src/content/getting-started/self-hosting/docker/advanced-setup.mdx @@ -1812,7 +1812,7 @@ At this point, SpaceDF is completely removed. - **[Community Forum](https://docs.spacedf.com/community)** - Get help from the SpaceDF community - **[Discord Server](https://discord.gg/HxCTyMCzuK)** - Real-time chat with other users and developers -- **[Documentation](/devices)** - Comprehensive guides and tutorials +- **[Documentation](/docs/devices)** - Comprehensive guides and tutorials - **[Professional Support](/support)** - Enterprise support with SLA guarantees --- From 5680443a5e3f1246f1de1076ccb0be2e8412efa4 Mon Sep 17 00:00:00 2001 From: kinhdev24 Date: Wed, 29 Apr 2026 15:35:16 +0700 Subject: [PATCH 2/2] chore: Updated document for webhook --- public/logo/webhook.png | Bin 0 -> 18975 bytes src/app/_components/ReadyToGetStarted.mdx | 1 + src/app/_components/RichCard.jsx | 16 +- src/app/_components/SupportCommunity.mdx | 17 ++ src/app/page.mdx | 4 +- src/content/_meta.js | 1 + src/content/getting-started/index.mdx | 4 +- .../getting-started/self-hosting/index.mdx | 23 +- src/content/index.mdx | 3 +- src/content/integrations/_meta.js | 5 + src/content/integrations/index.mdx | 66 ++++++ src/content/integrations/webhooks.mdx | 199 ++++++++++++++++++ 12 files changed, 312 insertions(+), 27 deletions(-) create mode 100644 public/logo/webhook.png create mode 100644 src/app/_components/ReadyToGetStarted.mdx create mode 100644 src/app/_components/SupportCommunity.mdx create mode 100644 src/content/integrations/_meta.js create mode 100644 src/content/integrations/index.mdx create mode 100644 src/content/integrations/webhooks.mdx diff --git a/public/logo/webhook.png b/public/logo/webhook.png new file mode 100644 index 0000000000000000000000000000000000000000..eb408bfde587dc2494e1f2934cc658920449bf9a GIT binary patch literal 18975 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®7Jb&&1s?AZpJ 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 sD7O { ) } -export const RichCardOption = ({ icon, title, description, badge, href }) => { +export const RichCardOption = ({ icon, title, description, badge, href, className, badgeClassName }) => { return (
{ {badge && ( {badge} diff --git a/src/app/_components/SupportCommunity.mdx b/src/app/_components/SupportCommunity.mdx new file mode 100644 index 0000000..10c5d38 --- /dev/null +++ b/src/app/_components/SupportCommunity.mdx @@ -0,0 +1,17 @@ +## Support and Community + +Self-hosted SpaceDF is community-supported. + +For resolving common issues: + +- [GitHub Discussions](https://github.com/Space-DF) - Questions, feature requests, and workarounds +- [GitHub Issues](https://github.com/Space-DF) - Known issues + +Get help and connect with other users: + +- [Community Forum](https://docs.spacedf.com/community) - Ask questions and share experiences with the community +- [Discord Server](https://discord.gg/HxCTyMCzuK) - Real-time chat with developers and other users + +Share your self-hosting experience: + +- [GitHub Discussions](https://github.com/Space-DF) - "Self-hosting: What's working (and what's not)?" \ No newline at end of file diff --git a/src/app/page.mdx b/src/app/page.mdx index f281bd9..c2870b7 100644 --- a/src/app/page.mdx +++ b/src/app/page.mdx @@ -1,5 +1,7 @@ import { Cards } from "nextra/components"; import { GettingStartedCards } from "./_components/GettingStartedCards"; +import ReadyToGetStarted from "@/app/_components/ReadyToGetStarted.mdx" + # Introduction to SpaceDF @@ -111,4 +113,4 @@ Need help? We're here to support you: --- -Ready to get started? [Choose your deployment method](/docs/getting-started), explore our [use case templates](/docs/spaces). + \ No newline at end of file diff --git a/src/content/_meta.js b/src/content/_meta.js index 8697fc6..a2b0c72 100644 --- a/src/content/_meta.js +++ b/src/content/_meta.js @@ -5,6 +5,7 @@ export default { organizations: 'Organizations & Staff', devices: 'Device Management', spaces: 'Spaces & Members', + "integrations": "Integrations", '---': { type: 'separator' }, diff --git a/src/content/getting-started/index.mdx b/src/content/getting-started/index.mdx index 2816337..34bff56 100644 --- a/src/content/getting-started/index.mdx +++ b/src/content/getting-started/index.mdx @@ -4,6 +4,8 @@ sidebarTitle: Installation --- import { Cards, Callout } from "nextra/components"; +import ReadyToGetStarted from "@/app/_components/ReadyToGetStarted.mdx" + # Getting Started with SpaceDF @@ -214,4 +216,4 @@ Choose from our growing ecosystem of supported devices and integration platforms --- -Ready to get started? [Create your account](https://spacedf.com/en/auth/sign-up) or explore our [cloud platform](/docs/getting-started/cloud-setup). + \ No newline at end of file diff --git a/src/content/getting-started/self-hosting/index.mdx b/src/content/getting-started/self-hosting/index.mdx index 2ce6566..fd35d02 100644 --- a/src/content/getting-started/self-hosting/index.mdx +++ b/src/content/getting-started/self-hosting/index.mdx @@ -5,6 +5,9 @@ sidebarTitle: Installation import { Cards, Callout } from "nextra/components" import { RichCardOptions, RichCardOption } from "@/app/_components/RichCard.jsx" +import SupportCommunity from "@/app/_components/SupportCommunity.mdx" +import ReadyToGetStarted from "@/app/_components/ReadyToGetStarted.mdx" + # Self-Hosting @@ -58,23 +61,7 @@ When you choose to self-host SpaceDF, you take responsibility for operating the - Creating and maintaining backups, and planning for recovery in case of failures - Monitoring system health, performance, and availability -## Support and Community - -Self-hosted SpaceDF is community-supported. - -For resolving common issues: - -- [GitHub Discussions](https://github.com/Space-DF) - Questions, feature requests, and workarounds -- [GitHub Issues](https://github.com/Space-DF) - Known issues - -Get help and connect with other users: - -- [Community Forum](https://docs.spacedf.com/community) - Ask questions and share experiences with the community -- [Discord Server](https://discord.gg/HxCTyMCzuK) - Real-time chat with developers and other users - -Share your self-hosting experience: - -- [GitHub Discussions](https://github.com/Space-DF) - "Self-hosting: What's working (and what's not)?" + ## Enterprise self-hosting @@ -83,4 +70,4 @@ We welcome feedback, real-world use cases, and discussions around potential part --- -Ready to get started? [Create your account](https://spacedf.com/en/auth/sign-up) or explore our [cloud platform](/docs/getting-started/cloud-setup). + \ No newline at end of file diff --git a/src/content/index.mdx b/src/content/index.mdx index afe170c..7a0e164 100644 --- a/src/content/index.mdx +++ b/src/content/index.mdx @@ -1,4 +1,5 @@ import { Cards } from "nextra/components"; +import ReadyToGetStarted from "@/app/_components/ReadyToGetStarted.mdx" export const styles = { containerNoneEvents: { @@ -389,4 +390,4 @@ Need help? We're here to support you: --- -Ready to get started? [Choose your deployment method](/docs/getting-started), explore our [use case templates](/docs/organizations). + \ No newline at end of file diff --git a/src/content/integrations/_meta.js b/src/content/integrations/_meta.js new file mode 100644 index 0000000..56265ee --- /dev/null +++ b/src/content/integrations/_meta.js @@ -0,0 +1,5 @@ +export default { + "webhooks": { + display: 'hidden' + }, +} diff --git a/src/content/integrations/index.mdx b/src/content/integrations/index.mdx new file mode 100644 index 0000000..3483684 --- /dev/null +++ b/src/content/integrations/index.mdx @@ -0,0 +1,66 @@ +--- +title: Integrations +asIndexPage: true +--- + +import { RichCardOptions, RichCardOption } from "@/app/_components/RichCard.jsx" +import SupportCommunity from "@/app/_components/SupportCommunity.mdx" +import ReadyToGetStarted from "@/app/_components/ReadyToGetStarted.mdx" + + +# Integrations + +Expand the capabilities of SpaceDF by connecting it to your favorite tools, services, and external platforms. + +--- + +## Available Integrations + +Choose a method to start streaming your IoT data or automating your workflows. + + + + } + badgeClassName="border-yellow-600 text-yellow-600 dark:text-yellow-400 bg-yellow-50" + className="pointer-events-none" + title="Webhook" + badge="Coming Soon" + description="Send real-time event data from SpaceDF to any third-party application via HTTP POST requests." + href="/docs/integrations/webhooks" + /> + + +*More integrations coming soon. Have a request? [Let us know.](https://forum.df.technology/)* + +## Overview + +Integrations act as the bridge between SpaceDF and the rest of your technology stack. +By connecting SpaceDF to external services, you can transform raw IoT data into actionable insights, automated alerts, or custom business logic. + +## About Integrations + +#### Why use Integrations? +Connecting your digital environment to external tools allows you to: + +- **Automate Workflows:** Trigger actions in other apps based on device events. +- **Centralize Data:** Push telemetry to external databases or analytics engines. +- **Instant Notifications:** Receive alerts on the platforms your team already uses. + +#### Integration Security +We prioritize the security of your data during transit. Every integration supports modern security standards—such as API keys, secret tokens, or encrypted headers—to ensure that your data remains private and is only delivered to authorized destinations. + +#### Your Responsibilities +When managing integrations, you are responsible for: +- **Endpoint Stability:** Ensuring that the receiving service is online and capable of handling the data volume. +- **Credential Management:** Keeping your integration secrets, tokens, and keys secure. +- **Data Privacy:** Managing how third-party services store or process the data sent from SpaceDF. + + +--- + + \ No newline at end of file diff --git a/src/content/integrations/webhooks.mdx b/src/content/integrations/webhooks.mdx new file mode 100644 index 0000000..a9dd0e3 --- /dev/null +++ b/src/content/integrations/webhooks.mdx @@ -0,0 +1,199 @@ +--- +title: Webhooks +--- + +import { CardInfo } from "@/app/_components/CardInfo.jsx" +import { + NumberOfContent, + NumberWithMdx +} from "@/app/_components/NumberOfContent.jsx" + +# Webhooks Setup Guide – Structure +Learn how to configure outgoing webhooks to stream real-time data from **SpaceDF** to your external applications. + +## Overview + +A **Webhook** is an automated "push" mechanism that triggers a data transfer between applications whenever a specific event occurs. Unlike traditional APIs that require polling, webhooks deliver data instantly, making them the gold standard for event-driven architectures. + + + + In the SpaceDF ecosystem, webhooks act as the critical real-time bridge between your **LoRaWAN Network Servers** (such as **The Things Network** or **ChirpStack**) and the SpaceDF platform. + - **Zero-Latency:** Data is pushed the moment a gateway receives an uplink. + - **Efficiency:** Eliminates the need for constant API requests, saving server resources. + - **Seamless Integration:** Effortlessly syncs device telemetry from external network layers into your SpaceDF dashboard. + + + + ℹ️ **Note:** Webhooks are the recommended method for integrating **TTN** and **ChirpStack** to ensure your device data is always up-to-the-second. + + +## Prerequisites +Before configuring your webhook, ensure you have the following components ready: + +- **SpaceDF Account:** An active account with administrative privileges to manage integrations. +- **Active LoRaWAN Devices:** Your devices must be provisioned and successfully sending uplink data to your Network Server. +- **Console Access:** Full access to your **The Things Network (TTN)** or **ChirpStack** console to configure the outgoing integration. +- **Endpoint URL:** A target destination URL (provided by SpaceDF) to receive the incoming data stream. + +### Get Webhook Endpoint from SpaceDF +To link your Network Server with our platform, you first need to retrieve your unique integration endpoint from the SpaceDF dashboard. + +**How to locate your URL** + + + Navigate to the SpaceDF Console. + + + Select your Organization or Space from the sidebar. + + + Go to Integrations > Webhooks. + + + Click on Create New Webhook (or select an existing one). + + + Copy the Endpoint URL displayed in the configuration panel. + + +**Endpoint Format** + +Your unique endpoint will follow this structure: +```bash copy +https://api.spacedf.com/v1/integrations/webhooks/receive/{YOUR_UNIQUE_TOKEN} +``` + + + ℹ️ **Note:** Keep your `{YOUR_UNIQUE_TOKEN}` secure. Anyone with this URL can send data to your SpaceDF environment. + + +### Configure Webhook on your Network Server +After obtaining your endpoint from SpaceDF, you must link it to your Network Server. This allows your server to "push" data to SpaceDF the moment a device transmits a message. + +#### Technical Requirements + +Configure your integration with the following mandatory parameters: + +| Parameter | Configuration | +|-----------------|----------------------------------------------------------| +| Method | `POST` | +| Payload Format | `JSON` | +| Webhook URL | Paste your unique SpaceDF Endpoint URL | +| Enabled Events | `Uplink message` (Mandatory), `Join accept` (Optional) | + +#### Step-by-Step Instructions + + + **Access your Application**
+ Log in to your **TTN (The Things Stack)** or **ChirpStack** console.
+ Select the specific **Application** that contains the devices you wish to integrate with SpaceDF. +
+ + **Navigate to Integrations**
+ **On TTN:** Use the side menu to go to ***Integrations > Webhooks***.
+ **On ChirpStack:** Select the ***Integrations*** tab from the top or side navigation bar. +
+ + **Navigate to Integrations**
+ **On TTN:** Click ***+ Add Webhook*** and select the ***Custom Webhook*** template.
+ **On ChirpStack:** Click ***Create*** and select ***HTTP*** from the available integration types. +
+ + **Fill in the Connection Details**
+ Enter the **Webhook URL** you copied in `Step 3`. Ensure the **Method** is set to `POST`. +
+ + **Authentication & Headers (If Required)**
+ If you have enabled security headers in your SpaceDF environment, add them here:
+ **Header Name:** `X-SpaceDF-Token`
+ **Header Value:** Your unique secret token +
+ + **Save and Activate**
+ Ensure the **Uplink message** checkbox is enabled. This is the trigger that sends your sensor data to SpaceDF. Click Save changes or **Add webhook** to finalize. +
+ +#### Verify Connection +Once you have configured the webhook on your Network Server, follow these steps to ensure that the data pipeline is active and SpaceDF is correctly receiving your device telemetry. + +##### Step 1: Trigger a Test Uplink +The most reliable way to verify the connection is to generate real traffic from your hardware. + +- **Physical Device:** Trigger a transmission (e.g., press a "Send" or "Reset" button on your sensor). +- **Virtual Simulator:** If you are away from your hardware, use the **Simulated Uplink** feature in the TTN or ChirpStack console to send a sample JSON payload. + +##### Step 2: Check the Live Inspector +Navigate to your **SpaceDF Console** to monitor incoming traffic in real-time: + + Go to the Devices section and select your target device. + + + Open the Live Data or Activity Log tab. + + + Look for a new entry with the Success status. + + +**Connection Status Indicators** +In the SpaceDF Activity Log, you may see the following status codes: + +- `200 OK`: Data received and processed successfully. +- `401 Unauthorized`: The integration token is missing or incorrect. +- `422 Unprocessable Entity`: Data was received, but the JSON format or `devEUI` does not match your device settings. + +## Troubleshooting +If you encounter issues during the integration process, refer to the table below for common symptoms and their solutions. + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Issue + + Potential Cause + + Recommended Action +
No Data ReceivedIncorrect Webhook URL or missing event triggers.Verify the **Endpoint URL** in your Network Server and ensure **Uplink message** is enabled.
Authentication ErrorMissing or invalid `X-SpaceDF-Token` header.Double-check the **Header Name** and **Secret Token** in your integration settings.
Device Not AppearingDevEUI mismatch between platforms.Ensure the `devEUI` in TTN/ChirpStack matches the one registered in **SpaceDF** exactly
Payload Parsing FailedUnsupported JSON structure or missing required fields.Compare your server's payload with the **SpaceDF Payload Schema**.
+
\ No newline at end of file