Website redesigns are a delicate balancing act. You need to preserve that critical feature, but it relies on that block of code you wish you could toss into the wind. You want to use the latest technology, but tearing out the foundation isn't reasonable. You make every decision on a tightrope. Lean too far to the left and you blow the budget. Fall to the right and you lose sleep over that code you know could be so much better.
It was time to retire Website 1.0. After two years, Parasoleil's processes had evolved. They needed a website that fed their new sales funnels and featured the freshly completed Project Creator. What about the Representative Search, Pattern Comparison, Sales Portal and Technical Specs? Those had to stay...
Due to budgetary constraints, we had to preserve the Laravel 5.0 foundation of Website 1.0. I audited every API endpoint, controller method and line of business logic. Functionality that we elected not to preserve got a nice deprecation notice. Functionality we kept got a quick rewrite for legibility when necessary.
After "Legacy Preservation Mode" ended, I got to work adding new elements of site functionality. I installed the Project Creator (whew...glad I made that a package), revised the database schema and created new Salesforce API hooks. The Admin/CMS package I recently wrote only worked with Laravel 5.2+, so I retroactively created version 0. From there, I extended its functionality to meet Parasoleil's specific needs.
Deployment posed its own set of challenges. Website 2.0 relied on certain Website 1.0 data points and uploaded files. I wrote a tool to migrate this data and content just before launch. When the time came, I took a deep breath, restarted Apache and waited for the world to end (by testing the new site). When the sky didn't fall, I concluded the deployment of Website 2.0 was a resounding success.