Application WebZapp.li (archives)

Programme TV en temps réel

Zapp.li est une application web d’affichage de programmes TV et de contenus associés provenant de multiples sources.

Projet personnel au long cours qui a déjà connu de nombreuses versions. Celle-ci est l’avant dernière version et n’est plus en ligne actuellement. N’hésitez pas à consulter la présentation de la dernière version à titre de comparaison.

Côté serveur, Zapp.li est une application en Python qui récolte et agrège son propre contenu de manière automatisée. Après récupération des programmes depuis un fournisseur XMLTV, l’application traite les données récoltées, alimente la BDD puis lance les premières taches asynchrones. Chaque programme est enrichi en fonction de son type progressivement via différentes APIs pour apparaître optimisé sur la grille live.

Côté front-end, une application Javascript (Backbone + MarionetteJs) permet l’affichage en temps réel des programmes dans la grille sans rafraîchissement du navigateur. L’application serveur met à disposition une API qui permet aux clients de s’initialiser en fonction de leurs besoins. Chaque chaîne de la grille écoute ensuite son propre canal PubSub et injecte les programmes entrants dans la grille. Les actions des utilisateurs (chats, favoris, zapp) sont elles aussi traitées en asynchrone puis répercutées sur tous les clients connectés instantanément.

 

Version mobile

 

Fonctionnalités

  • Traitement hebdomadaire de 50 000 programmes pour ~125 chaînes proposées
  • Push de notifications d’alertes sur tous types d’appareils
  • Design responsive compatible tablette et mobile
  • Bot Twitter annonçant les films 5 minutes avant qu’ils ne commencent (@zapp_li)
  • Taches asynchrones d’enrichissement de la base de donnée des programmes via diverses APIs (Allociné,)
  • Applications matérielles, objets connectés: télécommande sur base Arduino + émetteur infra-rouge connectée au réseau et permettant de zapper sur la TV directement depuis Zapp.li

 

Fiche technique

Backend

  • Application: microframework Python Flask, Gevent, WTForms
  • API interne: Flask-Restful
  • Base de données: MongoDB, SqlAlchemy + Sqlite
  • Taches asynchrones, MQ: Celery + Redis avec backend MongoDB
  • Communication: PubSub Redis, AJAX
  • APIs: Twitter, PushBullet, Allociné, Wikipédia

Frontend

  • Application: Backbone + MarionetteJs
  • librairies: RequireJs, Bootstrap, Moment, Lodash, JQuery, JQueryUI, Masonry
  • outils: NPM, Grunt, Bower, LESS
  • versioning: GIT





* Champs requis