Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
62 commits
Select commit Hold shift + click to select a range
c62df5c
update UI and support multi release
Nov 14, 2025
1d2ee99
update UI and fix some minor issues
Nov 18, 2025
613def3
fix mobile version
Nov 18, 2025
7e5614b
save bulk
Nov 20, 2025
433c665
bulk and spec-search
Nov 20, 2025
8f30808
spec search and release comaraison
Nov 20, 2025
20656b8
clean up UI and tools
Nov 20, 2025
5279967
spec details open update
Nov 20, 2025
cb56ab7
update design UI resource page
Nov 20, 2025
422e8a3
search update
Nov 21, 2025
473a60e
design change
Nov 21, 2025
5b00b87
ui chnge
Nov 21, 2025
beae3b0
save
Nov 21, 2025
64fe3fc
update UI search feature
Nov 21, 2025
d5a187b
correct build issue
Nov 21, 2025
3bf7c7b
save
Nov 21, 2025
8fae1fc
save
Nov 21, 2025
87cf9cd
yang diff
Nov 21, 2025
52abf2c
adapt yang results
Nov 22, 2025
11b5220
ui update
Nov 22, 2025
ea6257c
update ui desgn
Nov 22, 2025
0b4c857
update
Nov 22, 2025
1926e78
mobile ui adapt
Nov 23, 2025
9542751
group spec and status
Nov 23, 2025
ea9bf66
save
Nov 23, 2025
bf72430
save
Nov 23, 2025
28f0569
save
Nov 23, 2025
4affe9f
save
Nov 24, 2025
8773ec5
save
Nov 24, 2025
55a3543
save
Nov 24, 2025
7102464
save
Nov 24, 2025
fa310de
save
Nov 24, 2025
7b60e15
update ui for mobile
Nov 24, 2025
331d8f9
fix model loading
Nov 24, 2025
12fe444
save
Nov 24, 2025
e9e515d
save
Nov 24, 2025
b51ff60
small update
Nov 24, 2025
664d42e
perf update
Nov 24, 2025
f42d3f6
update cls
Nov 24, 2025
7228019
correct compare issue
Nov 24, 2025
933bd7d
improve diff CRD TREE
Nov 24, 2025
bad35b7
improve perf
Nov 24, 2025
6690552
mobile view improve
Nov 24, 2025
062bcaa
add deps
Nov 24, 2025
ee883da
Deprecation release
Nov 24, 2025
3334a78
bg fix
Nov 24, 2025
82d1428
save
Nov 25, 2025
0ea566f
save
Nov 25, 2025
50c150f
improve search
Nov 25, 2025
1a13a12
double scrollbar issue
Nov 25, 2025
5e2ca1d
realtime crd search update
Dec 2, 2025
da54183
save work
Dec 2, 2025
424b6b6
save work
Dec 2, 2025
c8d2443
search crd improve
Dec 3, 2025
f2ba439
save
Dec 3, 2025
b35e0ae
save work
Dec 4, 2025
f2ea72a
save work
Dec 4, 2025
0ab87c4
new responsive UI
Dec 4, 2025
c8455c6
clean UI dark light mode
Dec 4, 2025
58ece12
light mode small improvement
Dec 4, 2025
7fa3781
remove generate new report button
Dec 4, 2025
e1759d7
update release 25.12.1
Dec 13, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
58 changes: 57 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -23,4 +23,60 @@ Thumbs.db
vite.config.js.timestamp-*
vite.config.ts.timestamp-*

.envrc
.envrc
logs/
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*

# Diagnostic reports
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json

# Runtime data
pids
*.pid
*.seed
*.pid.lock

# Coverage reports
coverage/
*.lcov

# Build output
dist/
out/
tmp/
temp/

# Dependency directories
bower_components/
jspm_packages/

# Compiled source
*.class
*.dll
*.exe
*.o
*.so
*.pyc
*.pyo
*.pyd
__pycache__/

# Package files
*.tgz
*.zip

# IDE and editor folders
.vscode/
.idea/
*.swp
*.swo

# Environment files
.env.local
docs/DEVELOPER.md
static/merge-crds.py
Empty file added CHANGELOG.md
Empty file.
101 changes: 98 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,100 @@
# EDA Resource Browser
# EDA Resource Browser - Visual Architecture

## Generating
## System Overview

Requires `yq` and `kubectl`.
Resource Browser is a compact SvelteKit application that reads CRD manifests stored in the repo (under `static/resources/<release>/...`) and exposes:

- A release-aware resource browser and search index
- Per-resource pages showing YAML and OpenAPI-style schema details
- Lightweight version comparison and diff views

The app is built with SvelteKit + Vite and can be deployed as a static site (for example, Cloudflare Pages).

<!-- prettier-ignore -->
# 🚀 EDA Resource Browser

A compact, fast web UI for exploring Nokia EDA Custom Resource Definitions (CRDs) and release manifests.

