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:
- playlistsAPI to fetch all playlists a- YouTube channelcontains- a channelnormally represent the organization for a particular conference. For example,React Europe.
- a playlistis a particular conference event, for example,React Europe 2020.
 
- a 
- playlistitemsAPI to fetch all videos a- playlistcontains- a videoin aplaylistrepresents 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 channelinytChannels, fetch theirplaylistsand save todata/playlist/<channel-name>.json
- For every playlistin one particularchannel, fetch the video list save tostatic/playlistitems/<playlist-id>.json
- During build-time, the data/playlistwill 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>.jsonusing 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.jsonindatafolder , 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 - nameChannel Name
- displayUnused for now
- channelIdChannel id which use to fetch youtube api- conferences
- nameThe name of the playlist
- displayThe playlist name will display on the reactconf-tv playlist
- filtersThe 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 keywordReact Conf,
 so if you want to append these palylists,
 please concat theReact Confin 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.jsondata/playlist/andstatic/playlistitems/will be generated by the api provided from Youtube
- data/playlistrepr a list of playlist and- static/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/playlistitemsas 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 startto 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
 
             
             
             
             
            