gradio-assessment
This repo is for the senior frontend engineer assessment
Science Score: 26.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
○CITATION.cff file
-
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
○Academic publication links
-
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (14.6%) to scientific vocabulary
Repository
This repo is for the senior frontend engineer assessment
Basic Info
- Host: GitHub
- Owner: dawoodkhan82
- License: apache-2.0
- Language: HTML
- Default Branch: main
- Size: 103 MB
Statistics
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
- Releases: 0
Metadata Files
README.md
Senior Frontend Engineer Take Home Assessment
Overview
Thanks for taking the time to interview with the Gradio team, the next step in the process includes completing a take-home assessment.
The format of the assessment will consist of: 1. A quick call to help you get setup with your local development environment and answer any questions around the assessment. 2. Spend no more than 4-5 hours on this take home assessment. You can always ask us clarifying questions during this process. Also you can always discuss your approach and how you would've implemented something you didn't have the time for. 3. A final call to explain your submission and approach.
The purpose of this assessment is to create a custom dropdown menu. The dropdown component is an important input component within the Gradio library. It allows developers to enable users to select from a list of options within their demos. This repository currently implements a standard dropdown menu using the html select element:

As shown above, the current dropdown is limited in its capabilities and very simplistic design. Your job will be to replace this dropdown with your own custom implementation and add more features, requested by our developers. Use the current dropdown component implementation as a starting point and build a completely custom dropdown within a private fork of this repository. Below is an example of a custom dropdown with extra functionality, don't feel the need to mimic this exact dropdown, we want to see your own unique approach:

