BACKLOG GENERAL - adriangc24/JoinParty GitHub Wiki

Idea principal 💡

Aquesta idea sorgeix de la necessitat de poder veure concerts, espectacles, music live sessions etc. de forma no presencial i amb amics Per exemple poder filtrar per tipus d'esdeveniment, visualitzadors, qui emet...

Descripció del projecte 📄

Aplicació de tipus "video conferencia" on pots veure esdeveniments amb els teus amics per exemple: veure una live session del teu DJ favorit en live o veure algun gameplay, monóleg amb els familiars.

  • Consta d' una pantalla de login on pots iniciar sessió, iniciar amb google o registrar-te.
  • Pantalla de newsfeed (tipus instagram) on pots veure les últimes publicacions de persones que segueixes, pots deixar comentar i donar like.
  • Pantalla per iniciar vídeo en directe.
  • Pantalla per buscar events o persones i veure si están en directe.
  • Per útlim la pantalla de perfil on pots editar la teva informació, pujar foto de perfil i tancar la sessió.

Tecnologíes utilitzadas 🛠️

  • REACT NATIVE - Framework per aplicacions natives basat en JS
  • NATIVE BASE - Llibreria de components react native
  • FIREBASE - Gestor de BBD no relacional i hosting (BAAS Backend as a service)
  • NODE JS - Entorn d'execució JavaScript orientat a esdeveniments asíncrons del servidor
  • WEBRTC - Projecte Open source que permet establir connexions P2P amb possibilitat de fer streaming d'àudio i/o vídeo (videotrucada).

¿Per qué aquestes tecnologíes ? ❓🛠️

Hem decidit escollir aquestes tecnologíes ja que són pioneres al mercat actual.

  • Firebase permet la gestió sencera del backend, incorpora node js però amb moltes funcionalitats afegides i ja preparades per ser integrades a la teva aplicació, ja sigui android, ios o web.
  • React Native permet compilar aplicacions a codi nadiu escrivint JSX (variant de javascript) sense la necessitat d'escriure codi en java / kotlin ó objective c / swift.
  • WebRTC permet connactarte amb gent mitjançant streaming d'audio/video, per tant facilita molt la feina que no haver d'agafar-hi un protocol més primitiu tipus http i haver-hi de configurar tot el sistema.

Especificacions 📋✔️

  • Videoconferencia en directe
  • Desplegar aplicació nativa multiplataforma (IOS & ANDROID) amb React Native
  • Implementació control de sessions Firebase
  • Encriptació dades amb Firebase
  • Automatitzar integració dels vídeos a la plataforma ex: get videos API youtube, twitch
  • Arribar acord amb discoteques per possar live sessions
  • Diagrama Despliegue📈

    • Hem utilitzat Firebase com a backend manager ja que porta integrat NODE JS versió 8, per això que facilita molt la integració amb l'applicació i el deployment.
    • Utilitzem Node peró només quan volem pujar algun trigger a la BBD (Firebase functions)

    Diagrama arquitectura WebRTC

    WebRTC, también conocido como Web Real-Time Communications, es un proyecto de código abierto – promovido por Google, Mozilla y otros – que permite comunicaciones en tiempo real sin plug-ins a través de una API Javascript. Facilita las aplicaciones de llamadas de voz, chat de video y compartimiento de archivos entre navegadores.

    Diagrama BBDD

    La principal característica de la Realtime Database de Firebase és que es basa en un arbre JSON gegant, el que vol dir que no tenim una típica estructura de taules amb entitat i relació. Per això, hem optat per fer servir l'estructura de dades més plana que hem pogut. D'aquesta manera, quan volem arribar a alguna dada com per exemple, els grups als quals pertany un usuari o alguna trucada que té, no hem d'entrar a l'objecte sencer d'usuari, passant per totes les sub-col·leccions que conté. Si no que només amb l'Id de l'usuai podem arribar ràpidament a l'objecte que ens interessa sense passar per cap col·lecció innecessària. Diagrama en gran

    Wireframes 📱✏️

    Wireframes al Figma
    Login de la aplicación, requiere de email y contraseña, en caso de no disponer puedes registrarte.
    Pantalla de registro, debes completar el correo, nombre, apellido/s, nombre de usuario y contraseña para poder crear una cuenta.

    Pantalla principal, aquí se muestran las últimas novedades en cuanto a publicaciones de usuarios a los cuales sigues, constan del avatar del propio usario, su displayname, un gif/foto describiendo el directo que realizarán, numero de likes y comentarios, y cuanto hace que fue publicada.

    Pantalla del perfil, desde aquí puedes cerrar la sesión, subir una foto para ponertela de perfil, modificar tu descripción, nombre, apellido/apellidos y nombre de usuario.
    Para cambiar cualquier campo excepto descripción deberás introducir la contraseña.

    Pantalla de búsqueda, desde aquí podras buscar entre todos los usarios de la aplicación y decidir a quien seguir dándo click en el boton de follow.
    La búsqueda és en tiempo real por lo tanto no deberás darle a ningún botoón para hacer submit, simplemente a medida que vas escribiendo se van filtrando dichos resultados.


    Pantalla de llamada, desde aquí podrás establecer una llamada con alguien a quien sigas.
    Tienes las opciones de colgar, silenciarte,desactivar la cámara y cambiar esta de frontal a interior.

    ⚠️ **GitHub.com Fallback** ⚠️