Back to Engineering

CRM for a non-government organization

A maintained and extended CRM with REST APIs, payments, PDFs, and an AngularJS SPA.

Table of Contents

Context

This CRM was taken over from a previous developer, then maintained and extended solo between 2017 and 2019. It served a non-government organization and included a full AngularJS single-page application alongside a Ruby backend.

Problem

The existing system needed ongoing maintenance and new features across a broad application surface. Authorization, communications, payment handling, document generation, APIs, and real-time behavior all had to coexist in one maintained product.

Approach

  • Maintained and extended a domain with 65 models.
  • Worked with more than 60 Grape REST endpoints.
  • Used CanCanCan for permissions.
  • Added Mailgun campaigns and Prawn PDF generation.
  • Integrated LiqPay payments and WebSocket behavior.
  • Built and maintained the AngularJS SPA frontend.

Outcome

The system remained a single maintained application with API, permissions, communication, document, payment, and frontend concerns connected through its existing model layer. The work extended an inherited CRM rather than replacing it with a new system.

Details are generalized because the project is private property of its owner.