1+ # DevBcn - Barcelona Developers Conference Website
2+
13[ ![ 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 )
24
3- ![ ] ( /public/images/1500x500.jpeg )
4-
5- # DevBcn - Barcelona Developers Conference Website
5+ ![ DevBcn] ( /public/images/1500x500.jpeg )
66
77## Project Overview
88
@@ -13,26 +13,76 @@ speaker profiles, talk details, venue information, and registration.
1313
1414## Technology Stack
1515
16+ ### Core
17+
1618- ** Frontend Framework** : React 18 with TypeScript
17- - ** Routing** : React Router
18- - ** Data Fetching** : React Query and Axios
19- - ** Styling** : Styled Components and SASS
20- - ** UI Components** : PrimeReact, Swiper, Framer Motion
19+ - ** Build Tool** : Vite 7
20+ - ** Routing** : React Router DOM v7
21+ - ** Package Manager** : npm
22+
23+ ### Styling & UI
24+
25+ - ** CSS** : SASS, Styled Components, Tailwind CSS, Bootstrap 5
26+ - ** UI Components** : PrimeReact, React Bootstrap
27+ - ** Icons** : Lucide React, React Icons, PrimeIcons, Font Awesome 7.1.0
28+ - ** Animation** : Framer Motion, GSAP, Lenis (smooth scrolling)
29+ - ** Carousels** : Swiper, @egjs/react-flicking
30+
31+ ### Data & Services
32+
33+ - ** Data Fetching** : React Query (TanStack Query) and Axios
34+ - ** Date Handling** : date-fns, moment
2135- ** Maps Integration** : Google Map React
22- - ** Testing** : Jest, React Testing Library
23- - ** Deployment** : GitHub Pages
36+ - ** Calendar** : add-to-calendar-button-react
37+ - ** QR Codes** : react-qr-code
38+
39+ ### Development & Quality
40+
41+ - ** Testing** : Vitest, React Testing Library, @testing-library/jest-dom
42+ - ** Linting** : ESLint with TypeScript support
43+ - ** Code Formatting** : Prettier
44+ - ** Error Tracking** : Sentry
45+ - ** Mocking** : @faker-js/faker
46+
47+ ### Deployment
48+
49+ - ** Hosting** : GitHub Pages
50+ - ** PWA Support** : vite-plugin-pwa
51+ - ** Analytics** : Google Analytics (react-ga)
2452
2553## Project Structure
2654
27- The project follows a standard React application structure:
55+ The project follows a standard React application structure with multi-year edition support :
2856
2957- ` src/ ` : Source code
30- - ` assets/ ` : Static assets like images
31- - ` components/ ` : Reusable UI components
32- - ` hooks/ ` : Custom React hooks (e.g., useFetchSpeakers, useFetchTalks)
33- - ` views/ ` : Page components
34- - ` 2024/ ` : Components specific to the 2024 conference edition
35- - ` 2023/ ` : Components specific to the 2023 conference edition
58+ - ` assets/ ` : Static assets like images
59+ - ` components/ ` : Reusable UI components (Header, Footer, Navigation, etc.)
60+ - ` config/ ` : Configuration files (routes, etc.)
61+ - ` constants/ ` : Application constants
62+ - ` data/ ` : Static data files
63+ - ` hooks/ ` : Custom React hooks (e.g., useFetchSpeakers, useFetchTalks)
64+ - ` services/ ` : API services and external integrations
65+ - ` styles/ ` : Global styles and theme configuration
66+ - ` types/ ` : TypeScript type definitions
67+ - ` utils/ ` : Utility functions
68+ - ` views/ ` : Page components
69+ - ` 2023/ ` : Components specific to the 2023 conference edition
70+ - ` 2024/ ` : Components specific to the 2024 conference edition
71+ - ` 2025/ ` : Components specific to the 2025 conference edition
72+ - ` public/ ` : Public assets and static files
73+ - ` scripts/ ` : Build and utility scripts
74+ - ` .github/ ` : GitHub Actions workflows and configurations
75+
76+ ## Conference Editions
77+
78+ The website serves multiple conference editions:
79+
80+ - ** 2026** : Current edition (available at ` /2026/* ` routes)
81+ - ** 2025** : Previous edition (available at ` /2025/* ` routes)
82+ - ** 2024** : Previous edition (available at ` /2024/* ` routes)
83+ - ** 2023** : Previous edition (available at ` /2023/* ` routes)
84+
85+ Each edition has its own dedicated directory in ` src/ ` containing edition-specific components, data, and styles.
3686
3787## Path Aliases
3888
@@ -62,28 +112,54 @@ For more details, see the [Path Aliases Documentation](docs/path-aliases.md).
621121 . Clone the repository
631132 . Install dependencies with ` npm install `
641143 . Start the development server with ` npm start `
65- 4 . View the site at http://localhost:3000
115+ 4 . View the site at < http://localhost:3000 >
66116
67117### Available Scripts
68118
69- - ` npm start ` : Run the development server
70- - ` npm test ` : Run tests
119+ - ` npm start ` : Run the Vite development server (default port: 3000)
120+ - ` npm run build ` : Build for production (outputs to ` build/ ` directory)
121+ - ` npm run preview ` : Preview the production build locally
122+ - ` npm test ` : Run tests with Vitest
71123- ` npm run test-coverage ` : Run tests with coverage reporting
72- - ` npm run build ` : Build for production
73- - ` npm run deploy ` : Deploy to GitHub Pages
124+ - ` npm run type-check ` : Type-check TypeScript without emitting files
74125- ` npm run lint ` : Run ESLint to check for code quality issues
75126- ` npm run lint:fix ` : Run ESLint and automatically fix fixable issues
127+ - ` npm run deploy ` : Deploy to GitHub Pages (runs predeploy build automatically)
76128
77129## Contribution Guidelines
78130
79- When contributing to this project, please:
131+ When contributing to this project, please adhere to these standards:
132+
133+ ### Code Quality Principles
134+
135+ 1 . ** SOLID Principles** : Follow SOLID design principles for maintainable code
136+ 2 . ** DRY (Don't Repeat Yourself)** : Avoid code duplication
137+ 3 . ** KISS (Keep It Simple, Stupid)** : Favor simplicity over complexity
138+ 4 . ** YAGNI (You Aren't Gonna Need It)** : Only implement what's needed
139+ 5 . ** Law of Demeter** : Minimize coupling between components
140+ 6 . ** Tell, Don't Ask** : Design objects to tell what to do, not ask for data
141+
142+ ### Development Standards
143+
144+ 1 . ** Testing** : Ensure ** 80% test coverage** for all code
145+ 2 . ** TDD** : Follow Test-Driven Development practices when possible
146+ 3 . ** Type Safety** : Eradicate ` any ` types in TypeScript - use proper typing
147+ 4 . ** Code Style** : Run ` npm run lint ` and ` npm run lint:fix ` before committing
148+ 5 . ** Formatting** : Use Prettier for consistent code formatting
149+ 6 . ** Build & Tests** : Ensure all tests pass and the build succeeds
150+ 7 . ** Boy Scout Rule** : Leave the code better than you found it
151+
152+ ### Workflow
80153
811541 . Follow the existing code style and patterns
82- 2 . Run ESLint (` npm run lint ` ) to ensure code quality and fix any issues
83- 3 . Write tests for new features
84- 4 . Ensure all tests pass before submitting pull requests
85- 5 . Keep the UI consistent with the existing design
86- 6 . Document any new components or significant changes
155+ 2 . Write tests for new features (maintain 80% coverage)
156+ 3 . Check business logic in available markdown files or create new ones
157+ 4 . Run type checking: ` npm run type-check `
158+ 5 . Run linting: ` npm run lint:fix `
159+ 6 . Run tests: ` npm run test-coverage `
160+ 7 . Ensure build passes: ` npm run build `
161+ 8 . Keep the UI consistent with the existing design
162+ 9 . Document any new components or significant changes
87163
88164## Contact
89165
0 commit comments