Structure
Structure¶
This document describes the structure of the BitNode Console project.
Directory Structure¶
.
├── Cargo.toml # Workspace root
├── Makefile.toml # cargo-make task definitions
├── rustfmt.toml # Rust formatter configuration
├── shell.nix # Nix development environment
├── bitnode_console.conf # Local development config
├── book.toml # mdBook configuration
├── mkdocs.yaml # MkDocs configuration
│
├── backend/
│ ├── app/ # Application binary crate
│ │ ├── Cargo.toml
│ │ ├── src/
│ │ │ ├── main.rs # Entry point
│ │ │ ├── lib.rs
│ │ │ └── error.rs
│ │ └── tests/
│ │ ├── rpc/ # RPC integration tests
│ │ └── web/ # Web integration tests
│ │
│ └── libs/
│ ├── lib_auth/ # Authentication library
│ │ ├── Cargo.toml
│ │ └── src/
│ │ ├── lib.rs
│ │ ├── error.rs
│ │ └── domains.rs # PasswordHash domain type
│ │
│ ├── lib_rpc/ # gRPC server library
│ │ ├── Cargo.toml
│ │ ├── build.rs # Protobuf code generation
│ │ ├── protos/
│ │ │ └── bitnode_console/v1/
│ │ │ └── utilities.proto
│ │ └── src/
│ │ ├── lib.rs
│ │ ├── error.rs
│ │ ├── server.rs
│ │ ├── generated_protos/ # Generated protobuf code
│ │ └── services/
│ │ └── utilities.rs
│ │
│ ├── lib_settings/ # Configuration parsing library
│ │ ├── Cargo.toml
│ │ └── src/
│ │ ├── lib.rs
│ │ ├── error.rs
│ │ ├── settings.rs # Multi-source config parsing
│ │ ├── application.rs # Application settings
│ │ ├── rpc.rs # RPC settings
│ │ ├── tracing.rs # Tracing settings
│ │ └── web.rs # Web server settings
│ │
│ ├── lib_tracing/ # Tracing/logging library
│ │ ├── Cargo.toml
│ │ └── src/
│ │ ├── lib.rs
│ │ ├── error.rs
│ │ ├── domain.rs
│ │ └── init.rs
│ │
│ └── lib_web/ # HTTP server library
│ ├── Cargo.toml
│ ├── build.rs # Frontend embedding
│ └── src/
│ ├── lib.rs
│ ├── error.rs
│ └── server.rs
│
├── frontend/ # React + TypeScript SPA
│ ├── package.json
│ ├── vite.config.ts # Vite bundler configuration
│ ├── tailwind.config.ts # Tailwind CSS configuration
│ ├── components.json # shadcn/ui configuration
│ ├── tsconfig.json
│ ├── tsconfig.app.json
│ ├── tsconfig.node.json
│ ├── eslint.config.js
│ ├── index.html
│ └── src/
│ ├── main.tsx # Application entry point
│ ├── index.css # Global styles
│ ├── routeTree.gen.ts # Generated route tree
│ ├── assets/ # Static assets
│ ├── components/
│ │ ├── layouts/ # Layout components
│ │ │ ├── AuthLayout.tsx
│ │ │ ├── PublicLayout.tsx
│ │ │ └── RestrictedLayout.tsx
│ │ ├── ui/ # shadcn/ui components
│ │ ├── ErrorBoundary.tsx
│ │ ├── TanStackDevTools.tsx
│ │ ├── logged-out-card.tsx
│ │ └── login-form.tsx
│ ├── hooks/
│ │ └── use-theme.ts
│ ├── lib/
│ │ ├── logger.ts
│ │ └── utils.ts
│ └── routes/
│ ├── __root.tsx # Root route layout
│ ├── index.tsx # Index redirect
│ ├── _public/
│ │ └── auth/ # Public auth pages
│ │ ├── route.tsx
│ │ ├── login.tsx
│ │ ├── logged-out.tsx
│ │ ├── verifying.tsx
│ │ └── $.tsx # Auth catch-all redirect
│ └── _restricted/ # Authenticated pages
│ ├── route.tsx
│ ├── dashboard.tsx
│ ├── logs.tsx
│ ├── network.tsx
│ ├── node.tsx
│ ├── settings.tsx
│ └── $.tsx # Restricted catch-all redirect
│
└── docs/ # Project documentation
├── SUMMARY.md
├── index.md
├── product-requirements.md
├── configuration.md
├── routing.md
├── structure.md
├── css/
└── images/