Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/jdegand/muse-jobs-app

Based off Devchallenges - Legacy - Frontend-Developer - Github Jobs
https://github.com/jdegand/muse-jobs-app

date-fns devchallenges-legacy interweave react themuse

Last synced: about 2 months ago
JSON representation

Based off Devchallenges - Legacy - Frontend-Developer - Github Jobs

Awesome Lists containing this project

README

        

Muse Jobs App


Solution for a challenge from Devchallenges.io.

## Table of Contents

- [Overview](#overview)
- [Built With](#built-with)
- [Links](#links)
- [Features](#features)
- [Useful Resources](#useful-resources)

## Overview

![Homepage](screenshots/muse-jobs-homepage.png)

***

![Job Details](screenshots/muse-jobs-job-details.png)

***

![Jobs Level Filter](screenshots/muse-jobs-level-filter.png)

***

![Jobs Level and Location Search](screenshots/muse-jobs-level-and-location-search.png)

***

![Company Search](screenshots/muse-jobs-company-search.png)

***

![Pagination](screenshots/muse-jobs-pagination.png)

***

![Mobile](screenshots/muse-jobs-mobile.png)

***

### Built With

- [Create React App](https://github.com/facebook/create-react-app)
- [React](https://reactjs.org/)
- [Interweave](https://interweave.dev/)
- [Date-fns](https://date-fns.org/)
- [themuse](https://www.themuse.com/developers/api/v2)

### Links

- [Github Pages](https://jdegand.github.io/muse-jobs-app)

## Features

This application/site was created as a submission to a [DevChallenges](https://devchallenges.io/challenges) challenge. The [challenge](https://web.archive.org/web/20240526061540/https://legacy.devchallenges.io/challenges/TtUjDt19eIHxNQ4n5jps) was to build an application to complete the given user stories. **Note**: The previous design document may be incomplete, as you need to find an archived version of the challenge as all `legacy` challenges have had their documentation removed from DevChallenges.

## Thoughts

- Probably could have avoided using date-fns but I wanted to look into it more as it is extremely popular.
- First time using Interweave, it was recommended in this [stack overflow](https://stackoverflow.com/questions/29044518/safe-alternative-to-dangerouslysetinnerhtml) post. I think it fit perfectly here and it is really simple to use.
- I added the job description to the post itself vs adding react-router and crafting a detail page component.
- The Muse Jobs API has gone public (no api key) and it helped me approximate the intended devchallenge design.
- Couldn't add all the search variables to one api request. While level and location can be null, company and category cannot. Without a page element, you get no response at all.
- I thought about adding category at one point but ultimately, I left it out.
- I added a matching object for the company values so I wouldn't have a problem when sending the request.
- I used JavaScript to get all the select values from the muse website and formatted it with online formatter. When you grab it, every value is on its own line.
- The [Muse docs](https://www.themuse.com/developers/api/v2) have all accepted values listed.
- I kinda faked the pagination at the bottom. I don't have the numbers update (if you go past page 10) and the ellipsis doesn't bring up an input to type a specific page number. It would be better to visually indicate what page you are on. Might require state.
- Problems if you search for same company in different locations
- Global state management might be necessary to clean up and fix issues.

## Useful Resources

- [Blog](https://dmitripavlutin.com/javascript-fetch-async-await/) - fetch with async and await
- [Stack Overflow](https://stackoverflow.com/questions/64362242/how-to-format-date-with-date-fns) - format date with date-fns
- [Stack Overflow](https://stackoverflow.com/questions/41691386/parsing-single-user-input-string-for-advanced-search-criteria) - parsing user input string for search
- [Stack Overflow](https://stackoverflow.com/questions/29044518/safe-alternative-to-dangerouslysetinnerhtml) - alternative to dangerouslysetinnerhtml
- [PluralSight](https://www.pluralsight.com/guides/how-to-use-radio-buttons-in-reactjs) - radio buttons in react
- [Blog](https://bobbyhadz.com/blog/javascript-includes-case-insensitive) - case insensitive includes
- [Github](https://gist.github.com/ffoodd/000b59f431e3e64e4ce1a24d5bb36034) - sr only implementation