diff --git a/public/logo/webhook.png b/public/logo/webhook.png new file mode 100644 index 0000000..eb408bf Binary files /dev/null and b/public/logo/webhook.png differ diff --git a/src/app/_components/ReadyToGetStarted.mdx b/src/app/_components/ReadyToGetStarted.mdx new file mode 100644 index 0000000..d4893c6 --- /dev/null +++ b/src/app/_components/ReadyToGetStarted.mdx @@ -0,0 +1 @@ +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/app/_components/RichCard.jsx b/src/app/_components/RichCard.jsx index 737add1..4d3ea9c 100644 --- a/src/app/_components/RichCard.jsx +++ b/src/app/_components/RichCard.jsx @@ -10,17 +10,20 @@ export const RichCardOptions = ({ children, className = "" }) => { ) } -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/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/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/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..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 @@ -92,6 +94,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? @@ -212,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/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 --- 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