## Description

Hi there :-)

I'm looking for someone to implement a prototype for a math-game.

*What is the game about?*

The math-game is about solving exercises like

- Simplify: 2x^2*x+3x^3-y^2-2y^2

- Use the binomial formulas to expand the term: (2x+y)^2

- Solve: 2x+4 = 10

and so on.

*What is the prototype (your job) about?*

The prototype should be a proof of concept for:

- generating exercises

- presenting exercises to the user nicely

- making user type in a solutions via a virtual keyboard (like a calculator) or the real keyboard

- verifying user's input and give feedback (true / false). *Very important*: It must not depend on the order of any term-elements, whether or not the solution is correct (so xy must be the same as yx).

The prototype is *not* about:

- authentication

- managing users

- Layout / Style (except user-input and presentation of the exercise)

- exercise-details (like difficulty)

The prototype should be a simple roundtrip:

- Client asks backend for exercise

- backend generates random exercise (e.g. "expand (2x+y)^2")

- backend calculates solution ( 4x^2+4xy+y^2) and makes solution persistent for checking user-input

- backend renders exercise to a representation that can be handled by client (here it seems to be the string "4x^2+4xy+y^2")

- Client presents exercise

- User types solution via virtual or real keyboard

- Client sends solution (I guess it will be a string in latex-notation) to backend

- Backend checks solution (Accepted solution for the given example is 4x^2+4xy+y^2 with all permutations), gives feedback and sends another exercise, so user is able to continue the game.

*Technology-stack*

Server-Side:

- Ruby / ruby on rails (version 5 or 6) with mysql / mariadb. No jruby.

- Maybe a wrapper for a computer algebra system. (I don't know if there is a ruby-gem out there, which handles the calculation and checks the user's input (solutions of the exercises). Maybe it's easier to build a wrapper for a computer-algebra-system like maxima, axiom or any other (open source!). Verifying solutions in a clean and generic way is one of the core issues of this job!)

Client-Side:

- Javascript

- mathquill (http://mathquill.com/) for presentation of exercises and user input (or any similar library)

- Ajax (no websockets)

- no js-frameworks like angular or ember, no react, maybe vue.js

*Collaboration*

It's your job to develop this prototype. We will use gitlab for collaboration. I expect you to commit often and to accept code-reviews. And of course I expect you to deliver clean and maintainable code. Some tests (rspec) should be a matter of course.

We will talk in German or English via Email or Gitlab-Comments.

If this gets into a promising collaboration, we could build the whole game together later on.

If you are interested: Please tell me about your ruby-on-rails skills and describe a rough (technical) idea of how you would verify user's input (check the solutions).

*Deadline*

There's no fix deadline, it's not urgent. But of course you should give a valid estimation on when you can do it.