towerops/lib/towerops_web/live/help_live/sections/about.ex
Graham McIntire b5512f2579
Some checks failed
Build base image / Build and push base image (push) Failing after 2s
Production Deployment / Run ExUnit Tests (push) Failing after 58s
Production Deployment / Build and Push Docker Image (push) Has been skipped
fix: resolve credo warnings — refactor decoder_macros complexity and remove unused assign indirection
- Refactored build_field_handler_ast to use pattern-matching function heads
  instead of a large cond block, reducing cyclomatic complexity from 30 to ≤9
- Extracted classify_type_spec and per-type AST builder helpers into separate
  private functions for maintainability
- Removed :previous_interface_stats initialization from show.ex (only
  polling.ex reads it); prev_stats now passed explicitly as a parameter
  to polling functions instead of reaching through socket.assigns
- Updated Polling.poll_sensors, poll_traffic, and poll_traffic_with_state
  to accept prev_stats as an explicit argument
2026-07-25 09:46:19 -05:00

99 lines
4.4 KiB
Elixir

defmodule ToweropsWeb.HelpLive.Sections.About do
@moduledoc false
use ToweropsWeb, :html
def render(assigns) do
~H"""
<div class="p-6">
<h2 class="text-xl font-bold text-gray-900 dark:text-white mb-4">About Towerops</h2>
<div class="prose prose-sm dark:prose-invert max-w-none">
<p class="text-gray-600 dark:text-gray-400">
Towerops is a modern network monitoring and management platform designed to provide
comprehensive visibility into your network infrastructure. It came out of a need to simplify
network monitoring and alerting while running a wireless ISP.
</p>
<p class="text-gray-600 dark:text-gray-400">
Our promise to you:
<ul class="list-disc list-inside">
<li>No random marketing emails or sign up for our newsletter popups.</li>
<li>No trackers EVER, no external libraries used.</li>
<li>No ads or sponsored content.</li>
<li>No data collection or sharing.</li>
<li>
Our remote agent is
<a href="https://git.mcintire.me/towerops-agent/towerops-agent">
fully open source
</a>
and ONLY collects monitoring jobs from the server and WILL NEVER allow us to access any part of your internal network.
</li>
</ul>
</p>
<p class="text-gray-600 dark:text-gray-400 mt-4">
Think of Towerops as combining the best of LibreNMS, Icinga2/Nagios, and PagerDuty into
a single, unified platform. You get deep network device monitoring with SNMP auto-discovery,
flexible health checks and alerting, and intelligent incident management—all with a modern
interface that makes complex monitoring workflows simple and accessible.
</p>
<p class="text-gray-600 dark:text-gray-400 mt-4">
Towerops is not and has no plans to be a replacement for a full WISP/network billing system.
</p>
<div class="mt-6 grid grid-cols-1 md:grid-cols-3 gap-4">
<div class="p-4 bg-gray-50 dark:bg-gray-800/50 border border-gray-200 dark:border-white/10 rounded-lg">
<h4 class="text-sm font-semibold text-gray-900 dark:text-white mb-2">
Network Monitoring
</h4>
<p class="text-sm text-gray-600 dark:text-gray-400">
Like LibreNMS, discover and monitor network devices via SNMP with support for
multi-vendor equipment, interface statistics, and topology mapping.
</p>
</div>
<div class="p-4 bg-gray-50 dark:bg-gray-800/50 border border-gray-200 dark:border-white/10 rounded-lg">
<h4 class="text-sm font-semibold text-gray-900 dark:text-white mb-2">
Health Checks & Alerting
</h4>
<p class="text-sm text-gray-600 dark:text-gray-400">
Like Icinga2/Nagios, configure flexible monitoring checks with customizable thresholds
and alert conditions for any metric or device state.
</p>
</div>
<div class="p-4 bg-gray-50 dark:bg-gray-800/50 border border-gray-200 dark:border-white/10 rounded-lg">
<h4 class="text-sm font-semibold text-gray-900 dark:text-white mb-2">
Incident Management
</h4>
<p class="text-sm text-gray-600 dark:text-gray-400">
Like PagerDuty, manage incidents with intelligent alerting, escalation policies,
and notification routing to keep your team informed.
</p>
</div>
</div>
<div class="mt-6 p-4 bg-blue-50 dark:bg-blue-900/20 border border-blue-200 dark:border-blue-800 rounded-lg">
<div class="flex gap-3">
<.icon
name="hero-information-circle"
class="h-5 w-5 text-blue-600 dark:text-blue-400 flex-shrink-0 mt-0.5"
/>
<div>
<p class="text-sm text-blue-800 dark:text-blue-300">
Ready to get started? Check out the
<.link
patch={~p"/help?section=getting-started"}
class="underline hover:text-blue-900 dark:hover:text-blue-200"
>
Getting Started
</.link>
guide to begin monitoring your network infrastructure.
</p>
</div>
</div>
</div>
</div>
</div>
"""
end
end