Skip to content
This repository was archived by the owner on Jul 31, 2024. It is now read-only.

Repository contains code for the test task from Chili Labs for Junior Mobile Developer position.

Notifications You must be signed in to change notification settings

Wolferado/chili_labs_assignment

Repository files navigation

chili_labs_assignment - Junior Mobile Developer position assignment

Warning

This project has been archived due to these reasons:

  • Assignment has been finished and received some feedback;
  • No interview afterwards (somehow only 4 out of 10 points, even though there are 16 in total? bruh).

Note

This repository contains code for the GIPHY GIF Search Mobile App as an assignment for Chili Labs "Junior Mobile Developer" position.

Information regarding Flutter SDK

Flutter 3.22.3 • channel stable • https://github.com/flutter/flutter.git

Framework • revision b0850beeb2 (5 days ago) • 2024-07-16 21:43:41 -0700

Engine • revision 235db911ba

Tools • Dart 3.4.4 • DevTools 2.34.3

The Task - Create a gif search application using the Giphy service.

Primary Requirements:

Techical

  • Primary platforms - iOS & Android (added Platfrom checks for different APIs);
  • Auto search - requests to retrieve Gif information from the service are made automatically with a small delay after user stops typing (added 1.5s timer);
  • Pagination - loading more results when scrolling (added ScrollController listener);
  • Vertical & horizontal orientation support (GridView CrossAxis amount changes based on orientation);
  • Error handling (added checks for different HTTP response codes, error in API execution and widgets);
  • Unit tests - as much as you see fit (added simple Unit tests for app essentials and HTTP request mock up).

UI

  • Responsive & matching platform guidelines (I hope?);
  • At least 2 views sourced by data from Giphy (Sourced original and downscaled views);
  • Results are displayed in a grid (used GridView.builder);
  • Clicking on a grid item should navigate to a detailed Gif view (clicking an item opens another Scaffold widget with detailed information about GIF);
  • Loading indicators (added widget when fetching data);
  • Error display (added widget when receiving error).

Bonus points:

  • Using state management approaches or libraries such as BLoC (flutter_bloc), Riverpod or others (Riverpod has been used);
  • Using an understandable architecture pattern;
  • Page navigation is separate from page widget code (a Coordinator pattern or similar);
  • Network availability handling (sort of? request is not being proceeded due to network issues - returns 400 HTTP response code).

Feedback & Comments:

  • UI is lacking SafeArea wrappers on iOS, search field is hiding under dynamic island for example (SafeArea added)
  • There seems to be some issue with caching gifs (didn't quite get it)
  • On scroll too many requests are being made when trying to load more gifs (this was based on limit of the API request, initial was 10, now changed to 30);
  • Scrolling to the bottom lacks loading indicator of loading more gifs (added loading indicator);
  • To avoid human errors when parsing data from network, it’s better to leave it to dedicated tools like json_serializable, freezed which conveniently generates all the necessary code in a clean manner (tried to create it with freezed package, but unable to accomplish it due to many errors after executing build_runner);
  • Using outdated package versions, e.g., flutter_svg (inadvisable unless there’s specific reason for it) (updated dependencies version in pubspec.yaml);
  • Although this is a test task, good practice is to avoid exposing public api keys in code. Can inject them during runtime by passing additional arguments (even though they weren't exposed as such on GitHub Repository, they were crucial to compile the project on other machine, because of that they were shared in Configuration file .ZIP archive personally).

Preview

Image of app landing page Image of app data fetching page Image of app error page Image of app page with data (portrait) Image of app page with data (landscape) Image of app detailed giphy page

About

Repository contains code for the test task from Chili Labs for Junior Mobile Developer position.

Topics

Resources

Stars

Watchers

Forks