From 8457f2fc0a8b3ec73b16c54cda480d903bfe707a Mon Sep 17 00:00:00 2001 From: Anyul Rivas Date: Thu, 18 Dec 2025 12:52:24 +0100 Subject: [PATCH 1/2] docs: Enhance README with detailed technology stack, project structure, and comprehensive contribution guidelines. --- README.md | 130 ++++++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 103 insertions(+), 27 deletions(-) diff --git a/README.md b/README.md index 48c515c41..9a63d9671 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,8 @@ +# DevBcn - Barcelona Developers Conference Website + [![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=dev-bcn_dev-bcn.github.io&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=dev-bcn_dev-bcn.github.io) -![](/public/images/1500x500.jpeg) - -# DevBcn - Barcelona Developers Conference Website +![DevBcn](/public/images/1500x500.jpeg) ## Project Overview @@ -13,26 +13,76 @@ speaker profiles, talk details, venue information, and registration. ## Technology Stack +### Core + - **Frontend Framework**: React 18 with TypeScript -- **Routing**: React Router -- **Data Fetching**: React Query and Axios -- **Styling**: Styled Components and SASS -- **UI Components**: PrimeReact, Swiper, Framer Motion +- **Build Tool**: Vite 7 +- **Routing**: React Router DOM v7 +- **Package Manager**: npm + +### Styling & UI + +- **CSS**: SASS, Styled Components, Tailwind CSS, Bootstrap 5 +- **UI Components**: PrimeReact, React Bootstrap +- **Icons**: Lucide React, React Icons, PrimeIcons, Font Awesome 7.1.0 +- **Animation**: Framer Motion, GSAP, Lenis (smooth scrolling) +- **Carousels**: Swiper, @egjs/react-flicking + +### Data & Services + +- **Data Fetching**: React Query (TanStack Query) and Axios +- **Date Handling**: date-fns, moment - **Maps Integration**: Google Map React -- **Testing**: Jest, React Testing Library -- **Deployment**: GitHub Pages +- **Calendar**: add-to-calendar-button-react +- **QR Codes**: react-qr-code + +### Development & Quality + +- **Testing**: Vitest, React Testing Library, @testing-library/jest-dom +- **Linting**: ESLint with TypeScript support +- **Code Formatting**: Prettier +- **Error Tracking**: Sentry +- **Mocking**: @faker-js/faker + +### Deployment + +- **Hosting**: GitHub Pages +- **PWA Support**: vite-plugin-pwa +- **Analytics**: Google Analytics (react-ga) ## Project Structure -The project follows a standard React application structure: +The project follows a standard React application structure with multi-year edition support: - `src/`: Source code - - `assets/`: Static assets like images - - `components/`: Reusable UI components - - `hooks/`: Custom React hooks (e.g., useFetchSpeakers, useFetchTalks) - - `views/`: Page components - - `2024/`: Components specific to the 2024 conference edition - - `2023/`: Components specific to the 2023 conference edition + - `assets/`: Static assets like images + - `components/`: Reusable UI components (Header, Footer, Navigation, etc.) + - `config/`: Configuration files (routes, etc.) + - `constants/`: Application constants + - `data/`: Static data files + - `hooks/`: Custom React hooks (e.g., useFetchSpeakers, useFetchTalks) + - `services/`: API services and external integrations + - `styles/`: Global styles and theme configuration + - `types/`: TypeScript type definitions + - `utils/`: Utility functions + - `views/`: Page components + - `2023/`: Components specific to the 2023 conference edition + - `2024/`: Components specific to the 2024 conference edition + - `2025/`: Components specific to the 2025 conference edition +- `public/`: Public assets and static files +- `scripts/`: Build and utility scripts +- `.github/`: GitHub Actions workflows and configurations + +## Conference Editions + +The website serves multiple conference editions: + +- **2026**: Current edition (available at `/2026/*` routes) +- **2025**: Previous edition (available at `/2025/*` routes) +- **2024**: Previous edition (available at `/2024/*` routes) +- **2023**: Previous edition (available at `/2023/*` routes) + +Each edition has its own dedicated directory in `src/` containing edition-specific components, data, and styles. ## Path Aliases @@ -62,28 +112,54 @@ For more details, see the [Path Aliases Documentation](docs/path-aliases.md). 1. Clone the repository 2. Install dependencies with `npm install` 3. Start the development server with `npm start` -4. View the site at http://localhost:3000 +4. View the site at ### Available Scripts -- `npm start`: Run the development server -- `npm test`: Run tests +- `npm start`: Run the Vite development server (default port: 3000) +- `npm run build`: Build for production (outputs to `build/` directory) +- `npm run preview`: Preview the production build locally +- `npm test`: Run tests with Vitest - `npm run test-coverage`: Run tests with coverage reporting -- `npm run build`: Build for production -- `npm run deploy`: Deploy to GitHub Pages +- `npm run type-check`: Type-check TypeScript without emitting files - `npm run lint`: Run ESLint to check for code quality issues - `npm run lint:fix`: Run ESLint and automatically fix fixable issues +- `npm run deploy`: Deploy to GitHub Pages (runs predeploy build automatically) ## Contribution Guidelines -When contributing to this project, please: +When contributing to this project, please adhere to these standards: + +### Code Quality Principles + +1. **SOLID Principles**: Follow SOLID design principles for maintainable code +2. **DRY (Don't Repeat Yourself)**: Avoid code duplication +3. **KISS (Keep It Simple, Stupid)**: Favor simplicity over complexity +4. **YAGNI (You Aren't Gonna Need It)**: Only implement what's needed +5. **Law of Demeter**: Minimize coupling between components +6. **Tell, Don't Ask**: Design objects to tell what to do, not ask for data + +### Development Standards + +1. **Testing**: Ensure **80% test coverage** for all code +2. **TDD**: Follow Test-Driven Development practices when possible +3. **Type Safety**: Eradicate `any` types in TypeScript - use proper typing +4. **Code Style**: Run `npm run lint` and `npm run lint:fix` before committing +5. **Formatting**: Use Prettier for consistent code formatting +6. **Build & Tests**: Ensure all tests pass and the build succeeds +7. **Boy Scout Rule**: Leave the code better than you found it + +### Workflow 1. Follow the existing code style and patterns -2. Run ESLint (`npm run lint`) to ensure code quality and fix any issues -3. Write tests for new features -4. Ensure all tests pass before submitting pull requests -5. Keep the UI consistent with the existing design -6. Document any new components or significant changes +2. Write tests for new features (maintain 80% coverage) +3. Check business logic in available markdown files or create new ones +4. Run type checking: `npm run type-check` +5. Run linting: `npm run lint:fix` +6. Run tests: `npm run test-coverage` +7. Ensure build passes: `npm run build` +8. Keep the UI consistent with the existing design +9. Document any new components or significant changes ## Contact From 89012d0e5f5f257f681fd0f7edd246241709d347 Mon Sep 17 00:00:00 2001 From: Anyul Rivas Date: Thu, 18 Dec 2025 13:21:01 +0100 Subject: [PATCH 2/2] docs: spelling --- wordlist.txt | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/wordlist.txt b/wordlist.txt index 68124768a..fabd7943b 100644 --- a/wordlist.txt +++ b/wordlist.txt @@ -31,15 +31,19 @@ dev devbcn dom env +egjs eslint etDpvu +fns fJV favicon ftazo +ga getRandomValues github githubusercontent groupMap +GSAP gtag handleChangeGroup hkHj @@ -49,13 +53,16 @@ https ico icougil incimages +integrations jonathanvila jpg js json +Lenis lQWQz linkedin localhost +Lucide matchers minified nd @@ -64,6 +71,8 @@ onChange param pbs png +predeploy +PrimeIcons px pwa queryKey @@ -72,6 +81,7 @@ robotstxt selectedGroupId st svg +TanStack th toHaveTextContent tsconfig @@ -85,10 +95,12 @@ veepee vilojona vite vitejs +Vitest webfonts webpack wikimedia wikipedia www xSBqFVCYSpsyuO +YAGNI youtube \ No newline at end of file