Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Android] [BETA] SpotRoom - chat géolocalisé

7 novembre 2018 à 18:32:53

EDIT : Vous trouverez le lien de la BETA à cette adresse !

Vous avez toujours eu envie de pouvoir discuter avec les gens dans les parages ? De trouver des amis lors de vos sorties ? Ou bien encore d’organiser et participer à des événements ?

Découvrez SpotRoom l’application mobile qui vous permet de communiquer avec les gens qui sont près de vous, ainsi que d’enrichir vos endroits préférés en y créant des chats et des événements localisés.

Vous voulez être unique ? Customisez entièrement votre avatar et changez de pseudo à chaque connexion !

Développement

Nous sommes deux développeurs et faisons ce projet sur notre temps libre. Voilà pourquoi nous y sommes depuis…. 2015 ! Mais on touche au but promis, il ne reste que du bugfix !

What's next ?

L’application et les serveurs sont pratiquement finis, et la béta est maintenant disponible !

Toutes les informations utiles vous seront communiquées ici, ou sur nos réseaux sociaux (facebook et instagram)!

N'hésitez pas à poser toutes vos questions si vous en avez, et nous faire toutes les remarques qui vous passent par la tête !

Résumé des principales features

En attendant d'avoir le tuto fini côté application, voici quelques explications !

  • Chat géolocalisé

Le chat permet de parler à toutes les personnes présentes dans le rayon spécifié. Le chat est donc basé sur des coordonnées GPS de tous les interlocuteurs, et se déplace dynamiquement de façon à respecter toutes les les conditions (rayons) des participants.

Le chat est un espace libre qui n’est pas dédié à un lieu spécifique, de plus il n'y a pas d'historique des messages.

Idéal pour : échanger avec les personnes des alentours. Chattez avec des voisins, demander des conseils dans un quartier, etc.

  • Communauté

Les communautés sont comme le chat sauf quelles sont fixes. Elles sont définis par un centre et un rayon que l’utilisateur renseigne à sa création.

Pour pouvoir accéder à une communauté il faut être présent dans le rayon de cette dernière pour pouvoir s’y connecter et chatter.

Lors de se création une communauté comporte donc un centre, un rayon ainsi que des informations supplémentaires : titre, description et photo.

Idéal pour : Créer une zone d’échange dans un lieu spécifique. Par exemple dans un lycée, sur un lieu de travail, dans une colocation etc.

  • Evènement 

Un événement est une communauté sauf que ce dernier à une date de début et une durée de vie limité (12h max pour le moment).

Il permet donc de créer et d’organiser (invitation, itinéraire…) un évenement classique et lorsqu’il commence une zone de chat apparait à cette endroit.

Idéal pour : événement entre amis - plus besoin de créer un groupe Facebook, de partager la position sur Whatsapp, et de chercher à savoir qui est présent. Pour les concert ou autre gros événement publiques cela permet d’échanger et de se retrouver.

  • Monstres

Afin d’égayez l’application et de se rendre unique, un monstre vous est associé lors de votre première connexion. Vous pouvez le customiser comme bon vous semble afin que ce dernier colle au mieux à votre personnalité.

Ne vous inquiétez pas, on sait que vous aimez vous rincer l’œil, voilà quelques screens !

-
Edité par arno21 9 janvier 2019 à 14:28:12

  • Partager sur Facebook
  • Partager sur Twitter

Mon projet: SpotRoom. N'hésites pas à passer dire ce que tu en penses !

7 novembre 2018 à 20:16:14

Salut !

Quelle preuve de motivation, presque 3 ans de développement :waw:

Je suis curieux de savoir :

  • En quoi est codée l'application ? React-Native, Ionic, Java ... ?
  • Quelle technologie a été utilisée pour les chats ? WebSockets, HTTP... ?

Bon courage pour la suite ;)

  • Partager sur Facebook
  • Partager sur Twitter
7 novembre 2018 à 21:42:12

Hello <?php?> !

Je suis le deuxième créateur de l'appli  :magicien:


En réalité c'est pas 3 ans de travail continue. On a commencé le projet en fin d'étude mais on s'y prenait clairement pas bien et après quelques pauses de quelques mois et surtout des expériences professionnelles on a repris le projet à fond. On est reparti de zéro et on a adopté de vraies méthodes de travail et ça a été très efficace !


Donc au final on a repris / refait l'application depuis moins d'un an sans interruption mais avec de l'avance parce qu'on a pas jeté tout ce qui avait fait avant.

