profile-pic
Vetted Talent

Hasil T

Vetted Talent

Driven, adaptable Angular Frontend developer with 7 years of experience (overall 6 Years) delivering exceptional results. A collaborative problem solver and quick learner. With a passion for continuous learning and personal growth, I have extended my expertise beyond Flutter to include proficiency in Angular and NestJS. This diversified skill set allows me to tackle a broader range of projects and contribute to various aspects of software development. During my free time, you can often find me unwinding with a cup of tea, reading something on my Kindle. I believe in the power of continuous learning and exploring new subjects to broaden my horizons as a developer.

  • Role

    Angular Frontend Developer

  • Years of Experience

    7 years

  • Professional Portfolio

    View here

Skillsets

  • JavaScript - 5 Years
  • Angular - 5 Years
  • Type Script - 5 Years
  • Node Js - 4 Years
  • Firebase - 4 Years
  • Git - 5 Years
  • Mongo DB - 4 Years
  • Postgre SQL - 3 Years
  • SQLite - 2 Years
  • Flutter - 4 Years
  • Dart - 4 Years
  • Flutter framework - 4 Years
  • Restful APIs - 6 Years
  • Laravel - 4 Years
  • UI/UX - 1 Years
  • Rest APIs - 6 Years

Vetted For

10Skills
  • Roles & Skills
  • Results
  • Details
  • icon-skill_image
    Senior Flutter Developer (Remote)AI Screening
  • 71%
    icon-arrow-down
  • Skills assessed :Ci/Cd Pipelines, Node Js, Dart, Flutter, Flutter framework, flutter_bloc package, Restful APIs, Third-party Libraries, Django, Github
  • Score: 64/90

Professional Summary

7Years
  • Jan, 2022 - May, 20231 yr 4 months

    Senior Software Developer

    Faida Souq
  • Apr, 2019 - Dec, 20212 yr 8 months

    Software Development Engineer

    Mashtrix
  • Jun, 2017 - Mar, 20191 yr 9 months

    Junior Developer

    Zamorin Global

Applications & Tools Known

  • icon-tool

    MySQL

  • icon-tool

    CSS3 & CSS5

  • icon-tool

    Javascript

  • icon-tool

    Ajax

  • icon-tool

    Angular

  • icon-tool

    REST API

  • icon-tool

    Laravel

  • icon-tool

    PostgreSQL

  • icon-tool

    Jira

  • icon-tool

    AWS (Amazon Web Services)

  • icon-tool

    TypeScript

  • icon-tool

    GraphQL

  • icon-tool

    Flutter

  • icon-tool

    NestJs

  • icon-tool

    Node.js

  • icon-tool

    Firebase

  • icon-tool

    MobX

Work History

7Years

Senior Software Developer

Faida Souq
Jan, 2022 - May, 20231 yr 4 months
    Responsible for mobile app & backend development & releases - worked as a full-stack developer ( Flutter & NestJS). Used microservices to scale up the domains of omni-channel ecommerce system. We cut the domain from monolith and build a micro service specifically for the domain and deploy it behind a load balancer. We used GraphQL & GraphQL Federation for backend scaffolding. Conducted regular stakeholder meetings to provide project updates, gather feedback, and address any concerns or challenges. My team was able to build a highly customizable billing engine in record time using NestJS. The workflows can be customized using zeebe and it had offline capabilities.

Software Development Engineer

Mashtrix
Apr, 2019 - Dec, 20212 yr 8 months
    Developed and deployed mobile applications using Flutter framework, resulting in more than 5 successful app launches on both iOS and Android platforms. Collaborated with cross-functional teams including designers and backend developers to ensure smooth integration of UI/UX designs and API functionality. Implemented responsive designs and optimized app performance for various screen sizes and resolutions, ensuring a seamless user experience. Conducted code reviews and provided constructive feedback to peers, leading to an improvement in overall code quality and adherence to best practices. Actively researched and adopted new technologies, libraries, and frameworks to stay up-to-date with the latest trends in mobile app development. Converted an ionic app to flutter which resulted in increased revenue and customer retention (SaveTime KSA). I was able to quickly develop a working prototype of application in one month when flutter was still in beta. Used flutter_bloc as a state management tool for building flutter application. Also used firebase tools like FCM, Firebase Analytics, Firebase Crashlytics. Mentored and supervised junior team members, fostering their professional growth and achieving a 15% improvement in team productivity.

