|
| 1 | +# ThingConnect Pulse - Frontend |
| 2 | + |
| 3 | +React-based web interface for the ThingConnect Pulse network monitoring system. |
| 4 | + |
| 5 | +## ✅ Current Status |
| 6 | + |
| 7 | +**Issue #17 - App Shell & Routing: COMPLETED** |
| 8 | +- Complete application routing with React Router v7 |
| 9 | +- Responsive layout with mobile-first design |
| 10 | +- ThingConnect branding and theming |
| 11 | +- Playwright testing support |
| 12 | +- Production build ready |
| 13 | + |
| 14 | +## Quick Start |
| 15 | + |
| 16 | +```bash |
| 17 | +# Install dependencies |
| 18 | +npm install |
| 19 | + |
| 20 | +# Development server |
| 21 | +npm run dev |
| 22 | +# Opens on https://localhost:55608 (or next available port) |
| 23 | + |
| 24 | +# Production build |
| 25 | +npm run build |
| 26 | + |
| 27 | +# Code quality |
| 28 | +npm run lint |
| 29 | +npm run format |
| 30 | +``` |
| 31 | + |
| 32 | +## Project Structure |
| 33 | + |
| 34 | +``` |
| 35 | +src/ |
| 36 | +├── components/ |
| 37 | +│ ├── layout/ # App shell components |
| 38 | +│ │ ├── AppShell.tsx # Main layout wrapper |
| 39 | +│ │ ├── Header.tsx # Top navigation header |
| 40 | +│ │ ├── Navigation.tsx # Sidebar navigation |
| 41 | +│ │ └── Footer.tsx # Footer component |
| 42 | +│ ├── ui/ # Chakra UI components |
| 43 | +│ ├── LazyWrapper.tsx # Suspense wrapper |
| 44 | +│ └── PageLoader.tsx # Loading spinner |
| 45 | +├── pages/ # Route components |
| 46 | +│ ├── Dashboard.tsx # Main status dashboard (/) |
| 47 | +│ ├── History.tsx # Historical data (/history) |
| 48 | +│ ├── Config.tsx # Configuration UI (/config) |
| 49 | +│ ├── Settings.tsx # App settings (/settings) |
| 50 | +│ ├── EndpointDetail.tsx # Endpoint details (/endpoints/:id) |
| 51 | +│ └── NotFound.tsx # 404 page |
| 52 | +├── router/ |
| 53 | +│ └── index.tsx # Route configuration |
| 54 | +├── api/ |
| 55 | +│ ├── client.ts # Axios HTTP client |
| 56 | +│ └── types.ts # API type definitions |
| 57 | +├── utils/ |
| 58 | +│ └── testIds.ts # Playwright test identifiers |
| 59 | +├── assets/ # Static assets (logos, images) |
| 60 | +├── providers/ # React context providers |
| 61 | +└── types/ # TypeScript type definitions |
| 62 | +``` |
| 63 | + |
| 64 | +## Key Features |
| 65 | + |
| 66 | +### ✅ Implemented |
| 67 | +- **Responsive Layout**: Mobile-first design with breakpoint-based navigation |
| 68 | +- **React Router v7**: Lazy-loaded routes with code splitting |
| 69 | +- **Chakra UI v3**: Modern component library with theming |
| 70 | +- **ThingConnect Branding**: Logo integration and consistent styling |
| 71 | +- **Dark/Light Mode**: Theme toggle in header |
| 72 | +- **Mobile Navigation**: Collapsible sidebar with overlay |
| 73 | +- **Test Ready**: Playwright test identifiers and accessibility labels |
| 74 | +- **TypeScript**: Full type safety with strict mode |
| 75 | +- **ESLint**: Code quality enforcement with auto-fixing |
| 76 | + |
| 77 | +### 🚧 Planned (Issue #18+) |
| 78 | +- Real-time dashboard with live endpoint status |
| 79 | +- Historical data visualization with charts |
| 80 | +- Configuration management UI |
| 81 | +- Settings management interface |
| 82 | +- CSV export functionality |
| 83 | + |
| 84 | +## Technology Stack |
| 85 | + |
| 86 | +- **Framework**: React 19 with TypeScript |
| 87 | +- **Routing**: React Router v7 |
| 88 | +- **UI Framework**: Chakra UI v3 |
| 89 | +- **Icons**: Lucide React v0.541.0 |
| 90 | +- **Build Tool**: Vite v7 |
| 91 | +- **HTTP Client**: Axios |
| 92 | +- **State Management**: TanStack Query (React Query) |
| 93 | +- **Testing**: Playwright (test identifiers ready) |
| 94 | +- **Code Quality**: ESLint, Prettier |
| 95 | + |
| 96 | +## Available Scripts |
| 97 | + |
| 98 | +- `npm run dev` - Start development server |
| 99 | +- `npm run build` - Production build |
| 100 | +- `npm run preview` - Preview production build |
| 101 | +- `npm run lint` - Run ESLint |
| 102 | +- `npm run lint -- --fix` - Auto-fix ESLint issues |
| 103 | +- `npm run format` - Format code with Prettier |
| 104 | + |
| 105 | +## Environment Configuration |
| 106 | + |
| 107 | +Create `.env` file in project root: |
| 108 | + |
| 109 | +```env |
| 110 | +# API Configuration |
| 111 | +VITE_API_BASE_URL=https://localhost:7227/api |
| 112 | +VITE_API_TIMEOUT=30000 |
| 113 | +
|
| 114 | +# Development |
| 115 | +VITE_DEV_TOOLS=true |
| 116 | +``` |
| 117 | + |
| 118 | +## Browser Support |
| 119 | + |
| 120 | +- Chrome/Edge 88+ |
| 121 | +- Firefox 85+ |
| 122 | +- Safari 14+ |
| 123 | + |
| 124 | +## Development Notes |
| 125 | + |
| 126 | +- All components use Chakra UI v3 API |
| 127 | +- Mobile-first responsive design approach |
| 128 | +- Lazy loading for optimal performance |
| 129 | +- TypeScript strict mode enabled |
| 130 | +- Test identifiers follow `data-testid` convention |
| 131 | +- ARIA labels for accessibility compliance |
| 132 | + |
| 133 | +## Next Steps |
| 134 | + |
| 135 | +Ready for **Issue #18: Live Board Page** implementation to add real-time monitoring dashboard functionality. |
0 commit comments