Moi je fais l'application et on a décidé dans un premier temps de faire en Android natif donc en Java. Arno code le reste coté serveur, je lui laisse expliquer cette partie


Merci de tes encouragements !

  • Partager sur Facebook
  • Partager sur Twitter

Mon application : SpotRoom. N'hésite pas à faire un tour :)


 
 

7 novembre 2018 à 21:54:28

Hello <?php?> 

Tout d'abord merci de l’intérêt que tu portes au projet !


Pour ce qui est du serveur, c'est tout en JAVA aussi (c'est en réalité un problème pour le portage IOS mais bon..). Nous avons un dispatcheur qui redirige les clients vers d'autres serveurs réparti dans le monde, en fonction de la charge CPU et/ou du ping. Pour l'instant nous en avons deux en Europe. Nous avons fait le choix de ne pas utiliser beaucoup d'API pour avoir le maximum la main sur notre environnement. Nous utilisons quand même une API réseau pour plus de souplesse. Le chat est donc fait avec des sockets en TCP.

Les serveurs sont (en théorie) threadsafe et nous pouvons héberger 7-8k clients actifs sur un serveur de 2Go de RAM. Tous les stresstests ont été faits sur des VPS de pré-production.

Nous possédons aussi une base de données (MySQL) - rien de spécial à mentionner sur ce point.


J'espère qu'on a répondu à tes questions, n'hésites pas à regarder les screenshots je les ai ajoutés !

Bonne soirée !

-
Edité par arno21 7 novembre 2018 à 21:55:06

  • Partager sur Facebook
  • Partager sur Twitter

Mon projet: SpotRoom. N'hésites pas à passer dire ce que tu en penses !

8 novembre 2018 à 19:01:38

Merci pour ces réponses. Les screens sont magnifiques !

Je comprends tout à fait la volonté d'utiliser le moins d'API possible ;) Mais même sur l'application Android vous n'avez utilisé aucune librairie pour le chat ? Je veux dire vous avez recodé entièrement le dock des smileys, la possibilité d'envoyer des photos... ?!

Aussi, qu'est-ce qui fait office de dispatcheur ? Ça m'intéresse beaucoup :p

  • Partager sur Facebook
  • Partager sur Twitter
8 novembre 2018 à 19:12:09

Hello !

Merci pour ta remarque :)

Concernant l'application je laisse Martin te répondre. Je peux juste te dire que nous n'avons pas implémenter la possibilité d'envoyer des photos pour deux raisons. La première est qu'il ne nous est pas possible de modérer ces dernières, et du fait de la possibilité d'anonymat nous avons peur des dérives. La deuxième est plus une question financière : le stockage coûte cher. Nous continuons à réfléchir à ce point, et à terme nous implémenterons les images dans le chat.

Concernant le dispatcheur, tu peux voir ça comme un serveur d'authentification. Le client va se connecter au dispatcher, ce dernier va lui assigner un token et regarder la liste des serveurs optimales en fonction de plusieurs paramètres (distance par rapport au client, CPU ...). Quand le couple de serveur est trouvé (nous avons un serveur pour le chat classique, et un autre pour les communautés), les IP sont envoyées au client et ce dernier peut s'y connecter. 

Si tu es intéressé par l'architecture un peut plus détaillée je peux te faire un petit schéma :)

  • Partager sur Facebook
  • Partager sur Twitter

Mon projet: SpotRoom. N'hésites pas à passer dire ce que tu en penses !

9 novembre 2018 à 14:03:16

Salut <?php?>,

Comme tu l'as dit on essaye d'être le moins dépendant possible des APIs.

Pour la gestion du chat on a tout fait maison, ça nous offre pas mal de liberté et ça évite surtout de devoir payer car les APIs chat de qualité sont rarement gratuites :) Par contre ça rajoute une dose de travail assez conséquente...

  • Partager sur Facebook
  • Partager sur Twitter

Mon application : SpotRoom. N'hésite pas à faire un tour :)


 
 

5 décembre 2018 à 11:20:14

Hello !

Petite update concernant l'avancé du projet !

