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.
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
- 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).
- 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).
- 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).
- 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).





