Skip to content

Latest commit

 

History

History

frontend-developers

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 

We're hiring Front-end Developers! 👨‍💻 👩‍💻

Don't hesitate to do the challenges presented here and tell us: [email protected]!

We're hiring full-remote Front-end Developers experimented with React and Typescript, with an interest in beautiful UIs, able to think as a user (UX), and used to work with backend teams (Scala here).

The Challenge

Conduktor is a software company centered around Apache Kafka. Apache Kafka is basically a message broker. It has topics containing data. Any application can send data to Apache Kafka, and other applications can "listen" to these incoming data.

Vocabulary

  • Topics are a way to organize messages in Apache Kafka. Each topic has a name that is unique across the entire Kafka cluster.
  • Producers write data to topics, and consumers read data from topics. (it's a Pub/Sub system)

Business requirements: a mini-Conduktor

Create a SPA where we can:

  • register/login/logout (we provide you an Auth0 sandbox, see below)
  • display our identity (name/photo) in the application header (useAuth0() using auth0-react)
  • create a topic with a name
  • list topics
  • click on a topic to consume its data in real-time (data are flowing!)
  • use a state (react context or redux) to save a locale, and retrieve it in a component (no need to setup i18n libs, we're just validating state usage)

Technical requirements

  • TypeScript 4.3+ (no JavaScript)
  • React v17+, hooks, React-router, manage forms, manage state
  • Use GraphQL (either Apollo Client or @tanstack/react-query), that's what we are using for all our products.
  • Use the UI library you want

Design Inspiration

  • Our desktop product (list of topics that we can "consume" messages from):

Don't try to reproduce it exactly, it's just to get you an idea of what is a list of topics!

  • You can also check this sketch example (feel free to derive or propose a completely different solution)

Handle the Login part using Auth0

You can follow the official example. You can create your own Auth0 sandbox OR use this one:

  • Domain: conduktor-coding-challenge.eu.auth0.com
  • ClientID: 2BczaMeSZzUhOfRfDOFG5QXcfaXQUjmE
  • Callback & Logout URL we've configured: http://localhost:8000

Server

We provide a nodejs server, see here for the instructions. Introspection is enabled. Routes are not authenticated (to let you explore freely) but we expect the token to be passed in headers

Bonus :

Production mode : use the --flaky mode on the server. It will fail randomly, forcing you to handle errors 🦹 (think UX)

How long?

Time estimated: from a few hours to a workday

It's really the "job" at Conduktor, just think that it's your onboarding. :-)

Before submitting your challenge, make sure all the above requirements are okay or find a good reason why it's not and explain what you would do in details.