Nous avons travaillé d'arrache pied ces dernières semaine pour respecter le délai qu'on s'est imposé. Voilà ce qui a été fait côté serveur :

  • Caching au niveau du dispatcher - on économise pas mal de requêtes et de calcul lors du CPU check et de l'attribution des clients à un serveur.
  • Sécurité sur les packets pour enlever tous les potentiels bufferOverflow
  • Gestion de l'encodage - tous les smileys sont maintenant pris en charge
  • Optimisation en tout genre au niveau des algos + connecteur DB. On a gagné de précieuses (milli)secondes lors de certaines requêtes !

Côté application, je ne vais pas rentrer dans les détails mais nous sommes en train de corriger tous les bugs bloquants et optimisation concernant le workflow des packets.

Je vous tiendrais au courant lors de l'arrivée de la béta, stay tuned !

-
Edité par arno21 5 décembre 2018 à 11:25:10

  • Partager sur Facebook
  • Partager sur Twitter

Mon projet: SpotRoom. N'hésites pas à passer dire ce que tu en penses !

5 décembre 2018 à 18:23:18

Martinpinpin a écrit:

Salut <?php?>,

Comme tu l'as dit on essaye d'être le moins dépendant possible des APIs.

Pour la gestion du chat on a tout fait maison, ça nous offre pas mal de liberté et ça évite surtout de devoir payer car les APIs chat de qualité sont rarement gratuites :) Par contre ça rajoute une dose de travail assez conséquente...


Recemment j'ai trouver : Chatkit Pusher. Un api qui permet la creation d'instance -> chatroom -> user. Avec l'api ( offert sur plusieurs langage ) tu as access au hooks du genre "OnUserConnect", "OnUserDisconnect" , "OnMessageReceived". L'API semble tres complet et permet 500k message par mois + 5000 user concurrent pour la version gratuite ( ce qui est plutot pas mal ! )
  • Partager sur Facebook
  • Partager sur Twitter
6 décembre 2018 à 11:14:37

Hello Zérotisme,

Merci pour la découverte ! Effectivement, cette API à l'air vraiment pas mal pour lancer rapidement un POC / appli de chat. Cependant nous ne voulons pas externaliser la feature principale de notre application qui est - surprise :p -  le chat.

Nous avons toutes les compétences requises (et le temps) pour créer le chat nous même, ce qui permet de nous affranchir de tout tiers sur le projet. On a donc la main pour toutes sortes de customisation, optimisations en tout genre au niveau du réseau et le mécanisme de dispatcheur maison nous permet d'ajouter et d'enlever des serveurs à la volée en fonction du nombre d'utilisateurs. Même à plus bas niveau, nous pouvons sérialiser les packets comme on veut, les alléger etc...

Donc au prix d'un investissement de temps en amont on économise du temps de dev' lors des évolutions, nous avons la main sur nos données et nous n'avons rien a payer en plus de nos serveurs.

Bonne journée !

(EDIT: et en plus en temps que dev', c'est super intéressant à faire :D )

-
Edité par arno21 6 décembre 2018 à 11:15:37

  • Partager sur Facebook
  • Partager sur Twitter

Mon projet: SpotRoom. N'hésites pas à passer dire ce que tu en penses !

7 janvier 2019 à 14:35:36

Hello, bonne année 2019 !

Pour notre part nous commençons fort puisque la béta est maintenant disponible !

N'hésitez pas à la tester et à nous faire des retours, nous serons très réactif dans le bug fix !

Bonne journée à tous :)

-
Edité par arno21 8 janvier 2019 à 10:52:06

  • Partager sur Facebook
  • Partager sur Twitter

Mon projet: SpotRoom. N'hésites pas à passer dire ce que tu en penses !

8 janvier 2019 à 11:21:35

Pour information dans la béta on peut se connecter avec Facebook mais on ne peut pas sélectionner de photos pour le moment... en effet Facebook a durci ces conditions d'autorisations, on doit faire contrôler l'application et faire une demande écrite pour chaque autorisation dont on a besoin (Nom, Photos... etc) ce qui est relativement chronophage :'(

Autrement nous allons faire, incessamment sous peu, une description détaillée des différentes features de l'appli pour que ce soit plus clair ;)

  • Partager sur Facebook
  • Partager sur Twitter

Mon application : SpotRoom. N'hésite pas à faire un tour :)


 
 

8 janvier 2019 à 19:21:25

Je viens de tester sur Android et impossible d'utiliser l'application :

- Je clique sur le bouton sans connexion Facebook

- L'application demande l'autorisation de localisation, que j'autorise.

- Une popup s'affiche disant qu'il y a un problème avec les GPS et de tenter à nouveau.

