Add ethercraft class

@houndci @mikeymurph77
I don't think you need to write `default: ""` for name or description. By defaulting an empty string you're allowing the user to enter blank data, which is counterintuitive to `null: false`.