{% extends "base.html" %} {% block title %}Brewlog{% endblock %} {% block head %} {% if is_authenticated %} {% endif %} {% endblock %} {% block content %} {% if is_authenticated %} {% if has_ai_extract %} Scan Bag {% endif %} Check In {% if has_ai_extract %} Take Photo or Go Waiting for response… Roaster If this roaster already exists, it will be matched automatically. Name * Country * City Homepage Roast Details about this specific coffee. Roast Name * Origin * Region * Producer * Process * Tasting Notes * (comma separated) Saving… Cancel Save Roaster & Roast {% endif %} {% endif %} {% if let Some(brew) = last_brew %} Last Brew {{ brew.created_at }} {{ brew.roast_name }} {{ brew.roaster_name }} {{ brew.coffee_weight }} {{ brew.water_volume }} @ {{ brew.water_temp }} {{ brew.ratio }} {{ brew.grinder_name }} @ {{ brew.grind_setting }} {{ brew.brewer_name }} {% if let Some(fp) = brew.filter_paper_name %} {{ fp }} {% endif %} {% if is_authenticated %} {% if let Some(fp_id) = brew.filter_paper_id %} {% endif %} Brew Again {% endif %} {% endif %} {% if !open_bags.is_empty() %} Open Bags View all bags → {% for bag in open_bags %} {{ bag.roast_name }} {{ bag.roaster_name }} {{ bag.remaining }}g of {{ bag.amount }}g remaining {% if is_authenticated %} Brew Close {% endif %} {% endfor %} {% endif %} {% if !recent_events.is_empty() %} Recent Activity View full timeline → {% for event in recent_events %} {{ event.kind_label }} {{ event.title }} {{ event.date_label }} {% endfor %} {% endif %} Your Coffee Journey {{ stats.brews }} Brews {{ stats.roasts }} Roasts {{ stats.roasters }} Roasters {{ stats.bags }} Bags {{ stats.cups }} Cups {{ stats.cafes }} Cafes {{ stats.gear }} Gear {% endblock %}
If this roaster already exists, it will be matched automatically.
Details about this specific coffee.
{{ bag.roaster_name }}
{{ bag.remaining }}g of {{ bag.amount }}g remaining