Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
159 changes: 159 additions & 0 deletions .npmignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,159 @@
# Dependencies
node_modules/
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*

# Build outputs
dist/
build/
packages/frontend-core/control/
*.tsbuildinfo

# Auto-generated sources (created during packages/frontend-core prebuild)
packages/frontend-core/src/webusb/webUsbDevices.autogen.ts

# Environment variables
.env
.env.local
.env.development
.env.development.local
.env.test.local
.env.production.local

# IDE and Editor files
.vscode/
.idea/
*.swp
*.swo
*~

# OS generated files
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
ehthumbs.db
Thumbs.db

# Logs
logs/
*.log

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

# Coverage directory used by tools like istanbul
coverage/
*.lcov
.nyc_output/

# Dependency directories
jspm_packages/

# Optional npm cache directory
.npm

# Optional eslint cache
.eslintcache

# Optional stylelint cache
.stylelintcache

# Microbundle cache
.rpt2_cache/
.rts2_cache_cjs/
.rts2_cache_es/
.rts2_cache_umd/

# Optional REPL history
.node_repl_history

# Output of 'npm pack'
*.tgz

# Yarn Integrity file
.yarn-integrity

# dotenv environment variables file
.env.test

# parcel-bundler cache (https://parceljs.org/)
.cache
.parcel-cache

# Next.js build output
.next

# Nuxt.js build / generate output
.nuxt

# Gatsby files
.cache/
public

# Storybook build outputs
.out
.storybook-out

# Temporary folders
tmp/
temp/

# Old files
/old

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

# Editor directories and files
.vscode/*
!.vscode/extensions.json
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json

# Local Netlify folder
.netlify

# Vite build tool cache
.vite

# Vitest coverage
coverage/

# TypeScript cache
*.tsbuildinfo

# Optional stylelint cache
.stylelintcache

# SvelteKit build / generate output
.svelte-kit

# Package manager lock files
# package-lock.json
# yarn.lock
# pnpm-lock.yaml

# Turborepo cache
.turbo/

# GitHub Actions
.github/

# Test artifacts and reports
test-results/
junit.xml

# Diagnostic reports (https://nodejs.org/api/report.html)
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
2 changes: 1 addition & 1 deletion LICENSE
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
MIT License

Copyright (c) 2025 Wavelet Lab
Copyright (c) 2025-2026 Wavelet Lab

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
Expand Down
29 changes: 27 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,18 +13,23 @@ Currently supported SDR devices:
3. [LimeSDR Mini v2](https://limesdr-mini.myriadrf.org/v2.2/) — tested with v2.2; should also work with v2.3 and v2.4.
4. [SSDR](https://www.crowdsupply.com/wavelet-lab/ssdr)
5. [XTRX](https://www.crowdsupply.com/fairwaves/xtrx)
6. RTLSDR - support is in progess
6. RTLSDR - support is in progress

## What is WebSDR?

WebSDR contains utilities, UI components, backend modules, and small test apps to make it easier to build browser-based SDR applications and tooling. The primary goal is to enable interaction with SDR devices connected over USB from web applications (via WebUSB), and to provide supporting building blocks for dashboards, demos, and server-side microservices.

Core capabilities include:
- [WebUSB device management](/docs/webusb/README.md) (requesting devices, selecting devices in UI components).
- [WebUSB device management](docs/webusb/README.md) (requesting devices, selecting devices in UI components).
- A small Vue 3 component library for dashboards and controls (dropdowns, lists, inputs, log viewers).
- NestJS modules for microservices (authentication, API scaffolding) useful for backend parts of an SDR web platform.
- Utility modules: circular buffers, data conversion helpers, string utilities, time helpers and promise helpers used across frontend and backend.

## Documentation

- Docs index: [docs/README.md](docs/README.md)
- WebUSB / SDR interaction subsystem: [docs/webusb/README.md](docs/webusb/README.md)

## Repository layout

Top-level structure (important folders):
Expand All @@ -35,6 +40,7 @@ packages/
├─ frontend-core/ # Front-end utilities and WebUSB adapters
├─ vue3-components/ # Reusable Vue 3 UI components and styles
├─ nestjs-microservice/ # NestJS modules (auth, API helpers, microservice wiring)
docs/ # Architecture and subsystem documentation
test-apps/ # Small example/test applications and scripts
```

Expand All @@ -45,6 +51,23 @@ Brief package descriptions:
- `packages/nestjs-microservice` — NestJS integration and helper modules; main entry is `WebSDRModule` (configurable via environment variables such as `WEBSDR_*`).
- `test-apps` — Small scripts and demo pages used to test low-level functionality (e.g., `usb-test.ts`).

## Published npm packages

This monorepo publishes several packages under the `@websdr/*` scope. If you only want to consume the libraries (not develop inside the monorepo), install them from npm.

- `@websdr/core` — shared types/constants and small utilities.
- Docs: [packages/core/README.md](packages/core/README.md)
- Install: `npm install @websdr/core`
- `@websdr/frontend-core` — frontend utilities (API helpers, WebUSB abstraction).
- Docs: [packages/frontend-core/README.md](packages/frontend-core/README.md)
- Install: `npm install @websdr/frontend-core`
- `@websdr/vue3-components` — Vue 3 UI components + styles.
- Docs: [packages/vue3-components/README.md](packages/vue3-components/README.md)
- Install: `npm install @websdr/vue3-components`
- `@websdr/nestjs-microservice` — reusable NestJS modules (auth/users/logging).
- Docs: [packages/nestjs-microservice/README.md](packages/nestjs-microservice/README.md)
- Install: `npm install @websdr/nestjs-microservice`

## Quick setup

Install dependencies for the workspace:
Expand All @@ -53,6 +76,8 @@ Install dependencies for the workspace:
npm install
```

If you only want to use the libraries as dependencies, see **Published npm packages** above.

Build the packages:

```bash
Expand Down
3 changes: 2 additions & 1 deletion clear_project.sh
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
#!/bin/bash
#!/usr/bin/env bash

# Remove node_modules directories
find . -type d -name "node_modules" -prune -exec rm -rf '{}' +

# Remove common distributive/build directories
find . -type d -name "dist" -prune -exec rm -rf '{}' +
find . -type d -name "coverage" -prune -exec rm -rf '{}' +
find . -type d -name "docs.build" -prune -exec rm -rf '{}' +

# Remove lock files
find . -type f -name "package-lock.json" -prune -exec rm -f '{}' +
Expand Down
21 changes: 21 additions & 0 deletions generate_rst_docs.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
#!/usr/bin/env bash

DIST_DIR="docs.build"

# Create the distribution directory if it doesn't exist
mkdir -p "$DIST_DIR"

# Generate .rst files from README.md files
pandoc -s -f gfm -t rst --wrap=preserve -o $DIST_DIR/websdr.rst README.md
pandoc -s -f gfm -t rst --wrap=preserve -o $DIST_DIR/core.rst packages/core/README.md
pandoc -s -f gfm -t rst --wrap=preserve -o $DIST_DIR/frontend-core.rst packages/frontend-core/README.md
pandoc -s -f gfm -t rst --wrap=preserve -o $DIST_DIR/nestjs-microservice.rst packages/nestjs-microservice/README.md
pandoc -s -f gfm -t rst --wrap=preserve -o $DIST_DIR/vue3-components.rst packages/vue3-components/README.md

# Update links in the generated .rst files
sed -E -i \
-e 's|`packages/([^/]+)/README.md.*`__|:doc:`/webdev/websdr/\1`|g' \
-e 's|<docs/|<https://github.com/wavelet-lab/websdr/tree/main/docs/|g' \
"$DIST_DIR"/*.rst

echo "Docs generated."
9 changes: 7 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,11 @@
"description": "WebSDR package",
"author": "Timur Davydov <dtv.comp@gmail.com>",
"license": "MIT",
"homepage": "https://docs.wsdr.io/webdev/websdr/websdr.html",
"repository": {
"type": "git",
"url": "https://github.com/wavelet-lab/websdr"
},
"keywords": [
"radio",
"websdr",
Expand All @@ -15,7 +20,7 @@
"xsdr",
"ssdr"
],
"publishConfig": { "access": "public" },
"private": true,
"type": "module",
"workspaces": [
"./packages/core",
Expand All @@ -42,4 +47,4 @@
"vite": "^7.3.1",
"vitest": "^4.0.18"
}
}
}
Loading