Skip to content

Commit 377f36f

Browse files
committed
add disk usage widget
1 parent a1ebdab commit 377f36f

File tree

18 files changed

+260
-235
lines changed

18 files changed

+260
-235
lines changed

.vscode/settings.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
{
2+
"editor.formatOnSave": true,
3+
"editor.defaultFormatter": "esbenp.prettier-vscode",
24
"editor.codeActionsOnSave": {
35
"source.fixAll": "always"
46
},

apps/api/src/main.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import express from 'express';
22
import cors from 'cors';
33
import * as trpcExpress from '@trpc/server/adapters/express';
4-
import { appRouter } from './routers/_app';
4+
import { appRouter } from './trpc/root';
55
import { createContext } from './trpc/context';
66

77
const host = process.env.HOST ?? 'localhost';

apps/api/src/routers/_app.ts

Lines changed: 0 additions & 8 deletions
This file was deleted.

apps/api/src/routers/example.ts

Lines changed: 0 additions & 28 deletions
This file was deleted.

apps/api/src/server.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
11
import express from 'express';
22
import * as trpcExpress from '@trpc/server/adapters/express';
3-
import { appRouter } from './routers/_app';
3+
import { appRouter } from './trpc/root';
44
import { createContext } from './trpc/context';
55

66
const app = express();
77

8-
// Add a root route
98
app.get('/', (req, res) => {
109
res.json({ message: 'Welcome to the Modes API!' });
1110
});

apps/api/src/trpc/root.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,15 @@ import { tagsRouter } from './routers/tags';
55
import { usersRouter } from './routers/users';
66
import { mediaVersionsRouter } from './routers/mediaVersions';
77
import { processedMediaRouter } from './routers/processedMedia';
8+
import { systemRouter } from './routers/system';
89

910
export const appRouter = router({
1011
media: mediaRouter,
1112
collections: collectionsRouter,
1213
tags: tagsRouter,
1314
users: usersRouter,
1415
mediaVersions: mediaVersionsRouter,
15-
processedMedia: processedMediaRouter
16+
processedMedia: processedMediaRouter,
17+
system: systemRouter,
1618
});
1719
export type AppRouter = typeof appRouter;
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
import { publicProcedure, router } from "../router";
2+
import { getDiskStats } from "../../utils/system";
3+
4+
export const systemRouter = router({
5+
getDiskUsage: publicProcedure.query(getDiskStats)
6+
});

apps/api/src/utils/system.ts

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import si from 'systeminformation';
2+
3+
export const getDiskStats = async () => {
4+
const fsSize = await si.fsSize();
5+
const rootFs = fsSize.find(fs => fs.mount === '/');
6+
7+
if (!rootFs) {
8+
return null;
9+
}
10+
11+
return {
12+
mount: rootFs.mount,
13+
total: rootFs.size,
14+
used: rootFs.used,
15+
available: rootFs.available,
16+
usedPercent: rootFs.use
17+
};
18+
}

apps/web/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
"@tanstack/react-query": "^4.36.1",
1111
"@trpc/client": "^10.45.2",
1212
"@trpc/react-query": "^10.45.2",
13+
"pretty-bytes": "^6.1.1",
1314
"react": "18.3.1",
1415
"react-dom": "18.3.1",
1516
"react-router-dom": "6.11.2",

apps/web/src/app/app.module.css

Lines changed: 0 additions & 1 deletion
This file was deleted.

0 commit comments

Comments
 (0)