Reports and Growth Charts
Two-way communication -SMS, email
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.
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
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.
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:
- 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.
- 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.
- Using reverse proxy like Nginx to serve static files faster and applying gzip compression on them.
- Writing performant code in the backend to avoid any bottlenecks in performance.
- Using CDNs to serve static files faster based on location of end users.
- Optimizing database performance by writing queries that perform better and adding appropriate indexing on tables.
- Using cache wherever it is appropriate to reduce processing time for repeated calls to the server.
- Applying various other best practices on all levels i.e, Frontend, backend, database, and deployment.