My first cryptocurrency exchange I’ve built back in 2014, when the founders from Krasnodar, Russia approached me with this project. Both the matching engine and backend are pure PHP, no external CMS/Frameworks.
Had to read a lot about floating point arithmetics and its internal representation in binary, because the calculations involving money must be precise, but floating point math usually isn’t. Also learned a lot about localization: I had to have translatable into English, Russian and Chinese, and provide translators with an easy and fast way to make changes. And of course, the engine and wallets must be secure and robust, because any money loss would ruin business reputation and could expose the founders to litigation. No such thing happened during our run.
Later additional functionality included user-to-user transfers, business tools allowing to send invoices in cryptocurrency, and a payment gateway which started with just topping up phone numbers in Russia.
The exchange returned all money to customers and, unfortunately, ceased operation in 2015 when the company burned through the funding.