Pourtant mon GPS est bien activé et la permission bien donnée. En attendant bravo pour le travail (enfin le début que j'ai pu voir !). Les designs sont propres et les animations sympas :p

  • Partager sur Facebook
  • Partager sur Twitter
9 janvier 2019 à 13:47:44

Hello <?php>,

Tout d'abord un grand merci à toi d'avoir testé l'application et de nous avoir fait un retour !

Ah... d’où l'importance de faire une béta :p

Tu es le premier à nous remonter ce bug mais je dois dire qu'on a eu pas mal de soucis avec l'implémentation de l'obtention des coordonnées GPS sur Android donc ça m'étonne qu'à moitié que ce soit l'origine du bug.

J'avais refais le code du GPS en natif Android et ça avait résolu nos soucis depuis on en avait plus. On a fait tester l'application à des proches et ils n'ont pas eu le problème que tu as rencontré. Pourrais tu me partager un peu plus d'information concernant ton environnement ? (Téléphone, conditions d'utilisation : en intérieur ou en extérieur, en wifi ou pas)

Je vais refaire des tests dès ce soir pour essayer de reproduire le soucis et le corriger :)

Aujourd'hui si on ne réussit pas à accéder à la position de l'utilisateur on l'empêche de continuer car toute l'appli est basée dessus. On avait aussi pensé au fait de ne pas empêcher le lancement de l'appli, dans ce cas la toutes les personnes concernées se retrouveraient dans les "limbes" de l'application aux coordonnées 0,0 (dans l'océan Atlantique) :diable:

Encore merci, je te tiendrai au courant si j'arrive à reproduire et corriger !

  • Partager sur Facebook
  • Partager sur Twitter

Mon application : SpotRoom. N'hésite pas à faire un tour :)


 
 

9 janvier 2019 à 14:25:36

Hello !

Voici une explication assez résumée des différentes fonctionnalités de l'appli ! Histoire de ne pas vous perdre en attendant qu'on finisse les screens de tuto !

  • Chat géolocalisé

Le chat permet de parler à toutes les personnes présentes dans le rayon spécifié. Le chat est donc basé sur des coordonnées GPS de tous les interlocuteurs, et se déplace dynamiquement de façon à respecter toutes les les conditions (rayons) des participants.

Le chat est un espace libre qui n’est pas dédié à un lieu spécifique, de plus il n'y a pas d'historique des messages.

Idéal pour : échanger avec les personnes des alentours. Chattez avec des voisins, demander des conseils dans un quartier, etc.

  • Communauté

Les communautés sont comme le chat sauf quelles sont fixes. Elles sont définis par un centre et un rayon que l’utilisateur renseigne à sa création.

Pour pouvoir accéder à une communauté il faut être présent dans le rayon de cette dernière pour pouvoir s’y connecter et chatter.

Lors de se création une communauté comporte donc un centre, un rayon ainsi que des informations supplémentaires : titre, description et photo.

Idéal pour : Créer une zone d’échange dans un lieu spécifique. Par exemple dans un lycée, sur un lieu de travail, dans une colocation etc.

  • Evènement 

Un événement est une communauté sauf que ce dernier à une date de début et une durée de vie limité (12h max pour le moment).

Il permet donc de créer et d’organiser (invitation, itinéraire…) un évenement classique et lorsqu’il commence une zone de chat apparait à cette endroit.

Idéal pour : événement entre amis - plus besoin de créer un groupe Facebook, de partager la position sur Whatsapp, et de chercher à savoir qui est présent. Pour les concert ou autre gros événement publiques cela permet d’échanger et de se retrouver.

  • Monstres

Afin d’égayez l’application et de se rendre unique, un monstre vous est associé lors de votre première connexion. Vous pouvez le customiser comme bon vous semble afin que ce dernier colle au mieux à votre personnalité.

  • Partager sur Facebook
  • Partager sur Twitter

Mon projet: SpotRoom. N'hésites pas à passer dire ce que tu en penses !

10 janvier 2019 à 10:46:34

Hello <?php>,

J'ai analysé le problème que tu as rencontré hier et j'ai fais une MAJ de l'application dans laquelle j'ai rajouté un traitement spécifique dans le cas ou ça arrive. On est dorénavant iso avec ce que la doc Android préconise donc j'espère que ça fonctionnera pour toi :D

  • Partager sur Facebook
  • Partager sur Twitter

Mon application : SpotRoom. N'hésite pas à faire un tour :)