foss42 / apidash

API Dash is a beautiful open-source cross-platform (macOS, Windows, Linux, Android & iOS) API Client built using Flutter which can help you easily create & customize your API requests, visually inspect responses and generate API integration code. A lightweight alternative to postman/insomnia.
https://apidash.dev
Apache License 2.0
1.7k stars 335 forks source link

Mobile Android/ iOS Support #33

Closed Kop3sh closed 5 months ago

Kop3sh commented 1 year ago

Tell us about the task you want to perform and are unable to do so because the feature is not available I would like to add support for Mobile Platforms i.e. Android, iOS this would allow to test APIs on-the-go. It might seem excessive and unnecessary but this kind of agility that enables everyone to test stuff on-the-go, having the same familiar UX and set of features providing continuity, with the added benefit of having a shared open-source codebase powered by flutter is what could potentially set this app apart from other competition.

Describe the solution/feature you'd like us to add My proposal is building a preliminary mobile version of the app with a simplified UI/UX that can empower users to test APIs and endpoints in the simplest way possible on-the-go. This could potentially be utilized in adding future features like integrating a cross-platform sync; providing continuity for signed-up users.

Approach This is obviously a fairly big feature to be added, for that my approach would be to start

  1. Designing an interface with the bare minimum of functional features coupled with the same beautiful design, (no changes, just adapting for smaller screens)
  2. Iteratively develop/ adapt code for the new platforms (starting with Android because it's usually more accessible)
  3. Test and add more features while maintaining this simple design language.
animator commented 1 year ago

Hi @Kop3sh,

Thanks for opening this issue and taking a lead on adding Mobile Android/ iOS Support. One of the reasons we chose Flutter was to ship API Dash across all platforms one day. Adding Android/ iOS support will definitely be an ambitious project and will require a lot of work, but your step-by-step approach is definitely the way to go about it. Before you start coding Step 1, do share the UI mockups for smaller screens in this issue thread, so that we can discuss what would be the best way to adapt the UI for mobile. Also, do join our Discord server and ping #foss channel in case you need any help.

Kop3sh commented 1 year ago

Hi @animator

Thank you...

I'll get to it then. It would be great if you could share with me existing UI mockups/ components/ themes... so that I repurpose them and follow the same design rules without reinventing the wheel and wasting precious time ?

animator commented 1 year ago

We do not have separate mockups currently as we are using Material 3 as the base. And any tweaks made and all reusable components of API Dash are present in lib/consts.dart & lib/widgets/.

animator commented 1 year ago

Also @Kop3sh, by mockups, I just meant simple rough drawings to show what elements (button, tabs, fields, etc.) will go where for smaller screens. There is no need of very elaborate mockups with full themes. Just simple drawings to discuss on the layout.

Kop3sh commented 1 year ago

https://drive.google.com/file/d/1guo6oZV66xbIOzYTyuVBF7VdBEcJ7od1/view?usp=sharing

This Google Drive link contains a rough sketch of the mobile layout. looking forward for your input/ suggestions...

NB. Please let me know if there's a solution for saving a cloud centralized excalidraw sketch for easier collaboration. I tried the 3rd party extension for google drive but it returns this error "Request had insufficient authentication scopes."

animator commented 1 year ago

Hi @Kop3sh, I think you can continue using excalidraw if you are comfortable with it. There is a Google Jamboard where people can collaborate. But, I am not sure if it has advanced features like excalidraw. Anyways real-time collaboration is difficult due to timings, so having iterations in the form of comments in this issue thread may actually be better as we can go back and refer to any iteration anytime. Also, instead of uploading on google drive, it would be great if you can just drag and drop the file in the issue comment as an attachment as it will remove any external dependency (google drive).

I did take a look at the schematics and it has a lot of ideas and I am going through them one by one. Please give me a couple of days to work on it so that I can review all the aspects and add my inputs.

Thanks! 🙂

Kop3sh commented 1 year ago

I've already tried the darg-and-drop thing, but apparently github "doesn't support this file type"...

animator commented 1 year ago

Hi @Kop3sh, It does support compressed file upload .. all you need to do is compress (.zip) the file and drag & drop.

Manas-33 commented 1 year ago

Hey! Is this issue underway? If so would love to work on it

animator commented 1 year ago

Hi @Manas-33,

Right now we are in the design stage. @Kop3sh is currently working on the issue and has attached initial mockups which I am currently reviewing. You can also take a look at them at your end and also include your feedback in this thread. It will definitely add another perspective and help this issue.

Manas-33 commented 1 year ago

Yup, would love to contribute 👍

Kop3sh commented 1 year ago

@animator any updates/ comments on the mockups

animator commented 1 year ago

Hi @Kop3sh ... got swarmed with some new feature reviews. I have made some notes and mockups. Please give me 2-3 days to get everything sorted. Apologies 🙏 for the delay 😞

Kop3sh commented 1 year ago

sure, take your time and good luck with your reviews

Kop3sh commented 1 year ago

@animator I hope you're doing well... Any news about the mockups stage, so that I can move forward with the next steps

animator commented 1 year ago

Hi @Kop3sh, Extremely sorry for the delay. It won't happen again.

Option A

Screenshot 2023-06-24 at 8 06 47 PM Screenshot 2023-06-24 at 8 07 10 PM

Option A Feedback: It looks like a more natural extension of our existing app. Just a few pointers:

Option B

Screenshot 2023-06-24 at 8 07 39 PM

Option B Feedback:

This is a new design where we are hiding details in the sliverappbar. It may confuse some users as this kind of interface is not that common in mobile apps.

Both versions have elements that we can definitely use in the mobile version.

Also, few other points for the mobile version:

I have taken some elements from option A & B and also added some elements from my side to create the below iteration.

1 2 3 4

.

.

.

Do let me know your thoughts on this iteration and please feel free to share any modifications below. Thanks @Kop3sh !

Kop3sh commented 1 year ago

No problems...

I totally agree with what you're saying, I'll get started with coding, if it is okay with you...

animator commented 1 year ago

Sure @Kop3sh you can definitely get started. 👍

AbhinavISM commented 1 year ago

Hi @Kop3sh @animator can i be of any help?

Kop3sh commented 1 year ago

This pull request serves as a starting point, I plan on following more of an iterative approach, -if it is okay with you- just to make sure that I am going with the right path...

waiting for your review and guidance

Kop3sh commented 1 year ago

@AbhinavISM sure,

I am not proficient in writing flutter tests, maybe we can collab on that, if it's okay with both of you @animator

N.B. it's just a suggestion, feel free to help out with whatever you see fit...

AbhinavISM commented 1 year ago

i have started writing tests only recently too, we can do that together. is there a way i can help with mobile ui too? since you have made changes and made a PR, i see you have enabled ios only till now, is there a way i can help with andorid parralely? maybe just tell me to do something, eager to help

animator commented 1 year ago

Hi @Kop3sh Thanks for sending the PR .. I will definitely review it. @AbhinavISM, @Kop3sh is currently taking a lead on this issue .. so some of the ways in which you can contribute are:

ashitaprasad commented 9 months ago

Some initial work was done on this issue, but currently this issue is open to new contributors and is currently unassigned.

Kop3sh commented 9 months ago

Some initial work was done on this issue, but currently this issue is open to new contributors and is currently unassigned.

@ashitaprasad I would like to get back to this issue if it's still okay, I got distracted because of a new job, but now everything is settled.

ashitaprasad commented 9 months ago

Sure @Kop3sh you can definitely continue working on it.

opxdelwin commented 9 months ago

Hey @ashitaprasad,

I'm looking to contribute towards mobile app for API-Dash under GSoC '24. I've been exploring the codebase lately and would love to work collaboratively with @Kop3sh to expand feature set supported on mobile.

Please let me know what do you think on this.

Thanks, Delwin

ashitaprasad commented 9 months ago

@opxdelwin , as per the rules of GSoC you can discuss ideas on this thread but you cannot work as a team. Please feel free to share your views on this thread and send across a PR implementing your vision for API Dash mobile app.

YoussefMoRabie commented 9 months ago

Hi @ashitaprasad,

I've generated Android and iOS files for the project and addressed some issues to ensure the app runs smoothly on Android. Could I go ahead and create a pull request with these changes?

ashitaprasad commented 9 months ago

Sure @Yousef-Rabia, please go ahead and raise a PR.

DenserMeerkat commented 9 months ago

Hey @animator @ashitaprasad My design proposal for the mobile layout with maximum reuse of existing components. Figma Link What are your thoughts?

animator commented 9 months ago

@DenserMeerkat looks fantastic 👍

ZapeeoSheikh commented 8 months ago

@animator These are amazing designs that you have created but there are few things that I would suggest you to must add in the design for better user experience.

When a user click on the requests from the drawer, API request should have to execute it on the home_page screen.

DILPREET1910 commented 8 months ago

Hi @animator @ashitaprasad

Having reviewed @animator's mock-ups, I find them closely resembling the desktop client, promising a positive user experience within limited screen space. I propose initiating mobile client coding based on these mock-ups, with the flexibility to incorporate UI/UX enhancements during the development and testing phases.

If you agree on this I have some quires after going through the current desktop client codebase. I believe we want to develop a mobile client in a way that ensures modification to functionalities in future won't require change in both desktop and mobile client specific files.

So we can: a. Maintain one layout file for desktop and mobile client by maximising the use of ternary operators. b. Having a different mobile layout file, but using the same reusable components as desktop client. c. Prioritising a but using b if ternary(if-else) nesting increases.

I have gone through the code base so if you want you can answer section specifically as well. It would be difficult for me to give an example on text. If you did not understand and if you want we can hop on a call and discuss it.

animator commented 8 months ago

@DILPREET1910 point b with as much reuse of desktop components as possible.

DILPREET1910 commented 8 months ago

@DILPREET1910 point b with as much reuse of desktop components as possible.

ok thanks got it!

MohammedAshraf19 commented 8 months ago

Hi @animator @ashitaprasad I read issue, saw mock-ups that you created and fork repo. I think it is interesting issue, I have some Feature idea we can add and design with as much reuse of desktop components, so can I make design for app and show you or I should put my design and features in my proposal? also I saw bug in mobile app, It is normal because it not ready yet or I can fix it and PR?

animator commented 8 months ago

@MohammedAshraf19 send across a PR to discuss further on your implementation.

GeekyMonk07 commented 8 months ago

@animator @ashitaprasad @Kop3sh Hey everyone! I would like to start working on this project for GSoC'24. Can I start building the ui/ux or mockups for the screens? I really have a keen interest in this project, and I would like to contribute. Also, do let me know what is the current status of the project, what is built and what is still left?

Detective-Khalifah commented 8 months ago

@animator @ashitaprasad @Kop3sh Hey everyone! I would like to start working on this project for GSoC'24. Can I start building the ui/ux or mockups for the screens? I really have a keen interest in this project, and I would like to contribute. Also, do let me know what is the current status of the project, what is built and what is still left?

Hi! Have you cloned/forked the repository and run it on your system? Some work seems to have been done on the issue in the past weeks (and months), as I can see Pull Requests made -- 1 merged, 3 open.

animator commented 8 months ago

@GeekyMonk07 @Detective-Khalifah You can build mockups of the design and submit your implementations via PR. We are reviewing all the open PRs and will provide feedback for the same.

chiragtyagi2003 commented 8 months ago

Hi People. I am intrigued with the idea of the app client, I would be grateful if someone could update what they are expecting now as some work has already been done in the past.

animator commented 8 months ago

@chiragtyagi2003 see this comment

chiragtyagi2003 commented 8 months ago

Hi @animator as you mentioned we don't have the app yet, if the project is still open I would like to shift my focus to this.

chiragtyagi2003 commented 8 months ago

Hi @animator @ashitaprasad, I build some initial mockup for the drag and drop functionality and I wanted to pick your brain on it to make sure I am heading into the right direction or not.

WhatsApp Image 2024-03-22 at 16 05 14 (1) WhatsApp Image 2024-03-22 at 16 05 14

Now I am working on making UI more feasible and user friendly, but if you could guide me if I am heading in the right direction, and also what else to add.

ashitaprasad commented 8 months ago

@chiragtyagi2003 This UI does not align with the theme of API Dash. Would recommend you to go through the above thread in detail and understand what options have been suggested and why.

chiragtyagi2003 commented 8 months ago

@ashitaprasad I am changing the UI to align with the app's theme, just wanted to make sure about the drag and drop function, in case I am heading in the wrong way.

sudhar08 commented 8 months ago

Hey @animator @ashitaprasad My design proposal for the mobile layout with maximum reuse of existing components. Figma Link What are your thoughts?

Hey man it's looks great man 👍