A modern, dark-themed React dashboard application skeleton built with TypeScript, Vite, and Tailwind CSS. This project provides a solid foundation for building data-intensive monitoring and visualization applications.
- 🔐 Authentication Flow - Mock authentication with protected routes
- 🎨 Dark Theme - Modern dark UI with custom color scheme
- 📱 Responsive Layout - Fixed sidebar navigation with flexible content area
- 🧭 Routing - React Router v6+ with protected route guards
- 🧪 Testing - Comprehensive test suite with Jest, React Testing Library, and Playwright
- ♿ Accessibility - Built with accessibility in mind, validated with axe-core
- Framework: React 18.3+
- Build Tool: Vite 5.4+
- Language: TypeScript 5.5+
- Styling: Tailwind CSS 3.4+
- Routing: React Router v7+
- Icons: Lucide React
- Testing:
- Jest + React Testing Library (Unit & Integration)
- Playwright (E2E)
- jest-axe & @axe-core/playwright (Accessibility)
- Node.js 18+ and npm (or yarn/pnpm)
- Clone the repository:
git clone <repository-url>
cd project- Install dependencies:
npm install- Start the development server:
npm run devThe application will be available at http://localhost:5173 (or the port shown in the terminal).
npm run buildThe production build will be in the dist/ directory.
npm run previewproject/
├── src/
│ ├── __tests__/ # Unit and integration tests
│ ├── components/ # Reusable UI components
│ │ ├── Header.tsx # Top header with search and actions
│ │ └── Sidebar.tsx # Left navigation sidebar
│ ├── contexts/ # React contexts
│ │ └── AuthContext.tsx # Authentication state management
│ ├── layouts/ # Layout components
│ │ └── DashboardLayout.tsx # Main dashboard layout wrapper
│ ├── pages/ # Page components
│ │ ├── Login.tsx # Login/landing page
│ │ ├── Dashboard.tsx # Home dashboard
│ │ ├── Projects.tsx # Projects page
│ │ ├── History.tsx # Activity history
│ │ ├── Apps.tsx # Applications grid
│ │ ├── AppDetail.tsx # Individual app detail pages
│ │ ├── Settings.tsx # Settings page
│ │ └── Profile.tsx # User profile page
│ ├── App.tsx # Main app component with routing
│ ├── main.tsx # Application entry point
│ └── index.css # Global styles
├── e2e/ # End-to-end tests
│ └── navigation.spec.ts # E2E navigation and accessibility tests
├── coverage/ # Test coverage reports
└── public/ # Static assets
npm run dev- Start development servernpm run build- Build for productionnpm run preview- Preview production buildnpm run lint- Run ESLintnpm run typecheck- Run TypeScript type checkingnpm test- Run unit testsnpm run test:watch- Run tests in watch modenpm run test:coverage- Run tests with coverage reportnpm run test:e2e- Run end-to-end testsnpm run test:e2e:ui- Run E2E tests with Playwright UInpm run test:ci- Run complete CI test suite (lint + typecheck + unit tests + E2E)
The application uses a mock authentication system for this skeleton phase. You can log in with any username and password combination. The authentication state is managed via React Context API and persists during the session.
- Username: Any value
- Password: Any value
The application features a fixed left sidebar with the following navigation options:
- Home - Dashboard overview
- Projects - Project management
- History - Activity timeline
- Apps - Application grid view
- App Launchers - Quick access to app1, app2, app3
- Settings - Application preferences
- Profile - User profile (accessible via avatar at bottom of sidebar)
This project includes a comprehensive testing strategy. See TESTING.md for detailed information about:
- Running tests locally
- Writing new tests
- Test coverage goals
- CI/CD integration
- Accessibility testing
# Run all unit tests
npm test
# Run tests with coverage
npm run test:coverage
# Run E2E tests
npm run test:e2e
# Run complete CI suite
npm run test:ciIf any validation errors occur—such as ‘ts-jest not found’ or issues related to the Jest package—we need to ensure that the Jest version being used is compatible.
- Create a new component in
src/pages/ - Add the route in
src/App.tsx - Add navigation link in
src/components/Sidebar.tsxif needed - Create unit tests in
src/__tests__/ - Add E2E tests in
e2e/if applicable
The project uses Tailwind CSS with a custom dark theme. Key color values:
- Background:
#1a1a1a,#0f0f0f - Borders:
gray-800,gray-700 - Accent:
blue-500,blue-600 - Text:
white,gray-200,gray-400
The project is fully typed with TypeScript. Run npm run typecheck to verify type safety.
The project includes a GitHub Actions workflow (.github/workflows/test.yml) that runs on pull requests and pushes to main. It executes:
- Linting (ESLint)
- Type checking (TypeScript)
- Unit tests with coverage
- End-to-end tests (Playwright)
- Chrome/Edge (latest)
- Firefox (latest)
- Safari (latest)
[Add your license here]
[Add contributing guidelines here]