Skip to content
This repository has been archived by the owner on Feb 17, 2024. It is now read-only.

CodeursEnSeine/cfp-2015

Repository files navigation

Call for Paper application for Lean Kanban France (from Devoxx)

cfp-leankanban-fr

Original author: Nicolas Martignole @nmartignole

English

The CFP was originally created in 2014 for Devoxx France. Implemented with Scala, the CFP uses the Play Framework v2.2.3 and Redis 2.8 to persist datas. The application focus on simplicity and pragmatism.

How to set-up a local and friendly developer environment ?

optional but recommended for better user experience:

  • Install ElasticSearch
  • Create Github App and configure OAuth
  • Create a Google App and configure OAuth

What do I need?

To work on a local CFP, you don't need to configure the Github,Google or LinkedIn OAuth application. You can just start a local version of the CFP, and configure later those components. Elastic-search is not required, but you won't be able to search from the CFP Admin panel

Where do I start?

First things first, you need to set-up your own conference. To do so, Frederic Camblor implemented a generic class that contains most (but not all) importants details. Check ConferenceDescriptor.scala. This file defines the configuration of your own conference.

You can then also translate and check messages/messages.fr from the conf file

In term of Git, how can I push a new feature?

The main development branch is dev. It's either Devoxx FR or Devoxx BE. It' an out-of-the-box ready to use conference. This is also where I try to collect all features from all contributors.

I created a branch dev-france for current development regarding Devoxx France. I did the same for BE. Depending if we're in november or march, I use one or the other as my main active branch.

I work with one feature per branch, then do local merge.

When you want to update your local branch (for instance, dev-poland) you should :

- do a checkout of dev
- do a git pull --rebase on dev
- switch to dev-poland
- do a git pull --rebase from dev to dev-poland so that you keep your local updates

For Pull request, see https://www.atlassian.com/git/tutorials/making-a-pull-request/

French

Le CFP de Devoxx France est codé en Scala, avec le framework Play 2.2.3. Les données sont persistées sur Redis 2.8.

J'ai écris cette application en prenant soin de rester simple, pragmatique et productif.

Caractéristiques et idées du nouveau CFP :

  • Authentification et inscription possible via OpenID (Google et Github)
  • Utilisation du format Markdown pour saisir sa proposition de sujet
  • Les photos des speakers sont tirées du site Gravatar
  • Importation du profil Google+ ou Github pour accélérer la création du profil
  • Pas de framework JS côté client sauf si cela devient une nécessité
  • Du code Scala simple et facile à lire

Installer un environnement de développement local

L'installation d'un environnement de dév est simple et s'effectue en quelques étapes :

  • installer Play 2.2.3
  • installer Redis 2.8.4
  • configurer son serveur Redis pour être "slave" de la prod
  • récupérer le code source du projet CFP Devoxx France de Bitbucket
  • lancer et commencer à contribuer

Installation de Play 2.2

Pré-requis : Java 7 fortement conseillé pour des raisons de performances.

Installation de Redis 2.8.4

Pré-requis : les utilitaires make, gcc correctement installés via XCode ou brew.

Je déconseille de tester les installations via Brew, qui ne sont pas correctement configurées. Vous allez perdre du temps.

Configurer votre serveur Redis

Lorsque vous développez sur votre machine, nous allons utiliser un serveur Redis local afin de pouvoir y écrire nos données, sans perturber la production. Cependant, un des points forts de Redis, c'est qu'il est possible de synchroniser son serveur local avec un serveur Redis distant. Pour cela, nous allons déclarer que la prod, le serveur Redis hébergé à distance, est MASTER. Votre installation de Redis locale sera donc SLAVE de ce serveur. Redis synchronise rapidement, et vous aurez donc en permanence une copie de la prod sur votre machine locale.

Pour cela, il faut utiliser le fichier conf/redis-devoxxfr.conf que j'ai placé dans le répertoire conf du projet Play2. Prenez ce fichier, copiez-le vers le répertoire par défaut de Redis, /usr/local/etc sur MacOS X.

Vous pouvez alors démarrer le serveur redis local avec la commande suivante :

redis-server /usr/local/etc/redis-devoxxfr.conf

Pour arrêter proprement le serveur, il suffit d'envoyer la commande SHUTDOWN au serveur :

