LV Recommends: Mammita’s Coffee serves up Latin-infused cafe items (and floral arrangements)

A pork, rice and beans burrito, pastelito and Horchata Frappe at Mammita’s Coffee, 224 S Linn St, Iowa City. — Zoe Pharo/Little Village

Mammita’s Coffee and Flowers by Jacqueline in Iowa City may have mastered the art of multitasking. It is part flower shop, part coffee study spot and part lunch destination; all of them are good.

The many-roomed shop is located on S Linn Street, right next to Mailboxes of Iowa City and near the downtown public library. Mammita’s officially opened its doors in February, replacing the Futon Shop, which occupied the spot for many years.

Much of their early support came from friends and members of owner Jacqueline “Jackie” Milian’s church, LIFEchurch in Coralville, who helped to clean the space and donated equipment. Family also pitched in, and Milian’s mother, Theresa, gave her the initial investment she needed to open Mammita’s.

The menu is impressive and breaks the mold of the classic coffee shop. Instead of scones and muffins, Mammita’s offers a wide array of Mexican pastries and desserts. The selection includes tres leches cake, flan and conchas — a soft and sweet bread with a sugary topping that resembles the surface of a seashell.

Mammita’s serves up a range of Latin-infused beverages. — Zoe Pharo/Little Village

Milian aims to recreate many of her childhood recipes and the feeling of spending time at the home of her grandmother, the original Mammita. Their Latin-infused drinks — Horchata and Dulce de Leche Lattes — are some of their most popular, and sandwiches can be paired with plantain chips, like those Milian ate growing up.

Breakfast and lunch are both fair game at Mammita’s. In my excitement at scanning all the options on the menu, I ended up with a spread that could have qualified as either: a Cuban Burrito, Pastelito de Guava and Cheese and Horchata Frappe.

Behind the counter, Anthony (who said he was a customer before he was an employee) and Isabel were both very welcoming, and before I knew it my food had arrived at my table. The first item I tried was the burrito, and it did not disappoint. Generously laden with pork, rice and beans and cheese, the “special sauce” was the real showstopper, tasting both tangy and creamy.

Coffee has never been my thing, and somehow I made it through college without developing a dependence. However, the Horchata Frappé could convert me. It was sweet without being overwhelmingly so, spiced perfectly and refreshingly iced on a hot day. And it paired well with the pastelito, with its flaky crust and guava filling. (My housemate, who is a true coffee drinker, and for whom I ordered a macchiato to-go, also gave her approval.)

Mammita’s zen patio space. — Zoe Pharo/Little Village

I sat in the cozy inside porch, which looks out onto the street and is separated from the main café area. Tables were set for two, with flowers on each, and the whole set-up felt very homey, complete with a fireplace and signs that read “Welcome” and “But First Coffee”—ideal for studying, meeting friends or a first date.

If you step through a door to the left of the café, you enter a fragrant room with another cash register. Here, Mammita’s sells arrangements and bouquets for events, including weddings and quinceañeras — similar to the California flower shop that Milian’s parents ran for 25 years.

Only later did I discover that there is a beautiful patio space out back, which is also tucked away from the street, with ample space to socially distance and shade cloths overhead to provide protection from the sun. This was a later addition, part of adapting to COVID-19.

Having opened during a peak in the pandemic, Mammita’s remains set up to give people options, according to their comfort level. Their website allows for online ordering for in-store pick-up or delivery, which is available via Grubhub and CHOMP. If you choose to dine in, you have the choice of indoor and outdoor seating.

​​As I left, I had the chance to meet Milian’s mother, Theresa. She came out of the kitchen in an apron, taking a break from making their signature breakfast burritos. When I asked if she wanted people to know anything about the shop, she said to “trust in God.” At its core, Mammita’s is a family operation, rooted in faith and a feeling of coming home.

Multitasking abounds at Mammita’s, a combination cafe and flower shop in the former Futon Shop space. — Zoe Pharo/Little Village
Zoe Pharo/Little Village

This article was originally published in Little Village issue 297.

