Skip to content
  • Unlock Pro
  • Log in with GitHub
Solution
Submitted over 1 year ago

React.js + TypeScript + Redux + Firebase | Job Listings with Filtering

accessibility, react, redux, typescript, firebase
Better5afe•850
@better5afe
A solution to the Job listings with filtering challenge
View live sitePreview (opens in new tab)View codeCode (opens in new tab)

Solution retrospective


Hi All!

Without further ado:

  • The app is built with React.js and TypeScript.
  • Styles are added using SCSS.
  • Data is fetched from a Firebase database.
  • React Redux is responsible for overall state management - there are two separate reducers for rendering the jobs list and handling filters.

Core functionalities description:

  • Users can view animated loading components while the data is fetched from Firebase - to fully showcase it, the fetching function is embedded inside of a setTimeout() (I would not do it in a professional app).
  • Users will receive an error message if the data fails to be loaded.
  • Once the data is loaded, users can apply filters in three ways: a) by typing in a value in the input and pressing enter; b) browsing through available filters list and pressing enter; c) clicking on an available filter from the list.
  • Users will receive an appropriate feedback if there are no filters that would match the provided value.
  • Users will receive an appropriate feedback if there are no job listings that would match chosen filter rules.
  • Users will receive an error if they are trying to submit an empty or incorrect value.
  • It is impossible to submit two identical filters.
  • Users can view optimal layout for the site, depending on their device's screen size.
  • Users can custom focus and hover styles.
  • The app is fully accessible - it is possible to move through the entire app using only keyboard and trigger the same events as with mouse.
  • For better UI, I implemented a custom scrollbar.

As always, I'll be happy to hear any feedback or suggestions.

Happy Coding! 🎃👻

Code
Select a file

Please log in to post a comment

Log in with GitHub

Community feedback

  • Boxer•130
    @morshed-murad
    Posted over 1 year ago

    wow itis osem

Join our Discord community

Join thousands of Frontend Mentor community members taking the challenges, sharing resources, helping each other, and chatting about all things front-end!

Join our Discord
Frontend Mentor logo

Stay up to datewith new challenges, featured solutions, selected articles, and our latest news

Frontend Mentor

  • Unlock Pro
  • Contact us
  • FAQs
  • Become a partner

Explore

  • Learning paths
  • Challenges
  • Solutions
  • Articles

Community

  • Discord
  • Guidelines

For companies

  • Hire developers
  • Train developers
© Frontend Mentor 2019 - 2025
  • Terms
  • Cookie Policy
  • Privacy Policy
  • License

Oops! 😬

You need to be logged in before you can do that.

Log in with GitHub

Oops! 😬

You need to be logged in before you can do that.

Log in with GitHub

How does the accessibility report work?

When a solution is submitted, we use axe-core to run an automated audit of your code.

This picks out common accessibility issues like not using semantic HTML and not having proper heading hierarchies, among others.

This automated audit is fairly surface level, so we encourage to you review the project and code in more detail with accessibility best practices in mind.

How does the CSS report work?

When a solution is submitted, we use stylelint to run an automated check on the CSS code.

We've added some of our own linting rules based on recommended best practices. These rules are prefixed with frontend-mentor/ which you'll see at the top of each issue in the report.

The report will audit 1st-party linked stylesheets, and styles within <style> tags.

How does the HTML validation report work?

When a solution is submitted, we use html-validate to run an automated check on the HTML code.

The report picks out common HTML issues such as not using headings within section elements and incorrect nesting of elements, among others.

Note that the report can pick up “invalid” attributes, which some frameworks automatically add to the HTML. These attributes are crucial for how the frameworks function, although they’re technically not valid HTML. As such, some projects can show up with many HTML validation errors, which are benign and are a necessary part of the framework.

Oops! 😬

You need to be logged in before you can do that.

Log in with GitHub