# TowerOps

Network monitoring and alerting platform built with Phoenix LiveView.

## Features

- **Multi-tenant architecture** - Organizations with role-based permissions
- **Site hierarchy** - Organize equipment across multiple sites
- **Automated monitoring** - Real-time ping monitoring with configurable intervals
- **Time-series data** - Efficient storage with TimescaleDB (optional)
- **Real-time updates** - LiveView dashboard with PubSub
- **Equipment tracking** - Monitor network devices by IP address

## Quick Start

### Prerequisites

- Elixir 1.14+
- PostgreSQL 14+
- (Optional) TimescaleDB for production-grade time-series performance

### Setup

```bash
# Install dependencies
mix setup

# Start the server
mix phx.server
```

Visit [`localhost:4000`](http://localhost:4000) from your browser.

### TimescaleDB (Production Only)

**Development**: Uses standard PostgreSQL (no TimescaleDB required).

**Production**: TimescaleDB is automatically enabled for optimal performance with time-series data.

```bash
# Production deployment - install TimescaleDB first
brew tap timescale/tap && brew install timescaledb  # macOS
# Then run migrations with MIX_ENV=prod
MIX_ENV=prod mix ecto.migrate
```

See [TIMESCALEDB.md](TIMESCALEDB.md) for detailed installation and configuration.

**How it works**: Migrations detect the environment (`MIX_ENV`) and only enable TimescaleDB features (hypertables, compression, retention policies, continuous aggregates) in production.

## Development

### Database

```bash
mix ecto.create       # Create database
mix ecto.migrate      # Run migrations
mix ecto.reset        # Drop, create, and migrate
```

### Testing

```bash
mix test              # Run all tests
mix test --trace      # Run with detailed output
```

### Code Quality

```bash
mix format            # Format code with Styler
mix compile --warnings-as-errors
```

## Learn more

* Official website: https://www.phoenixframework.org/
* Guides: https://hexdocs.pm/phoenix/overview.html
* Docs: https://hexdocs.pm/phoenix
* Forum: https://elixirforum.com/c/phoenix-forum
* Source: https://github.com/phoenixframework/phoenix