Prerequisites
First, you will create a private fork of this repository and follow the CONTRIBUTING.md guide in order to setup your local development environment (both client and server side).
- We will setup an initial call to help with any issues when setting up your local environment. Try to see how far you can get on your own by following the guide. But we expect there to be some hurdles, so don't stress, we'll help get it sorted!
Structure of the Repository
It's helpful to know the overall structure of the repository, although you will only have to work with a couple of files.
/gradio: contains the Python source code for the library/gradio/interface.py: contains the Python source code for the coreInterfaceclass/gradio/blocks.py: contains the Python source code for the coreBlocksclass/gradio/components.py: contains the Python source code for thecomponents, you can add your custom components here.
/ui: contains the HTML/JS/CSS source code for the library (start here for frontend changes)/test: contains Python unit tests for the library/demo: contains demos that are used in the documentation, you can findGradioexamples over here./website: contains the code for the Gradio website (www.gradio.app). See the README in the/websitefolder for more detailsBelow are the files you will need to know about:
gradio/ui/packages/app/src/components/Dropdown/Dropdown.svelte- This is a simple file that creates a
Dropdowncomponent and wraps it in aBlock. gradio/ui/packages/form/src/Dropdown.svelte- This is the file where the frontend implementation of your custom dropdown will go. Notice how the
choicesvariable is used to create an<option>with the current implementation. - https://github.com/dawoodkhan82/gradio-assessment/blob/cb475c1caa0b500461d96582a1085530d28ed2fb/ui/packages/form/src/Dropdown.svelte#L23-L25
gradio/gradio/components.py- For the extra dropdown features you may want to add, you're going to have to change the python api and add any additional developer facing parameters for the dropdown component. For example, you may want to add a
multiselectbool parameter to allow the developer to toggle on the ability to select multiple choices. - https://github.com/dawoodkhan82/gradio-assessment/blob/cb475c1caa0b500461d96582a1085530d28ed2fb/gradio/components.py#L1170
What we're looking for
Please don't feel the need to spend too much time on this assessment! To re-iterate: you can always discuss your approach and how you would've implemented something you didn't have the time for. We're mainly looking for how you work and communicate.
Overall:
- A basic working custom dropdown component
- Code quality and organization
- Documentation of how the component works and in-code documentation for any areas of code that may be hard to understand
- Good design eye
- Basic unit tests
- Ability to talk through your implementation
- Willingness to ask us questions if you reach any issues or have trouble understanding anything
Core Dropdown Features:
- Allow selection of a single dropdown option
- Clear the selected option
- Ability to type and search through the dropdown options
- Keyboard functionality: enter key to select an option, and arrow key support for navigating options
- A11Y (accessiblity) adherence
Extra Dropdown Features (Optional):
- Ability to select multiple dropdown options
- Section headers in the dropdown to organize options
- Filter dropdown options by typing in section header name
- Ability to clear all options and individual options
Owner
- Name: Dawood Khan
- Login: dawoodkhan82
- Kind: user
- Repositories: 28
- Profile: https://github.com/dawoodkhan82
GitHub Events
Total
Last Year
Issues and Pull Requests
Last synced: over 1 year ago
All Time
- Total issues: 0
- Total pull requests: 0
- Average time to close issues: N/A
- Average time to close pull requests: N/A
- Total issue authors: 0
- Total pull request authors: 0
- Average comments per issue: 0
- Average comments per pull request: 0
- Merged pull requests: 0
- Bot issues: 0
- Bot pull requests: 0
Past Year
- Issues: 0
- Pull requests: 0
- Average time to close issues: N/A
- Average time to close pull requests: N/A
- Issue authors: 0
- Pull request authors: 0
- Average comments per issue: 0
- Average comments per pull request: 0
- Merged pull requests: 0
- Bot issues: 0
- Bot pull requests: 0
Top Authors
Issue Authors
Pull Request Authors
Top Labels
Issue Labels
Pull Request Labels
Dependencies
- actions/checkout v3 composite
- actions/setup-node v3 composite
- actions/setup-python v3 composite
- actions/upload-artifact v3 composite
- pnpm/action-setup v2.2.2 composite
- actions/checkout v3 composite
- actions/setup-python v3 composite
- peter-evans/create-pull-request v4 composite
- actions/checkout v2 composite
- actions/checkout v2 composite
- actions/upload-artifact v3 composite
- actions/checkout v3 composite
- actions/setup-python v3 composite
- thollander/actions-comment-pull-request v2 composite
- actions/checkout v3 composite
- actions/setup-python v3 composite
- actions/checkout v3 composite
- actions/setup-python v3 composite
- thollander/actions-comment-pull-request v1 composite
- EndBug/add-and-commit v9 composite
- actions/checkout v3 composite
- actions/setup-python v3 composite
- pnpm/action-setup v2.2.2 composite
- pypa/gh-action-pypi-publish 27b31702a0e7fc50959f5ad993c78deac1bdfc29 composite
- softprops/action-gh-release v1 composite
- actions/checkout v3 composite
- actions/setup-node v3 composite
- actions/setup-python v3 composite
- actions/upload-artifact v3 composite
- pnpm/action-setup v2.2.1 composite
- python 3.8 build
- 124 dependencies
- @types/three ^0.138.0 development
- @gradio/tootils workspace:^0.0.1
- @playwright/test ^1.27.1
- @sveltejs/vite-plugin-svelte ^1.0.0-next.44
- @tailwindcss/forms ^0.5.0
- @testing-library/dom ^8.11.3
- @testing-library/svelte ^3.1.0
- @testing-library/user-event ^13.5.0
- autoprefixer ^10.4.4
- babylonjs ^5.17.1
- babylonjs-loaders ^5.17.1
- happy-dom ^2.49.0
- node-html-parser ^5.3.3
- npm-run-all ^4.1.5
- playwright ^1.27.1
- plotly.js-dist-min ^2.10.1
- polka ^1.0.0-next.22
- postcss ^8.4.5
- postcss-nested ^5.0.6
- prettier ^2.6.2
- prettier-plugin-svelte ^2.7.0
- sirv ^2.0.2
- sirv-cli ^2.0.2
- svelte ^3.49.0
- svelte-check ^2.8.0
- svelte-i18n ^3.3.13
- svelte-preprocess ^4.10.6
- tailwindcss ^3.1.6
- tinyspy ^0.3.0
- typescript ^4.7.4
- vite ^2.9.5
- vitest ^0.12.7
- vite ^2.9.9 development
- @gradio/atoms workspace:^0.0.1
- @gradio/audio workspace:^0.0.1
- @gradio/button workspace:^0.0.1
- @gradio/carousel workspace:^0.0.1
- @gradio/chart workspace:^0.0.1
- @gradio/chatbot workspace:^0.0.1
- @gradio/file workspace:^0.0.1
- @gradio/form workspace:^0.0.1
- @gradio/highlighted-text workspace:^0.0.1
- @gradio/html workspace:^0.0.1
- @gradio/icons workspace:^0.0.1
- @gradio/image workspace:^0.0.1
- @gradio/json workspace:^0.0.1
- @gradio/label workspace:^0.0.1
- @gradio/markdown workspace:^0.0.1
- @gradio/model3D workspace:^0.0.1
- @gradio/plot workspace:^0.0.1
- @gradio/table workspace:^0.0.1
- @gradio/tabs workspace:^0.0.1
- @gradio/theme workspace:^0.0.1
- @gradio/upload workspace:^0.0.1
- @gradio/uploadbutton workspace:^0.0.1
- @gradio/utils workspace:^0.0.1
- @gradio/video workspace:^0.0.1
- d3-dsv ^3.0.1
- mime-types ^2.1.34
- svelte ^3.25.1
- svelte-i18n ^3.3.13
- @gradio/utils workspace:^0.0.1
- @gradio/atoms workspace:^0.0.1
- @gradio/icons workspace:^0.0.1
- @gradio/upload workspace:^0.0.1
- extendable-media-recorder ^7.0.2
- extendable-media-recorder-wav-encoder ^7.0.76
- svelte-range-slider-pips ^2.0.1
- @gradio/utils workspace:^0.0.1
- @types/d3-dsv ^3.0.0 development
- @types/d3-scale ^4.0.2 development
- @types/d3-shape ^3.0.2 development
- @gradio/icons workspace:^0.0.1
- @gradio/theme workspace:^0.0.1
- @gradio/tooltip workspace:^0.0.1
- @gradio/utils workspace:^0.0.1
- d3-dsv ^3.0.1
- d3-scale ^4.0.2
- d3-shape ^3.1.0
- @gradio/theme workspace:^0.0.1
- @gradio/utils workspace:^0.0.1
- @gradio/atoms workspace:^0.0.1
- @gradio/icons workspace:^0.0.1
- @gradio/upload workspace:^0.0.1
- @gradio/atoms workspace:^0.0.1
- @gradio/utils workspace:^0.0.1
- @gradio/theme workspace:^0.0.1
- @gradio/utils workspace:^0.0.1
- @gradio/atoms workspace:^0.0.1
- @gradio/icons workspace:^0.0.1
- @gradio/upload workspace:^0.0.1
- @gradio/utils workspace:^0.0.1
- cropperjs ^1.5.12
- lazy-brush ^1.0.1
- resize-observer-polyfill ^1.5.1
- @gradio/utils workspace:^0.0.1
- @gradio/atoms workspace:^0.0.1
- @gradio/icons workspace:^0.0.1
- @gradio/upload workspace:^0.0.1
- babylonjs ^4.2.1
- babylonjs-loaders ^4.2.1
- @gradio/icons workspace:^0.0.1
- @gradio/theme workspace:^0.0.1
- @gradio/utils workspace:^0.0.1
- @rollup/plugin-json ^5.0.2
- plotly.js-dist-min ^2.10.1
- svelte-vega ^1.2.0
- vega >=5.21.0 <6.0.0
- vega-lite *
- @gradio/upload workspace:^0.0.1
- @gradio/utils workspace:^0.0.1
- @types/d3-dsv ^3.0.0
- d3-dsv ^3.0.1
- dequal ^2.0.2
- @gradio/atoms workspace:^0.0.1
- @gradio/icons workspace:^0.0.1
- @gradio/utils workspace:^0.0.1
- @gradio/theme workspace:^0.0.1
- @gradio/atoms workspace:^0.0.1
- @gradio/icons workspace:^0.0.1
- @gradio/image workspace:^0.0.1
- @gradio/upload workspace:^0.0.1
- @sveltejs/adapter-auto next development
- @sveltejs/kit ^1.0.0-next.318 development
- autoprefixer ^10.4.2 development
- postcss ^8.4.5 development
- postcss-load-config ^3.1.1 development
- svelte-check ^2.2.6 development
- svelte-preprocess ^4.10.1 development
- tailwindcss ^3.0.12 development
- tslib ^2.3.1 development
- typescript ~4.5.4 development
- @gradio/atoms workspace:^0.0.1
- @gradio/audio workspace:^0.0.1
- @gradio/button workspace:^0.0.1
- @gradio/carousel workspace:^0.0.1
- @gradio/chart workspace:^0.0.1
- @gradio/chatbot workspace:^0.0.1
- @gradio/file workspace:^0.0.1
- @gradio/form workspace:^0.0.1
- @gradio/highlighted-text workspace:^0.0.1
- @gradio/html workspace:^0.0.1
- @gradio/image workspace:^0.0.1
- @gradio/json workspace:^0.0.1
- @gradio/label workspace:^0.0.1
- @gradio/markdown workspace:^0.0.1
- @gradio/model3D workspace:^0.0.1
- @gradio/plot workspace:^0.0.1
- @gradio/table workspace:^0.0.1
- @gradio/tabs workspace:^0.0.1
- @gradio/theme workspace:^0.0.1
- @gradio/upload workspace:^0.0.1
- @gradio/uploadbutton workspace:^0.0.1
- @gradio/video workspace:^0.0.1
- svelte >=3.44.0 <4.0.0
- 495 dependencies
- 178 dependencies
- @fullhuman/postcss-purgecss ^4.0.3
- @tailwindcss/forms ^0.5.0
- @tailwindcss/typography ^0.5.4
- autoprefixer ^10.4.0
- cssnano ^5.0.8
- postcss-cli ^9.0.1
- postcss-hash ^3.0.0
- tailwindcss ^3.0.24
- matplotlib *
- numpy *
- torch ==1.6.0
- torchvision ==0.7.0
- wget *
- altair *
- vega_datasets *
- Pillow *
- cmake *
- gdown *
- numpy *
- onnxruntime-gpu *
- opencv-python-headless *
- scipy *
- torch *
- torchvision *
- numpy *
- matplotlib *
- shap *
- torch *
- transformers *
- plotly *
- pypistats *
- torch *
- transformers *
- SQLAlchemy *
- matplotlib *
- psycopg2 *
- matplotlib >=3.5.2
- scikit-learn >=1.0.1
- numpy *
- opencv-python *
- Pillow *
- plotly *
- Pillow *
- jinja2 *
- numpy *
- open3d *
- torch *
- transformers add_dpt_redesign
- tensorflow *
- torch *
- transformers *
- numpy *
- pandas *
- torch *
- transformers *
- numpy *
- opencv-python *
- torch *
- torchvision *
- numpy *
- tensorflow *
- pillow *
- torch *
- torchvision *
- numpy *
- tensorflow *
- numpy *
- scipy *
- torch *
- transformers *
- vega_datasets *
- plotly *
- matplotlib *
- numpy *
- scipy *
- plotly *
- gdown *
- librosa ==0.9.2
- torch ==1.12.0
- torchaudio ==0.12.0
- torchvision ==0.13.0
- vega_datasets *
- neon-tts-plugin-coqui ==0.4.1a9
- torch *
- transformers *
- altair *
- bokeh *
- matplotlib *
- numpy *
- plotly *
- gdown *
- torch *
- matplotlib *
- numpy *
- datasets *
- tqdm *
- matplotlib *
- numpy *
- pandas *
- torchaudio *
- vega_datasets *
- nltk *
- plotly *
- matplotlib *
- numpy *
- scipy *
- diffusers *
- ftfy *
- nvidia-ml-py3 *
- torch *
- transformers *
- matplotlib *
- numpy *
- deepspeech ==0.9.3
- torch *
- transformers *
- spacy *
- gradio *
- torch *
- pandas *
- plotly *
- prophet ==1.1
- pypistats *
- numpy *
- pandas *
- scikit-learn *
- gradio *
- torch *
- torchaudio *
- opencv-python *
- datasets *
- matplotlib *
- pandas *
- shap *
- xgboost *
- Jinja2 *
- aiohttp *
- altair >=4.2.0
- fastapi *
- ffmpy *
- fsspec *
- httpx *
- markdown-it-py *
- markupsafe *
- matplotlib *
- numpy *
- orjson *
- pandas *
- pillow *
- pycryptodome *
- pydantic *
- pydub *
- python-multipart *
- pyyaml *
- requests *
- typing_extensions *
- uvicorn *
- websockets >=10.0
- IPython * test
- altair * test
- asyncio * test
- black * test
- comet_ml * test
- coverage * test
- fastapi >=0.87.0 test
- flake8 * test
- httpx * test
- huggingface_hub * test
- isort * test
- mlflow * test
- pydantic * test
- pytest * test
- pytest-asyncio * test
- pytest-cov * test
- respx * test
- scikit-image * test
- shap * test
- torch * test
- tqdm * test
- transformers * test
- vega_datasets * test
- wandb * test
- 130 dependencies
- huggingface_hub *
- jinja2 *
- markdown2 *
- requests *