Ivan Kulagin

My Ruby Portfolio

Instamotor Inc.

The project consists of two parts: main grape-based API backend and web crawler, gathering vehicle sell postings from the web. API includes tricky communication layer based on Twilio. My noticeable goals were:

  • migrate both apps from Resque to Sidekiq (jobs rework, queues tuning)
  • add Sidekiq monitoring and logging extensions
  • refactor/add MMS handling for Twilio
  • leasing and freeing Twilio phone numbers
  • forwarding calls/steganography (shown on screenshot)
  • Amazon EC2 instances managing and tuning
  • rewrite and make testable internal Slack messenger (shown on screenshot)
  • integration with NewRelic, Rollbar, Papertrail and Dead Man’s Snitch 3rd-party services
  • plenty of small refactorings (code had low quality)

And of course everything was tested with Rspec.

NOTE: my goals were related to backend only


Apple pass manager

AngularJs + Ruby on Rails project with integration with Apple Passbook API and Apple push service. This project was done solely by myself for BestFit mobile company.

Features implemented:

  • WYSIWYG pass designer with near pixel-perfect result with support of all five pass types
  • several versions of the same pass supported
  • ability to schedule publishing any version to registered devices using APB API (+push service)
  • generating and signing passes
  • simple and robust hand-crafted image uploading service (instead of Carrierwave or Paperclip). Creating it allowed decoupling image processing and make the whole pass creation process straight and neat.
  • a whole bunch of nice other features

The code was heavily tested, and it was relatively easy, thanks to nice gems like light-service (I love Command pattern :) and virtus

Higgins MD 420

Heavy refactoring/cleanup/drying of legacy code and new features implementation. There was no unit tests at all, and became more than 500 after about three months as I’ve joined project.

Technologies used:

  • common gems toolbox (about one hundred gems; rspec, cucumber, poltergeist, rails 3.2, capistrano, mysql etc.)
  • devise with heavy customization to satisfy business needs
  • active_merchant billing (with authorize.net binding/testing)
  • activeadmin with decorated models
  • wicked_pdf for health history pdf generation
  • cocoon for nested forms (yep, it was long time ago :)
  • jenkins CI with github PR triggers
  • mercury editor
  • errbit
  • redmine

Note on frontend: when I joined this project, frontend (including JS) was almost completed, I’ve done only refactoring of CSS (SCSS+Compass) and JS (CS).


Pelesend corporate site

Almost completely rewritten backend (Ruby on Rails based) ugly source code, added completely missed integration/unit specs, added Mercury Editor for admins, no frontend work applied (client is waiting for new design), removed or taken from gems 90% of code (JS mostly).

Results of refactoring:

3,626,024 bytes -> 322,949 bytes
536 files changed
5562 insertions(+)
98880 deletions(-)

Less code, less trouble :)


ABC Logistik

Regular complexity site for Russian logistic company, made solely by myself from the ground. Some features (menu items) client decided to implement in the future.

Tools used:

  • Ruby on Rails 3.2
  • MySQL (not my decision)
  • simple_form
  • strong_parameters (while using Ruby on Rails 3.2)
  • rubytree
  • active_admin
  • compass-rails
  • bootstrap-sass
  • rspec
  • capybara
  • factory_girl_rails
  • livereload
  • capistrano
  • passenger

This site was created using Hugo, Google Material Design Lite, built by Brunch and deployed by my custom script based upon SSHKit