These are some of the projects I have worked on.


CSVParty

Open Source: https://github.com/toasterlovin/csv_party

A domain specific language (DSL) for importing CSV files in Ruby.

class MyImporter < CSVParty
  column :product, header: 'Product' do |value|
    Product.find(value)
  end

  column :price, header: 'Price', as: :decimal

  rows do |row|
    row.product.price = row.price
    row.product.save
  end

  import do
    ActiveRecord::Base.transaction do
      import_rows!
    end
  end
end
Description

Users specify the logic of their CSV import using a DSL that wraps Ruby's built-in CSV class. This eliminates the need for imperative code related to managing the built-in CSV class and enforces a separation of the various concerns related to importing a CSV file (parsing columns, importing individual rows, handling errors, importing the file as a whole, etc.). The end result is a CSV import class which is easier to comprehend and, therefore, easier to improve and modify.

Responsibilities
  • Initial conception of idea
  • All design and programming

Chat API Demo

Conversa Health

A demo chat client implementing Conversa's conversation API.

Description

Prospective customers invoke the demo via a link on Conversa's marketing site. From the chat window, they participate in a dialog which interacts with Conversa's conversation API and demonstrates the various interaction types and capabilities it provides. They can also toggle the chat window between phone, tablet, desktop, and docked modes.

Responsibilities
  • Application architecture
  • Programming
  • CSS styling
  • Some UI/UX design
  • API design feedback
Technologies
  • jQuery
  • JSON REST API
  • JSON Web Token
  • SCSS
  • Sprockets (asset compilation)

Factory Direct

ICE Cable Systems

A web app to accept orders from the company's white label customers.

Description

Employees add information about white label products, such as the customer's part number, cost, dimensions, and how the product is palletized. Then customers can either upload a CSV order or configure an order from scratch. The price of most products varies based on commodity markets, so the app regularly scrapes the relevant commodity prices and ensures that orders have up-to-date pricing. Then, customers are guided through a workflow that has them add and remove products and adjust quantities to ensure their order can be palletized and configured to completely fill a 20' or 40' shipping container. Once an order has been submitted, the company's buyers can send a purchase order for the goods to the company's factories.

Responsibilities
  • Management of outside contractors
  • Application architecture
  • Front-end and server programming
  • UI/UX design
Technologies
  • Ruby on Rails – ActionMailer, Sidekiq, Turbolinks, Paperclip, Capybara, Engines
  • PostgreSQL
  • Redis
  • jQuery
  • Bootstrap
  • Fontawesome

Ship It

ICE Cable Systems

A web app to manage the company's interactions with it's third party warehousing partners.

Description

Employees add orders to a queue that is visible to both company employees and warehouse personnel. They specify the customer, invoice number, shipping method, carrier, as well as upload PDF packing slips. Warehouse personnel then work the order through the queue by acknowledging receipt, picking it, and packaging it, then indicating once it has been picked up by the carrier, and, finally, uploading PDF confirmation documents. Each order has a chat thread which eliminates the need to communicate about orders via email.

Responsibilities
  • Management of outside contractors
  • Application architecture
  • Front-end and server programming
  • UI/UX design
Technologies
  • Ruby on Rails – ActionMailer, Sidekiq, Turbolinks, Paperclip, Capybara
  • PostgreSQL
  • Redis
  • jQuery
  • Bootstrap
  • Fontawesome

Sell It

ICE Cable Systems

A web app to manage the flow of leads through the company's sales funnel.

Description

Leads come in from a variety of sources, such as landing pages on the company's website, CSV imports from trade shows, and manual entry by salespeople. Once a lead has been captured, it can be advanced through the funnel, dropped from the funnel, assigned a priority level and opportunity size, and have phone calls and emails logged against it. Salespeople have a calendar showing scheduled follow-ups and appointments, as well as a dashboard showing new leads, leads who have recently converted to customers, overdue follow-ups, recent lead activity, and stats about conversions and lead flow through the sales funnel.

Responsibilities
  • Application architecture
  • Front-end and server programming
  • UI/UX design
Technologies
  • Ruby on Rails – ActionMailer, Sidekiq, Turbolinks, Paperclip, Capybara
  • PostgreSQL (including trigram fuzzy search)
  • Redis
  • jQuery
  • Bootstrap
  • Fontawesome

Product Catalog

ICE Cable Systems

A web app to manage how products are displayed on the company's website.

Description

Employees add products via an admin interface where they add details about each product, such as pictures, accessories, prices, packaging & color variations, and PDF documents. Customers can view products and their prices, narrow their selection by color and packaging, add products to their cart, view product images and PDF documentation, and browse similar and related products. Project included migrating the company's static website from Wordpress to Rails, in order to show a unified navigation bar with login information.

Responsibilities
  • Application architecture
  • All front-end and server programming
  • Responsive design for customer area
  • UI/UX design for the employee area
Technologies
  • Ruby on Rails – ActionMailer, Sidekiq, Turbolinks, Paperclip, Capybara
  • PostgreSQL
  • Redis
  • jQuery
  • Bootstrap
  • Fontawesome
  • Web fonts