Skip to content

iCall is a video-call application using NodeJS, PeerJS and SocketIO. With this application it will be possible to video-chat with other users around the world. Also, it makes use of the CatFacts API, which tells a randomized cat fact to the videoroom. The user authentication is build with Auth0.

License

Notifications You must be signed in to change notification settings

joordy/i-call

Β 
Β 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ“Ή iCall video platform

✏️ Description

iCall is a multi-user video platform where you can connect with your friends, based on a WebRTC connection. The app makes it possible to have a video connection, chat functionality, and a command to send random Cat Facts using the catfacts API. The app will be made with NodeJS, Express, Express-Handlebars, Socket.io and PeerJS. Check out my NPM Packages to see which other packages I've used.

Mockup of iCall video chat on iPad size


πŸš€ Live view:

You can visit the project iCall application here


✏️ Concepts

Location based volume

Location based volume

Location based rooms (map)

Location based rooms (map)

Trending Twitter hashtags

Trending Twitter hashtags

Video platform with Cat Facts

Videochat with Cat Facts

Chosen Concept

The concept I chose to develop is the video platform in combination with the CatFacts API.


πŸ’Ή Data Flow Diagram

Data flow Diagram


😺 API

The API I will use for this application is the CatFacts API. I chose this API to keep the application funnier. The response returned by the API is an array with 5 different results. Based on a random index number, a random fact is retrieved.

For this CatFacts API you don't need to obtain an API key. By just fetching the correct link you will get a response in your code.

Fetch the API data
// Utils/fetch.js
const fetcher = async (endpoint) => {
  const data = await fetch(endpoint)
  const response = await data.json()
  return response
}

// Utils/socket.js
async function getRandomCatFact() {
  const response = await fetcher('https://cat-fact.herokuapp.com/facts')
  const num = Math.floor(Math.random() * 5) + 1
  const catFact = {
    message: `${response[num].text}`,
    user: 'CatFacts',
  }
  return catFact
}
Response
  {
    status: { verified: true, sentCount: 1 },
    type: 'cat',
    deleted: false,
    _id: '58e007cc0aac31001185ecf5',
    user: '58e007480aac31001185ecef',
    text: 'Cats are the most popular pet in the United States: There are 88 million pet cats and 74 million dogs.',
    __v: 0,
    source: 'user',
    updatedAt: '2020-08-23T20:20:01.611Z',
    createdAt: '2018-03-01T21:20:02.713Z',
    used: false
  }

πŸš€ Features

Service features

  • Communicate based on webcam view and audio
  • Chat functionality
  • Register/Login authentication with Google
  • Inviting users to conference room

API Features

  • Randomnized Cat Facts

β˜‘οΈ Wishlist

Below is a list of features I'd love to add my videocall platform. The features are split up using the MoSCoW method.

M β€” Must Have

  • Video connection with webcam
  • Video connection with audio
  • Have seperated rooms
  • Connect with CatFacts API
  • Chat function with usernames
  • Text command for API

S β€” Should Have

  • Add styling
  • Possible to stop webcam sharing
  • Possible to stop audio sharing
  • Invite users
  • End call button
  • Smooth transitions
  • Disconnecting feedback

C β€” Could Have

  • Add User Authentication
  • Homepage of the product/service
  • Smaller video views, clickable to expand

W β€” Would Have

  • User accounts with database
  • Video call history
  • List of current participants
  • Screensharing

πŸ“¦ NPM Packages


πŸ’» Installation

Clone the repository

  git clone https://github.com/joordy/real-time-web-2021.git

Navigate to the repository and install the packages

  npm install

Start local dev environment

  npm run dev

Build export for deployment

  npm run build

πŸ” Sources


πŸ” License

This is a repository which is licensed as MIT. Developed by Jordy Fronik ©️ 2021.


About

iCall is a video-call application using NodeJS, PeerJS and SocketIO. With this application it will be possible to video-chat with other users around the world. Also, it makes use of the CatFacts API, which tells a randomized cat fact to the videoroom. The user authentication is build with Auth0.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 46.9%
  • CSS 34.0%
  • Handlebars 19.0%
  • Shell 0.1%