[rationalK] Rappels et notifications

Nous avons mis en place un moteur performant et robuste de rappels et notifications dans rationalK. Le fonctionnement est le suivant :

  • Chacun de vos documents peut contenir des champs dates par exemple :
    • Un contrat dispose d’une date de fin
    • Une tâche dispose d’une date limite
    • Un document applicable dispose d’une date d’entrée en vigueur
  • Vous pouvez configurer pour chacun des ces champs des rappels
    • Vous choisissez x jours ou x heures avant ou après la date
    • Vous choisissez qui est notifié : un groupe de personne ou un utilisateur unique
    • Vous choisissez le type de notification : email ou sms

L’utilité des rappels dans le travail quotidien n’est plus à re-démontrer mais son utilisation dans un logiciel de gestion documentaire est une petite révolution.

Les dernières mises à jour de rationalK

Ces dernières semaines ont été fructueuses en termes de nouveaux développement de l’application rationalK. Voici les principales nouveautés:

  • Un  tout nouveau dashboard qui vous montre en un clin d’oeil tous les documents les plus utiles.
  • La possibilité de rédiger de long documents et de les visualiser dans un format similaire à wikipedia.
  • Affectation des tâches hyper facilitée sans quitter votre redaction de PV de séance ou votre bloc note. Par exemple :

    Redaction de tâches facilitée
  • Modélisation et visualisation des processus de travail. L’avantage de le faire dans rationalK est la possibilité de lier à chaque activité du processus, l’instruction de travail qui y correspond. C’est la vue “méthode” de la gestion du savoir.
  • La création de dossier dynamiques : des dossiers personnels ou publique qui contiennent un ensemble de documents sur un même thématique.
  • La visualisation des pdfs directement dans l’interface sans avoir à les télécharger
  • Une vue arborescente des documents avec les mots-clés et les auteurs
Vue arborescente
  • Un meilleur log de tout ce qui se passe sur la plateforme
  • Simplification du système d’upload de données depuis excel
  • Une meilleure file d’attente pour les emails qui partent de rationalK (notifications, etc) afin d’éviter les embouteillages et d’envoyer les emails prioritaire en premier.
  • Un nouveau système de commentaires avec mentions “@Thomas” pour attirer l’attention d’un collègue sur un sujet

Et quelques essais encore en beta :

  • Le chatbot rationalK qui répond à vos questions sur la base de vos données!
  • Le mail-to-doc : vous pourrez envoyer un mail à votre installation rationalk par exemple masociete@rationalk.com et le contenu du mail sera compris par le logiciel et directement converti en document rationalK (les pièces jointes aussi). Plutôt pratique pour ceux qui utilisent rationalK comme une GED (gestion électronique de document)

CRM école de danse et centre fitness

Un gestionnaire de client et de facturation pour votre école de danse et/ou votre centre de sport et fitness.

Fonctionnalités

  • Enregistrer toutes vos informations client
  • Gérer les participants pour chaque séance
  • Envoyer des emails groupés
  • Gestion complète de la facturation et de la comptabilité
  • Différents taux de TVA possibles
  • Gérer vos cartes client avec un système de crédit pour chaque cours
  • Recevez dans votre boite mail tous les matins, la liste des gens ayant leur anniversaire aujourd’hui et la liste des gens dont l’abonnement expire
  • Exporter toutes vos données au format excel
  • Prenez les photos de vos clients directement depuis votre smartphone ou tablet
  • Et beaucoup plus

Comment l’essayer ?

Inscription

Tarif

Gratuit.

A description of my coding environment

The context

I code simple projects.
Let say that the project is hosted at http://thomasdt.com/myproject
Most of the time, I am the only developper. I code from different platform : iPad, Pc and Mac.

My solution

I will detail here my coding process

I Use dropbox
I work in a folder myproject_dev inside dropbox folder
These is where the last version of my development is located
To edit the file depending on the platform, I use :