redis-cli -p 6363 SHUTDOWN

Vous pouvez vous amuser avec votre serveur Redis en local avec l'utilitaire "redis-cli"

Celui-ci permet d'effectuer des commandes, je vous invite à suivre le petit tutorial http://try.redis.io/ pour mieux comprendre.

Reporter un bug

Le projet est hébergé sur Bitbucket

Installer sa propre version du CFP

Imaginons que vous êtes Breton et que vous souhaitiez installer ce CFP pour votre conférence :-)

Pour pouvoir faire tourner en production votre propre application du CFP, il est nécessaire de configurer différents éléments dans le fichier application.conf de Play 2.2.

Voici ce qu'il vous faut

Voici ce que vous devez configurer :

  • Renommez le fichier application-please-customize-me.conf en application.conf

  • Générez une chaîne de caractère pour la sécurité de l'application

    application.secret="a_unique_secret"

  • Configurez le serveur SMTP en prenant les paramètres de Mailjet

  • Configurez la partie Github

  • Configurez la partie Google pour l'authentification OAuth2.0

  • Configurez enfin le serveur Redis. Prenez soin de configurer un mot de passe très long pour votre serveur Redis

  • Configurez enfin l'adresse d'un serveur ElasticSearch

Installer sa propre version du CFP (2)

Imaginons que vous êtes à moitié Breton et que vous souhaitiez installer ce CFP pour votre conférence :-) mais que n'avez pas encore eu le temps monter en compétence sur docker.

Pour pouvoir faire tourner en production votre propre application du CFP, il est nécessaire de configurer différents éléments dans le fichier application.conf de Play 2.2.

Voici ce qu'il vous faut

  • un compte Mailjet pour l'envoi SMTP des emails transactionnels

  • un compte Github pour pouvoir créer une clé API pour l'authentification OpenID. Voir [https://github.com/settings/applications](cette page)

  • créer une application via votre compte Google sur https://cloud.google.com/console#/project . Configurez une URL pour le développement, comme http://localhost:9000/ et une URL de prod comme http://cfp.devoxx.fr/

  • mettre un mot de passe compliqué et long pour le serveur Redis Voici ce que vous devez configurer :

  • Renommez le fichier application-please-customize-me.conf en application.conf

  • Générez une chaîne de caractère pour la sécurité de l'application

    application.secret="a_unique_secret"

  • Configurez le serveur SMTP en prenant les paramètres de Mailjet

  • Configurez la partie Github

  • Configurez la partie Google pour l'authentification OAuth2.0

  • Configurez enfin le serveur Redis (127.0.0.1). Prenez soin de configurer un mot de passe très long pour votre serveur Redis

  • 127.0.0.1 pour l'adresse d'un serveur ElasticSearch

Ensuite, vous avez un dossier "ansible" qui vous permet d'initialiser un serveur avec :

  • un elastic search
  • un redis
  • un nginx
  • l'upload de la version dist du projet cfp.

Pour cela :

  • installer ansible (brew ansible sous mac, apt-get ansible sous linux)
  • à la racine, lancer un "activator dist"

Ensuite dans le dossier ansible :

  • créer un fichier inventory avec les information de votre serveur
  • lancer ansible-playbook cf-playbook.yml -i inventory

Il y a encore un bug ds le script pour lancer le projet, pour le momment connecter vous sur le serveur et lancer le à la main.

Bonus, initialiser un admin en mode hacker :

  • s'inscrire en tant que speaker
  • se connecter sur le serveurs redis.
  • "AUTH "
  • lister les clef (et voir le uuid) : "KEYS *"
  • ajouter les droits: "SADD Webuser:cfp " puis "SADD Webuser:admin "

Contributeurs

Utilisé par

  • Devoxx France
  • Devoxx Belgique
  • Devoxx UK
  • Devoxx Poland
  • BDX.io
  • Scala.io
  • BreizhCamp
  • Lean Kanban France

Hébergement

Le CFP de Devoxx France est hébergé sur la plateforme http://www.clever-cloud.com

J'utilise ente.io pour la partie Redis, via CleverCloud. Pour Elasticsearch, j'ai une machine dédiée chez Online.net, sur laquelle j'ai du docker avec les 4 Elasticsearch pour les 4 CFP de Devoxx.