Junior Developer

Zamorin Global
Jun, 2017 - Mar, 20191 yr 9 months
    Design and development of web apps using Angular and Laravel PHP framework. Build cross-platform mobile apps using Ionic framework. Build native desktop apps using angular and electron js. Test and maintain existing systems and code repositories. Learned about professional software engineering, how to design database schema, writing test cases using Karma and why test cases are important during software development. Learned about multi tenant systems and built a multi-tenant queue management system using Laravel.

Achievements

  • Built highly customizable billing engine using NestJS
  • Increased revenue and customer retention by converting an Ionic app to Flutter
  • Mentored and supervised junior team members
  • Got first in short story writing consecutively for two years in college

Testimonial

Major Projects

6Projects

Faida Souq

Sep, 2021 - Jun, 2022 9 months
    • Worked as full stack senior developer
    • Designed the entire database schema for the ecommerce which handles multiple erp systems
    • Worked as a part of the team which developed mobile application for the system

IdeaClip

IdeaClip.com.au
Mar, 2022 - May, 2022 2 months
    • Worked as a backend developer.
    • Solo developer, Implemented the backend for Idea clip admin panel.
    • Tech stack was Firestore for Database, ExpressJS with GraphQL hosted on Firebase functions 

Fudbee

Fudbee.com
Jun, 2020 - Sep, 2020 3 months
    • Worked as Mobile application Developer
    • Its a multi vendor food delivery system, Managed to implement a android and ios application with flutter.

Mango Loyalty Program

Oct, 2019 - Jan, 2020 3 months
    • Worked as a Senior full stack engineer
    • It is an app that shows offers and other rewards of a major supermarket chain in Dubai
    • Helped to scale the application to million users who spread across main land Dubai and India
    • Integrated third-party libraries to interact with the back-end API
    • Implemented custom packages for common features like messaging, audio, and video calls

SASCO Apps

Aug, 2019 - Jan, 2020 5 months
    • Built 3 applications for SASCO using Flutter including their internal and customer-facing apps.
    • Implemented the application UI and developed reusable custom widgets to speed up application development
    • Created a custom widgets library and integrated into the application for common UI widgets, providing proper documentation on how to use them

SaveTime KSA

May, 2019 - Aug, 2019 3 months
    • Worked as a senior backend engineer for a salon booking application.
    • Managed to implement fool proof booking algorithm for the system.
    • Designed dynamic and complex functionality and developed the application using the BLOC design pattern
    • Handling of widgets state properly to work with background data updates
    • Implemented functionality using best practices and Flutter dev community guidelines

Education

  • B.Tech Computer Science & Engineering

    Cochin University of Science & Techonology (2017)

