Skip to content

Commit e179625

Browse files
authored
Update admin UI (#151)
* Update admin UI * Update docs icon * Update client icon * Update readme
1 parent 5ab316a commit e179625

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

67 files changed

+3040
-2355
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11

22
<div align="center">
3-
<img src="docs/src/assets/logo.png" height="75px">
3+
<img src="docs/src/assets/icon.png" height="300px">
44
</div>
55

66
<br />

admin/apis/v1/config.py

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
1-
from fastapi import APIRouter, Depends
1+
import asyncio
2+
from fastapi import APIRouter, Depends, Request
23
from pydantic import BaseModel
34
from apis import security
45
from config import settings
6+
from models.connection import Connection
57
from models.user import TeamUser
68
from utils.exception import ServiceError
79
from services import user as user_service
810

11+
912
api = APIRouter(prefix="/config", tags=["config"])
1013

1114

@@ -51,3 +54,31 @@ async def setup_script(team_user: TeamUser = Depends(security.get_current_team_u
5154
token=team_user.secret_key, server_url=settings.server_url
5255
)
5356
}
57+
58+
59+
@api.get("/stats")
60+
async def get_stats(
61+
request: Request, team_user: TeamUser = Depends(security.get_current_team_user)
62+
):
63+
team = team_user.team
64+
65+
total_connections_query = Connection.filter(team_id=team.id).count()
66+
active_connections_query = Connection.filter(
67+
team_id=team.id, status="active"
68+
).count()
69+
team_members_count = TeamUser.filter(team_id=team.id).count()
70+
71+
total_connections, active_connections, team_members = await asyncio.gather(
72+
total_connections_query, active_connections_query, team_members_count
73+
)
74+
75+
return {
76+
"team_stats": {
77+
"total_connections": total_connections,
78+
"active_connections": active_connections,
79+
"team_members": team_members,
80+
},
81+
"system_stats": {
82+
"server_start_time": request.app.state.server_start_time,
83+
},
84+
}

admin/main.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
from datetime import datetime, UTC
12
import os
23
from typing import Annotated
34
from fastapi import Cookie, FastAPI, Request
@@ -25,6 +26,7 @@
2526
async def lifespan(app: FastAPI):
2627
# connect to database
2728
await connect_db()
29+
app.state.server_start_time = datetime.now(tz=UTC)
2830
yield
2931
# disconnect all db connections
3032
await disconnect_db()
@@ -95,7 +97,7 @@ async def render_index_template_for_instance_settings_routes(
9597
@app.get("/{team}/connections")
9698
@app.get("/{team}/users")
9799
@app.get("/{team}/my-account")
98-
@app.get("/{team}/settings")
100+
@app.get("/{team}/email-settings")
99101
async def render_index_template_for_team_routes(
100102
request: Request,
101103
team: str,

admin/static/favicon.svg

Lines changed: 13 additions & 0 deletions
Loading

admin/static/icon.svg

Lines changed: 2 additions & 23 deletions
Loading

admin/templates/index.html

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,11 @@
33
<head>
44
<meta charset="UTF-8" />
55
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
6-
<link rel="shortcut icon" href="/static/favicon.ico" type="image/x-icon" />
7-
<title>Portr - Expose local ports to public URLs</title>
6+
<link rel="shortcut icon" href="/static/favicon.svg" type="image/svg+xml" />
7+
<title>
8+
Portr - Expose local http, tcp or websocket connections to the public
9+
internet
10+
</title>
811
<style>
912
@font-face {
1013
font-family: "Manrope Variable";

admin/web/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
"@sveltejs/vite-plugin-svelte": "^2.5.3",
1616
"@tsconfig/svelte": "^5.0.4",
1717
"autoprefixer": "^10.4.19",
18+
"bits-ui": "^0.22.0",
1819
"clsx": "^2.1.0",
1920
"formsnap": "^0.4.4",
2021
"highlight.js": "^11.9.0",
@@ -34,7 +35,6 @@
3435
"vite": "^5.4.12"
3536
},
3637
"dependencies": {
37-
"bits-ui": "^0.15.1",
3838
"lucide-svelte": "0.352.0",
3939
"moment": "^2.30.1",
4040
"svelte-legos": "^0.2.2",

0 commit comments

Comments
 (0)