Refactor article validation into domain