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 developer. Letter, uh, I'm a full basically, I'm a full stack developer switch to Flutter development. And, uh, I've been a Flutter developer since last, uh, 4, 5 years. I'll I also focus on some back end development using a Node JS framework called Nest. I studied computer science and engineering in the college, and after that, I moved to I moved, uh, started my career in Laravel and Laravel. I said Laravel and Angular. Okay. Small company in here in, uh, delicate. That moved to match things as a full stack for the data. Yeah. Currently, I'm doing freelance Flutterworks and, uh, some back end works using NestJS and with. Uh, mostly, uh, on Flutter, I mostly work with MobX and the FlutterBlow, and, uh, I personally prefer Flutter Block. I'm doesn't it prefer MobX over Flutter Block. Uh, I started, uh, I started developing in Flutter apps using Flutter Block. But sometimes I felt I like that most of the apps doesn't need a event driven app itself, and the Flutter Block does have a lot of boilerplate at 4. That's why I switched switched to Flutter Mobiles. Apart from that, uh, Flutter Development, I also worked with electronics. I also developed the scope application using electron, and also no, um, you know, experience working with Angular and React.

    It's gonna be a process of integrating password service. Yeah. Password, the, uh, system app might be having a a state managing solution. So what I will do that I'll create a cons constant 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, you know, other way files. So I'll write, you know first of all, I write all these endpoints as a constant strings in the application, and then, uh, I'll create a, uh, no, create a sublease file for calling all these APIs. But before that, I'll choose 1 a, uh, API library for, uh, for, you know, writing that rest API. Uh, what which one package I prefer is d o. I'll add b o to the pops for YAML file and the ins uh, and do the necessary setup for the real, like, the writing receptors, write or post modifiers of anything else, writing, middle wires, all these things I'll handle. Then I'll create a video instance, and I'll write an abstract functions for all these all the common HTTP methods like get post, uh, put patch, all these kind of stuff. I can use these functions later on my code whenever I need to send some get method or something like that. So, uh, I'll describe so on my application, I'll pass to 4 wherever I need to call the rest rest, uh, that rest of this. I'll according to my, you know, state management, I'll do that things. 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 and update the state according to that. If the, you know, API process is pending, then I'll update this data according to that. So show us some orders or anything like that. I'll show on the app itself. And when the API response came, I'll see the license to a dot model using high commonly user phrase. I'll scribble the API models for the API fields on the freezing model and, uh, use it to that the insert my state management or whatever I have to use. I'll check both statuses and update the, convert the JSON API response to a, uh, dot plus, and use it for that thing. Uh, for testing, I'll move these API responses using some testing library or block itself has some testing tools for mocking API responses and responses and things where they can mock it while use. So I'll mock the API response and test using that thing. And, uh, uh, normally, for production applications, I'll use flowers or something like that. I'll I'll probably define, uh, base URLs in the ENV files itself. So for before going to production, I'll update the base URL and then release it to the.

    Now dynamically, you you use for debugging performance issues. I'll use for the Flutter profiler. That is a very good profiler in the Flutter dev tools itself. So I'll use that. I'll build the application using the pro filter profile mode and then check for, you know, any high memory usage or something like that on the barbell tools section. And I can also if, uh, if I'm testing on a VL device, I can also use there are some third party apps for, you know, monitoring the CPU performance and the screen frame rate. All these kind of things can be monitored in third party application. And use those kind of things. The this frame, you know, frame frame rate also can be monitored using dot dev tools. Yeah. Basically, for for Flutter, you can use dot dev tools for every most of our common scenarios, we can use the dot tailed tools. Otherwise, for extra performance, we can use some third party libraries on the real device.

    We're doing more about the documenting at the interactions within a quick report based for future of conscious and the maintenance? Uh, Yeah. That that got a pretty good documentation features like you have you can, uh, describe documentation using 3 slashes or double slashes. So I'll what so this is how I document. I'll if there is a function, which calls on my case, I'll first display what is it what what this function is and when it's going to be caller called. And after that, I'll, uh, describe what are its arguments and what what what what what are the types of documents are and what the function returns. All these things, I'll document using the zone documentation methods. I can use 3 slashes for, you know, writing documentation for Sunday. Then what another thing I commonly does is that, uh, for on the I earlier mentioned that I'll use the service calls for all the AKs. There's some module or some, uh, on some business logic. So I'll disc on that service class itself. On the top, I'll describe what the service is, what kind of business logic we are handling. And after that, for if there is a get request for fetching some if if it's a ecommerce, fetching some if there is a, uh, if it's a ecommerce app, if the we are talking about product listing, then that will be, you know, product listing API. So I'll describe in that this API this API will get fetch all the protective products in the application, and it will, you know, return some area or things like that. Then after that, uh, there will be some API for, you know, storing cart on the API side. I'll describe that describe the documentation like that this particular case towards the user start on the server side for later you see? Then, uh, this functions needs, uh, arguments like product IDs and quantities. All these I'll defend all all those things, and in, uh, write it on the top of the function.

    We are close and sort of close. We are apps with screen sizes and limitations. Okay. Move the This is, uh, pretty difficult one. Uh, the thing is the challenge here is that the Flutter doesn't have any, you know. Or Yeah. The, uh, on web, it is very easy to handle using CSS and CSS breakpoints. So the flutter doesn't have that much flexibility for handling the different UIs. So what I what I do is that, uh, uh, if there is too much change, like, for example, if one mobile's on mobile devices, we have to show bottom bar. But if it comes to iPad level 3, then that bottom we don't need to, uh, display the bottom bar. Instead of we need to show a full menu on the right left side. And then it then we expand the screen, like, when when we come to laptop or focus screens, then we normally that's as a best practice, we don't show the menu. We just hide the menu and spread spread the content. And the thing is another example is that on mobile phone mobile screen, we list, like, all these things downwards, but on iPad and larger screens, we need to convert this list to integrate grid. So on these are the some of the challenges I faced during development of responsive network applications. So what I'll do that, uh, what I'll do is I'll use the media query. I'll, you know, uh, what I know I'm gonna do is that I'll, define a custom scaffold, you know, for I asked the it's, uh, extending this scaffold with the top And by analyzing the media query and the the screen size and screen width, I'll conditionally show different width. For example, if it's a mobile screen, I'll I'll have some definitions like if the screen size is less than 5:5:80 or something like that, it'll show bottom bar. If it's greater than 55:80 and some other, that will be a higher threshold, like, 740 or something like that, then it will show, uh, open the sidebar, and it will hide the bottom bar, all these kind of things. So, basically, I'll, uh, manage it using the media query. The media query is accessible from different filters context API.

    What was the performance for like in front? Uh, for mostly performance bottleneck happens, though, if you are if you are so if you are having some huge calculations while the screen is rendered. So what I will do that, I'll use isolate for dot dot isolates for that, and they'll move this uh, huge calculations or something like that into the isolate and the screen will be the screen will be rendered without any chance. And we can get the, you know, the calculation result from the isolates.

    Load that type and update state. I didn't get the question. Instead of following 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. Okay. I wait. Just a compound settle. Okay? Experts. Later. Blow. K. And next in order is I'll use the breakpoints to ensure that to debug that, uh, you know, uh, every events every events are all in order in in correct order. So I'll first add breakpoint on this, uh, the next one and the letter. And I But I have I'll then I'll have the control of how the events are propagated across across the event emitter and it's no events file and blow. Low consumer, all these things I can control with the I know the break points.

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

    Improve the launch time of it. Okay. Uh, I'll avoid using for improving the launch time. I will avoid using, you know, uh, first of all, I'll avoid using large kind of large calculations or something like that on gmail.transactfile. If there is something like that, I'll move the those kind of things into isolate so there won't be any issues, calculations happening when the app starts first time. And I'll, uh, also add a, you know, netting flash screen for to the flash application. So the flash screen display is that is not a responsibility of so you can use the net, uh, iOS or Android's native capabilities for showing the splash feed, and we can remove the responsibility from different location. Uh, another thing is, uh, minimize the app size. So you can, uh, reshape the bundle, uh, reshape the Android bundle and iOS app site iOS IPSIs. Uh, and the thing is I'll check the if there are any assets or phones that can be loaded from server. I'll do that or I'll reduce the asset size to a minimum. Okay? Uh, if if there are huge assets, I'll lazy load from lazy load. That assets when the app is honest, uh, after the app is started or do you can on Android, you can easily load assets from the play itself in during the initial uploading and implement those three kind of things. Another approach to for minimizing app sizes. Of of course, I'll be I'll be building building, uh, on Android, I'll be building a app bundle. So the thing about that bundle is that Google Play Google Play will split the bundle to to a suitable APKs for each device. So some device will be getting a smaller APK, and other device will need a huge screen size as they will be getting a huge epic file. So the the app size the epic I mean, epic size or update size is managed by the Google Play. Then, uh, the thing is, like, uh, normal regular tour, like, removing unwanted codes or removing unwanted unwanted packages. Plus, there are some cases there will be some cases that that, uh, some of some packages will be huge. So I'll try to avoid those kind of packages or they might have said something about reducing the bundle size. So I'll implement those best practices into flip propagation.

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

    Why, uh, at least I, uh, regularly review the community by answering some questions on Stackster workflow. I also look for answers on better forums like, uh, Flutter GitHub issues. And, uh, I have some discord channels, the local community Flutter groups. I also joined some I also look for answers on this kind of thing, local community groups. Uh, we have a very active Flutter Kerala group in Telegra. So I sometimes answer questions and and some of my questions were were previously were answered from other community members in that include. Yeah. Uh, other than that, sometimes I know contribute. I'll, uh, modify some packet. I had run some open source contribution for modifying some minor changes and improving the dark version. Or there are some breaking if I saw some breaking changes in the application, which is not compatible with the data's frustration, I'll implement those things. Like, it will be I already I what I have done is small small changes in the those packages. Those PRs are already merged with those package orders. We'll create the PR with the package in the master package and all these those are already merged. Yeah. That's