Camino RESTful API is the backend system in charge of storing, maintaining and managing all users between StudySpanish and Camino Mobile App, as well as managing media files and other content that are required from and sent from a mobile application that allows StudySpanish.com reuse audio courses with all the necessary help and description to make it a unique experience for subscribers. It's a quick and easy way to learn Spanish language and also monitoring your progress on any device.
In order to extend their service, our client approached us with the idea of implementing a mobile application to improve a functionality of the existing StudySpanish.com website (Path to Success). In particular, a communication interface was needed that integrates a potential mobile application and the Wordpress website developed by Serfe in 2016. Among the initial requirements, the client raised the need to be able to make subscriptions on any platform (Android, iOS or Website) with a single user within the application.
Serfe proposed a custom system similar to an SSO approach where Wordpress would act as our ID provider. Therefore, we designed and implemented a custom Wordpress plugin to meet app requirements.
The Linode hosting service was used as our SaaS provider, we created and deployed a VPS using Docker to maintain a strong, safe and encapsulated microservicelinode saas. This allowed us to easy maintain and update software and dependencies. Furthermore, in order to offer a service in which this RESTFul API responds quickly and efficiently, we decided to use NodeJS and the ExpressJS framework combined with Sequelize ORM. This backend architecture was extended with a custom layer in the file structure and settings to achieve a simple, efficient, secure and scalable system architecture.
In order to provide communication between this new backend API and the existing website (currently implemented in WordPress) we used WP API Rest. WordPress already provide its own REST API functionality, which basically provide access to all website content without accessing directly to MySQL database. This makes it a consumable service from any other platform in a very simple and secure way. The data persistence on the new backend API was done through a MySQL database. In addition, to maintain a higher response speed in requests for static data and with a higher frequency of use, two levels of cache memory were implemented. The first one at the application level using Redis and the second level using CloudFlare, which also include a security proxy.
The integration with some Node packages was carried out to be able to manage purchases within the application and to be able to verify them either from Google Play, Apple iTunes or from the website. For this, an internal structure was developed capable of maintaining this integration. Another of the integrations requested by the client, was to carry out email campaigns was with Mailchimp for which a NodeJS package was also used that uses the API provided by the Mailchimp service to improve for this type of integrations.
The entire development process was implemented thanks to valuable feedback from the client. We had to also coordinate with a third parties team, who had to use the API service that we developed. In order to expedite a follow-up of each API endpoint, we have implemented Swagger that provides a great set of tools for API documentation.
Final QA and release
As part of the project, we were collaborating with the team in charge of developing the mobile application. In this case, we participate in the QA testing phase for the final validation in order to confirm the correct integration between the new mobile app and the existing website.
Once the tests were finished, we have applied optimizations on both server and backend system to improve the performance of the REST API, identifying bottlenecks and applying improvements, which also increase the mobile application performance.
We are currently in the maintenance phase.