diff --git a/.dockerignore b/.dockerignore deleted file mode 100644 index 2e71340..0000000 --- a/.dockerignore +++ /dev/null @@ -1,17 +0,0 @@ -.git -.jj -node_modules -**/node_modules -.turbo -.cache -coverage -**/dist -**/build -**/*.tsbuildinfo -.env* -**/.env* -!.env.example -!**/.env.example -logs -*.log -docs diff --git a/.env.example b/.env.example deleted file mode 100644 index 2e78d98..0000000 --- a/.env.example +++ /dev/null @@ -1,15 +0,0 @@ -POSTGRES_DB=minmon -POSTGRES_USER=postgres -POSTGRES_PASSWORD=postgres -POSTGRES_PORT=5432 - -DATABASE_URL=postgresql://postgres:postgres@postgres:5432/minmon - -BETTER_AUTH_SECRET=minmon-compose-secret-change-me-123456 -BETTER_AUTH_URL=http://localhost:3000 -CORS_ORIGIN=http://localhost:3001 -NODE_ENV=development - -SERVER_PORT=3000 -WEB_PORT=3001 -VITE_SERVER_URL=http://localhost:3000 diff --git a/README.md b/README.md index 228bcd9..e06f18a 100644 --- a/README.md +++ b/README.md @@ -159,25 +159,6 @@ bun run dev - Web: `http://localhost:5173` - API: `http://localhost:3000` -## Docker Compose Deployment - -Run the full stack with PostgreSQL, database initialization, API, and web UI: - -```bash -cp .env.example .env -docker compose up -d -``` - -Default endpoints: - -- Web: `http://localhost:3001` -- API: `http://localhost:3000` - -On first startup, the database initializer applies the schema and seeds the sample admin only when the users table is empty. - -Docker Compose reads the root `.env` file automatically. Edit it before startup if you need different ports, public URLs, credentials, or secrets. - - ## Project Structure ```text @@ -205,5 +186,5 @@ See: ## Notes - DNS checking is limited to A record / IPv4 as required. -- Docker Compose is available for running the app stack; the app itself does not include SSH, reverse proxy, or host orchestration automation. +- This is not a deployment platform and does not include SSH, Docker orchestration, or reverse proxy automation. - Full workspace typecheck is still blocked by a pre-existing desktop typing issue for `three`, but the web app and server app are verified. diff --git a/apps/server/Dockerfile b/apps/server/Dockerfile deleted file mode 100644 index 0c49b3b..0000000 --- a/apps/server/Dockerfile +++ /dev/null @@ -1,33 +0,0 @@ -# syntax=docker/dockerfile:1 - -FROM oven/bun:1.3.12 AS base -WORKDIR /app -ENV CI=1 - -COPY package.json bun.lock turbo.json tsconfig.json bts.jsonc ./ -COPY apps ./apps -COPY packages ./packages - -FROM base AS deps -RUN bun install --frozen-lockfile - -FROM deps AS tools -ENV NODE_ENV=development -RUN touch apps/server/.env - -FROM deps AS build -ENV NODE_ENV=production -RUN bun run --filter server build - -FROM base AS prod-deps -RUN bun install --frozen-lockfile --production - -FROM oven/bun:1.3.12 AS runtime -WORKDIR /app -ENV NODE_ENV=production - -COPY --from=prod-deps /app/node_modules ./node_modules -COPY --from=build /app/apps/server/dist ./apps/server/dist - -EXPOSE 3000 -CMD ["bun", "apps/server/dist/index.mjs"] diff --git a/apps/web/Dockerfile b/apps/web/Dockerfile deleted file mode 100644 index f3e637b..0000000 --- a/apps/web/Dockerfile +++ /dev/null @@ -1,21 +0,0 @@ -# syntax=docker/dockerfile:1 - -FROM oven/bun:1.3.12 AS build -WORKDIR /app -ENV CI=1 - -ARG VITE_SERVER_URL=http://localhost:3000 -ENV VITE_SERVER_URL=${VITE_SERVER_URL} - -COPY package.json bun.lock turbo.json tsconfig.json bts.jsonc ./ -COPY apps ./apps -COPY packages ./packages - -RUN bun install --frozen-lockfile -RUN bun run --filter web build - -FROM nginx:1.27-alpine AS runtime -COPY apps/web/nginx.conf /etc/nginx/conf.d/default.conf -COPY --from=build /app/apps/web/dist /usr/share/nginx/html - -EXPOSE 80 diff --git a/apps/web/nginx.conf b/apps/web/nginx.conf deleted file mode 100644 index 79fd959..0000000 --- a/apps/web/nginx.conf +++ /dev/null @@ -1,11 +0,0 @@ -server { - listen 80; - server_name _; - - root /usr/share/nginx/html; - index index.html; - - location / { - try_files $uri $uri/ /index.html; - } -} diff --git a/apps/web/src/components/dashboard-shell.tsx b/apps/web/src/components/dashboard-shell.tsx index a3ddfee..a0147e4 100644 --- a/apps/web/src/components/dashboard-shell.tsx +++ b/apps/web/src/components/dashboard-shell.tsx @@ -15,7 +15,6 @@ import { LayoutGrid, MenuIcon, Server, - Users, Wrench, } from "lucide-react"; import { useEffect, useState } from "react"; @@ -26,42 +25,30 @@ const dashboardLinks = [ label: "Overview", description: "Health, alerts, and recent checks", icon: LayoutGrid, - permission: "dashboard.read", }, { to: "/dashboard/servers", label: "Servers", description: "Inventory and host details", icon: Server, - permission: "servers.read", }, { to: "/dashboard/services", label: "Services", description: "Processes and uptime targets", icon: Wrench, - permission: "services.read", }, { to: "/dashboard/domains", label: "Domains", description: "DNS, SSL, and expiry status", icon: Globe, - permission: "domains.read", }, { to: "/dashboard/notes", label: "Notes", description: "Runbooks and operational handover", icon: BookText, - permission: "notes.read", - }, - { - to: "/dashboard/users", - label: "Users", - description: "Roles and permission assignments", - icon: Users, - permission: "users.read", }, ] as const; @@ -73,18 +60,14 @@ function isActive(pathname: string, to: string): boolean { function NavItems({ pathname, - permissions, onNavigate, }: { pathname: string; - permissions: string[]; onNavigate?: () => void; }) { - const allowedPermissions = new Set(permissions); - return (