Collaborate, Sign, Manage. Contract Management simplified.

Scroll down for details

Menu

How it all started

Two founders wonder how they can make their product ready for the future. Having bootstrapped Contractify with a focus on producing something that works and solves the client’s contract management challenges, attention was needed on product scalability — ready for 10,000 or 100,000 users.

And instead of one developer creating the product, the system needed to be ready for a whole team of developers to begin working on it. This is why Contractify reached out to madewithlove for help.

Madewithlove was the only party advising us to refactor instead of starting over. With hindsight, this was the right choice. Our customers started feeling the difference right away and didn’t have to wait 9 months or longer for improvements.

Steven Debrauwere, CEO Contractify

A technical audit

We started with a technical audit to determine exactly what was going wrong. Our team discovered a codebase full of complex relationships that were tightly woven together.

There were fat controllers trying to do too many things, no abstraction between the front-end and backend, codebases missing abstractions entirely, and performance issues starting to creep up. It didn't help that all development work was resting on the shoulders of a single developer at that point.

Before diving in head first, our CTO in residence focused on organization and documentation: a technical roadmap was created to map the technical debt and problems uncovered in the technical audit.

Items were added to address areas of the platform that were affecting stability and performance in addition to tasks that would improve development processes such as introducing a containerized local environment, setting up the CI/CD pipeline, and upgrading PHP and Laravel. For each item, a plan of action was created and documented together with the developers.

Along with that, the priorities were organized into a now-next-later product roadmap. The founders and our CTO in residence fleshed out new features together using feature passports and by writing product documentation upfront. The technical and product roadmaps were then joined together in one overarching roadmap and prioritized according to impact and effort.

Our internal team of developers matured a lot during the time we worked with madewithlove. Their focus on knowledge-sharing is going to help us even when madewithlove is no longer on board.

Steven Debrauwere, CEO Contractify

Developers join forces

In the meantime, madewithlove’s developers had joined forces with Contractify’s developer and got right to work, focusing on the maturity and stability of the platform.

Within the first two months the number of bugs dropped dramatically and the critical paths were rebuilt in a stable and performant way. Opportunistic refactoring (aka the boy scout rule) and leveraging error tracking software were two key factors in the approach.

To ship this code, we set up a first-tier continuous integration and continuous development pipeline (CI/CD) featuring the necessary checks and balances to increase code quality: static code analysis (phpstan), automatic code styling and formatting (PHP CS Fixer, Prettier, ESLint), and testing (PHPUnit, Cypress end-to-end tests). But there was more work to do.

Another big piece of the reliability and scalability puzzle was the need for a mature infrastructure. When we arrived, the setup was simple: one single server. Now Contractify is running on DigitalOcean droplets with a managed database, Redis queue, automated backups, and user generated content hosted (not on the same machine but instead) on a cloud based file store. Once architected, it took less than a month to finish the complete migration for multiple environments.

Of course there was also a lot of product work to be done in addition to the technical items: implementing new features (e.g. new contract flows and a redesign), refactoring some of the older features (e.g. e-signing and tasks) and rebuilding features from scratch in some cases (e.g. a new back-office using Laravel Nova). We also helped ship functionality on these fronts.

If we compare the speed with which new development projects can be tackled now with 18 months ago, the difference is astounding.

Steven Debrauwere, CEO Contractify

How it ended

After our long journey (18 months!), it was time for madewithlove to say goodbye. And we've done that carefully, ensuring that the team has a solid base for the coming years.

Documentation plays a key role in this: we never stopped challenging the need to write documentation (product, features, architecture, infrastructure, and processes).

This documentation is even more important for growing teams as is the case at Contractify. A new product manager has joined and we've helped to recruit a new CTO/lead developer. We stayed just a bit longer to make sure their onboarding went smoothly.

Madewithlove is proud to leave this team after a very pleasant and fruitful collaboration with Herlinde, Steven, and the rest of the team, knowing they can stand on their own from here on out.

We’ll be sorry to see the people themselves leave. They’ve been part of the team for over 18 months. The fact that they can leave, on the other hand, is proof that the project was a success.

Steven Debrauwere, CEO Contractify

Need help scaling or untangling knots in your product? We can take a look at your software.Discover our due diligence audits