I already had a meeting with him discussing an overview of what he wants on the frontend side. Its basically a dashboard with a tool to perform measurements using a lib and to show some graphs based on that measurements.
I am wondering what kind of questions should I ask to make sure requirements and expectations are clear from both sides (should I ask a requirement document from his end)? And how should I go about costing my work?
Do not sign a contract with a fixed scope. That is fictional. Make sure the contract is structured for pay for your time and fast iteration. If you can't find a contract like that then you will need to carefully read and modify the contract.
I think you should tell him what your plan is for the first day of work. And that should probably be tackling the meat of the problem somehow. Maybe figure out how to do the measurement and get some code for that.
Have him sign off on your plans ahead of time. Set up a daily meeting if possible. Maybe a Discord or a phone call.
After the first day of work, show him what you accomplished or what you were researching and request payment. Don't do more work until you receive it.
Keep the iterations as short as possible. You make some progress, show him, get paid, then after getting paid move on to the next cycle. As you build up trust you can increase the duration of the iterations. But never more than two weeks. If possible being available for daily communication as needed is desirable and often necessary.
As far as the requirements go, do not assume that he knows what he actually needs just because he clearly says he needs a dashboard. What you want to try to figure out is what his job is and how he really is going to use that tool. Why does he need this tool? What will he do with the data from the graphs and how will he benefit from it?
Ideally you get enough information so that if he is absent from this part of his job, you can take over for him. He thinks that the solution to his problem is this measurement and dashboard. There is a good chance that is actually a shit solution. But he is not a problem solver so it's the best he can do.
You are the problem solver. Many business people or so called analysts or civil engineers think they know how to determine requirements. The most challenging part about programming is realizing that no matter how sure they are about their requirements, they do not have problem solving skills and so their requirements they give you are probably wrong. You have to be Sherlock and create the requirements for them.
Having said all of that, it's sometimes very hard to do that tactfully and effectively. Having short iterations and communicating clearly and frequently, getting work pre-authorized can be very helpful to ensure that at least you don't lose a lot of money.
Do you have all the money for the project on hand already?