dynamic form generation for the frontend