FEATURES

Forms Management

Document Management

Third-Party Integration

Reports and Growth Charts

Two-way communication -SMS, email

TECHNOLOGY STACK

Very talented. His project management skill and planning has been very useful. We will continue to work with him. Must hire for project management.
KEVIN GRAY
Penny Miller, Australia

Database (Backend Management)

Our backend provides all business functionality like front end processing, image processing, business processing and rendering required database queries.

Our backend will also expose APIs for saving different states of DB objects.

Database Schema

For saving different states of application as well as the user related data, the application will use a relational database like MySql or PostgreSQL. It will have tables for users and their details, logos created and favorited by them, and different states of logos during editing.

Our Core DB Logic

We have built different APIs on the backend to do core business logic. The APIs are divided into different modules as shown below. Each module will have functions for core logic related to the module.

We built DB logic for each of these functions as follows:

  • Account Module
    • GetSettings: Get account settings
    • SaveSettings: Save account settings
    • DeleteAccount: Delete account
  • Logo Module
    • GetUserLogos: Get all logos edited or favorited by the user
    • DeleteLogo: Delete a logo saved by user
    • SaveUserInfo: Save company details (used for logo creation)
    • SaveColor: Save brand colors (used for logo creation)
    • SaveIcon: Save preferred icons for brand (used for logo creation)
    • GenerateLogos: Generate a list of logos based on user saved criteria
    • MarkFavorite: Mark a logo as favorite (save it to user’s logos)
    • DownloadLogo: Generate files for downloading a logo
  • Editor Module
    • GetCanvas: Get canvas object for a logo (to enable editing of logo)
    • SaveCanvas: Save canvas object after user edits logo
  • LogoComponents Module
    • GetRelatedWords: Generate and get a list of words similar to user’s search term 
    • GetIcons: Get a list of icons based on user’s search keyword
    • GetShapes: Get a list of shapes to show in editor or logo creation flow
    • GetFonts: Get a list of fonts to show in editor
    • GetTemplates: Get a list of templates to show in editor
    • GetBackgrounds: Get a list of backgrounds to show in editor

Image processing

We have implemented various image processing features that can be added to the application to enhance the output logos like blending, masking and applying various filters like grayscale, blur, etc. These can be applied to canvas objects created in the backend using various libraries or in-built features in JavaScript.

For this, a module will be created that will import all the necessary libraries for performing such operations on the canvas object. This module (or class) will have different methods to perform operations like alpha blending, masking and applying filters as shown below:

Please note that more advanced functionality like image optimizing, rescaling, rotating images, etc. can also be added to this class depending on the requirement. These advanced operations are achieved by importing different libraries in python or nodejs that provide this functionality.

Note: Some operations of image processing can also be applied on front end via JavaScript in the browser. For example, applying filters on the logo can be achieved in the frontend by adding an image on the canvas object and applying filters on the image.

Performance and Security

To achieve high performance in the application, we recommend following best practices in code in both frontend and backend. Some examples of best practices that can be followed are:

  1. Writing high performance JavaScript code in the front end by using best practices in JavaScript and frameworks like React.
  2. On the client side, wherever effects and animations are used, make sure to get higher frames per seconds by using various tricks to write performant animations.
  3. Keep the build size of bundles as small as possible by using various build tools, using lazy loading and by compressing them before getting from the server.
  4. Using reverse proxy like Nginx to serve static files faster and applying gzip compression on them.
  5. Writing performant code in the backend to avoid any bottlenecks in performance.
  6. Using CDNs to serve static files faster based on location of end users.
  7. Optimizing database performance by writing queries that perform better and adding appropriate indexing on tables.
  8. Using cache wherever it is appropriate to reduce processing time for repeated calls to the server.
  9. Applying various other best practices on all levels i.e, Frontend, backend, database, and deployment.