Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ NetIgnite keeps its own look on top of the template:
- Label code blocks with a file name or extension from `app/data/code-icons.ts`, or a plain label
without a dot (`[Terminal]`); `tests/code-icons.test.ts` fails otherwise. Add new highlight
languages to `content.build.markdown.highlight.langs` in `nuxt.config.ts`.
- The docs describe https://github.com/NetIgnite-project/Server and
https://github.com/NetIgnite-project/Agent-ESP32. Verify behavior against their code, not
- The docs describe https://github.com/NetIgnite-project/Server,
https://github.com/NetIgnite-project/Agent-ESP32 and
https://github.com/NetIgnite-project/Agent-Linux. Verify behavior against their code, not
their READMEs.
5 changes: 3 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,8 +48,9 @@ Docs live in `content/docs/` as markdown files. Navigation is declared in `app/d
new page by creating a `.md` file, adding it to the sidebar data and to
`public/static/utils/sitemap.xml`.

The docs describe the [Server](https://github.com/NetIgnite-project/Server) and the
[ESP32 agent](https://github.com/NetIgnite-project/Agent-ESP32). Keep them in sync with those
The docs describe the [Server](https://github.com/NetIgnite-project/Server), the
[ESP32 agent](https://github.com/NetIgnite-project/Agent-ESP32) and the
[Linux agent](https://github.com/NetIgnite-project/Agent-Linux). Keep them in sync with those
repositories when behavior changes.

## Structure
Expand Down
48 changes: 36 additions & 12 deletions app/data/docs.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ export const docsSections: DocsSection[] = [
{
to: "/docs/how-it-works",
title: "How It Works",
description: "Server, agents and devices, and what happens when you press Power On.",
description: "Server, agents and devices, and what happens when you power on a device.",
icon: "i-lucide-workflow",
},
{
Expand All @@ -52,21 +52,27 @@ export const docsSections: DocsSection[] = [
{
to: "/docs/server/configuration",
title: "Configuration",
description: "config.json, environment variables, data paths and logging.",
description: "NETIGNITE_* environment variables, server settings, data paths and logging.",
icon: "i-lucide-settings",
},
{
to: "/docs/server/reverse-proxy",
title: "HTTPS & Reverse Proxy",
description: "Serve the dashboard and the agent WebSocket over TLS.",
description: "Serve the dashboard, the API and the WebSockets over TLS.",
icon: "i-lucide-lock",
},
{
to: "/docs/server/users",
title: "Users & Accounts",
description: "The initial admin account, sessions, roles and passwords.",
description: "The first admin, user management, sign-up, logins and API keys.",
icon: "i-lucide-users",
},
{
to: "/docs/server/upgrading",
title: "Upgrading from v1",
description: "Import your v1 data into v2 and set your agents up again.",
icon: "i-lucide-history",
},
],
},
{
Expand All @@ -81,15 +87,27 @@ export const docsSections: DocsSection[] = [
{
to: "/docs/guides/agents",
title: "Managing Agents",
description: "Create agents and get the credentials they connect with.",
description: "Set up agents, use the ESP32 console and update the firmware.",
icon: "i-lucide-radio-tower",
},
{
to: "/docs/guides/devices",
title: "Devices & Wake-on-LAN",
description: "Add devices, power them on and check whether they are online.",
title: "Devices",
description: "Add devices, check their status, power them on and shut them down.",
icon: "i-lucide-monitor",
},
{
to: "/docs/guides/sharing",
title: "Sharing",
description: "Share devices with other users as viewer, operator or manager.",
icon: "i-lucide-share-2",
},
{
to: "/docs/guides/ssh",
title: "SSH",
description: "Shut down and reboot devices over SSH with a restricted key.",
icon: "i-lucide-key-square",
},
],
},
{
Expand All @@ -98,13 +116,19 @@ export const docsSections: DocsSection[] = [
{
to: "/docs/agents/esp32",
title: "ESP32 Agent",
description: "Configure, build and flash the ESP32 agent firmware.",
description: "Web installer, serial console, updates and building the firmware.",
icon: "i-lucide-cpu",
},
{
to: "/docs/agents/linux",
title: "Linux Agent",
description: "Install, pair, host mode and Wake-on-LAN mode of the Linux agent.",
icon: "i-lucide-terminal",
},
{
to: "/docs/agents/protocol",
title: "Agent Protocol",
description: "The WebSocket protocol between server and agents — build your own agent.",
description: "The WebSocket protocol v2 between server and agents — build your own agent.",
icon: "i-lucide-cable",
},
],
Expand All @@ -115,19 +139,19 @@ export const docsSections: DocsSection[] = [
{
to: "/docs/reference/api",
title: "REST API",
description: "Every HTTP endpoint of the NetIgnite server.",
description: "Authentication, API keys and the endpoints of the NetIgnite server.",
icon: "i-lucide-braces",
},
{
to: "/docs/reference/troubleshooting",
title: "Troubleshooting",
description: "Common problems with agents, wake-ups, status checks and logins.",
description: "Common problems with logins, agents, wake-ups, status checks and updates.",
icon: "i-lucide-life-buoy",
},
{
to: "/docs/reference/development",
title: "Development",
description: "Repositories, local setup and contributing.",
description: "Repositories, branches, local setup, tests and contributing.",
icon: "i-lucide-code",
},
],
Expand Down
97 changes: 60 additions & 37 deletions app/data/features.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,42 +24,42 @@ export const homeFeatures: Feature[] = [
icon: "i-lucide-zap",
title: "Wake-on-LAN",
description:
"Power on devices remotely using Wake-on-LAN technology. Support for multiple protocols and network configurations.",
"Power on PCs, servers and NAS devices from anywhere. An agent in their network sends the Wake-on-LAN packet, so no port forwarding to your devices is needed.",
tone: "amber",
},
{
icon: "i-lucide-shield-check",
title: "Secure Access",
icon: "i-lucide-power",
title: "Shutdown & Reboot",
description:
"Enterprise-grade security with encrypted connections, multi-factor authentication, and role-based access control.",
tone: "primary",
"Shut down and reboot Linux machines through the NetIgnite Linux agent, or other devices over SSH with a login limited to exactly these two commands.",
tone: "cyan",
},
{
icon: "i-lucide-chart-line",
title: "Real-time Monitoring",
icon: "i-lucide-activity",
title: "Live Status",
description:
"Monitor device status, network performance, and power consumption with real-time dashboards and alerts.",
"See which devices are online, checked every 20 seconds by IP address, TCP port, MAC address, SSH port or the Linux agent on the device.",
tone: "green",
},
{
icon: "i-lucide-history",
title: "Scheduled Actions",
icon: "i-lucide-users",
title: "Sharing & Roles",
description:
"Automate device power management with intelligent scheduling and energy-saving policies.",
tone: "cyan",
"Share devices with family or colleagues as viewer, operator or manager. They never get access to your agents or logins.",
tone: "primary",
},
{
icon: "i-lucide-smartphone",
title: "Mobile App",
title: "Install as an App",
description:
"PWA-Based Mobile apps for iOS and Android with full feature parity and offline capabilities.",
"Add the dashboard to the home screen of your iPhone or Android phone as an app (PWA) and power on devices on the go.",
tone: "red",
},
{
icon: "i-lucide-puzzle",
title: "API Integration",
title: "REST API",
description:
"Comprehensive REST API for custom integrations with your existing infrastructure and automation tools.",
"Automate with a REST API, API keys and an OpenAPI reference for your scripts and home automation.",
tone: "slate",
},
];
Expand All @@ -70,59 +70,82 @@ export const platformFeatures: Feature[] = [
icon: "i-lucide-zap",
title: "Wake-on-LAN Control",
description:
"Power on offline systems remotely with structured workflows and fast response times.",
"Power on devices through an ESP32 or Linux agent in their network, from the dashboard, your phone or the API.",
tone: "amber",
},
{
icon: "i-lucide-shield-check",
title: "Secure Access",
icon: "i-lucide-power",
title: "Shutdown & Reboot",
description:
"Protect your environment with encrypted traffic, strict authentication, and access controls.",
tone: "primary",
"Turn Linux machines off or restart them through the NetIgnite Linux agent, which can do nothing else. Other devices work over SSH with a login restricted to shutdown and reboot.",
tone: "cyan",
},
{
icon: "i-lucide-chart-line",
title: "Real-time Visibility",
description: "Track status, uptime, and health signals in real time from a single dashboard.",
icon: "i-lucide-activity",
title: "Live Status",
description:
"Status checks every 20 seconds by IPv4 or IPv6 address, TCP port, MAC address (IPv6 link-local), SSH port or the Linux agent on the device.",
tone: "green",
},
{
icon: "i-lucide-history",
title: "Scheduled Actions",
icon: "i-lucide-users",
title: "Sharing & Roles",
description:
"Automate power routines for maintenance windows, daily operations, and energy savings.",
tone: "cyan",
"Share a device as viewer (status), operator (also power actions) or manager (also settings). Agents and SSH logins stay yours.",
tone: "primary",
},
{
icon: "i-lucide-usb",
title: "Browser Install & Updates",
description:
"Install the ESP32 agent from Chrome, Edge or Firefox over USB. Over-the-air updates are checked before they're installed and roll back automatically if they fail.",
tone: "amber",
},
{
icon: "i-lucide-shield-check",
title: "Secure by Design",
description:
"Each agent has its own credential, stored on the server only as a hash, and only runs fixed commands: no remote shell, no file access.",
tone: "green",
},
{
icon: "i-lucide-smartphone",
title: "Mobile Ready",
title: "Install as an App",
description:
"Use a responsive interface and PWA support to manage critical tasks while on the move.",
"A responsive dashboard you can install as an app (PWA) on iOS, Android and the desktop.",
tone: "red",
},
{
icon: "i-lucide-puzzle",
title: "API Integration",
description: "Connect NetIgnite to your tools with a flexible REST API built for automation.",
title: "REST API",
description:
"Connect NetIgnite to your tools with a REST API, API keys and an OpenAPI reference.",
tone: "slate",
},
{
icon: "i-lucide-server",
title: "Hosted or Self-Hosted",
description:
"Use the hosted app or run your own server with Docker. All of NetIgnite is open source under the AGPL-3.0.",
tone: "primary",
},
];

/** "How It Works" steps on the landing page. */
export const setupSteps: SetupStep[] = [
{
title: "Install Agent",
title: "Set Up an Agent",
description:
"Deploy our lightweight agent on your network or use our cloud-based solution for instant setup.",
"Install the ESP32 agent from your browser, or the Linux agent with one command, in the network of your devices.",
},
{
title: "Discover Devices",
title: "Add Your Devices",
description:
"Automatically discover and catalog all network devices with their capabilities and current status.",
"Enter each device's MAC address and choose how NetIgnite checks whether it's online.",
},
{
title: "Take Control",
description:
"Start managing your devices remotely through our intuitive dashboard or mobile app.",
"Power devices on, shut them down and reboot them from the dashboard, the app on your phone or the API.",
},
];
20 changes: 10 additions & 10 deletions app/pages/features.vue
Original file line number Diff line number Diff line change
Expand Up @@ -4,24 +4,24 @@ import { platformFeatures } from "~/data/features";
usePageSeo({
title: "Features — NetIgnite",
description:
"Discover devices, trigger Wake-on-LAN power actions and keep your infrastructure available from anywhere with NetIgnite.",
"Wake-on-LAN, live status checks, shutdown and reboot, device sharing, agent updates over the network, an installable app and a REST API: what NetIgnite can do.",
});

const highlightCards = [
{
title: "Operational Highlights",
items: [
"Centralized overview of device state and reachability",
"Reliable Wake-on-LAN dispatch with retries and validation",
"Role-based controls for secure team operations",
"One overview of all your devices and whether they're online",
"Wake-on-LAN from an agent in the device's own network",
"Per-device roles: viewer, operator and manager",
],
},
{
title: "Built for Growth",
title: "Open and Extensible",
items: [
"REST API and webhooks for automation and integrations",
"Dashboard designed for both homelabs and enterprise fleets",
"Continuous improvements with focus on reliability and usability",
"REST API with API keys and an OpenAPI reference",
"Agents for the ESP32 and for Linux, in as many networks as you like",
"Open source under the AGPL-3.0, hosted or self-hosted",
],
},
];
Expand All @@ -39,8 +39,8 @@ const highlightCards = [
Platform <span class="text-primary">Features</span>
</h1>
<p class="text-xl/relaxed text-slate-200">
Everything you need to discover devices, trigger remote power actions, and keep your
infrastructure available from anywhere.
Everything you need to power devices on and off remotely, see whether they're online,
and share them with the people who need them.
</p>
</div>
<UButton
Expand Down
12 changes: 6 additions & 6 deletions app/pages/index.vue
Original file line number Diff line number Diff line change
Expand Up @@ -39,9 +39,8 @@ const heroDevices = [
From Anywhere
</h1>
<p class="mb-6 text-xl/relaxed text-slate-200 md:text-2xl/relaxed">
Take control of your network infrastructure with NetIgnite. Remotely manage, monitor,
and power on devices across your entire network with enterprise-grade security and
reliability.
Power on, monitor and shut down the computers in your network from anywhere. A small
agent in your LAN does the work; you use the dashboard, your phone or the API.
</p>
<div class="flex flex-col gap-4 sm:flex-row">
<UButton
Expand All @@ -65,7 +64,7 @@ const heroDevices = [
</div>
<p class="mt-6 flex items-center gap-2 text-sm text-slate-300">
<UIcon name="i-lucide-circle-check" class="size-4 text-primary" />
Free for personal use with up to 5 devices.
Open source under the AGPL-3.0. Use the hosted app or run your own server.
</p>
</div>

Expand Down Expand Up @@ -97,7 +96,8 @@ const heroDevices = [
<div class="mx-auto mb-12 max-w-3xl text-center">
<h2 class="mb-4 text-4xl font-bold text-white md:text-5xl">Powerful Remote Management</h2>
<p class="text-xl text-slate-200">
Everything you need to manage your network devices remotely with confidence and security.
Everything you need to power your devices on and off remotely and see whether they're
online.
</p>
</div>
<div class="grid gap-6 md:grid-cols-3">
Expand Down Expand Up @@ -142,7 +142,7 @@ const heroDevices = [
<div class="lg:max-w-3xl">
<h2 class="mb-4 text-3xl font-bold text-white md:text-4xl">Ready to Power Up Your Network?</h2>
<p class="text-xl text-slate-200">
Join thousands of IT professionals who trust NetIgnite for remote device management.
Set up your first agent in minutes, on the hosted app or your own server.
</p>
</div>
<UButton
Expand Down
Loading
Loading