If you would like a reference, @Cyanitem and his team has already made one. You can learn a lot from here: