Skip to content

feat: Add 9 BlackRoad portals - complete ecosystem#25

Open
blackboxprogramming wants to merge 2 commits intomainfrom
feat/portal-ecosystem
Open

feat: Add 9 BlackRoad portals - complete ecosystem#25
blackboxprogramming wants to merge 2 commits intomainfrom
feat/portal-ecosystem

Conversation

@blackboxprogramming
Copy link
Owner

Summary

  • Roadview: Live journey streaming with MapLibre + WebSocket
  • Lucidia: Knowledge base with MDX guides
  • Roadcode: Browser-based code sandbox
  • Radius: Local meetup discovery with geospatial
  • Roadworld: Social feed aggregating all portal activity
  • Roadcoin: Token wallet with balance/staking
  • Roadchain: Blockchain explorer for travel proofs
  • Roadie: AI travel assistant with voice UI
  • Universal Computer: Master console unifying all portals

Infrastructure

  • Channel protocol at ~/.blackroad/channel/
  • Portal-specific communication channels
  • Unified workspace with pnpm

Test plan

  • Run pnpm install at root
  • Test each portal: pnpm --filter @blackroad/<name> dev
  • Verify Universal Computer links to all portals

🤖 Generated with Claude Code

New portals:
- Roadview: Live journey streaming with MapLibre + WebSocket
- Lucidia: Knowledge base with MDX guides
- Roadcode: Browser-based code sandbox
- Radius: Local meetup discovery with geospatial
- Roadworld: Social feed aggregating all portal activity
- Roadcoin: Token wallet with balance/staking
- Roadchain: Blockchain explorer for travel proofs
- Roadie: AI travel assistant with voice UI
- Universal Computer: Master console unifying all portals

Infrastructure:
- Channel protocol at ~/.blackroad/channel/
- Portal-specific communication channels
- Unified workspace with pnpm

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings February 18, 2026 04:50
Copy link

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

https://github.com/blackboxprogramming/blackroad/blob/b2611b4f9200b48ceca797bbb99105cb69984786/apps/radius/app/layout.tsx#L1
P1 Badge Export a root layout for each new App Router app

app/layout.tsx is empty here, so this Next.js app has no default root layout export; next dev/next build will fail before serving pages. The same empty-file pattern appears in apps/roadchain/app/layout.tsx, apps/roadcode/app/layout.tsx, apps/roadcoin/app/layout.tsx, apps/roadie/app/layout.tsx, apps/roadworld/app/layout.tsx, and apps/universal/app/layout.tsx, which means most newly added portals cannot start.

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +4 to +5
{ name: 'Roadbook', desc: 'Trip journals', port: 3001, color: '#FF1D6C', icon: '📔' },
{ name: 'Roadview', desc: 'Live maps', port: 3001, color: '#FF1D6C', icon: '🗺️' },

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Point Roadbook tile to its own port

Both Roadbook and Roadview are configured with port: 3001, so the Universal dashboard routes two different tiles to the same target URL and users cannot reach a distinct Roadbook endpoint from this console. This is especially visible because the repository already has a separate apps/roadbook app, but clicking the Roadbook tile will navigate to the Roadview address.

Useful? React with 👍 / 👎.

Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR introduces a complete ecosystem of 9 new portal applications to the BlackRoad monorepo, creating a unified development environment. The Universal Computer serves as a master console providing centralized access to all portals via localhost URLs. Each portal is built as a Next.js 14 application using the App Router architecture, with Tailwind CSS for styling and workspace-based dependency management via pnpm.

Changes:

  • Added Universal Computer portal - master console aggregating all 9 portals
  • Added 8 new specialized portals: Roadview (live maps), Lucidia (knowledge base), Roadcode (code sandbox), Radius (local meetups), Roadworld (social feed), Roadcoin (wallet), Roadchain (blockchain explorer), and Roadie (AI assistant)
  • Reorganized workspace configuration to include new portal directories

Reviewed changes

Copilot reviewed 47 out of 54 changed files in this pull request and generated 24 comments.

Show a summary per file
File Description
pnpm-workspace.yaml Reordered workspace packages (apps before packages)
apps/universal/* Master console portal listing all 9 portals on their respective ports
apps/roadview/* Live journey streaming with MapLibre GL maps and simulated real-time updates
apps/lucidia/* Knowledge base portal with MDX guide library and search functionality
apps/roadcode/* Browser-based code sandbox with JavaScript execution
apps/radius/* Local meetup discovery portal with geospatial event listings
apps/roadworld/* Social feed aggregating activity across all portals
apps/roadcoin/* Cryptocurrency wallet with balance display and transaction history
apps/roadchain/* Blockchain explorer showing blocks, transactions, and network stats
apps/roadie/* AI travel assistant with chat interface and voice input button

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

"private": true,
"scripts": { "dev": "next dev -p 3006", "build": "next build", "start": "next start" },
"dependencies": { "next": "^14.0.0", "react": "^18.2.0", "react-dom": "^18.2.0", "@blackroad/ui": "workspace:*" },
"devDependencies": { "@types/react": "^18.2.0", "@types/node": "^20.4.2", "typescript": "^5.1.6" }
Copy link

Copilot AI Feb 18, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The application uses Tailwind CSS classes throughout and imports Tailwind directives in globals.css, but the package.json is missing the tailwindcss dependency. Additionally, there is no tailwind.config.js file to configure Tailwind. Both are required for Tailwind to function. Add "tailwindcss", "autoprefixer", and "postcss" to devDependencies, and create a tailwind.config.js file.

Suggested change
"devDependencies": { "@types/react": "^18.2.0", "@types/node": "^20.4.2", "typescript": "^5.1.6" }
"devDependencies": { "@types/react": "^18.2.0", "@types/node": "^20.4.2", "typescript": "^5.1.6", "tailwindcss": "^3.4.0", "postcss": "^8.4.0", "autoprefixer": "^10.4.0" }

Copilot uses AI. Check for mistakes.
"devDependencies": {
"@types/react": "^18.2.0",
"@types/node": "^20.4.2",
"typescript": "^5.1.6"
Copy link

Copilot AI Feb 18, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The application uses Tailwind CSS classes throughout and imports Tailwind directives in globals.css, but the package.json is missing the tailwindcss dependency. Additionally, there is no tailwind.config.js or tsconfig.json or next.config.js file. These configuration files are necessary for the Next.js application to build and run properly. Add "tailwindcss", "autoprefixer", and "postcss" to devDependencies, and create the missing configuration files. Reference the Roadview portal for examples.

Suggested change
"typescript": "^5.1.6"
"typescript": "^5.1.6",
"tailwindcss": "^3.4.0",
"autoprefixer": "^10.4.0",
"postcss": "^8.4.0"

Copilot uses AI. Check for mistakes.
@@ -0,0 +1 @@
{"compilerOptions":{"target":"es5","lib":["dom","esnext"],"jsx":"preserve","module":"esnext","moduleResolution":"bundler","strict":true,"noEmit":true,"esModuleInterop":true},"include":["**/*.ts","**/*.tsx"],"exclude":["node_modules"]}
Copy link

Copilot AI Feb 18, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The tsconfig.json is minified into a single line, making it difficult to read and maintain. Consider formatting it with proper indentation across multiple lines for better readability and version control diffs.

Copilot uses AI. Check for mistakes.
@@ -0,0 +1 @@
{"compilerOptions":{"target":"es5","lib":["dom","esnext"],"jsx":"preserve","module":"esnext","moduleResolution":"bundler","strict":true,"noEmit":true,"esModuleInterop":true},"include":["**/*.ts","**/*.tsx"],"exclude":["node_modules"]}
Copy link

Copilot AI Feb 18, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The tsconfig.json is minified into a single line, making it difficult to read and maintain. Consider formatting it with proper indentation across multiple lines for better readability and version control diffs.

Suggested change
{"compilerOptions":{"target":"es5","lib":["dom","esnext"],"jsx":"preserve","module":"esnext","moduleResolution":"bundler","strict":true,"noEmit":true,"esModuleInterop":true},"include":["**/*.ts","**/*.tsx"],"exclude":["node_modules"]}
{
"compilerOptions": {
"target": "es5",
"lib": [
"dom",
"esnext"
],
"jsx": "preserve",
"module": "esnext",
"moduleResolution": "bundler",
"strict": true,
"noEmit": true,
"esModuleInterop": true
},
"include": [
"**/*.ts",
"**/*.tsx"
],
"exclude": [
"node_modules"
]
}

Copilot uses AI. Check for mistakes.
Comment on lines +30 to +33
<input
placeholder="Search across all portals..."
className="w-full bg-gray-900 border border-gray-700 rounded-xl px-6 py-4 text-lg focus:border-pink-500 outline-none"
/>
Copy link

Copilot AI Feb 18, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The search input is missing accessibility attributes. Add a type="search" attribute and an aria-label or associate it with a visible label for screen reader users. For example: type="search" aria-label="Search across all portals".

Copilot uses AI. Check for mistakes.
Comment on lines +36 to +40
<input
value={input} onChange={e => setInput(e.target.value)} onKeyDown={e => e.key === 'Enter' && send()}
placeholder="Ask Roadie anything..."
className="flex-1 bg-gray-900 border border-gray-700 rounded-full px-4"
/>
Copy link

