This repository contains the official website for the Barcelona Developers Conference (DevBcn), a tech conference held in Barcelona, Spain. The website serves as the primary platform for conference information, including schedules, speaker profiles, talk details, venue information, and registration.
- Frontend Framework: React 18 with TypeScript
- Build Tool: Vite 7
- Routing: React Router DOM v7
- Package Manager: npm
- 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 Fetching: React Query (TanStack Query) and Axios
- Date Handling: date-fns, moment
- Maps Integration: Google Map React
- Calendar: add-to-calendar-button-react
- QR Codes: react-qr-code
- Testing: Vitest, React Testing Library, @testing-library/jest-dom
- Linting: ESLint with TypeScript support
- Code Formatting: Prettier
- Error Tracking: Sentry
- Mocking: @faker-js/faker
- Hosting: GitHub Pages
- PWA Support: vite-plugin-pwa
- Analytics: Google Analytics (react-ga)
The project follows a standard React application structure with multi-year edition support:
src/: Source codeassets/: Static assets like imagescomponents/: Reusable UI components (Header, Footer, Navigation, etc.)config/: Configuration files (routes, etc.)constants/: Application constantsdata/: Static data fileshooks/: Custom React hooks (e.g., useFetchSpeakers, useFetchTalks)services/: API services and external integrationsstyles/: Global styles and theme configurationtypes/: TypeScript type definitionsutils/: Utility functionsviews/: Page components2023/: Components specific to the 2023 conference edition2024/: Components specific to the 2024 conference edition2025/: Components specific to the 2025 conference edition
public/: Public assets and static filesscripts/: Build and utility scripts.github/: GitHub Actions workflows and configurations
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.
This project uses path aliases to simplify imports. Instead of using relative
paths like ../../components/Button, you can use aliases like
@components/Button.
Available aliases:
@components/*- Components fromsrc/components/@constants/*- Constants fromsrc/constants/@services/*- Services fromsrc/services/@hooks/*- Hooks fromsrc/hooks/@/assets/*- Assets fromsrc/assets/@styles/*- Styles fromsrc/styles/@views/*- Views fromsrc/views/@utils/*- Utilities fromsrc/utils/@data/*- Data fromsrc/data/@types/*- Types fromsrc/types/
For more details, see the Path Aliases Documentation.
- Clone the repository
- Install dependencies with
npm install - Start the development server with
npm start - View the site at http://localhost:3000
npm start: Run the Vite development server (default port: 3000)npm run build: Build for production (outputs tobuild/directory)npm run preview: Preview the production build locallynpm test: Run tests with Vitestnpm run test-coverage: Run tests with coverage reportingnpm run type-check: Type-check TypeScript without emitting filesnpm run lint: Run ESLint to check for code quality issuesnpm run lint:fix: Run ESLint and automatically fix fixable issuesnpm run deploy: Deploy to GitHub Pages (runs predeploy build automatically)
When contributing to this project, please adhere to these standards:
- SOLID Principles: Follow SOLID design principles for maintainable code
- DRY (Don't Repeat Yourself): Avoid code duplication
- KISS (Keep It Simple, Stupid): Favor simplicity over complexity
- YAGNI (You Aren't Gonna Need It): Only implement what's needed
- Law of Demeter: Minimize coupling between components
- Tell, Don't Ask: Design objects to tell what to do, not ask for data
- Testing: Ensure 80% test coverage for all code
- TDD: Follow Test-Driven Development practices when possible
- Type Safety: Eradicate
anytypes in TypeScript - use proper typing - Code Style: Run
npm run lintandnpm run lint:fixbefore committing - Formatting: Use Prettier for consistent code formatting
- Build & Tests: Ensure all tests pass and the build succeeds
- Boy Scout Rule: Leave the code better than you found it
- Follow the existing code style and patterns
- Write tests for new features (maintain 80% coverage)
- Check business logic in available markdown files or create new ones
- Run type checking:
npm run type-check - Run linting:
npm run lint:fix - Run tests:
npm run test-coverage - Ensure build passes:
npm run build - Keep the UI consistent with the existing design
- Document any new components or significant changes
For questions or issues related to the DevBcn website, please open an issue in this repository.
Visit the live site at https://www.devbcn.com