I use beanstalkapp (http://beanstalkapp.com) as my private git repository (a free account is ok)

When I would like to test live my code : I push my dev files from my dev folder to beanstalkapp

beanstalkapp keep a version of all my work help my colleagues to review the code.

beanstalkapp is set up to automatically deploy my dev file to a ftp server.

I use ovh and a public dev folder http://thomasdt.com/myproject_dev

This is a php-sql project so :

  • I maintain a duplicate of the public database
  • If you are browsing the application through :
    • http://thomasdt.com/myproject, the php files are pointing to the live database
    • http://thomasdt.com/myproject_dev, the php files are pointing to the test database

When I would like to push the dev to the live site. I commit my files with the keyword: [deploy: production] and the files are also pushed to the production ftp server.

If I need to alter the sql database structure, I do it in a sql.php file rather than in phpmyadmin. This sql.php file is automatically triggered (like a web hook) by beanstalkapp just before deploying the file to the development and production server.

Things I could improve

  • On windows, I am pushing files to git with Git Bash and this is not optimal. I could find a better IDE with integrated git.

CRM for Dance School and Fitness Club

Hi, In the last year, I have been developing a CRM for some very good friends that own a salsa school and a fitness club in Lyon, France. The software fits perfectly their needs. After some moments of hesitation, I have decided to write a public version so that any interested school can give it a try.

Features

  • Store all your customers data
  • Manage your classes and attendees
  • Send group emails
  • Fully billing system to send your customers their bills
  • Manage cards with point system for non-regular customers
  • Get customers birthday reminders
  • Get bad-payers list in your mailbox every morning
  • Export function
  • Take customer pictures directly from Smartphones and tablets into the CRM
  • A lot more…

How to try it ?

Signup

Pricing

I don’t know yet… So let’s say that this will be free as long as it is in beta version. Anyway, the basic version will not cost more than 200$/year.

How to search in databases spread all over the company

The problem

Knowledge is spread all over the company and hidden inside excel files. During the development of new products it is crucial to have a state of the art of what has been already done to save money.

The context and some contraints

  • Engineering department
  • Each engineer manages its own formatted list of product datas using excel

    Examples of lists
    Examples of lists
  • The headers may have different names (example : list 1 refers to temperature as  “Max Temperature” while list 2 refers as “T”)
  • The values may be in expressed in different units (exemple : list 1 expresses the temperature in °C while list 2 in Kelvin)
  • No extra work for the engineers

My solution

  1. Using a scheduled task, the different excel lists are uploaded from the windows file system onto the company server

    Scheduled Task
    Scheduled Task
  2. Using a server scheduled task (cron), the excel files are converted into sql format
    List 1 in sql format
    List 1 in sql format

    List 2 in sql format
    List 2 in sql format
  3. A conversion sql database helps to uniform the parameters designations and units
  4. The result is quite powerful

    Result from the master search
    Result from the master search

Conclusion

With this method, we authorise the engineers to work with their own excel files and still provide a solution to search among all the different files.

Future improvements

  • Make sure that there is an unique identifier for each excel lines so that any project can make reference to it.
  • Auto update the sql databases structure to match structure changes in the excel files.

RFID pour controle d’accès de salle de sport ou de danse

Voici mon dernier petit développement. Un système de contrôle d’accès par badge pour salle de sport ou salle de danse.

Principe :

Chaque client à une carte associée à son profil. Chaque fois que le client veut rentrer dans l’école, il passe sa carte devant un système autonome. Le système doit juste être branché à l’électricité. Le système dialogue avec un serveur qui renvoie l’image du client et toutes les informations associées à son profil. Le système est déjà couplé avec le CRM que j’ai développé mais vous pouvez aussi le coupler avec votre propre système de gestion client.

Démo :

Prochaines étapes :

Installation dans une école pilote

Si vous êtes intéressé, je le vends. Pour les tarifs : dokithonon@gmail.com

Rocket.pm, your everyday tool for logging projects activities

Rocket.pm is a Rocket for Project Manager

  • Log any activity related to your projects
  • Manage your todo list and log completed items
  • Assign task to your colleagues
  • Log Lessons Learned
  • Log Risk & Opportunities
  • Log the work hours and generate weekly time report
  • Generate Monthly Management Report (MMR)

You can use it here as a SaaS here : http://rocket.pm (it is free!)

Cool stuffs:

  • Fully smartphone responsive
  • Manage different users and admin
  • Manage all the project knowledge
  • Organize a document index from any xls/csv file

Screenshots:

More infos & screenshots soon.

Your feedbacks are welcomed

Brainstorming on communication in R&D department

The following notes came from a meeting that I had with colleagues on how to communicate efficiently within the department (R&D department)

Why do we have to communicate, why sharing knowledge ?

Business

  • Brainstorming and idea creation are facilitated
  • Duplicate work can be avoided
  • Decision can be taken faster and in a more efficient way (better alignment)
  • Faster and easier involvment of new colleagues
  • Living Experts knowledge is captured

Individual

  • People have access to the same level of information
  • The team feels as a team (people cohesion)

Target Audiences

A R&D department (technician, engineer, researcher and project manager). The people are not necessary  in the same office.

What & How

  • Technical Communication / non-Technical Communication
  • Spoken Communication / Unspoken Communication
  • Live Communication / On-demand Communication
  • Short, middle and long terms communication
  • Face-to-face meeting: Technical Day, Local Pulse
  • Web conference : Technical Meeting
  • Newsletter : Monthly Management Report
  • Reporting : Portofolio Management tool, project presentations, project planning, technical notes

Communication strategy

Process committee meeting

Who : A small group of three persons
What : Innovation process update, administrative process update
When : 3 times a year
Time frame : long terms
Benefit : workflow efficiency, faster work

Department Day

Who : the whole team
What : 1 thème (example : communication faire savoir), 1 day
When : Yearly
Time frame : long terms
Benefit : En plus de la thématique, le team building

Department Meeting

Who : The whole Team
What : Team communication on non-technical subjects, work climate analysis, general information
When : monthly
Time frame : short terms
Benefit : Communicate every day life’s problems

Technical Day

Who : The whole Team
What : All projects are discussed during 1 day in a neutral location. Difficulty due to high Volume of information. Interactive communication
When : Yearly
Time frame : Long terms
Benefit : Same level of knowledge on the current project progress

Technical Meeting

Who : The whole Team
What : 1 project is presented during 45 minutes and the audience can interact. To be experiemented.
When : Monthly
Time frame : Middle terms
Benefit : Interactive communication, OPTIONAL attendance, could lead to a technical handbook

Local Pulse Meeting

Who : The whole Team
What : 1 hours, 3 minutes per person, weekly log of the project (incl. Risk, decision, problems)
When : Weekly
Time frame : short terms
Benefit : Risk sharing, problem solving, resource allocation

Global Pulse Meeting

Who : 2 to 3 persons from each geographic site, we call them connectors
What : 1 hours, similar to pulse but global, format to be defined/experimented
When : monthly or weekly
Time frame : middle terms or short terms
Benefit : interactive global communication

Monthly Management Report

Who : The whole Team
What : Report current month achievement and updates
When : monthly
Time frame : middle terms
Benefit : information on-request

More relative to KM than to Communication

TPD Knowledge Transfert Session:

  • Experts are training new employees
  • People receiving the information should report the learning (Technical Note)
  • The expert review and sign the technical note

Actions and next steps

Risk : Overcommunication -> No time for « real » work

  • Test the different new communication vector and give feedback
  • Work on the most appropriate way for non disruptive communication
  • Example : notify people when a new document is created in the knowledge base
  • Understand on how people look for the information, to do so identify some « profils » to perform the study : Technician, researchers, managers, …
  • Work on how to train people to locate the information

A Contact Form 7 to Trello Process

The idea is to add a trello card to your trello board anytime you receive an email from your contact form 7 wordpress plugin.

Here is how you can do it :

add_action( 'wpcf7_mail_sent', 'your_wpcf7_mail_sent_function' );

function your_wpcf7_mail_sent_function($contact_form){
	$boardid='5040f5a3********d1c9ddc70';
	$listid='507f1*********a7a4885';
	$apiKey='6b93***********9146d740c2555798d8';
	$token='6a50b26d45736cfc***********91a29b9bfc7a8c';

	$posted_data = $contact_form->posted_data;
	$formid=$contact_form->id;
	if ($formid==2){
		// devis détaillé :
		$name="Demande de devis détaillé - ".$posted_data['url']."\n\n";
		$desc="De : ".$posted_data['your-name']." ".$posted_data['your-email'].""."\n\n";
		$desc.="Sujet : Demande de devis détaillé"."\n\n";
		$desc.="Société : ".$posted_data['societe']."\n\n";
		$desc.="Téléphone : ".$posted_data['tel']."\n\n";
		$desc.="URL : ".$posted_data['url']."\n\n";
		$desc.="Langue : ".$posted_data['lang']."\n\n";
		$desc.="Cible : ".$posted_data['cible']."\n\n";
		$desc.="Etat : ".$posted_data['etat']."\n\n";
		$desc.="Année de création : ".$posted_data['annee']."\n\n";
		$desc.="Facebook : ".$posted_data['facebook']."\n\n";
		$desc.="Twitter : ".$posted_data['twitter']."\n\n";
		$desc.="Mots clés :".$posted_data['keywords']."\n\n";
		$desc.="Budget : ".$posted_data['budget']."\n\n";
		$desc.="Informations supplémentaires : ".$posted_data['your-message']."\n\n";
		$desc.="Affilié :".$_COOKIE['from']."\n\n";
		$desc.="-- Ce email a été envoyé via formulaire de contact #".$formid." de xxx "."\n\n";
		add_to_trello($name,$desc,$listid,$boardid,$apiKey,$token);
	}
	if ($formid==3){
		// devis rapide :
		$name="Demande de devis rapide - ".$posted_data['url']."\n\n";
		$desc="De : ".$posted_data['your-name']." ".$posted_data['your-email'].""."\n\n";
		$desc.="Sujet : Demande de devis rapide"."\n\n";
		$desc.="Téléphone : ".$posted_data['tel']."\n\n";
		$desc.="URL : ".$posted_data['url']."\n\n";
		$desc.="Budget : ".$posted_data['budget']."\n\n";
		$desc.="Affilié :".$_COOKIE['from']."\n\n";
		$desc.="-- Ce email a été envoyé via formulaire de contact #".$formid." de xxx "."\n\n";
		add_to_trello($name,$desc,$listid,$boardid,$apiKey,$token);
	}
	elseif ($formid==4) {
		// Demande de rappel :
		$name="Demande de rappel - ".$posted_data['tel']."\n\n";
		$desc=$posted_data['tel']." souhaite être rappelé !"."\n\n";
		$desc.="Affilié :".$_COOKIE['from']."\n\n";
		$desc.="-- Ce email a été envoyé via formulaire de contact #".$formid." de xxx "."\n\n";
		add_to_trello($name,$desc,$listid,$boardid,$apiKey,$token);
	}
}

function add_to_trello($name,$desc,$listid,$boardid,$apiKey,$token){
	$data = array(
		'idList' => $listid,
		'name' => $name,
		'desc' => $desc
	);
	$card=cURL_POST_trello($data,'https://trello.com/1/cards/',$apiKey,$token);
}

function cURL_POST_trello($data,$url,$key,$token){
$ch = curl_init();
$questionmarkishere=strpos($url,'?');
if ($questionmarkishere){$char='&';}else{$char='?';}
curl_setopt($ch, CURLOPT_URL, $url.$char.'key='.$key.'&token='.$token);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_HEADER, false);
$body = curl_exec($ch);
$headers = curl_getinfo($ch);
//$result=array('headers'=>$headers,'body'=>$body);
curl_close($ch);
$result=json_decode($body);
return $result;
}