Panayotis Matsinopoulos

Senior Software Engineer: Love Creating Software, Taking Entrepreneurial Risks, Teaching Computer Programming & Blogging here or in many other places

E-TRAVEL S.A. Customer Relationship Management Application

Live Demo

Don’t have a live demo link here, because it is an internal application.

Application Purpose

Customer Relationship Management system for one of the biggest Online Travel Agencies in Europe, selling their services all around the world actually. The used to sell, and still do, tickets for flights, mainly, but also other travel-related services.

Features included:

  1. Integration with the front-end application that was used to sell the tickets.
  2. All operations employees (180 at the moment) use this application to manage customer requests.
  3. A workflow management system drives the agents carry out the correct actions to fulfill a request.

Challenges

The biggest challenges for me on this project, things that I really enjoyed and learned new stuff:

  • Started a project on blank paper in a business domain I was not familiar with. The flight tickets business, although might not sound like, it is quite complex, especially when things do not go as expected. When flight changes or cancellations take place, for example. So, the business complexity was big challenge for me.
  • Migration from the old CRM to the new one and 0-downtime on business interruption.
  • Integration with GDS (Global Distribution System) Amadeus + Sabre. Very difficult task to accept and process their file based interfaces.
  • Automation of communication with the customers. Timely-sensitive information had to be sent to customers on various points of their request processing.
  • Build API to support integration of CRM with other internal applications.

Technologies Used

  • Deployed on Amazon Web Services
  • MySQL database
  • Ruby on Rails
  • Javascript & jQuery
  • Twitter Bootstrap 2.0
  • Solr

Ruby on Rails Special Considerations

  • Ruby 1.9
  • Rails 3.2
  • SASS
  • paper_trail: To keep versions of our data
  • ancestry: To organize records as a tree structure
  • dalli: To use Memcache
  • cancan: For authorization
  • sunspot_rails: To integrate with Solr
  • delayed_job: For processing tasks in the background
  • rest-client: For consuming Web services
  • ar-octopus: For using more than one database at the same time, replication
  • aws-sdk: For integrating with Amazon Web Services
  • paperclip: For file uploads
  • rabl: To easily build JSON APIs

For testing:

  • RSpec
  • Factory Girl
  • VCR
  • Cucumber
  • Capybara

Comments