Clean, focused features:

- 🔎 Search and browse CRDs by release
- 📄 View YAML and OpenAPI-style schemas for each resource
- 🔁 Compare versions across releases and inspect diffs

Quick start

1. Install dependencies:

```bash
pnpm install
```

2. Run the development server (hot-reload):

```bash
pnpm run dev
```

3. Build for production:

```bash
pnpm run prepare
pnpm run build
```

Preview the production build locally:

```bash
pnpm run preview
```

Notes and tips

- Demo data: sample CRD manifests are placed under `static/resources/<release>/...` — the app reads these for the release browser.
- CI tip: if `pnpm install` in CI errors with a frozen-lockfile mismatch, regenerate the lockfile locally with:

```bash
pnpm install --no-frozen-lockfile
git add pnpm-lock.yaml
git commit -m "chore: update pnpm-lock.yaml"
```

Developer notes

- Built with SvelteKit + Vite and styled with TailwindCSS. Routes expose a home listing and per-resource detail pages.
- Keep changes small and UI-focused. If you add a new release, drop its manifest under `static/resources/<release>/manifest.json`.

Contributing

- Open issues and PRs welcome. Please include a short description and screenshots where helpful.

### Performance notes

We changed the hero/background handling to improve LCP:

- The primary hero is now an inline <img> (via a <picture> element) inserted early in the layout for accurate LCP measurement and preloading control. The CSS now uses gradients only; the image sits behind the page content.
- Fonts: we prefer WOFF2 for smaller payloads and preloaded critical hero fonts. If you need to generate WOFF2 assets from the existing TTF fonts in `/static/fonts`, run:

````bash
pnpm install -D ttf2woff2
pnpm run generate:woff2

Note: `ttf2woff2` reads from stdin and writes a compressed WOFF2 to stdout. The `generate:woff2` script wraps this in a loop and pipes each TTF into the converter. If you prefer a one-off command, you can run:

```bash
npx ttf2woff2 < static/fonts/NokiaPureText_Rg.ttf > static/fonts/NokiaPureText_Rg.woff2
````

Or to convert all TTFs at once using a shell loop (same as the script):

```bash
for f in static/fonts/*.ttf; do npx ttf2woff2 < "$f" > "${f%.ttf}.woff2"; done
```

```

That converts TTF files in `static/fonts` to WOFF2. After that, update the `app.html` preloads if you change filenames.



```
6 changes: 6 additions & 0 deletions e2e/demo.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,9 @@ test('home page has expected h1', async ({ page }) => {
await page.goto('/');
await expect(page.locator('h1')).toBeVisible();
});

test('LCP background image should be preloaded and have high priority', async ({ page }) => {
await page.goto('/');
const img = page.locator('#main-scroll picture img[fetchpriority="high"]');
await expect(img).toHaveCount(1);
});
22 changes: 22 additions & 0 deletions ecosystem.config.cjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
module.exports = {
apps: [
{
name: 'resource-browser',
// use pnpm if pnpm is installed; fallback to npm would be explicit
script: 'pnpm',
args: 'run dev -- --host 0.0.0.0',
// Do not specify an interpreter; allow PM2 to execute `pnpm` directly
// interpreter: 'bash',
env: {
NODE_ENV: 'development'
},
watch: false,
autorestart: true,
restart_delay: 5000,
max_restarts: 10,
error_file: './logs/pm2-error.log',
out_file: './logs/pm2-out.log',
log_date_format: 'YYYY-MM-DD HH:mm Z'
}
]
};
23 changes: 23 additions & 0 deletions ecosystem.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
module.exports = {
apps: [
{
name: 'resource-browser',
script: 'pnpm',
args: 'run dev -- --host 0.0.0.0',
// Ensure this matches where the repo is checked out on the host
cwd: '/home/noksysadm/work/resource-browser',
// Leave interpreter unset so PM2 executes the 'pnpm' binary directly
// interpreter: 'bash',
env: {
NODE_ENV: 'development'
},
watch: false,
autorestart: true,
restart_delay: 5000,
max_restarts: 10,
error_file: '/home/noksysadm/work/resource-browser/logs/pm2-error.log',
out_file: '/home/noksysadm/work/resource-browser/logs/pm2-out.log',
log_date_format: 'YYYY-MM-DD HH:mm Z'
}
]
};
4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 4 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "resource-browser",
"private": true,
"version": "0.0.1",
"version": "1.0.0",
"type": "module",
"scripts": {
"dev": "vite dev --host 0.0.0.0",
Expand All @@ -16,6 +16,9 @@
"test": "npm run test:unit -- --run && npm run test:e2e",
"test:e2e": "playwright test"
},
"dependencies": {
"ajv": "^8.17.1"
},
"devDependencies": {
"@eslint/compat": "^1.2.5",
"@eslint/js": "^9.18.0",
Expand Down
Loading