A modern, full-featured blockchain explorer for the DecentralChain (DCC) network.
Real-time block feeds Β· Transaction tracing Β· Address analytics Β· Asset tracking Β· DEX pair monitoring Β· Network topology maps Β· Node status
Quick Start Β· Features Β· Architecture Β· Deployment Β· Contributing
DecentralScan is a production-ready, open-source blockchain explorer frontend designed for the DecentralChain (DCC) network. Built with React 19, Vite 8, and Tailwind CSS 4, it provides an intuitive interface for exploring blocks, transactions, addresses, digital assets, and network health in real time.
Whether you're a node operator monitoring uptime, a developer debugging transactions, or a community member tracking token activity β DecentralScan gives you full transparency into chain state with blazing-fast performance and a beautiful, responsive UI.
- Zero backend required β Connects directly to DCC node REST APIs for live blockchain data
- Instant search β Look up any block, transaction, or address from the global search bar
- Internationalized β Built-in English & Spanish with easily extensible translations
- Dark/Light theme β System-aware theming that respects user preferences
- Fully tested β Unit tests (Vitest) + E2E tests (Playwright) + CI pipeline
| Feature | Description |
|---|---|
| Block Feed | Live-streaming block list with height, timestamp, transaction count, and generator |
| Block Detail | Full block inspection β header fields, all transactions, reward breakdown |
| Transaction View | Detailed tx pages with inputs, outputs, proofs, smart contract invocations |
| Transaction Map | Visual flow of value transfers within a transaction |
| Address Page | Balance, asset portfolio, transaction history, and aliases for any address |
| Asset Page | Token metadata, supply info, issuer details, recent transfers |
| Unconfirmed Pool | Real-time view of the mempool with pending transactions |
| Feature | Description |
|---|---|
| Network Dashboard | At-a-glance stats β block height, total transactions, active nodes, TPS |
| Network Statistics | Historical charts for transactions, blocks, fees, and network activity |
| DEX Pairs | Decentralized exchange pair listings with price, volume, and liquidity data |
| Sustainability View | Energy and sustainability metrics for the DCC proof-of-stake network |
| Feature | Description |
|---|---|
| Network Map | Interactive geographic map of all known network nodes (Leaflet) |
| Peers List | Connected peer table with version, height, and latency |
| Node Status | Live node version, height, generator status from the chain |
| Feature | Description |
|---|---|
| Vite 8 + HMR | Sub-second hot module replacement for rapid development |
| Path Aliases | Clean @/ imports mapped to src/ |
| Code Splitting | Automatic vendor chunking for optimal bundle sizes |
| Vitest | Fast unit testing with React Testing Library |
| Playwright | End-to-end browser tests with CI integration |
| Biome | Consistent formatting + lint enforcement |
| CI/CD | GitHub Actions pipeline β lint, typecheck, test, build on every push |
| Docker | Production-ready multi-stage Docker build with Nginx |
explorer/
βββ .github/
β βββ workflows/ci.yml # GitHub Actions CI pipeline
βββ e2e/ # Playwright E2E tests
βββ src/
β βββ api/
β β βββ entities.ts # Entity CRUD factory (localStorage)
β βββ components/
β β βββ contexts/ # React contexts (Language, etc.)
β β βββ dashboard/ # Dashboard widget components
β β βββ shared/ # Shared components (SearchBar, CopyButton)
β β βββ ui/ # 18 Radix UI primitives (shadcn/ui)
β β βββ ErrorBoundary.tsx # Global error boundary with recovery
β β βββ ThemeProvider.tsx # Dark/light theme provider
β βββ hooks/ # Custom React hooks
β βββ lib/
β β βββ query-client.ts # React Query configuration
β β βββ utils.ts # Utility functions (cn, etc.)
β βββ pages/ # 17 page components (see Features)
β βββ App.tsx # Root component with routing
β βββ Layout.tsx # Shell layout (nav, header, footer)
β βββ main.tsx # Entry point
βββ Dockerfile # Multi-stage production build
βββ docker-compose.yml # One-command deployment
βββ nginx.conf # Production Nginx configuration
βββ vite.config.js # Vite build configuration
βββ tailwind.config.js # Tailwind CSS theming
βββ playwright.config.js # E2E test configuration
| Layer | Technology |
|---|---|
| Framework | React 19 with Hooks |
| Build Tool | Vite 8 |
| Routing | React Router 7 |
| State Management | React Query 5 (TanStack Query) |
| UI Components | Radix UI + shadcn/ui |
| Styling | Tailwind CSS 4.2 |
| Charts | Recharts 3 |
| Maps | Leaflet + React-Leaflet |
| Icons | Lucide React |
| Theming | next-themes (dark/light/system) |
| Error Tracking | Sentry |
| Testing | Vitest + React Testing Library + Playwright |
| CI/CD | GitHub Actions |
| Deployment | Docker + Nginx |
- Node.js β₯ 20
- npm β₯ 10
# Clone the repository
git clone https://github.com/dylanpersonguy/explorer.git
cd explorer
# Install dependencies
npm install
# Start development server
npm run devThe app will be running at http://localhost:5173.
Copy the example environment file and configure as needed:
| Variable | Description | Required |
|---|---|---|
VITE_SENTRY_DSN |
Sentry DSN for error tracking | No |
| Command | Description |
|---|---|
npm run dev |
Start Vite dev server with HMR |
npm run build |
Production build to dist/ |
npm run preview |
Preview production build locally |
npm run lint |
Run Biome checks (no auto-fix) |
npm run lint:fix |
Run Biome checks with auto-fix |
npm run lint:check |
Alias for strict Biome checks |
npm run typecheck |
Run TypeScript type checking |
npm test |
Run unit tests in watch mode |
npm run test:run |
Run unit tests once |
npm run test:coverage |
Run tests with coverage report |
npm run test:e2e |
Run Playwright E2E tests |
npm run ci:check |
Run lint + typecheck + tests + build + high-severity audit |
This repo enforces a strict Biome baseline in CI. Warnings are treated as failures for core quality rules (including unused code patterns and unstable React keys), so npm run lint and npm run ci:check must stay clean before merge.
# Build and start with Docker Compose
docker compose up -d
# The app is now available at http://localhost:3000# Build for production
npm run build
# Serve the dist/ directory with any static file server
npx serve distAn optimized nginx.conf is included for production deployments with:
- Gzip compression
- Static asset caching
- SPA history fallback
- Security headers
# Unit tests (watch mode)
npm test
# Unit tests (single run)
npm run test:run
# Unit tests with coverage
npm run test:coverage
# E2E tests (requires dev server running)
npm run test:e2e| Area | Tests |
|---|---|
| ErrorBoundary | Error display, recovery, fallback UI |
| LanguageContext | i18n switching, translation keys, persistence |
| Error Logger | Error formatting, Sentry integration, rate limiting |
| Utilities | Class name merging, helper functions |
| E2E | Full user flows β navigation, search |
DecentralScan ships with English and Spanish translations. Adding a new language is straightforward:
- Add your translations to
src/components/contexts/LanguageContext.jsx - Add the language option to the language switcher in
Layout.jsx
The language selection persists across sessions via localStorage.
The app supports light, dark, and system themes powered by next-themes and Tailwind CSS:
- Theme toggle is available in the top navigation bar
- Colors are defined as HSL CSS variables in
tailwind.config.js - All 18 Radix UI components automatically adapt to the active theme
Contributions are welcome! Please read our Contributing Guide and Code of Conduct before submitting a pull request.
- Fork the repository
- Create your feature branch (
git checkout -b feat/amazing-feature) - Commit your changes (
git commit -m 'feat: add amazing feature') - Push to the branch (
git push origin feat/amazing-feature) - Open a Pull Request
If you discover a security vulnerability, please review our Security Policy for responsible disclosure guidelines.
This project is licensed under the MIT License β see the LICENSE file for details.
- Radix UI β Accessible, unstyled UI primitives
- shadcn/ui β Beautiful component patterns
- Tailwind CSS β Utility-first CSS framework
- Vite β Next-generation frontend tooling
- React Query β Powerful async state management
- Recharts β Composable React charting library
- Leaflet β Interactive map library
Built with β€οΈ for the DecentralChain community