# Community Rule A Next.js application for community decision-making and governance documentation. ## ๐Ÿš€ Getting Started Run the development server: ```bash npm run dev ``` Open [http://localhost:3000](http://localhost:3000) with your browser to see the result. ## ๐Ÿงช Testing Framework This project includes a comprehensive testing framework with multiple layers of testing: ### Quick Test Commands ```bash # Unit tests with coverage npm test # E2E tests npm run e2e # Performance tests npm run lhci # Storybook tests npm run test:sb ``` ### Test Coverage - โœ… **124 Unit Tests** (8 components + 1 integration) - โœ… **308 E2E Tests** (4 browsers ร— 77 tests) - โœ… **92 Visual Regression Screenshots** - โœ… **Performance Budgets** - โœ… **Accessibility Compliance** ### CI/CD Pipeline - **Gitea Actions** with 7 parallel jobs - **Cross-browser testing** (Chromium, Firefox, WebKit, Mobile) - **Visual regression testing** - **Performance monitoring** - **Code coverage reporting** ๐Ÿ“– **For detailed testing documentation, see [docs/TESTING.md](docs/TESTING.md)** ## ๐Ÿ“š Storybook Development This project includes Storybook for component development and documentation. The setup supports both local development and GitHub Pages deployment. ### Local Development For local Storybook development (no base path): ```bash npm run storybook:local ``` This will: - Copy local configuration files (without GitHub Pages base path) - Start Storybook at `http://localhost:6006` - Ignore configuration changes in git ### Production Deployment When ready to deploy to GitHub Pages: 1. **Restore GitHub Pages configuration:** ```bash npm run storybook:restore ``` 2. **Build Storybook:** ```bash npm run build-storybook ``` 3. **Deploy to GitHub Pages repository:** ```bash # Copy the build to your GitHub Pages repository cp -r storybook-static/* /path/to/communityrulestorybook/ # Or if you have it as a git submodule: cp -r storybook-static/* communityrulestorybook/ cd communityrulestorybook git add . git commit -m "Update Storybook build" git push origin main ``` ### Switching Between Configurations - **Local Development:** `npm run storybook:local` - **Production Build:** `npm run storybook:restore` then `npm run build-storybook` - **Back to Local:** `npm run storybook:local` The gitignore is configured to prevent configuration file changes from triggering git changes during local development. ## ๐Ÿ“‹ Available Scripts ### Development - `npm run dev` - Start Next.js development server - `npm run build` - Build Next.js application for production - `npm run start` - Start Next.js production server ### Testing - `npm test` - Run unit tests with coverage - `npm run test:watch` - Run tests in watch mode - `npm run test:ui` - Run tests with UI - `npm run e2e` - Run E2E tests - `npm run e2e:ui` - Run E2E tests with UI - `npm run e2e:serve` - Start dev server and run E2E tests - `npm run lhci` - Run performance tests - `npm run test:sb` - Run Storybook tests ### Storybook - `npm run storybook:local` - Start Storybook with local configuration - `npm run storybook:restore` - Restore GitHub Pages configuration - `npm run build-storybook` - Build Storybook for production - `npm run storybook` - Start Storybook with current configuration ## ๐Ÿ—๏ธ Project Structure ``` community-rule/ โ”œโ”€โ”€ app/ # Next.js app directory โ”‚ โ”œโ”€โ”€ components/ # React components โ”‚ โ”œโ”€โ”€ layout.js # Root layout โ”‚ โ””โ”€โ”€ page.js # Homepage โ”œโ”€โ”€ tests/ # Test files โ”‚ โ”œโ”€โ”€ unit/ # Unit tests (8 components) โ”‚ โ”œโ”€โ”€ integration/ # Integration tests โ”‚ โ””โ”€โ”€ e2e/ # E2E tests (4 test suites) โ”œโ”€โ”€ docs/ # Documentation โ”‚ โ””โ”€โ”€ TESTING.md # Comprehensive testing guide โ”œโ”€โ”€ .storybook/ # Storybook configuration โ”œโ”€โ”€ .gitea/ # Gitea Actions workflows โ”‚ โ””โ”€โ”€ workflows/ โ”‚ โ””โ”€โ”€ ci.yml # CI/CD pipeline โ””โ”€โ”€ public/ # Static assets ``` ## ๐Ÿ”ง Technology Stack - **Framework**: Next.js 15 + React 19 - **Styling**: Tailwind CSS 4 - **Testing**: Vitest + Playwright + Lighthouse CI - **Documentation**: Storybook 9 - **CI/CD**: Gitea Actions - **Hosting**: Gitea (Git hosting) ## ๐Ÿ“– Documentation - **[Testing Framework](docs/TESTING.md)** - Comprehensive testing guide - **[Storybook](http://localhost:6006)** - Component documentation (local) - **[GitHub Pages Storybook](https://your-username.github.io/communityrulestorybook/)** - Public component docs ## ๐Ÿค Contributing 1. **Fork the repository** 2. **Create a feature branch**: `git checkout -b feature/amazing-feature` 3. **Write tests first** (see [Testing Guide](docs/TESTING.md)) 4. **Make your changes** 5. **Run tests**: `npm test && npm run e2e` 6. **Commit changes**: `git commit -m "feat: add amazing feature"` 7. **Push to branch**: `git push origin feature/amazing-feature` 8. **Create Pull Request** ### Development Workflow - All changes must have tests - CI pipeline runs automatically on PRs - Visual regression tests ensure UI consistency - Performance budgets must be met - Accessibility standards must be maintained ## ๐Ÿ“„ License This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.