mirror of
https://github.com/blackboxprogramming/BlackRoad-Operating-System.git
synced 2026-03-17 04:57:15 -05:00
Add Next.js frontends with health endpoints
This commit is contained in:
3
apps/docs/.eslintrc.json
Normal file
3
apps/docs/.eslintrc.json
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"extends": ["next/core-web-vitals"]
|
||||||
|
}
|
||||||
7
apps/docs/README.md
Normal file
7
apps/docs/README.md
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
# Docs App (monorepo-owned)
|
||||||
|
|
||||||
|
- **Canonical path:** `apps/docs`
|
||||||
|
- **Mirror:** `BlackRoad-OS/blackroad-os-docs`
|
||||||
|
- **Branch:** `main`
|
||||||
|
|
||||||
|
Documentation portal for BlackRoad OS. Edits here are mirrored automatically.
|
||||||
14
apps/docs/app/globals.css
Normal file
14
apps/docs/app/globals.css
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
:root {
|
||||||
|
color-scheme: dark;
|
||||||
|
font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
|
||||||
|
background-color: #0f1115;
|
||||||
|
color: #f5f6f8;
|
||||||
|
}
|
||||||
|
|
||||||
|
a {
|
||||||
|
color: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
8
apps/docs/app/health/route.ts
Normal file
8
apps/docs/app/health/route.ts
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
import { NextResponse } from "next/server";
|
||||||
|
|
||||||
|
export async function GET() {
|
||||||
|
return NextResponse.json({
|
||||||
|
service: "blackroad-os-docs",
|
||||||
|
status: "ok"
|
||||||
|
});
|
||||||
|
}
|
||||||
35
apps/docs/app/layout.tsx
Normal file
35
apps/docs/app/layout.tsx
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
import "./globals.css";
|
||||||
|
import type { ReactNode } from "react";
|
||||||
|
|
||||||
|
export const metadata = {
|
||||||
|
title: "BlackRoad OS Docs",
|
||||||
|
description: "Documentation for BlackRoad Operating System"
|
||||||
|
};
|
||||||
|
|
||||||
|
export default function RootLayout({ children }: { children: ReactNode }) {
|
||||||
|
return (
|
||||||
|
<html lang="en">
|
||||||
|
<body>
|
||||||
|
<div style={{ display: "flex", minHeight: "100vh" }}>
|
||||||
|
<aside
|
||||||
|
style={{
|
||||||
|
width: "260px",
|
||||||
|
borderRight: "1px solid #222",
|
||||||
|
padding: "1rem"
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<h1 style={{ fontSize: "1.1rem", marginBottom: "1rem" }}>
|
||||||
|
BlackRoad OS Docs
|
||||||
|
</h1>
|
||||||
|
<nav style={{ display: "flex", flexDirection: "column", gap: "0.5rem" }}>
|
||||||
|
<a href="/" style={{ textDecoration: "none" }}>Overview</a>
|
||||||
|
<a href="/getting-started" style={{ textDecoration: "none" }}>Getting Started</a>
|
||||||
|
<a href="/health" style={{ textDecoration: "none" }}>Health</a>
|
||||||
|
</nav>
|
||||||
|
</aside>
|
||||||
|
<main style={{ flex: 1, padding: "2rem" }}>{children}</main>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
);
|
||||||
|
}
|
||||||
11
apps/docs/app/page.tsx
Normal file
11
apps/docs/app/page.tsx
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
export default function Page() {
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
<h2>BlackRoad OS – Documentation</h2>
|
||||||
|
<p>
|
||||||
|
This site will contain architecture, API references, and
|
||||||
|
operator playbooks for the BlackRoad Operating System.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
5
apps/docs/next-env.d.ts
vendored
Normal file
5
apps/docs/next-env.d.ts
vendored
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
/// <reference types="next" />
|
||||||
|
/// <reference types="next/image-types/global" />
|
||||||
|
|
||||||
|
// NOTE: This file should not be edited
|
||||||
|
// see https://nextjs.org/docs/basic-features/typescript for more information.
|
||||||
9
apps/docs/next.config.mjs
Normal file
9
apps/docs/next.config.mjs
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
/** @type {import('next').NextConfig} */
|
||||||
|
const nextConfig = {
|
||||||
|
output: "standalone",
|
||||||
|
experimental: {
|
||||||
|
appDir: true
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
export default nextConfig;
|
||||||
25
apps/docs/package.json
Normal file
25
apps/docs/package.json
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
{
|
||||||
|
"name": "blackroad-os-docs",
|
||||||
|
"version": "0.1.0",
|
||||||
|
"private": true,
|
||||||
|
"scripts": {
|
||||||
|
"dev": "next dev -p 8080",
|
||||||
|
"build": "next build",
|
||||||
|
"start": "next start -p 8080",
|
||||||
|
"lint": "next lint",
|
||||||
|
"health": "curl -f http://localhost:8080/health || exit 1"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"next": "14.2.3",
|
||||||
|
"react": "18.3.1",
|
||||||
|
"react-dom": "18.3.1"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@types/node": "^20.11.0",
|
||||||
|
"@types/react": "^18.3.0",
|
||||||
|
"@types/react-dom": "^18.3.0",
|
||||||
|
"eslint": "^9.0.0",
|
||||||
|
"eslint-config-next": "^15.0.0",
|
||||||
|
"typescript": "^5.6.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
19
apps/docs/tsconfig.json
Normal file
19
apps/docs/tsconfig.json
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
{
|
||||||
|
"compilerOptions": {
|
||||||
|
"target": "es5",
|
||||||
|
"lib": ["dom", "dom.iterable", "esnext"],
|
||||||
|
"allowJs": true,
|
||||||
|
"skipLibCheck": true,
|
||||||
|
"strict": true,
|
||||||
|
"noEmit": true,
|
||||||
|
"esModuleInterop": true,
|
||||||
|
"module": "esnext",
|
||||||
|
"moduleResolution": "bundler",
|
||||||
|
"resolveJsonModule": true,
|
||||||
|
"isolatedModules": true,
|
||||||
|
"jsx": "preserve",
|
||||||
|
"incremental": true
|
||||||
|
},
|
||||||
|
"include": ["next-env.d.ts", "**/*.ts", "**/*.tsx"],
|
||||||
|
"exclude": ["node_modules"]
|
||||||
|
}
|
||||||
3
apps/prism-console/.eslintrc.json
Normal file
3
apps/prism-console/.eslintrc.json
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"extends": ["next/core-web-vitals"]
|
||||||
|
}
|
||||||
14
apps/prism-console/app/globals.css
Normal file
14
apps/prism-console/app/globals.css
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
:root {
|
||||||
|
color-scheme: dark;
|
||||||
|
font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
|
||||||
|
background-color: #0f1115;
|
||||||
|
color: #f5f6f8;
|
||||||
|
}
|
||||||
|
|
||||||
|
a {
|
||||||
|
color: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
8
apps/prism-console/app/health/route.ts
Normal file
8
apps/prism-console/app/health/route.ts
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
import { NextResponse } from "next/server";
|
||||||
|
|
||||||
|
export async function GET() {
|
||||||
|
return NextResponse.json({
|
||||||
|
service: "blackroad-os-prism-console",
|
||||||
|
status: "ok"
|
||||||
|
});
|
||||||
|
}
|
||||||
35
apps/prism-console/app/layout.tsx
Normal file
35
apps/prism-console/app/layout.tsx
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
import "./globals.css";
|
||||||
|
import type { ReactNode } from "react";
|
||||||
|
|
||||||
|
export const metadata = {
|
||||||
|
title: "BlackRoad OS – Prism Console",
|
||||||
|
description: "Operator console for BlackRoad OS"
|
||||||
|
};
|
||||||
|
|
||||||
|
export default function RootLayout({ children }: { children: ReactNode }) {
|
||||||
|
return (
|
||||||
|
<html lang="en">
|
||||||
|
<body>
|
||||||
|
<div style={{ display: "flex", minHeight: "100vh" }}>
|
||||||
|
<aside
|
||||||
|
style={{
|
||||||
|
width: "240px",
|
||||||
|
borderRight: "1px solid #222",
|
||||||
|
padding: "1rem"
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<h1 style={{ fontSize: "1.1rem", marginBottom: "1rem" }}>
|
||||||
|
Prism Console
|
||||||
|
</h1>
|
||||||
|
<nav style={{ display: "flex", flexDirection: "column", gap: "0.5rem" }}>
|
||||||
|
<a href="/" style={{ textDecoration: "none" }}>Dashboard</a>
|
||||||
|
<a href="/agents" style={{ textDecoration: "none" }}>Agents</a>
|
||||||
|
<a href="/health" style={{ textDecoration: "none" }}>Health</a>
|
||||||
|
</nav>
|
||||||
|
</aside>
|
||||||
|
<main style={{ flex: 1, padding: "1.5rem" }}>{children}</main>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
);
|
||||||
|
}
|
||||||
13
apps/prism-console/app/page.tsx
Normal file
13
apps/prism-console/app/page.tsx
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
export default function Page() {
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
<h2>Prism Console</h2>
|
||||||
|
<p>Welcome to the BlackRoad OS operator console.</p>
|
||||||
|
<ul>
|
||||||
|
<li>Monitor services</li>
|
||||||
|
<li>Inspect agents</li>
|
||||||
|
<li>Trigger workflows</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
5
apps/prism-console/next-env.d.ts
vendored
Normal file
5
apps/prism-console/next-env.d.ts
vendored
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
/// <reference types="next" />
|
||||||
|
/// <reference types="next/image-types/global" />
|
||||||
|
|
||||||
|
// NOTE: This file should not be edited
|
||||||
|
// see https://nextjs.org/docs/basic-features/typescript for more information.
|
||||||
12
apps/prism-console/next.config.mjs
Normal file
12
apps/prism-console/next.config.mjs
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
/** @type {import('next').NextConfig} */
|
||||||
|
const nextConfig = {
|
||||||
|
output: "standalone",
|
||||||
|
experimental: {
|
||||||
|
appDir: true
|
||||||
|
},
|
||||||
|
env: {
|
||||||
|
API_URL: process.env.API_URL || "https://api.blackroad.systems"
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
export default nextConfig;
|
||||||
25
apps/prism-console/package.json
Normal file
25
apps/prism-console/package.json
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
{
|
||||||
|
"name": "blackroad-os-prism-console",
|
||||||
|
"version": "0.1.0",
|
||||||
|
"private": true,
|
||||||
|
"scripts": {
|
||||||
|
"dev": "next dev -p 8080",
|
||||||
|
"build": "next build",
|
||||||
|
"start": "next start -p 8080",
|
||||||
|
"lint": "next lint",
|
||||||
|
"health": "curl -f http://localhost:8080/health || exit 1"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"next": "14.2.3",
|
||||||
|
"react": "18.3.1",
|
||||||
|
"react-dom": "18.3.1"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@types/node": "^20.11.0",
|
||||||
|
"@types/react": "^18.3.0",
|
||||||
|
"@types/react-dom": "^18.3.0",
|
||||||
|
"eslint": "^9.0.0",
|
||||||
|
"eslint-config-next": "^15.0.0",
|
||||||
|
"typescript": "^5.6.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
19
apps/prism-console/tsconfig.json
Normal file
19
apps/prism-console/tsconfig.json
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
{
|
||||||
|
"compilerOptions": {
|
||||||
|
"target": "es5",
|
||||||
|
"lib": ["dom", "dom.iterable", "esnext"],
|
||||||
|
"allowJs": true,
|
||||||
|
"skipLibCheck": true,
|
||||||
|
"strict": true,
|
||||||
|
"noEmit": true,
|
||||||
|
"esModuleInterop": true,
|
||||||
|
"module": "esnext",
|
||||||
|
"moduleResolution": "bundler",
|
||||||
|
"resolveJsonModule": true,
|
||||||
|
"isolatedModules": true,
|
||||||
|
"jsx": "preserve",
|
||||||
|
"incremental": true
|
||||||
|
},
|
||||||
|
"include": ["next-env.d.ts", "**/*.ts", "**/*.tsx"],
|
||||||
|
"exclude": ["node_modules"]
|
||||||
|
}
|
||||||
3
apps/web/.eslintrc.json
Normal file
3
apps/web/.eslintrc.json
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"extends": ["next/core-web-vitals"]
|
||||||
|
}
|
||||||
14
apps/web/app/globals.css
Normal file
14
apps/web/app/globals.css
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
:root {
|
||||||
|
color-scheme: dark;
|
||||||
|
font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
|
||||||
|
background-color: #0f1115;
|
||||||
|
color: #f5f6f8;
|
||||||
|
}
|
||||||
|
|
||||||
|
a {
|
||||||
|
color: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
8
apps/web/app/health/route.ts
Normal file
8
apps/web/app/health/route.ts
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
import { NextResponse } from "next/server";
|
||||||
|
|
||||||
|
export async function GET() {
|
||||||
|
return NextResponse.json({
|
||||||
|
service: "blackroad-os-web",
|
||||||
|
status: "ok"
|
||||||
|
});
|
||||||
|
}
|
||||||
32
apps/web/app/layout.tsx
Normal file
32
apps/web/app/layout.tsx
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
import "./globals.css";
|
||||||
|
import type { ReactNode } from "react";
|
||||||
|
|
||||||
|
export const metadata = {
|
||||||
|
title: "BlackRoad OS",
|
||||||
|
description: "The BlackRoad Operating System"
|
||||||
|
};
|
||||||
|
|
||||||
|
export default function RootLayout({ children }: { children: ReactNode }) {
|
||||||
|
return (
|
||||||
|
<html lang="en">
|
||||||
|
<body>
|
||||||
|
<header
|
||||||
|
style={{
|
||||||
|
padding: "1rem 2rem",
|
||||||
|
borderBottom: "1px solid #222",
|
||||||
|
display: "flex",
|
||||||
|
justifyContent: "space-between"
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<div>BlackRoad OS</div>
|
||||||
|
<nav style={{ display: "flex", gap: "1rem" }}>
|
||||||
|
<a href="/" style={{ textDecoration: "none" }}>Home</a>
|
||||||
|
<a href="/docs" style={{ textDecoration: "none" }}>Docs</a>
|
||||||
|
<a href="/health" style={{ textDecoration: "none" }}>Health</a>
|
||||||
|
</nav>
|
||||||
|
</header>
|
||||||
|
<main style={{ padding: "2rem" }}>{children}</main>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
);
|
||||||
|
}
|
||||||
12
apps/web/app/page.tsx
Normal file
12
apps/web/app/page.tsx
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
export default function Page() {
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
<h1>BlackRoad Operating System</h1>
|
||||||
|
<p>
|
||||||
|
A multi-service, agent-native OS for orchestrating AI, compute,
|
||||||
|
and compliance.
|
||||||
|
</p>
|
||||||
|
<p>Deployed on Railway. Fronted by Cloudflare. Driven by you.</p>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
5
apps/web/next-env.d.ts
vendored
Normal file
5
apps/web/next-env.d.ts
vendored
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
/// <reference types="next" />
|
||||||
|
/// <reference types="next/image-types/global" />
|
||||||
|
|
||||||
|
// NOTE: This file should not be edited
|
||||||
|
// see https://nextjs.org/docs/basic-features/typescript for more information.
|
||||||
9
apps/web/next.config.mjs
Normal file
9
apps/web/next.config.mjs
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
/** @type {import('next').NextConfig} */
|
||||||
|
const nextConfig = {
|
||||||
|
output: "standalone",
|
||||||
|
experimental: {
|
||||||
|
appDir: true
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
export default nextConfig;
|
||||||
25
apps/web/package.json
Normal file
25
apps/web/package.json
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
{
|
||||||
|
"name": "blackroad-os-web",
|
||||||
|
"version": "0.1.0",
|
||||||
|
"private": true,
|
||||||
|
"scripts": {
|
||||||
|
"dev": "next dev -p 8080",
|
||||||
|
"build": "next build",
|
||||||
|
"start": "next start -p 8080",
|
||||||
|
"lint": "next lint",
|
||||||
|
"health": "curl -f http://localhost:8080/health || exit 1"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"next": "14.2.3",
|
||||||
|
"react": "18.3.1",
|
||||||
|
"react-dom": "18.3.1"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@types/node": "^20.11.0",
|
||||||
|
"@types/react": "^18.3.0",
|
||||||
|
"@types/react-dom": "^18.3.0",
|
||||||
|
"eslint": "^9.0.0",
|
||||||
|
"eslint-config-next": "^15.0.0",
|
||||||
|
"typescript": "^5.6.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
19
apps/web/tsconfig.json
Normal file
19
apps/web/tsconfig.json
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
{
|
||||||
|
"compilerOptions": {
|
||||||
|
"target": "es5",
|
||||||
|
"lib": ["dom", "dom.iterable", "esnext"],
|
||||||
|
"allowJs": true,
|
||||||
|
"skipLibCheck": true,
|
||||||
|
"strict": true,
|
||||||
|
"noEmit": true,
|
||||||
|
"esModuleInterop": true,
|
||||||
|
"module": "esnext",
|
||||||
|
"moduleResolution": "bundler",
|
||||||
|
"resolveJsonModule": true,
|
||||||
|
"isolatedModules": true,
|
||||||
|
"jsx": "preserve",
|
||||||
|
"incremental": true
|
||||||
|
},
|
||||||
|
"include": ["next-env.d.ts", "**/*.ts", "**/*.tsx"],
|
||||||
|
"exclude": ["node_modules"]
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user