---
# System prepended metadata

title: Badgewell Angular Task

---

# Badgewell Angular Task

This task is to assess your skills using **Angular** and it's core libraries along with other core 3rd party libraries like **NGRX** and **Angular Material**.

## Requirements

A simple application that **search** github public repositories on typing and provides a custom detailed view on clicking one of the results.

1.  View One: **Search and List**:

- Searchbox, that searches github repositories upon typing anything in the inside of it.
- list of items, that shows the search results in any fashion of your choice.
- **required parameters** to be displayed are:

```json
{
  full_name,
  owner: {
    avatar_url
  },
  description,
  stargazers_count
}
```


- Adding extra parameters to complement your UI is up to you, and is welcomed.
- Clicking on one of the results will open **View Two: Repo Details**

2.  View Two: **Repo Details**

- This view will show the details of the clicked repository.
- **required parameters** to be displayed are:

```json
  {
    full_name,
    owner: {
      avatar_url
    },
    description,
    stargazers_count,

    // Extra Parameters

    forks_counts,
    size,
    language
  }
```

- Again adding extra parameters to complement your UI is up to you, and is welcomed.
- Provide a link to the original github website page for this repoistory. This can be achieved in multiple ways, and it is completely up to you.

3.  **All data should be provided through NgRx Store**.
4.  Responsive Design for both views.
5.  Each view should have it's own route.

6.  Neatness and Readability of written code.

## Info

Using **Github Public API** you can search the repositories using `https://api.github.com/search/repositories?q={search_string}`, here is the link for Github documentation for this API [Search Documentation](https://developer.github.com/v3/search/#search-repositories). You can also use the public API to get the details of repository using `https://api.github.com/repos/{owner}/{repository_name}`, Please note that **{owner}/{repository_name}** is equivalent to the repository **full_name** parameter.

_Use of other external third party libraries is allowed_

## Task Evaluation

| Criteria                      | Weight    | Required |
| ----------------------------- | --------- | -------- |
| Use of Angular Core Libraries | 10        | `true`   |
| Use of RxJS                   | 6         | `true`   |
| Responsiveness                | 4         | `true`   |
| Routed Views                  | 2         | `true`   |
| App Size & Performance        | 6 (bonus) | `false`  |
| Storing data in NgRx Store    | 6 (bonus) | `false`   |
| Use of Angular Material       | 3 (bonus) | `false`  |
| UI design                     | 3 (bonus) | `false`  |
| Unit Testing                     | 5 (bonus) | `false`  |


### How to get help

Feel free to ask any questions about the task using this email `ahmed.halawa@badgewell.com`