Interests

  • Football
  • Learning
  • Long Rides
  • Photography
  • Reading Books
  • AI-interview Questions & Answers

    Oh, yeah. No. It started my career as a I'm not under public scrutiny. Letter, I'm a full-stack developer who basically switched to Flutter development. And, I've been a Flutter developer since last 4 or 5 years. I'll also focus on some backend development using a Node.js framework called Nest. I studied computer science and engineering in college, and after that, I moved to a small company where I started my career in Laravel and then Angular. That moved to match things as a full-stack developer for the data. Currently, I'm doing freelance work on Flutter, and some backend works using NestJS. Mostly, I work with MobX and Flutter Bloc, and I personally prefer Flutter Bloc. I started developing in Flutter apps using Flutter Bloc. But sometimes I felt that most apps don't need event-driven architecture, and Flutter Bloc has a lot of boilerplate. That's why I switched to Flutter MobX. Apart from that, I also worked with electronics. I also developed the scope application using Electron, and I have experience working with Angular and React.

    It's going to be a process of integrating password service. Yeah. Password, the system app might have a state managing solution. So, I will create a constants file to avoid magic strings on the application. So, I'll disable all the endpoints as a constant API, something like the FP constant or some other file. So, I'll write the endpoints as constant strings in the application, and then I'll create a separate file for calling all these APIs. But before that, I'll choose an API library for writing the rest API. I prefer do. I'll add BO to the Pops for YAML file and do the necessary setup for the rest API. Then, I'll create a video instance, and I'll write abstract functions for all the common HTTP methods like get, post, put, patch, and all these kinds of stuff. I can use these functions later on in my code whenever I need to send a get method or something like that. So, I'll describe on my application, I'll pass to four wherever I need to call the rest API. I'll do things according to my state management. Like, if it's a block, I'll create an event for that thing, and I'll handle that event in the block file. And based on that event, I'll call that API from the block itself and update the state according to that. If the API process is pending, then I'll update the data according to that. So, show us some orders or anything like that. I'll show it on the app itself. And when the API response comes, I'll serialize the API models for the API fields on the dot model and use it to update my state management or whatever I have to use. I'll check both statuses and update the UI. I'll convert the JSON API response to dot plus, and use it for that thing. For testing, I'll use some testing library or the block itself has some testing tools for mocking API responses and things where they can mock it. So, I'll mock the API response and test using that thing. And, normally, for production applications, I'll use Flask or something like that. I'll probably define base URLs in the ENV files itself. So, before going to production, I'll update the base URL and then release it.

    Now I dynamically use for debugging performance issues. I'll use the Flutter profiler that is a very good profiler in the Flutter dev tools itself. So I'll build the application using the profile mode and then check for any high memory usage or something similar on the Dart Observatory section. And I can also, if I'm testing on a virtual device, I can also use third-party apps for monitoring the CPU performance and the screen frame rate. All these kinds of things can be monitored in third-party applications. And use those things. The frame rate, you know, can also be monitored using the Dart Observatory tools. Yeah. Basically, for Flutter, you can use the Dart Observatory tools for most common scenarios. Otherwise, for extra performance, we can use some third-party libraries on the real device.

    We're doing more about the documentation of interactions within a quick report for the future of conscious maintenance. Yeah. That got a pretty good documentation feature, like you have. You can describe documentation using three slashes or double slashes. So, I'll show you this is how I document. I'll if there is a function that calls my case, I'll first describe what it is and when it's called. And after that, I'll describe what its arguments are and what types they are and what the function returns. I'll document all these things using the zone documentation methods. I can use three slashes for writing documentation. Then, another thing I commonly do is that for the service calls for all the AKs. There's some module or some business logic. So, I'll describe that service class itself on the top. I'll describe what the service is and what kind of business logic we're handling. And after that, if there's a get request for fetching something, if it's an ecommerce, fetching some product listings, then that will be the product listing API. I'll describe that this API will fetch all protected products in the application, and it will return some area or things like that. Then, after that, there will be some API for storing cart on the API side. I'll describe that like this: this particular case is for the user on the server side for later use. Then, this function needs arguments like product IDs and quantities. I'll document all those things and write it on the top of the function.

    We are close and sort of close. We are apps with screen sizes and limitations. Okay. Moving forward, this is pretty difficult. The thing is the challenge here is that Flutter doesn't have any, you know, native CSS-like functionality. Or, yeah. On the web, it's very easy to handle using CSS and CSS breakpoints. So, Flutter doesn't have that much flexibility for handling different UIs. So, what I do is that if there is too much change, like, for example, if it's a mobile device, we have to show a bottom bar. But if it comes to iPad level 3, then that bottom bar isn't needed. We don't need to display the bottom bar. Instead, we need to show a full menu on the right side. And then, when we expand the screen, like, when we come to laptop or focus screens, then we normally hide the menu and spread the content. And the thing is, another example is that on a mobile phone screen, we list, like, all these things downwards, but on iPad and larger screens, we need to convert this list into an integrated grid. So, these are some of the challenges I faced during the development of responsive network applications. So, what I'll do is I'll use media queries. I'll define a custom scaffold, you know, for I'll extend this scaffold with a top app bar. By analyzing the media query and the screen size and screen width, I'll conditionally show different UIs. For example, if it's a mobile screen, I'll have some definitions like if the screen size is less than 580, it'll show a bottom bar. If it's greater than 580 and some other threshold, like, 740 or something like that, then it will show the open sidebar and hide the bottom bar. All these kinds of things. So, basically, I'll manage it using media queries. The media query is accessible from different context APIs.

    What was the performance like in front? For the most part, performance bottlenecks occur when you're doing huge calculations while the screen is being rendered. So, I'll use an isolate to isolate those huge calculations or something, and they'll move into the isolate. The screen will then be rendered without any issues. We can get the calculation result from the isolate.

    I didn't get the question. Instead of following the call for testing a temporary that you're setting about that checkbox. I think from the debug strategy, which you suggest to ensure that the load that enables us in correct state chain. I wait. Just a moment to settle. Okay? Experts, later. Blow. K. And next in order is I'll use the breakpoints to ensure that to debug that, you know, every event is in the correct order. So I'll first add a breakpoint on this and then the next one. And I will then have control over how the events are propagated across the event emitter and its event file. Low consumer, all these things I can control with the breakpoints.

    It's the best fit manager for complex things that include user interactions. If that involves local persistence, I'll use some if there's too much data, like storing some transactions or something, I'll use it. I believe you're referring to something like that. It's a symbol data, like yes, and or something like that, symbol JSON. Then I'll use side effects to block or get it just for storing things locally. Okay. Another thing is using interactions and data patching. And the thing is, it's not that complex, that all user interactions are if I'm using Flutter bloc, all user interactions are some kind of events. And the bloc emits the event whenever the user clicks a button or does something, then the bloc will emit the event, and the event will be handled inside the bloc. And based on that event, there'll be some data patching happening. So during data patching, I'll need to update the UI. The data is loading, and all these kinds of things will be handled using events or yielding state changes from the bloc itself. Like when the data is searching, I'll do some state changes, like for that particular data is loading, I'll leave that state. And the app's screen updates will show some loaders or if it's a button, then the app's screen will show a loading state. It'll change the click button, click text to loading or something like that. And the complex state can be easily managed using event-driven access on any other state manager. And on local persistence, like I said earlier, we can use a database or hydrated storage. So whenever a state changes in hydrated storage, it will automatically store on the user's device. If we're using high-level, then we can use another bloc for storing and retaining data from the driver. Then for communicating with this bloc, we can use events also.

    I'll improve the launch time. Okay. I'll avoid using for improving the launch time. I will avoid using large kinds of large calculations or something like that on Gmail.transactfile. If there is something like that, I'll move those kinds of things into isolates so there won't be any issues, calculations happening when the app starts for the first time. And I'll also add a netting flash screen for the flash application. So the flash screen display is not a responsibility of so you can use the net, iOS or Android's native capabilities for showing the splash feed, and we can remove the responsibility from different locations. Another thing is to minimize the app size. So you can reshape the bundle, reshape the Android bundle, and iOS app site iOS IPSIs. And the thing is, I'll check if there are any assets that can be loaded from the server. I'll do that or reduce the asset size to a minimum. Okay? If there are huge assets, I'll lazy load them after the app is started, or on Android, you can easily load assets from the Play Store itself during the initial upload. Another approach to minimizing app sizes. Of course, I'll be building an app bundle on Android. The thing about that bundle is that Google Play will split the bundle to suitable APKs for each device. So some devices will get a smaller APK, and other devices will need a huge screen size as they will get a huge APK. The app size, or epic size, or update size is managed by Google Play. Then, like, removing unwanted codes or removing unwanted packages is a normal, regular task. Plus, there are cases where some packages are huge, so I'll try to avoid those kinds of packages or implement the best practices for reducing the bundle size.

    How would you utilize additional statements like provider or looks at full openness? Yeah. The thing about Ratabox is it's a modified version of provider or revoke port. The provider transfers all this data using the context, for the wrap context. So how do you utilize the addition statement in solutions like provider or portal? So, provider can use some common things like passing data down. For example, the theme context is a data example for how provider works along with all other state management solutions. The team contact is default with default on flat. The team contacts are contacts which are available in all the files and configuration of the regular team of the app itself. And all the paid contact users are provided to move the data across the registry.

    Why at least I regularly review the community by answering some questions on Stack Overflow, specifically the Flutter workflow. I also look for answers on better forums like Flutter GitHub issues. And I have some Discord channels and local community Flutter groups. I also joined some local community groups. We have a very active Flutter Kerala group in Telegram. So I sometimes answer questions and some of my questions were previously answered by other community members, including. Other than that, I sometimes contribute. I'll modify some packages. I've run some open-source contributions for modifying some minor changes and improving the dark theme. Or there are some breaking changes if I saw some breaking changes in the application, which is not compatible with the data's frustration, I'll implement those things. Like, I've already made small changes in those packages. Those PRs are already merged with the package owners. We create a PR with the package in the master branch and all these are already merged.