Copilot AI Feb 18, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The input element is missing a type attribute and accessibility label. Add type="text" and an aria-label for screen reader users. For example: type="text" aria-label="Ask Roadie a question".

Copilot uses AI. Check for mistakes.
Comment on lines 1 to 8
{
"name": "@blackroad/roadworld",
"version": "0.0.1",
"private": true,
"scripts": { "dev": "next dev -p 3005", "build": "next build", "start": "next start" },
"dependencies": { "next": "^14.0.0", "react": "^18.2.0", "react-dom": "^18.2.0", "@blackroad/ui": "workspace:*" },
"devDependencies": { "@types/react": "^18.2.0", "@types/node": "^20.4.2", "typescript": "^5.1.6" }
}
Copy link

Copilot AI Feb 18, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The application uses Tailwind CSS classes throughout and imports Tailwind directives in globals.css, but the package.json is missing the tailwindcss dependency. Additionally, there is no tailwind.config.js file to configure Tailwind. Both are required for Tailwind to function. Add "tailwindcss", "autoprefixer", and "postcss" to devDependencies, and create a tailwind.config.js file.

Copilot uses AI. Check for mistakes.
@@ -0,0 +1 @@
{"compilerOptions":{"target":"es5","lib":["dom","esnext"],"jsx":"preserve","module":"esnext","moduleResolution":"bundler","strict":true,"noEmit":true,"esModuleInterop":true},"include":["**/*.ts","**/*.tsx"],"exclude":["node_modules"]}
Copy link

Copilot AI Feb 18, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The tsconfig.json is minified into a single line, making it difficult to read and maintain. Consider formatting it with proper indentation across multiple lines for better readability and version control diffs. Reference the Roadview portal's tsconfig.json for a properly formatted example.

Copilot uses AI. Check for mistakes.
@@ -0,0 +1 @@
{"compilerOptions":{"target":"es5","lib":["dom","esnext"],"jsx":"preserve","module":"esnext","moduleResolution":"bundler","strict":true,"noEmit":true,"esModuleInterop":true},"include":["**/*.ts","**/*.tsx"],"exclude":["node_modules"]}
Copy link

Copilot AI Feb 18, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The tsconfig.json is minified into a single line, making it difficult to read and maintain. Consider formatting it with proper indentation across multiple lines for better readability and version control diffs.

Suggested change
{"compilerOptions":{"target":"es5","lib":["dom","esnext"],"jsx":"preserve","module":"esnext","moduleResolution":"bundler","strict":true,"noEmit":true,"esModuleInterop":true},"include":["**/*.ts","**/*.tsx"],"exclude":["node_modules"]}
{
"compilerOptions": {
"target": "es5",
"lib": [
"dom",
"esnext"
],
"jsx": "preserve",
"module": "esnext",
"moduleResolution": "bundler",
"strict": true,
"noEmit": true,
"esModuleInterop": true
},
"include": [
"**/*.ts",
"**/*.tsx"
],
"exclude": [
"node_modules"
]
}

Copilot uses AI. Check for mistakes.
@@ -0,0 +1 @@
{"compilerOptions":{"target":"es5","lib":["dom","esnext"],"jsx":"preserve","module":"esnext","moduleResolution":"bundler","strict":true,"noEmit":true,"esModuleInterop":true},"include":["**/*.ts","**/*.tsx"],"exclude":["node_modules"]}
Copy link

Copilot AI Feb 18, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The tsconfig.json is minified into a single line, making it difficult to read and maintain. Consider formatting it with proper indentation across multiple lines for better readability and version control diffs.

Suggested change
{"compilerOptions":{"target":"es5","lib":["dom","esnext"],"jsx":"preserve","module":"esnext","moduleResolution":"bundler","strict":true,"noEmit":true,"esModuleInterop":true},"include":["**/*.ts","**/*.tsx"],"exclude":["node_modules"]}
{
"compilerOptions": {
"target": "es5",
"lib": [
"dom",
"esnext"
],
"jsx": "preserve",
"module": "esnext",
"moduleResolution": "bundler",
"strict": true,
"noEmit": true,
"esModuleInterop": true
},
"include": [
"**/*.ts",
"**/*.tsx"
],
"exclude": [
"node_modules"
]
}

Copilot uses AI. Check for mistakes.
- Node.js realtime server for local dev (port 8080)
- Cloudflare Durable Objects worker for production
- Channel connector bridges ~/.blackroad/channel/ with WebSocket
- Live journey tracking with simulated movement
- Portal-specific message routing (roadview, lucidia, etc.)
- REST API for journey creation and status

Production: https://blackroad-realtime.amundsonalexa.workers.dev

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants