Compare commits
5 Commits
cb8722940e
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ea315d3a52
|
||
|
|
0ca657beb1
|
||
|
|
7a3768e1bf
|
||
|
|
f2d235d046
|
||
|
|
b31138e3a5
|
15
.gitea/workflows/build.yaml
Normal file
15
.gitea/workflows/build.yaml
Normal file
@@ -0,0 +1,15 @@
|
||||
name: Nix Build
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
pull_request:
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: nixos-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: Build
|
||||
run: nix build
|
||||
61
README.md
61
README.md
@@ -1,42 +1,53 @@
|
||||
# sv
|
||||
# Router Dash
|
||||
|
||||
Everything you need to build a Svelte project, powered by [`sv`](https://github.com/sveltejs/cli).
|
||||
[](https://git.freun.dev/repomaa/router-dash/actions?workflow=build.yaml)
|
||||
|
||||
## Creating a project
|
||||
A modern web dashboard for monitoring network interfaces, routes, and DHCP leases. Built with SvelteKit 5 and designed to work with systemd-networkd's JSON output.
|
||||
|
||||
If you're seeing this, you've probably already done this step. Congrats!
|
||||
## Features
|
||||
|
||||
- **Network Interface Monitoring** - View detailed interface information including IP addresses, routes, carrier state, and operational status
|
||||
- **DHCP Lease Management** - Display active and expired DHCP leases with time remaining
|
||||
- **Routing Table Visualization** - Show routing policies and network routes
|
||||
- **Real-time Status** - Monitor operational states, carrier states, and address states
|
||||
- **Responsive Design** - Clean, modern UI built with Tailwind CSS
|
||||
|
||||
## Tech Stack
|
||||
|
||||
- **Framework**: SvelteKit 5 with Svelte 5 runes
|
||||
- **Language**: TypeScript (strict mode)
|
||||
- **Styling**: Tailwind CSS 4
|
||||
- **Icons**: Lucide Svelte
|
||||
- **Build**: Vite
|
||||
- **CI/CD**: Gitea Actions with Nix
|
||||
|
||||
## Development
|
||||
|
||||
```sh
|
||||
# create a new project
|
||||
npx sv create my-app
|
||||
```
|
||||
# Install dependencies
|
||||
npm install
|
||||
|
||||
To recreate this project with the same configuration:
|
||||
|
||||
```sh
|
||||
# recreate this project
|
||||
deno run npm:sv create --template minimal --types ts --add prettier eslint tailwindcss="plugins:none" sveltekit-adapter="adapter:static" devtools-json mcp="ide:opencode+setup:local" --install deno router-dash
|
||||
```
|
||||
|
||||
## Developing
|
||||
|
||||
Once you've created a project and installed dependencies with `npm install` (or `pnpm install` or `yarn`), start a development server:
|
||||
|
||||
```sh
|
||||
# Start development server
|
||||
npm run dev
|
||||
|
||||
# or start the server and open the app in a new browser tab
|
||||
npm run dev -- --open
|
||||
# Type check
|
||||
npm run check
|
||||
|
||||
# Lint and format
|
||||
npm run lint
|
||||
npm run format
|
||||
```
|
||||
|
||||
## Building
|
||||
|
||||
To create a production version of your app:
|
||||
|
||||
```sh
|
||||
# Create production build
|
||||
npm run build
|
||||
|
||||
# Preview production build
|
||||
npm run preview
|
||||
```
|
||||
|
||||
You can preview the production build with `npm run preview`.
|
||||
## License
|
||||
|
||||
> To deploy your app, you may need to install an [adapter](https://svelte.dev/docs/kit/adapters) for your target environment.
|
||||
AGPL-3.0-or-later
|
||||
|
||||
@@ -26,9 +26,11 @@
|
||||
|
||||
npmDepsHash = "sha256-2XxcsvKeYp+SVBx6Z2uB/34qUr7AderMxXKjm/kS8F0=";
|
||||
|
||||
API_URL = "/api";
|
||||
|
||||
buildPhase = ''
|
||||
runHook preBuild
|
||||
npm run build
|
||||
PUBLIC_API_URL="''${API_URL}" npm run build
|
||||
runHook postBuild
|
||||
'';
|
||||
|
||||
@@ -43,7 +45,7 @@
|
||||
|
||||
meta = with pkgs.lib; {
|
||||
description = "Router Dashboard - A SvelteKit static web interface";
|
||||
license = licenses.mit;
|
||||
license = licenses.agpl3Only;
|
||||
platforms = platforms.all;
|
||||
};
|
||||
};
|
||||
|
||||
@@ -1,13 +1,11 @@
|
||||
import type { NetworkStatus } from '$lib/types'
|
||||
import type { PageLoad } from './$types'
|
||||
import { PUBLIC_API_URL } from '$env/static/public'
|
||||
|
||||
export const ssr = false
|
||||
|
||||
const API_PORT = import.meta.env.PUBLIC_API_PORT ?? '8080'
|
||||
|
||||
export const load: PageLoad = async ({ fetch, url }) => {
|
||||
const apiUrl = `${url.protocol}//${url.hostname}:${API_PORT}`
|
||||
const response = await fetch(apiUrl)
|
||||
export const load: PageLoad = async ({ fetch }) => {
|
||||
const response = await fetch(PUBLIC_API_URL)
|
||||
const networkStatus: NetworkStatus = await response.json()
|
||||
|
||||
return {
|
||||
|
||||
Reference in New Issue
Block a user