rails-video-chat-app icon indicating copy to clipboard operation
rails-video-chat-app copied to clipboard

📹Video Chat App

Rails Video Chat App

WebRTC on Rails

https://webrtc-on-rails.herokuapp.com

TODO

  • [ ] WebRTC Support across different browsers
  • [ ] Test coverage for WebRTC JS stuff
  • [ ] Front End UI
  • [ ] React on Rails is integrated - need to make UI components for some items. maybe some of the forms?
  • [ ] Figure Out TurboLinks stuff
  • [ ] Create system tests
  • [ ] Create API + API tests
  • [ ] Error handling for non-existent pages (web + api level)
  • [ ] Handle web rtc connection when one peer closes browser
  • [ ] Warn users on iOS mobile devices that this app won't work. React-native app coming soon (also, app doesn't work the greatest in firefox. oof)

As a user, I can...

  • [x] create a room on the fly
  • [x] Enter into an existing room
  • [ ] Mute my microphone
  • [ ] Turn my video off

As a guest, I can...

  • [x] Create temporary rooms that expire in 24 hours (rake task)
  • [x] "register now to claim this room"

As a member, I can...

  • [x] Claim a room name
  • [x] Password protect my room - some kind of authorization
  • [ ] Choose a brand color for room

API

Authentication Using Devise Token Auth

Users

Registration

POST Endpoint:

https://webrtc-on-rails.herokuapp.com/api/v1/auth

Request Body:

{
  "email": "[email protected]",
  "password": "foobar",
  "password_confirmation": "foobar"
}

200 - Response Body:

{
    "status": "success",
    "data": {
        "id": 1,
        "email": "[email protected]",
        "provider": "email",
        "uid": "[email protected]",
        "created_at": "2017-10-06T05:22:49.774Z",
        "updated_at": "2017-10-06T05:22:49.998Z"
    }
}

200 - Response Headers: (these must be passed along every authenticated request)

access-token → fdBnuoN8VtlOLLW-cKB58Q
token-type   → Bearer
client       → ucLUd-EIkM-ETYLWFSIL4w
expiry       → 1508475926
uid          → [email protected]

422 - Response Body:

{
    "status": "error",
    "data": {
        "id": null,
        "email": "[email protected]",
        "created_at": null,
        "updated_at": null,
        "provider": "email",
        "uid": "[email protected]"
    },
    "errors": {
        "email": [
            "has already been taken"
        ],
        "full_messages": [
            "Email has already been taken"
        ]
    }
}

Signing In

POST Endpoint:

https://webrtc-on-rails.herokuapp.com/api/v1/auth/sign_in

Request Body:

{
  "email": "[email protected]",
  "password": "foobar"
}

200 - Response Body:

{
    "data": {
        "id": 1,
        "email": "[email protected]",
        "provider": "email",
        "uid": "[email protected]"
    }
}

200 - Response Headers: (these must be passed along every authenticated request)

access-token → fdBnuoN8VtlOLLW-cKB58Q
token-type   → Bearer
client       → ucLUd-EIkM-ETYLWFSIL4w
expiry       → 1508475926
uid          → [email protected]

401 - Response Body:

{
    "errors": [
        "Invalid login credentials. Please try again."
    ]
}