Skip to content

Commit d55f877

Browse files
authored
docs: Enhance README with detailed technology stack, project structur… (#823)
1 parent 9817a7e commit d55f877

File tree

2 files changed

+115
-27
lines changed

2 files changed

+115
-27
lines changed

README.md

Lines changed: 103 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
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).
62112
1. Clone the repository
63113
2. Install dependencies with `npm install`
64114
3. 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

81154
1. 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

wordlist.txt

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,15 +31,19 @@ dev
3131
devbcn
3232
dom
3333
env
34+
egjs
3435
eslint
3536
etDpvu
37+
fns
3638
fJV
3739
favicon
3840
ftazo
41+
ga
3942
getRandomValues
4043
github
4144
githubusercontent
4245
groupMap
46+
GSAP
4347
gtag
4448
handleChangeGroup
4549
hkHj
@@ -49,13 +53,16 @@ https
4953
ico
5054
icougil
5155
incimages
56+
integrations
5257
jonathanvila
5358
jpg
5459
js
5560
json
61+
Lenis
5662
lQWQz
5763
linkedin
5864
localhost
65+
Lucide
5966
matchers
6067
minified
6168
nd
@@ -64,6 +71,8 @@ onChange
6471
param
6572
pbs
6673
png
74+
predeploy
75+
PrimeIcons
6776
px
6877
pwa
6978
queryKey
@@ -72,6 +81,7 @@ robotstxt
7281
selectedGroupId
7382
st
7483
svg
84+
TanStack
7585
th
7686
toHaveTextContent
7787
tsconfig
@@ -85,10 +95,12 @@ veepee
8595
vilojona
8696
vite
8797
vitejs
98+
Vitest
8899
webfonts
89100
webpack
90101
wikimedia
91102
wikipedia
92103
www
93104
xSBqFVCYSpsyuO
105+
YAGNI
94106
youtube

0 commit comments

Comments
 (0)