Congratulations on making it to the next stage of our selection process! We're excited to learn more about how you think, build, and write code.
As the next step, weβd like you to complete a Flutter assignment.
This app simulates a real-world feature set where users can:
- Browse a list of vendors.
- View vendor details and follow/unfollow them.
- Submit a collaboration request to a vendor through a form.
The goal is to assess your ability to write modular, scalable, and clean Flutter code, with a focus on working with REST APIs, adaptive UIs, and effective state management using Bloc.
π Deadline: 7 days from the day you receive this task.
-
Load and display a list of vendors from a local JSON file, simulating a
GET /vendorsAPI. -
Each vendor card should include:
- Vendor name
- Vendor image
- Follow/Unfollow button (based on
is_followfrom the JSON)
-
Toggling the follow state should mimic
POST /vendors/{id}/followor/unfollow.
-
Tapping on a vendor card opens the details screen.
-
This screen should show:
- Vendor name
- Vendor image
- Full vendor bio
- Follower count or similar vendor stats
- A "Request Collaboration" button to open the form screen
-
The form should include:
- Project Title β Required
- Description β Multiline, Required
- Budget β Optional numeric input
-
Implement proper form validation:
- Show inline error messages for invalid fields.
- Show a toast/snackbar on successful submission.
- Display a loading indicator while submitting.
- State Management:
flutter_bloc - Networking:
Dio - Routing:
go_routerorNavigator - Form & UI: Form widgets + Flutter best practices
Youβre expected to separate business logic from UI using clean architecture principles or a layered structure.
- Persist the follow state using
shared_preferences. - Add pull-to-refresh on the vendor list.
- Add a simple animation when following/unfollowing a vendor.
- Implement global error handling and loading indicators.
- Apply Material Design principles.
- Make the layout responsive for phones and tablets.
-
β Push your code to a GitHub repository
-
β Include a
README.mdfile with:- Project setup instructions
- Brief description of your app architecture
- If you have any questions, feel free to reach out for clarification.