[gravityform id="17" title="false" description="false" ajax="true"]
<div class='gf_browser_unknown gform_wrapper your-village-form_wrapper' id='gform_wrapper_17' ><a id='gf_17' class='gform_anchor' ></a><form method='post' enctype='multipart/form-data' target='gform_ajax_frame_17' id='gform_17' class='your-village-form' action='/lv-recommends-mammitas-coffee-serves-up-latin-infused-cafe-items-and-floral-arrangements/#gf_17'> <div class='gform_body'><ul id='gform_fields_17' class='gform_fields top_label form_sublabel_below description_below'><li id='field_17_7' class='gfield gfield_html gfield_html_formatted gfield_no_follows_desc field_sublabel_below field_description_below gfield_visibility_visible' ><h3 style="font-weight:800; font-size:34px;">Let's get started</h3> <p style="font-size:18px;">Fill out this form and we'll contact you with information about marketing with Little Village!</p></li><li id='field_17_4' class='gfield field_sublabel_below field_description_below gfield_visibility_visible' ><label class='gfield_label gfield_label_before_complex' for='input_17_4_3' ></label><div class='ginput_complex ginput_container no_prefix has_first_name no_middle_name has_last_name no_suffix gf_name_has_2 ginput_container_name gfield_trigger_change' id='input_17_4'> <span id='input_17_4_3_container' class='name_first' > <input type='text' name='input_4.3' id='input_17_4_3' value='' aria-label='First name' tabindex='2' aria-invalid="false" placeholder='First name'/> <label for='input_17_4_3' >First</label> </span> <span id='input_17_4_6_container' class='name_last' > <input type='text' name='input_4.6' id='input_17_4_6' value='' aria-label='Last name' tabindex='4' aria-invalid="false" placeholder='Last name'/> <label for='input_17_4_6' >Last</label> </span> </div></li><li id='field_17_5' class='gfield gfield_contains_required field_sublabel_below field_description_below gfield_visibility_visible' ><label class='gfield_label' for='input_17_5' ><span class='gfield_required'>*</span></label><div class='ginput_container ginput_container_text'><input name='input_5' id='input_17_5' type='text' value='' class='large' tabindex='6' placeholder='Company name' aria-required="true" aria-invalid="false" /></div></li><li id='field_17_3' class='gfield gfield_contains_required field_sublabel_below field_description_below gfield_visibility_visible' ><label class='gfield_label' for='input_17_3' ><span class='gfield_required'>*</span></label><div class='ginput_container ginput_container_email'> <input name='input_3' id='input_17_3' type='text' value='' class='large' tabindex='7' placeholder='Your email address' aria-required="true" aria-invalid="false"/> </div></li><li id='field_17_8' class='gfield gform_validation_container field_sublabel_below field_description_below gfield_visibility_' ><label class='gfield_label' for='input_17_8' >Name</label><div class='ginput_container'><input name='input_8' id='input_17_8' type='text' value='' /></div><div class='gfield_description'>This field is for validation purposes and should be left unchanged.</div></li> </ul></div> <div class='gform_footer top_label'> <input type='submit' id='gform_submit_button_17' class='gform_button button' value='SUBMIT' tabindex='8' onclick='if(window["gf_submitting_17"]){return false;} window["gf_submitting_17"]=true; ' onkeypress='if( event.keyCode == 13 ){ if(window["gf_submitting_17"]){return false;} window["gf_submitting_17"]=true; jQuery("#gform_17").trigger("submit",[true]); }' /> <input type='hidden' name='gform_ajax' value='form_id=17&amp;title=&amp;description=&amp;tabindex=1' /> <input type='hidden' class='gform_hidden' name='is_submit_17' value='1' /> <input type='hidden' class='gform_hidden' name='gform_submit' value='17' /> <input type='hidden' class='gform_hidden' name='gform_unique_id' value='' /> <input type='hidden' class='gform_hidden' name='state_17' value='WyJbXSIsIjlmNzc1YTEyZmZjNmYyODk5Mzk0NDM3ZjRlOGYyZDNmIl0=' /> <input type='hidden' class='gform_hidden' name='gform_target_page_number_17' id='gform_target_page_number_17' value='0' /> <input type='hidden' class='gform_hidden' name='gform_source_page_number_17' id='gform_source_page_number_17' value='1' /> <input type='hidden' name='gform_field_values' value='' /> </div> <p style="display: none !important;"><label>&#916;<textarea name="ak_hp_textarea" cols="45" rows="8" maxlength="100"></textarea></label><input type="hidden" id="ak_js_1" name="ak_js" value="160"/><script>document.getElementById( "ak_js_1" ).setAttribute( "value", ( new Date() ).getTime() );</script></p></form> </div> <iframe style='display:none;width:0px;height:0px;' src='about:blank' name='gform_ajax_frame_17' id='gform_ajax_frame_17'>This iframe contains the logic required to handle Ajax powered Gravity Forms.</iframe> <script type='text/javascript'>jQuery(document).ready(function($){gformInitSpinner( 17, '' );jQuery('#gform_ajax_frame_17').load( function(){var contents = jQuery(this).contents().find('*').html();var is_postback = contents.indexOf('GF_AJAX_POSTBACK') >= 0;if(!is_postback){return;}var form_content = jQuery(this).contents().find('#gform_wrapper_17');var is_confirmation = jQuery(this).contents().find('#gform_confirmation_wrapper_17').length > 0;var is_redirect = contents.indexOf('gformRedirect(){') >= 0;var is_form = form_content.length > 0 && ! is_redirect && ! is_confirmation;if(is_form){jQuery('#gform_wrapper_17').html(form_content.html());if(form_content.hasClass('gform_validation_error')){jQuery('#gform_wrapper_17').addClass('gform_validation_error');} else {jQuery('#gform_wrapper_17').removeClass('gform_validation_error');}setTimeout( function() { /* delay the scroll by 50 milliseconds to fix a bug in chrome */ jQuery(document).scrollTop(jQuery('#gform_wrapper_17').offset().top); }, 50 );if(window['gformInitDatepicker']) {gformInitDatepicker();}if(window['gformInitPriceFields']) {gformInitPriceFields();}var current_page = jQuery('#gform_source_page_number_17').val();gformInitSpinner( 17, '' );jQuery(document).trigger('gform_page_loaded', [17, current_page]);window['gf_submitting_17'] = false;}else if(!is_redirect){var confirmation_content = jQuery(this).contents().find('.GF_AJAX_POSTBACK').html();if(!confirmation_content){confirmation_content = contents;}setTimeout(function(){jQuery('#gform_wrapper_17').replaceWith(confirmation_content);jQuery(document).scrollTop(jQuery('#gf_17').offset().top);jQuery(document).trigger('gform_confirmation_loaded', [17]);window['gf_submitting_17'] = false;}, 50);}else{jQuery('#gform_17').append(contents);if(window['gformRedirect']) {gformRedirect();}}jQuery(document).trigger('gform_post_render', [17, current_page]);} );} );</script><script type='text/javascript'> if(typeof gf_global == 'undefined') var gf_global = {"gf_currency_config":{"name":"U.S. Dollar","symbol_left":"$","symbol_right":"","symbol_padding":"","thousand_separator":",","decimal_separator":".","decimals":2},"base_url":"https:\/\/\/wp-content\/plugins\/gravityforms-asdf111aasdfffs-nope","number_formats":[],"spinnerUrl":"https:\/\/\/wp-content\/plugins\/gravityforms-asdf111aasdfffs-nope\/images\/spinner.gif"};jQuery(document).bind('gform_post_render', function(event, formId, currentPage){if(formId == 17) {if(typeof Placeholders != 'undefined'){ Placeholders.enable(); }} } );jQuery(document).bind('gform_post_conditional_logic', function(event, formId, fields, isInit){} );</script><script type='text/javascript'> jQuery(document).ready(function(){jQuery(document).trigger('gform_post_render', [17, 1]) } ); </script>