Let's Plum is a leading company that provides graphic design services to offer a complete solution, from illustration to vectorization. Thus, the continued growth of the company, employees and freelancer it was strongly necessary to develop a very specific management system for their more than 600 artwork jobs they need to deliver every day.
This first stage was performed with our client to collect all the system requirements with our analysts. We made several meetings in our office in order to clarify all details in order to have enough information to provide to our team. After we reached a good understanding of all our client's needs, they were documented in order to start designing the purposed solution.
Development and Technologies
In the development stage, every functional and non-functional requirement has been implemented as designed in the analysis stage. The core of this application is CakePHP framework combined with AngularJS+Bootstrap for dynamic templates and web design. We installed several jQuery plugins that allowed us to validate forms and data types, upload multiple files, drag images to became preview, also we combined several NodeJS, Bower and Grunt components that provided great features when implementing our solution. The project was completed and we released first stable version on July 2015. Accordingly, we continue working on improvements, system optimizations and enhancements, new features and maintenance in both the system and the server.
The server was installed from scratch, our server admin installed latest CentOS version and necessary dependencies to configure Apache, MySQL, MongoDB, Elastic Search among other modules. We also integrated Dropbox into the web backend application. As a result, designers are able to share their finished artwork files as well as a customer is able to download it by clicking a link on the notification email they received when artwork job is done. In Dropbox, they can upload a zip file (with specific folder format) and the website will scan this folder from Dropbox to create the new artwork job in the backend to start working on it. During the development phase we use Continuous Integration approach, we implement automated tests with Codeception and every test case was designed to validate and verify a requirement or anentire workflow. Furthermore, all technologies we used in this project have also been very useful and gave support our development team to achieve a product of high quality and with maximum efficiency.
In one of the latest stages, we've implemented an API that allows other applications to connect to this main Let's Plum app in order to create and manage jobs automatically. We've developed a custom CakePHP plugin from scratch for managing external connections, validating and authenticating users through OAuth 2.0. Once the connection is validated, the client app must send a REST request to create an artwork jobs or monitor progress. All endpoints are specified in the online documentation we have supplied, which was generated automatically from our source code.
- VPS with CentOS 7 and PHP 5.5: Last stable version of the open source operating system used on most web servers.
- CakePHP 2.x: Framework PHP using MVC design pattern, this is great for initial scaffolding. CakePHP includes lot of build-in libraries as well as great security layers in our web application based on the latest web development standards.
- MongoDB 2.4: NoSQL database that allows greater amount of data queries in less time than a SQL database.
- Elastic Search 1.5.2 / Lucene v4.10.4: internal search engine which offers several functionalities to perform complex search based on a keyword and returns almost instant results.
- NodeJS, Bower and Grunt: We use these great technologies to manage installed packages on development and production environments, for example to manage Bootrstrap, jQuery, Less, FontAwesome and others.
- Dropbox: Integration with the system to send and manage files directly from the application backoffice. Thus, an admin user does not need to pay for extra user on his business Dropbox account but just one Dropbox user (assigned to the website) performing the management of the files. This way you can climb any means dropbox and sync with the website administrator panel, among other things in order to deliver work performed and automate processes that were previously done manually.
- OAuth 2.0 is the next evolution of the OAuth protocol which was originally created in late 2006. OAuth 2.0 focuses on client developer simplicity while providing specific authorization flows for web applications, desktop applications, mobile phones