H Kris,
You don't need to create a mojo page, it is sufficient to create a friendly url assuming your custom feature has a real page to map to with query string params.
So the RecipeModule.ascx would be the part that is hosted in a mojoportal CMS page and it would have a pageable list of recipes that links to say /recipes/RecipeDetail.aspx?pageid=x&mid=y&recipeid=z but instead of linking directly like that with the query string params, you would create a friendly url that points to the real url using our FriendlyUrl business class. Then what you need is an extra field on your recipe object/table where you also store the friendly url for the recipe like ~/my-bbq-chicken.aspx. The reason to store it also in your feature table is simply so you know how to link to it from the pageable list.
In addition to passing in feature specific params for your real url (RecipeDetail.aspx for example), you must also pass pageid and module id as pageid=x &mid=y
These params are used for helper methods to enforce cms page security on feature pages and it also keeps the menu highlighted correctly.
I recommend have a guid column on your recipe table and keep a unique guid there for each recipe. This guid can be stored as the pageGuid on the FriendlyUrl object which allows you to delete the friendly url if you delete the recipe.
You can just generate the friendly url based on a patttern like replace spaces with underscores or dashes and add the .aspx. We also have a method SiteUtils.SuggestFriendlyUrl(txtTitle.Text, siteSettings); that can be used to suggest a friendly url that doesn't already exist in the site. It replaces white space with a single dash and cleans out characters not suitable for urls.
In the blog we use a web service and javascript to suggest a friendly url from this method but allow the user to override our suggestion.
Hope it helps,
Joe