$ show scraly/developers-conferences-agenda
This repository is a community-driven web application that aggregates and displays developer conferences worldwide, with a strong focus on Call for Papers (CFP) deadlines. The core data is maintained in markdown files (README.md for current year, archives/ for past years) and enriched with CSV metadata (attendee counts, talk durations, AI-generated tags). A React single-page application (Vite, React Router, Leaflet) provides multiple views: calendar, list, map, CFP deadline tracker, and a CFP companion for speaker status tracking. The frontend features i18n (5 languages), theme toggle, favorites, offline support via service worker, and a sophisticated filtering system with include/exclude modes and URL-driven state. The backend consists of Node.js scripts that parse markdown, generate JSON feeds, ICS calendars, RSS, geocode locations, and validate data. AI integration (OVHcloud AI Endpoints) generates tags and attendee estimates. The project is actively maintained with extensive CI/CD (GitHub Actions for validation, geocoding checks, tag generation, security scanning) and includes unit tests (Vitest), E2E tests (Playwright), and BDD specs (Cucumber). While primarily an application, it has a significant data pipeline component, making it a hybrid project. The codebase is well-structured with reusable components like FilterMultiSelect and custom hooks, though some duplication exists in event forms and the markdown data format is fragile.
The LLM identified 3 files worth highlighting for reuse:
A generic multi-select component that supports include/exclude toggles and 'any/all' mode for each filter dimension. It is fully decoupled from business logic, accepting options, selected values, and callbacks as props. The component handles keyboard navigation, accessibility, and renders a dropdown with checkboxes. It can be extracted and reused in any React project requiring faceted filtering with exclusion support.
Central module containing custom hooks for event filtering and aggregation: useYearEvents, useMonthEvents, useDayEvents, useCfpEvents, useCfpCompanionEvents, and applyCommonFilters. These hooks parse URL search parameters to build filter state (topics, regions, countries, online/in-person, favorites) and apply them to the event list. The pattern of deriving filter state from URL params and exposing filtered data via hooks is clean, testable, and reusable for any list-based application with complex filtering.
A Node.js script that parses the community-maintained markdown files (README.md and archives) into structured JSON. It extracts event name, date, URL, location, and badges (CFP, CC, sponsoring) using regex patterns. It also merges supplementary data from CSV files (tags, metadata, CFP durations). The parser is idempotent and produces a consistent schema. This pattern of parsing semi-structured markdown into JSON is reusable for any project that uses markdown as a data source, and the script demonstrates careful handling of edge cases (multiple badges, date formats, location variations).