Find & watch all React conference talks for React developers

ReactConf.TV
ReactConf.TV is a place where passionate React developers are able to search & watch organized and up-to-date react conference videos.
Data Sourcing
The data for ReactConf.TV
mainly comes from two YouTube Data API
:
playlists
API to fetch all playlists aYouTube channel
contains- a
channel
normally represent the organization for a particular conference. For example,React Europe
. - a
playlist
is a particular conference event, for example,React Europe 2020
.
- a
playlistitems
API to fetch all videos aplaylist
contains- a
video
in aplaylist
represents a talk in one conference, for example,vjeux's talk about Excalidraw in React Europe 2020
- a
The high-level data sourcing logic looks like this:
- Maintain a manual file
data/ytChannels.json
, to collect the YouTube Channels contain React Conference playlist. The ultimate source comes from ReactJS's community conference - For every
channel
inytChannels
, fetch theirplaylists
and save todata/playlist/<channel-name>.json
- For every
playlist
in one particularchannel
, fetch the video list save tostatic/playlistitems/<playlist-id>.json
- During build-time, the
data/playlist
will be used, so ReactConf.TV knows all conference events. - During runtime, when user navigate to a particular conference event, we can then fire a request to
/static/playlistitems/<playlist-id>.json
using its id, since we deploy those data as static content.
Getting Started
npm install npm start
open http://localhost:8000/ for running locally reactconf-tv
Contribute
Welcome to contribute!
If you have any idea or suggestion, feel free to open an issue or create a PR.
How To Contribute a New Conference Resource for Reactconf-tv
- Can see the file
data.json
indata
folder , and then you would see below data structure
"ytChannels": [ { "name": "react-conf", "display": "React Conf", "channelId": "UCz5vTaEhvh7dOHEyd1efcaQ", "conferences": [ { "name": "react-conf", "display": "React Conf", "filters": ["React Conf"] } ] } ]
-
ytChannels
name
Channel Namedisplay
Unused for nowchannelId
Channel id which use to fetch youtube api- conferences
name
The name of the playlistdisplay
The playlist name will display on the reactconf-tv playlistfilters
The keyword to get the playlist
- conferences
-
How to get the channel id ?
-
Select the channel which you want to append to reactconf-tv,
you would see the channel id on the url.
https://www.youtube.com/channel/${channel_id}
-
-
Where the keyword which I would place in the filters array ?
-
See the below picture , you will see the two playlists,
what they have in common is the keyword
React Conf
,so if you want to append these palylists,
please concat the
React Conf
in the filters of the channel.- p.s. Because system limitations, please choose the playlist that postfix has particular year.
-
-
Why I concat the structure of channel, but I didn’t see the list in reactconf-tv ?
-
because reactconf-tv is static site, we will output static files we need first.
so maybe you can run below script, you will fetch the data you want,
then submit pull request.node scripts/fetch-data.js
-
-
Where does the data come from?
- after running scripts:
node scripts/fetch-data.js
According todata/data.json
data/playlist/
andstatic/playlistitems/
will be generated by the api provided from Youtube data/playlist
repr a list of playlist andstatic/playlistitems/
repr the detail of every video in a playlist- To avoid large bundle size at the first request, we will fetch only
data/playlist/
at build time and considerstatic/playlistitems
as assets
- after running scripts:
step
- Open a new issue with description.
- Fork and clone the repo. https://github.com/revtel/reactconf-tv.git.
- Create a new branch based off the develop branch.
npm install && npm start
to run the development enviroment.- Make changes.
- Make commit message with conventional commits specification.
- Submit a pull request, referencing any issues it addresses.
- We will review your Pull Request as soon as possible. Thank you for your contribution ✨
Directory Structure
The following is the hign level folder structure of reactconf-tv
reactconf-tv ├── CHANGELOG.md ├── LICENSE ├── README.md ├── data │ ├── data.json │ └── playlist ├── gatsby-browser.js ├── gatsby-config.js ├── gatsby-node.js ├── gatsby-ssr.js ├── package-lock.json ├── package.json ├── scripts │ └── fetch-data.js ├── src │ ├── AppContext.js │ ├── PageContainer.js │ ├── components │ ├── hooks │ ├── images │ ├── index.css │ ├── pages │ ├── templates │ └── utils └── static ├── fonts ├── images └── playlistitems