I am naturopathy intern dr and i here for making a diet chart according to ayuvedic vata ,pitta,kapha purush parkarti and there related disorders or i simply according to Ayurveda dieat satvik and other all
What would you like me to create for you? · What format do you need?
Complete diet chart for all 3 Prakriti types (Vata, Pitta, Kapha) with their disorders
What format do you need the diet chart in?
Ayurvedic diet chart Vata Pitta Kapha Prakriti foods to eat avoid disorders
mkdir -p /tmp/workspace/ayurvedic-diet-chart && ls /tmp/workspace/ayurvedic-diet-chart/
~/ayurvedic-diet-chart/create_diet_chart.py
from docx import Document
from docx.shared import Pt, Inches, RGBColor, Cm
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.enum.table import WD_TABLE_ALIGNMENT, WD_ALIGN_VERTICAL
from docx.oxml.ns import qn
from docx.oxml import OxmlElement
import copy
doc = Document()
# ─── Page margins ───
section = doc.sections[0]
section.page_width = Inches(8.5)
section.page_height = Inches(11)
section.left_margin = Inches(0.9)
section.right_margin = Inches(0.9)
section.top_margin = Inches(0.8)
section.bottom_margin = Inches(0.8)
# ─── Default style ───
normal = doc.styles["Normal"]
normal.font.name = "Calibri"
normal.font.size = Pt(11)
# ─── Helper: shade a table cell ───
def shade_cell(cell, fill_hex):
tc = cell._tc
tcPr = tc.get_or_add_tcPr()
shd = OxmlElement("w:shd")
shd.set(qn("w:val"), "clear")
shd.set(qn("w:color"), "auto")
shd.set(qn("w:fill"), fill_hex)
tcPr.append(shd)
# ─── Helper: bold paragraph ───
def bold_para(cell, text, size=11, color=None):
p = cell.paragraphs[0]
p.clear()
run = p.add_run(text)
run.bold = True
run.font.size = Pt(size)
if color:
run.font.color.rgb = RGBColor.from_string(color)
p.alignment = WD_ALIGN_PARAGRAPH.CENTER
# ─── Helper: normal text in cell ───
def normal_para(cell, text, size=10.5):
p = cell.paragraphs[0]
p.clear()
run = p.add_run(text)
run.font.size = Pt(size)
# ─── Helper: add a colored heading ───
def add_heading(doc, text, level=1, color="1F3864"):
h = doc.add_heading(text, level=level)
for run in h.runs:
run.font.color.rgb = RGBColor.from_string(color)
return h
# ─── Helper: add list items ───
def add_list(doc, items, style="List Bullet"):
for item in items:
p = doc.add_paragraph(item, style=style)
p.paragraph_format.space_before = Pt(1)
p.paragraph_format.space_after = Pt(1)
# ═══════════════════════════════════════════════════════
# TITLE PAGE
# ═══════════════════════════════════════════════════════
title_para = doc.add_paragraph()
title_para.alignment = WD_ALIGN_PARAGRAPH.CENTER
title_run = title_para.add_run("AYURVEDIC DIET CHART")
title_run.bold = True
title_run.font.size = Pt(26)
title_run.font.color.rgb = RGBColor.from_string("1F3864")
sub_para = doc.add_paragraph()
sub_para.alignment = WD_ALIGN_PARAGRAPH.CENTER
sub_run = sub_para.add_run("Based on Vata · Pitta · Kapha Prakriti")
sub_run.font.size = Pt(14)
sub_run.font.color.rgb = RGBColor.from_string("2E75B6")
sub_run.bold = True
doc.add_paragraph("")
# Subtitle
info = doc.add_paragraph()
info.alignment = WD_ALIGN_PARAGRAPH.CENTER
info_run = info.add_run("Prepared for Naturopathy Clinical Practice\nIncludes: Prakriti Overview | Physical & Mental Traits | Common Disorders\n"
"Foods to Favour | Foods to Avoid | Sample Meal Plan | Herbal Supports | Lifestyle Tips")
info_run.font.size = Pt(11)
info_run.font.color.rgb = RGBColor.from_string("404040")
doc.add_paragraph("")
# Divider line via table trick
table = doc.add_table(rows=1, cols=1)
table.style = "Table Grid"
cell = table.cell(0, 0)
shade_cell(cell, "1F3864")
cell.height = Cm(0.15)
cell.paragraphs[0].text = ""
doc.add_paragraph("")
# Disclaimer
disc = doc.add_paragraph()
disc.alignment = WD_ALIGN_PARAGRAPH.CENTER
disc_run = disc.add_run("For educational and clinical guidance purposes only.\n"
"Individual assessment by a qualified Ayurvedic physician is recommended.")
disc_run.font.size = Pt(9.5)
disc_run.italic = True
disc_run.font.color.rgb = RGBColor.from_string("666666")
doc.add_page_break()
# ═══════════════════════════════════════════════════════
# SECTION 1 – AYURVEDIC FUNDAMENTALS
# ═══════════════════════════════════════════════════════
add_heading(doc, "1. Understanding the Three Doshas (Prakriti)", level=1, color="1F3864")
intro = doc.add_paragraph(
"In Ayurveda, every individual has a unique constitution (Prakriti) determined at birth by the "
"combination of three bio-energetic forces called Doshas — Vata, Pitta, and Kapha. These doshas "
"govern all physical, mental, and physiological processes. Diet is the foremost tool to maintain "
"dosha balance and prevent disease."
)
intro.paragraph_format.space_after = Pt(8)
# Overview table
add_heading(doc, "Dosha Overview", level=2, color="2E75B6")
ov_table = doc.add_table(rows=4, cols=5)
ov_table.style = "Table Grid"
ov_table.alignment = WD_TABLE_ALIGNMENT.CENTER
headers = ["Attribute", "VATA", "PITTA", "KAPHA"]
header_colors = ["1F3864", "8B0000", "1F6B1F", "1a3a5c"]
widths = [Inches(1.5), Inches(1.6), Inches(1.6), Inches(1.6)]
# Header row
for i, (hdr, col) in enumerate(zip(headers, header_colors)):
cell = ov_table.cell(0, i)
shade_cell(cell, col if i > 0 else "1F3864")
bold_para(cell, hdr, size=11, color="FFFFFF")
rows_data = [
["Elements", "Air + Ether (Vayu + Akasha)", "Fire + Water (Agni + Jala)", "Earth + Water (Prithvi + Jala)"],
["Qualities", "Dry, Light, Cold, Rough, Subtle, Mobile", "Hot, Sharp, Light, Oily, Liquid, Spreading", "Heavy, Slow, Cool, Oily, Smooth, Dense"],
["Season", "Late Autumn / Winter", "Summer / Monsoon", "Spring / Late Winter"],
]
row_colors = ["F5F5F5", "FFFFFF", "F5F5F5"]
for r, (row_data, bg) in enumerate(zip(rows_data, row_colors), 1):
for c, val in enumerate(row_data):
cell = ov_table.cell(r, c)
shade_cell(cell, bg)
p = cell.paragraphs[0]
p.clear()
run = p.add_run(val)
run.font.size = Pt(10)
if c == 0:
run.bold = True
doc.add_paragraph("")
# ═══════════════════════════════════════════════════════
# SECTION 2 – VATA
# ═══════════════════════════════════════════════════════
doc.add_page_break()
# Vata header block
vata_hdr = doc.add_paragraph()
vata_hdr.alignment = WD_ALIGN_PARAGRAPH.CENTER
vr = vata_hdr.add_run("VATA PRAKRITI")
vr.bold = True
vr.font.size = Pt(20)
vr.font.color.rgb = RGBColor.from_string("8B4513")
vata_sub = doc.add_paragraph()
vata_sub.alignment = WD_ALIGN_PARAGRAPH.CENTER
vs = vata_sub.add_run("Element: Air + Ether | Taste: Sweet, Sour, Salty | Season: Autumn–Winter")
vs.font.size = Pt(11)
vs.font.color.rgb = RGBColor.from_string("8B4513")
vs.italic = True
doc.add_paragraph("")
# 2a. Physical & Mental traits
add_heading(doc, "2.1 Physical & Mental Characteristics", level=2, color="8B4513")
vata_traits_table = doc.add_table(rows=1, cols=2)
vata_traits_table.style = "Table Grid"
vata_traits_table.alignment = WD_TABLE_ALIGNMENT.CENTER
hdr1 = vata_traits_table.cell(0, 0)
shade_cell(hdr1, "D4A76A")
bold_para(hdr1, "Physical Traits", size=11, color="3B1A0A")
hdr2 = vata_traits_table.cell(0, 1)
shade_cell(hdr2, "D4A76A")
bold_para(hdr2, "Mental / Emotional Traits", size=11, color="3B1A0A")
physical_vata = [
"Thin, light body frame; difficulty gaining weight",
"Dry skin, hair, and nails",
"Cold hands and feet; poor circulation",
"Irregular appetite and digestion",
"Variable energy; prone to fatigue",
"Light, interrupted sleep",
"Dark, scanty urine; constipation tendency",
]
mental_vata = [
"Quick, creative mind; learns fast but forgets easily",
"Enthusiastic, vivacious, imaginative",
"Tendency toward anxiety, worry, fear",
"Indecisive, changeable moods",
"Talks fast; restless",
"Sensitive to noise and cold",
"Spiritual inclination",
]
row = vata_traits_table.add_row()
c0 = row.cells[0]
c1 = row.cells[1]
shade_cell(c0, "FDF6EC")
shade_cell(c1, "FDF6EC")
for item in physical_vata:
p = c0.add_paragraph(f"• {item}")
p.paragraph_format.space_before = Pt(1)
p.paragraph_format.space_after = Pt(1)
p.runs[0].font.size = Pt(10)
for item in mental_vata:
p = c1.add_paragraph(f"• {item}")
p.paragraph_format.space_before = Pt(1)
p.paragraph_format.space_after = Pt(1)
p.runs[0].font.size = Pt(10)
# Remove first auto-paragraph in merged cells
for cell in [c0, c1]:
if len(cell.paragraphs) > 1:
p0 = cell.paragraphs[0]._element
p0.getparent().remove(p0)
doc.add_paragraph("")
# 2b. Common disorders
add_heading(doc, "2.2 Common Vata Disorders", level=2, color="8B4513")
vata_disorders = [
"Constipation, bloating, flatulence (Apaana Vata imbalance)",
"Arthritis, joint pain, dry cracking joints (Vata-type Amavata)",
"Sciatica, lower backache, neuralgia",
"Insomnia, anxiety, nervousness, fear-based disorders",
"Dry eczema, psoriasis, dandruff",
"Irregular menstruation, dysmenorrhoea",
"Palpitations, arrhythmia",
"Emaciation, weight loss, anorexia",
"Tinnitus, dry eyes, dizziness",
"Parkinson's disease, tremors (Kampa Vata)",
]
add_list(doc, vata_disorders)
doc.add_paragraph("")
# 2c. Dietary principle for Vata
add_heading(doc, "2.3 Dietary Principle for Vata", level=2, color="8B4513")
p_principle = doc.add_paragraph(
"Vata is pacified by foods that are warm, moist (unctuous), heavy, and nourishing. Favour the tastes "
"Sweet (Madhura), Sour (Amla), and Salty (Lavana). Eat regularly; irregular meals aggravate Vata. "
"Avoid cold, dry, and raw foods. Warm soups, ghee, oils, and cooked grains are ideal."
)
p_principle.paragraph_format.space_after = Pt(6)
# 2d. Diet chart table
add_heading(doc, "2.4 Vata Diet Chart", level=2, color="8B4513")
vata_diet = [
("Grains", "White/brown rice, wheat, oats (cooked), quinoa, amaranth, semolina",
"Barley, rye, corn, millet, dry oats, crackers, popcorn"),
("Legumes", "Moong dal (split), red lentils, tofu (occasional), urad dal",
"Most beans (rajma, chana, black-eyed peas), soya chunks (dry)"),
("Vegetables", "Cooked: carrot, beet, sweet potato, asparagus, spinach, zucchini, fennel, garlic, onion (cooked), pumpkin",
"Raw or frozen vegetables; broccoli, cabbage, cauliflower, celery, kale, eggplant, mushrooms"),
("Fruits", "Sweet, ripe: banana, mango, avocado, dates, figs, peach, plum, berries, papaya, grape, soaked prunes/raisins",
"Dry or unripe fruits; apples (raw), cranberries, pears (excess), watermelon"),
("Dairy", "Warm milk, ghee, butter, cream, yoghurt (room temp), paneer",
"Cold/frozen dairy, ice cream"),
("Oils", "Sesame (best), almond, olive, ghee — use liberally",
"All oils are generally good; avoid excessive dry cooking"),
("Sweeteners", "Raw honey (not heated), jaggery, date sugar, molasses",
"Refined white sugar (excess), artificial sweeteners"),
("Spices", "All warming spices: ginger (best), cumin, coriander, cardamom, cinnamon, clove, hing (asafoetida), fennel, nutmeg, black pepper (moderate)",
"Excess chilli, dry bitter herbs"),
("Meat/Fish", "Chicken (white), eggs, freshwater fish, lamb, shrimp (if non-veg)",
"Red meat (excess), dried/preserved meats"),
("Beverages", "Warm water, warm milk with spices, ginger tea, licorice tea, chamomile",
"Cold water, carbonated drinks, black tea/coffee (excess), alcohol"),
("Nuts & Seeds", "Almonds (soaked), walnuts, cashews, sesame seeds, sunflower seeds",
"Dry-roasted or salted nuts"),
]
diet_table = doc.add_table(rows=1, cols=3)
diet_table.style = "Table Grid"
diet_table.alignment = WD_TABLE_ALIGNMENT.CENTER
col_headers = ["Food Category", "FAVOUR (Pathya)", "AVOID (Apathya)"]
col_bgs = ["8B4513", "2E7D32", "C62828"]
for i, (hdr, bg) in enumerate(zip(col_headers, col_bgs)):
cell = diet_table.cell(0, i)
shade_cell(cell, bg)
bold_para(cell, hdr, size=11, color="FFFFFF")
for idx, (category, favour, avoid) in enumerate(vata_diet):
row = diet_table.add_row()
bg = "FDF6EC" if idx % 2 == 0 else "FFFFFF"
for j in range(3):
shade_cell(row.cells[j], bg)
normal_para(row.cells[0], category); row.cells[0].paragraphs[0].runs[0].bold = True
normal_para(row.cells[1], favour)
normal_para(row.cells[2], avoid)
doc.add_paragraph("")
# 2e. Sample Meal Plan
add_heading(doc, "2.5 Sample Daily Meal Plan – Vata", level=2, color="8B4513")
vata_meals = [
("Early Morning (6–7 AM)", "Warm water with lemon + honey; 4–5 soaked almonds"),
("Breakfast (7:30–8:30 AM)", "Warm oatmeal porridge with dates, ghee, and cardamom OR wheat upma with vegetables"),
("Mid-Morning (10:30 AM)", "Warm milk with ashwagandha / banana"),
("Lunch (12:30–1:30 PM)", "Rice + moong dal (khichdi) + cooked carrots/beets + ghee + salted buttermilk (takra)"),
("Evening Snack (4–5 PM)", "Soaked raisins/dates + ginger tea OR sesame laddoo (moderate)"),
("Dinner (6:30–7:30 PM)", "Wheat chapati + cooked vegetables (pumpkin/zucchini) + warm soup"),
("Bedtime (9:30 PM)", "Warm milk with turmeric + nutmeg (Haldi Doodh)"),
]
meal_table = doc.add_table(rows=1, cols=2)
meal_table.style = "Table Grid"
meal_table.alignment = WD_TABLE_ALIGNMENT.CENTER
shade_cell(meal_table.cell(0, 0), "8B4513"); bold_para(meal_table.cell(0, 0), "Meal / Time", color="FFFFFF")
shade_cell(meal_table.cell(0, 1), "8B4513"); bold_para(meal_table.cell(0, 1), "Recommended Food", color="FFFFFF")
for idx, (time, food) in enumerate(vata_meals):
r = meal_table.add_row()
bg = "FDF6EC" if idx % 2 == 0 else "FFFFFF"
shade_cell(r.cells[0], bg); normal_para(r.cells[0], time); r.cells[0].paragraphs[0].runs[0].bold = True
shade_cell(r.cells[1], bg); normal_para(r.cells[1], food)
doc.add_paragraph("")
# 2f. Herbal supports
add_heading(doc, "2.6 Herbal & Supplement Supports – Vata", level=2, color="8B4513")
vata_herbs = [
"Ashwagandha (Withania somnifera) – nervine tonic, anti-anxiety, rejuvenation",
"Shatavari (Asparagus racemosus) – nourishing, reproductive health",
"Bala (Sida cordifolia) – strength, neuromuscular support",
"Dashamoola – anti-Vata, joint and backache formula",
"Triphala – mild laxative, bowel regulator for constipation",
"Sesame oil (Tila Taila) – for Abhyanga (oil massage)",
"Haritaki – best fruit for Vata; mild laxative",
]
add_list(doc, vata_herbs)
doc.add_paragraph("")
# 2g. Lifestyle tips
add_heading(doc, "2.7 Lifestyle Tips – Vata", level=2, color="8B4513")
vata_lifestyle = [
"Maintain regular, fixed meal times and sleep schedule",
"Daily warm sesame oil self-massage (Abhyanga) before bath",
"Avoid excessive exercise, fasting, or travel (aggravates Vata)",
"Practice calming yoga (Yin, restorative) and meditation",
"Keep warm; avoid excessive cold and wind exposure",
"Favour warm, humid climates",
"Rest adequately; avoid overexertion",
]
add_list(doc, vata_lifestyle)
# ═══════════════════════════════════════════════════════
# SECTION 3 – PITTA
# ═══════════════════════════════════════════════════════
doc.add_page_break()
pitta_hdr = doc.add_paragraph()
pitta_hdr.alignment = WD_ALIGN_PARAGRAPH.CENTER
pr2 = pitta_hdr.add_run("PITTA PRAKRITI")
pr2.bold = True
pr2.font.size = Pt(20)
pr2.font.color.rgb = RGBColor.from_string("8B0000")
pitta_sub = doc.add_paragraph()
pitta_sub.alignment = WD_ALIGN_PARAGRAPH.CENTER
ps = pitta_sub.add_run("Element: Fire + Water | Taste: Sweet, Bitter, Astringent | Season: Summer")
ps.font.size = Pt(11)
ps.font.color.rgb = RGBColor.from_string("8B0000")
ps.italic = True
doc.add_paragraph("")
add_heading(doc, "3.1 Physical & Mental Characteristics", level=2, color="8B0000")
pitta_traits_table = doc.add_table(rows=1, cols=2)
pitta_traits_table.style = "Table Grid"
pitta_traits_table.alignment = WD_TABLE_ALIGNMENT.CENTER
hdr1p = pitta_traits_table.cell(0, 0); shade_cell(hdr1p, "E57373"); bold_para(hdr1p, "Physical Traits", size=11, color="FFFFFF")
hdr2p = pitta_traits_table.cell(0, 1); shade_cell(hdr2p, "E57373"); bold_para(hdr2p, "Mental / Emotional Traits", size=11, color="FFFFFF")
physical_pitta = [
"Medium build, moderate muscle mass",
"Warm, oily, reddish or yellowish skin; freckles/moles",
"Sensitive skin; prone to rashes, acne, inflammation",
"Strong appetite; irritable when hungry",
"Excessive sweating, body heat",
"Premature greying or baldness",
"Sharp, penetrating eyes (often light-coloured)",
]
mental_pitta = [
"Intelligent, focused, goal-oriented",
"Sharp memory; articulate speaker",
"Perfectionist, competitive, ambitious",
"Prone to anger, irritability, jealousy",
"Strong leadership qualities",
"Discriminating, critical mind",
"High drive and productivity",
]
rowp = pitta_traits_table.add_row()
c0p = rowp.cells[0]; c1p = rowp.cells[1]
shade_cell(c0p, "FFF3F3"); shade_cell(c1p, "FFF3F3")
for item in physical_pitta:
p = c0p.add_paragraph(f"• {item}"); p.runs[0].font.size = Pt(10)
for item in mental_pitta:
p = c1p.add_paragraph(f"• {item}"); p.runs[0].font.size = Pt(10)
for cell in [c0p, c1p]:
if len(cell.paragraphs) > 1:
p0 = cell.paragraphs[0]._element; p0.getparent().remove(p0)
doc.add_paragraph("")
add_heading(doc, "3.2 Common Pitta Disorders", level=2, color="8B0000")
pitta_disorders = [
"Acid reflux, gastritis, peptic ulcer (Amlapitta)",
"Inflammatory bowel disease (Pittaja Grahani)",
"Skin disorders: acne, rosacea, urticaria, contact dermatitis",
"Liver disorders: hepatitis, jaundice (Kamala)",
"Hypertension, cardiovascular inflammation",
"Migraine (Pittaja Shiroroga) and fever (Pitta Jwara)",
"Bleeding disorders: epistaxis, heavy menstruation, haemorrhoids",
"Inflammatory arthritis, gout (Vatrakta/Pitta component)",
"Hyperthyroidism",
"Anger and irritability disorders",
"Conjunctivitis, stye, eye inflammation",
]
add_list(doc, pitta_disorders)
doc.add_paragraph("")
add_heading(doc, "3.3 Dietary Principle for Pitta", level=2, color="8B0000")
doc.add_paragraph(
"Pitta is pacified by foods that are cool, sweet, bitter, and astringent. Avoid hot, spicy, oily, "
"sour, and pungent foods. Eat cooling foods: coconut, coriander, fennel, pomegranate, cucumber, "
"mint, and fresh vegetables. Do not skip meals — Pitta burns intensely on an empty stomach. "
"Avoid heating the body further with alcohol, hot sauces, and red meat."
).paragraph_format.space_after = Pt(6)
add_heading(doc, "3.4 Pitta Diet Chart", level=2, color="8B0000")
pitta_diet = [
("Grains", "Wheat, rice (basmati preferred), oats (cooked), quinoa, barley, amaranth",
"Corn, buckwheat, rye, millet, brown rice (excess)"),
("Legumes", "Moong dal, chickpeas, tofu, black lentils, split peas, soya (moderate)",
"Red/orange lentils (excess), urad dal (heavy)"),
("Vegetables", "Cucumber, leafy greens (spinach, kale), broccoli, cauliflower, celery, asparagus, peas, fennel, zucchini, sweet potato, beet, cabbage (cooked), coriander, sweet peppers",
"Nightshades (tomato, chilli, hot peppers), raw onion, garlic (excess), radish, mustard greens"),
("Fruits", "Sweet, ripe: coconut, pomegranate, grapes, melon, pear, lime (small amount), mango (ripe/sweet), fig, dates, cherries, plum",
"Sour fruits: lemon (excess), grapefruit, sour oranges, unripe fruits, fermented fruits"),
("Dairy", "Cow's milk (cold/room temp), ghee (excellent), butter (unsalted), cottage cheese",
"Sour cream, salted cheese, yoghurt (sour, excess), fermented dairy"),
("Oils", "Coconut oil (best), sunflower oil, olive oil, ghee (moderate)",
"Sesame oil, almond oil, mustard oil (heating)"),
("Sweeteners", "Raw sugar, maple syrup, date sugar, stevia",
"Honey (heated), molasses, refined sugar (excess)"),
("Spices", "Coriander, fennel, cardamom, turmeric, cumin, fresh ginger (small), mint, cilantro, saffron, dill",
"Chilli, black pepper (excess), clove, mustard, garlic (excess), hing, fenugreek"),
("Meat/Fish", "Chicken (white, small amount), freshwater fish, egg white",
"Red meat, egg yolk, shellfish, smoked/dried meat, pork"),
("Beverages", "Coconut water, rose water drink, cucumber juice, coriander tea, fennel tea, pomegranate juice, cool (not ice-cold) water",
"Alcohol, coffee, black tea, energy drinks, hot beverages (excess)"),
("Nuts & Seeds", "Coconut, sunflower seeds, pumpkin seeds, flax seeds (small amount)",
"Almonds (dry/excess), cashews, peanuts, walnuts"),
]
pitta_table = doc.add_table(rows=1, cols=3)
pitta_table.style = "Table Grid"
pitta_table.alignment = WD_TABLE_ALIGNMENT.CENTER
for i, (hdr, bg) in enumerate(zip(["Food Category", "FAVOUR (Pathya)", "AVOID (Apathya)"], ["8B0000", "2E7D32", "C62828"])):
cell = pitta_table.cell(0, i); shade_cell(cell, bg); bold_para(cell, hdr, size=11, color="FFFFFF")
for idx, (category, favour, avoid) in enumerate(pitta_diet):
row = pitta_table.add_row()
bg = "FFF3F3" if idx % 2 == 0 else "FFFFFF"
for j in range(3): shade_cell(row.cells[j], bg)
normal_para(row.cells[0], category); row.cells[0].paragraphs[0].runs[0].bold = True
normal_para(row.cells[1], favour); normal_para(row.cells[2], avoid)
doc.add_paragraph("")
add_heading(doc, "3.5 Sample Daily Meal Plan – Pitta", level=2, color="8B0000")
pitta_meals = [
("Early Morning (6–7 AM)", "Coconut water or cool rose water; soaked raisins/dates"),
("Breakfast (8 AM)", "Oatmeal with coconut milk and dates OR wheat bread with ghee and fruit"),
("Mid-Morning (10:30 AM)", "Fresh coconut/pomegranate juice or sweet fruit"),
("Lunch (12–1 PM)", "Basmati rice + moong dal + cooked leafy greens + ghee + cucumber raita (fresh yoghurt)"),
("Evening Snack (4–5 PM)", "Fennel tea + fig / date OR coconut ladoo"),
("Dinner (7 PM)", "Wheat chapati + cooked vegetables (broccoli/zucchini) + plain yoghurt"),
("Bedtime (9:30 PM)", "Cool milk with cardamom and saffron"),
]
pitta_mt = doc.add_table(rows=1, cols=2)
pitta_mt.style = "Table Grid"
shade_cell(pitta_mt.cell(0, 0), "8B0000"); bold_para(pitta_mt.cell(0, 0), "Meal / Time", color="FFFFFF")
shade_cell(pitta_mt.cell(0, 1), "8B0000"); bold_para(pitta_mt.cell(0, 1), "Recommended Food", color="FFFFFF")
for idx, (time, food) in enumerate(pitta_meals):
r = pitta_mt.add_row()
bg = "FFF3F3" if idx % 2 == 0 else "FFFFFF"
shade_cell(r.cells[0], bg); normal_para(r.cells[0], time); r.cells[0].paragraphs[0].runs[0].bold = True
shade_cell(r.cells[1], bg); normal_para(r.cells[1], food)
doc.add_paragraph("")
add_heading(doc, "3.6 Herbal & Supplement Supports – Pitta", level=2, color="8B0000")
pitta_herbs = [
"Amalaki / Amla (Emblica officinalis) – cooling, Pitta-reducer, rich in Vit C",
"Shatavari – cooling, liver support, female reproductive tonic",
"Guduchi (Tinospora cordifolia) – anti-inflammatory, liver tonic",
"Neem – blood purifier, skin, anti-inflammatory",
"Brahmi – cooling nervine, mental clarity, anti-anger",
"Manjistha – blood purifier, skin disorders",
"Triphala – liver, digestion (with ghee for Pitta)",
"Rose water / Gulkand (rose preserve) – cooling, digestive",
]
add_list(doc, pitta_herbs)
doc.add_paragraph("")
add_heading(doc, "3.7 Lifestyle Tips – Pitta", level=2, color="8B0000")
pitta_lifestyle = [
"Avoid excessive sun exposure and heat",
"Engage in cooling physical activities: swimming, leisurely walking",
"Avoid competitive or overheating exercise during peak heat",
"Moonlight walks, time in nature reduce Pitta",
"Practice cooling pranayama: Sheetali and Sheetkari",
"Avoid working late under artificial lights",
"Express emotions calmly; avoid suppression (leads to anger/inflammation)",
]
add_list(doc, pitta_lifestyle)
# ═══════════════════════════════════════════════════════
# SECTION 4 – KAPHA
# ═══════════════════════════════════════════════════════
doc.add_page_break()
kapha_hdr = doc.add_paragraph()
kapha_hdr.alignment = WD_ALIGN_PARAGRAPH.CENTER
kr2 = kapha_hdr.add_run("KAPHA PRAKRITI")
kr2.bold = True
kr2.font.size = Pt(20)
kr2.font.color.rgb = RGBColor.from_string("1A5276")
kapha_sub = doc.add_paragraph()
kapha_sub.alignment = WD_ALIGN_PARAGRAPH.CENTER
ks = kapha_sub.add_run("Element: Earth + Water | Taste: Pungent, Bitter, Astringent | Season: Spring")
ks.font.size = Pt(11)
ks.font.color.rgb = RGBColor.from_string("1A5276")
ks.italic = True
doc.add_paragraph("")
add_heading(doc, "4.1 Physical & Mental Characteristics", level=2, color="1A5276")
kapha_traits_table = doc.add_table(rows=1, cols=2)
kapha_traits_table.style = "Table Grid"
hdr1k = kapha_traits_table.cell(0, 0); shade_cell(hdr1k, "5B8DB8"); bold_para(hdr1k, "Physical Traits", size=11, color="FFFFFF")
hdr2k = kapha_traits_table.cell(0, 1); shade_cell(hdr2k, "5B8DB8"); bold_para(hdr2k, "Mental / Emotional Traits", size=11, color="FFFFFF")
physical_kapha = [
"Heavy, large, well-built frame; gains weight easily",
"Thick, oily, smooth, soft skin",
"Large, calm eyes; thick hair",
"Strong stamina; slow but steady energy",
"Slow digestion and metabolism",
"Deep, heavy sleep; tendency to oversleep",
"Slow to start but persistent once motivated",
]
mental_kapha = [
"Calm, patient, loving, compassionate",
"Good long-term memory; slow learner but retains well",
"Loyal, stable, reliable",
"Prone to attachment, greed, possessiveness",
"Tendency toward lethargy, depression",
"Resistant to change",
"Nurturing, empathetic, steady",
]
rowk = kapha_traits_table.add_row()
c0k = rowk.cells[0]; c1k = rowk.cells[1]
shade_cell(c0k, "EBF5FB"); shade_cell(c1k, "EBF5FB")
for item in physical_kapha:
p = c0k.add_paragraph(f"• {item}"); p.runs[0].font.size = Pt(10)
for item in mental_kapha:
p = c1k.add_paragraph(f"• {item}"); p.runs[0].font.size = Pt(10)
for cell in [c0k, c1k]:
if len(cell.paragraphs) > 1:
p0 = cell.paragraphs[0]._element; p0.getparent().remove(p0)
doc.add_paragraph("")
add_heading(doc, "4.2 Common Kapha Disorders", level=2, color="1A5276")
kapha_disorders = [
"Obesity, overweight, slow metabolism",
"Type 2 Diabetes (Madhumeha / Prameha)",
"Hypothyroidism, sluggish thyroid",
"Respiratory disorders: asthma, bronchitis, chronic cough, sinusitis",
"High cholesterol, atherosclerosis",
"Oedema, water retention",
"Lethargy, chronic fatigue, depression",
"Benign tumours, cysts, lipomas",
"Excess mucus, allergic rhinitis",
"PCOS (polycystic ovary syndrome)",
"Congestive heart failure tendency",
]
add_list(doc, kapha_disorders)
doc.add_paragraph("")
add_heading(doc, "4.3 Dietary Principle for Kapha", level=2, color="1A5276")
doc.add_paragraph(
"Kapha is pacified by foods that are light, dry, warm, and stimulating. Favour Pungent (Katu), "
"Bitter (Tikta), and Astringent (Kashaya) tastes. Avoid heavy, oily, sweet, and cold foods. "
"Eat smaller portions, skip breakfast if not hungry, and prefer warm food. Spices are excellent "
"for Kapha. Raw, light salads (in warm months) and dry cooking methods (baked, grilled, roasted) "
"are ideal."
).paragraph_format.space_after = Pt(6)
add_heading(doc, "4.4 Kapha Diet Chart", level=2, color="1A5276")
kapha_diet = [
("Grains", "Barley (best), millet, quinoa, amaranth, buckwheat, corn, rye, small amounts of basmati rice",
"Wheat, oats (heavy), white rice (excess), pasta (heavy), bread"),
("Legumes", "All legumes are generally good: moong (best), chana, black-eyed peas, masoor, kidney beans (moderate)",
"Soya flour (heavy), tofu (excess), urad dal (heavy and oily)"),
("Vegetables", "Most vegetables are great: leafy greens (kale, spinach, arugula), broccoli, cabbage, cauliflower, celery, mushrooms, onion, garlic, radish, beet, eggplant, Brussels sprouts, peppers, corn, fennel",
"Sweet potato, potato, zucchini (excess), tomato (excess), cucumber"),
("Fruits", "Apples, pears, pomegranate, berries, cherries, mango (ripe, small), figs (dry), prunes, raisins",
"Banana, avocado, dates (excess), coconut (excess), melon, grapes"),
("Dairy", "Low-fat milk (warm, spiced), ghee (small amounts only), diluted buttermilk",
"Full-fat milk, butter, cream, cheese, yoghurt (excess/cold), ice cream"),
("Oils", "Mustard oil, flaxseed oil, sunflower oil — use minimally",
"Sesame oil, coconut oil, ghee (excess), olive oil (excess)"),
("Sweeteners", "Raw honey (best sweetener for Kapha — do not heat), stevia",
"White sugar, jaggery, maple syrup, molasses"),
("Spices", "All stimulating spices: ginger (dry — best!), black pepper, long pepper (pippali), turmeric, mustard, hing, cumin, cardamom, clove, cinnamon, fenugreek, cayenne",
"Salt (excess), sweet spices in excess"),
("Meat/Fish", "Chicken (white), turkey, freshwater fish, shrimp, eggs (occasional)",
"Red meat, pork, duck, cold cuts, deep-fried meats"),
("Beverages", "Warm/hot water with ginger, honey-lemon water (warm), herbal teas (ginger, tulsi, cinnamon, peppermint), pomegranate juice",
"Cold water, cold beverages, alcohol, carbonated drinks, cow's milk (cold)"),
("Nuts & Seeds", "Pumpkin seeds, sunflower seeds (moderate), flaxseeds",
"Almonds, cashews, walnuts, peanuts, pine nuts, coconut"),
]
kapha_table = doc.add_table(rows=1, cols=3)
kapha_table.style = "Table Grid"
kapha_table.alignment = WD_TABLE_ALIGNMENT.CENTER
for i, (hdr, bg) in enumerate(zip(["Food Category", "FAVOUR (Pathya)", "AVOID (Apathya)"], ["1A5276", "2E7D32", "C62828"])):
cell = kapha_table.cell(0, i); shade_cell(cell, bg); bold_para(cell, hdr, size=11, color="FFFFFF")
for idx, (category, favour, avoid) in enumerate(kapha_diet):
row = kapha_table.add_row()
bg = "EBF5FB" if idx % 2 == 0 else "FFFFFF"
for j in range(3): shade_cell(row.cells[j], bg)
normal_para(row.cells[0], category); row.cells[0].paragraphs[0].runs[0].bold = True
normal_para(row.cells[1], favour); normal_para(row.cells[2], avoid)
doc.add_paragraph("")
add_heading(doc, "4.5 Sample Daily Meal Plan – Kapha", level=2, color="1A5276")
kapha_meals = [
("Early Morning (5:30–6 AM)", "Warm water with dry ginger, lemon, and a pinch of black pepper; no food initially"),
("Breakfast (8–9 AM)", "Light and optional: apple + cinnamon tea OR barley porridge with pumpkin seeds; skip if not hungry"),
("Mid-Morning (11 AM)", "Pomegranate juice or light herbal tea"),
("Lunch (12–1 PM)", "Barley/millet + moong dal + stir-fried greens + spicy rasam (mustard-cumin seasoning)"),
("Evening Snack (4–5 PM)", "Ginger tea + small handful of roasted makhana (fox nuts) OR light fruit"),
("Dinner (6–7 PM)", "Wheat chapati (1–2) + cooked vegetables + thin lentil soup; eat lightly"),
("Bedtime (9 PM)", "Warm water with honey and dry ginger powder (no milk)"),
]
kapha_mt = doc.add_table(rows=1, cols=2)
kapha_mt.style = "Table Grid"
shade_cell(kapha_mt.cell(0, 0), "1A5276"); bold_para(kapha_mt.cell(0, 0), "Meal / Time", color="FFFFFF")
shade_cell(kapha_mt.cell(0, 1), "1A5276"); bold_para(kapha_mt.cell(0, 1), "Recommended Food", color="FFFFFF")
for idx, (time, food) in enumerate(kapha_meals):
r = kapha_mt.add_row()
bg = "EBF5FB" if idx % 2 == 0 else "FFFFFF"
shade_cell(r.cells[0], bg); normal_para(r.cells[0], time); r.cells[0].paragraphs[0].runs[0].bold = True
shade_cell(r.cells[1], bg); normal_para(r.cells[1], food)
doc.add_paragraph("")
add_heading(doc, "4.6 Herbal & Supplement Supports – Kapha", level=2, color="1A5276")
kapha_herbs = [
"Trikatu (dry ginger + black pepper + pippali) – best Kapha-reducer, stimulates Agni",
"Guggulu (Commiphora mukul) – obesity, cholesterol, joint disorders",
"Triphala – cleansing, bowel regulator",
"Punarnava – oedema, kidney support, weight",
"Honey (unheated) – Kapha-reducing medium; use as base for herbal medicines",
"Tulsi (Holy Basil) – respiratory support, anti-Kapha",
"Pippali (Long pepper) – respiratory, metabolic stimulant",
"Vidanga – anti-parasitic, digestive stimulant",
]
add_list(doc, kapha_herbs)
doc.add_paragraph("")
add_heading(doc, "4.7 Lifestyle Tips – Kapha", level=2, color="1A5276")
kapha_lifestyle = [
"Wake up before sunrise (5–6 AM); avoid sleeping during the day",
"Vigorous exercise daily: jogging, cycling, aerobics, sun salutation (Surya Namaskar)",
"Dry powder massage (Udwartana) to reduce fat and stimulate circulation",
"Avoid daytime naps — increases Kapha",
"Eat 2 main meals a day; skip dinner or eat very light",
"Intermittent fasting (Langhana) is beneficial",
"Stimulating pranayama: Kapalabhati, Bhastrika",
"Keep environment warm and stimulating",
]
add_list(doc, kapha_lifestyle)
# ═══════════════════════════════════════════════════════
# SECTION 5 – SATTVIC / RAJASIC / TAMASIC FOODS
# ═══════════════════════════════════════════════════════
doc.add_page_break()
add_heading(doc, "5. Ayurvedic Classification of Foods by Quality (Guna)", level=1, color="1F3864")
doc.add_paragraph(
"Ayurveda classifies all foods by three Gunas (qualities) that influence not only the body but "
"also the mind and consciousness. This classification cuts across all Prakriti types."
).paragraph_format.space_after = Pt(6)
guna_data = [
("SATTVIC\n(Pure / Harmonious)", "1F6B1F",
"Fresh fruits and vegetables, moong dal, milk, ghee, honey, seeds, fresh herbs, basmati rice, oats, wheat",
"Promotes clarity, peace, compassion, wisdom, good health, spiritual growth. Recommended for all Prakriti types as base."),
("RAJASIC\n(Stimulating / Activating)", "B7770D",
"Onion, garlic, coffee, tea, spicy food, eggs, meat, fish, excessive salt, sour foods, processed food",
"Promotes restlessness, passion, activity, ambition, anger when in excess. Moderate amounts needed for active people."),
("TAMASIC\n(Dull / Inert)", "7B241C",
"Stale/reheated food, alcohol, red meat, heavy processed food, junk food, frozen food, leftovers over 24 hrs",
"Promotes lethargy, dullness, confusion, depression, disease. Should be minimised or avoided entirely."),
]
guna_table = doc.add_table(rows=1, cols=4)
guna_table.style = "Table Grid"
guna_table.alignment = WD_TABLE_ALIGNMENT.CENTER
for i, hdr in enumerate(["Guna", "Examples of Foods", "Effect on Mind & Body"]):
bg_list = ["1F3864", "1F3864", "1F3864"]
cell = guna_table.cell(0, i if i == 0 else i)
shade_cell(guna_table.cell(0, 0), "1F3864"); bold_para(guna_table.cell(0, 0), "Guna (Quality)", color="FFFFFF")
shade_cell(guna_table.cell(0, 1), "1F3864"); bold_para(guna_table.cell(0, 1), "Examples of Foods", color="FFFFFF")
shade_cell(guna_table.cell(0, 2), "1F3864"); bold_para(guna_table.cell(0, 2), "Effect on Mind & Body", color="FFFFFF")
for (guna_name, guna_color, examples, effects) in guna_data:
row = guna_table.add_row()
shade_cell(row.cells[0], guna_color)
p = row.cells[0].paragraphs[0]; p.clear()
r = p.add_run(guna_name); r.bold = True; r.font.size = Pt(10); r.font.color.rgb = RGBColor(255, 255, 255)
shade_cell(row.cells[1], "F9F9F9"); normal_para(row.cells[1], examples)
shade_cell(row.cells[2], "F9F9F9"); normal_para(row.cells[2], effects)
doc.add_paragraph("")
# ═══════════════════════════════════════════════════════
# SECTION 6 – QUICK COMPARISON TABLE
# ═══════════════════════════════════════════════════════
add_heading(doc, "6. Quick Comparison – Vata vs Pitta vs Kapha Diet", level=1, color="1F3864")
comp_data = [
("Best Taste", "Sweet, Sour, Salty", "Sweet, Bitter, Astringent", "Pungent, Bitter, Astringent"),
("Avoid Taste", "Bitter, Pungent, Astringent", "Sour, Pungent, Salty", "Sweet, Sour, Salty"),
("Food Temperature", "Warm / Hot", "Cool / Room Temp", "Warm / Hot"),
("Food Quality", "Moist, Heavy, Oily", "Light, Cool, Dry", "Light, Dry, Warm"),
("Best Oil", "Sesame, Almond, Ghee", "Coconut, Sunflower, Ghee", "Mustard, Sunflower (minimal)"),
("Best Grain", "Rice, Wheat, Oats", "Basmati Rice, Wheat, Barley", "Barley, Millet, Quinoa"),
("Best Legume", "Moong Dal, Red Lentil", "Moong Dal, Chickpea", "Moong Dal, All legumes"),
("Best Dairy", "Warm Milk, Ghee, Yoghurt", "Milk, Ghee", "Low-fat Milk, Buttermilk (thin)"),
("Best Sweetener", "Jaggery, Dates, Honey", "Maple Syrup, Raw Sugar", "Raw Honey (unheated)"),
("Best Spice", "Ginger (fresh), Hing", "Coriander, Fennel, Turmeric", "Dry Ginger, Black Pepper, Trikatu"),
("Meal Frequency", "Regular; 3 meals + snacks", "Regular; do not skip meals", "2 meals; skip breakfast if possible"),
("Cooking Method", "Boiled, Steamed, Sauteed", "Steamed, Baked, Boiled", "Baked, Grilled, Dry-roasted"),
]
comp_table = doc.add_table(rows=1, cols=4)
comp_table.style = "Table Grid"
comp_table.alignment = WD_TABLE_ALIGNMENT.CENTER
for i, (hdr, bg) in enumerate(zip(["Parameter", "VATA", "PITTA", "KAPHA"], ["1F3864", "8B4513", "8B0000", "1A5276"])):
cell = comp_table.cell(0, i); shade_cell(cell, bg); bold_para(cell, hdr, size=11, color="FFFFFF")
for idx, row_data in enumerate(comp_data):
row = comp_table.add_row()
bg = "F5F5F5" if idx % 2 == 0 else "FFFFFF"
for j, val in enumerate(row_data):
shade_cell(row.cells[j], bg)
normal_para(row.cells[j], val)
if j == 0: row.cells[j].paragraphs[0].runs[0].bold = True
doc.add_paragraph("")
# ═══════════════════════════════════════════════════════
# SECTION 7 – GENERAL AYURVEDIC DIETARY RULES
# ═══════════════════════════════════════════════════════
add_heading(doc, "7. General Ayurvedic Dietary Rules (Applicable to All Prakriti)", level=1, color="1F3864")
general_rules = [
"Eat freshly cooked food (Sattvic) — avoid reheated, stale, or frozen meals",
"Eat the largest meal at noon when Agni (digestive fire) is strongest",
"Do not eat until the previous meal is fully digested (minimum 3–4 hours gap)",
"Eat in a calm, mindful atmosphere — avoid eating under stress or distraction",
"Fill 1/3 stomach with food, 1/3 with water/liquids, and leave 1/3 empty (Mitahara principle)",
"Avoid incompatible food combinations (Viruddha Ahara): milk + fish, milk + sour fruits, honey + ghee in equal quantities",
"Sip warm water during meals; avoid cold water especially after oily food",
"Do not suppress natural urges (hunger, thirst) — eat when genuinely hungry",
"Seasonal eating (Ritucharya): adjust diet with the seasons",
"Agni (digestive fire) must be respected — always eat according to your digestive capacity",
"Morning: light; Noon: heaviest meal; Evening: light",
"Chew food properly; 32 chews per mouthful is the classical recommendation",
]
add_list(doc, general_rules)
doc.add_paragraph("")
# ═══════════════════════════════════════════════════════
# SECTION 8 – VIRUDDHA AHARA (INCOMPATIBLE FOODS)
# ═══════════════════════════════════════════════════════
add_heading(doc, "8. Viruddha Ahara – Incompatible Food Combinations to Avoid", level=1, color="1F3864")
viruddha_data = [
("Milk + Fish", "Causes skin disorders, vitiligo, complex digestive imbalance"),
("Milk + Sour Fruits (lemon, orange)", "Curdles in stomach; causes toxic fermentation"),
("Honey + Ghee (equal quantities)", "Forms Ama (toxic metabolite) when heated together"),
("Milk + Salt", "Opposite qualities; causes Kapha accumulation"),
("Cold water after oily food", "Solidifies fats; impairs digestion"),
("Fruit + Grain meal", "Fruit digests faster; causes fermentation"),
("Honey (heated above 40°C)", "Becomes toxic (Ama-kara); never cook honey"),
("Banana + Milk", "Heavy combination; causes mucus, Kapha aggravation"),
("Yoghurt at night", "Increases Kapha, Ama; best taken at noon with cumin"),
("Radish + Milk", "Skin disorders, digestive disturbance"),
]
viruddha_table = doc.add_table(rows=1, cols=2)
viruddha_table.style = "Table Grid"
shade_cell(viruddha_table.cell(0, 0), "7B241C"); bold_para(viruddha_table.cell(0, 0), "Incompatible Combination", color="FFFFFF")
shade_cell(viruddha_table.cell(0, 1), "7B241C"); bold_para(viruddha_table.cell(0, 1), "Why to Avoid", color="FFFFFF")
for idx, (combo, reason) in enumerate(viruddha_data):
row = viruddha_table.add_row()
bg = "FFF0F0" if idx % 2 == 0 else "FFFFFF"
shade_cell(row.cells[0], bg); normal_para(row.cells[0], combo); row.cells[0].paragraphs[0].runs[0].bold = True
shade_cell(row.cells[1], bg); normal_para(row.cells[1], reason)
doc.add_paragraph("")
# Footer note
final_note = doc.add_paragraph(
"Note: Dual Prakriti types (e.g. Vata-Pitta, Pitta-Kapha) require a balanced approach. "
"In such cases, modify the diet based on the currently aggravated Dosha and the prevailing season. "
"Consult a qualified Ayurvedic Vaidya for personalised prescription and Panchakarma recommendations."
)
final_note.paragraph_format.space_before = Pt(6)
for run in final_note.runs:
run.font.size = Pt(10)
run.italic = True
run.font.color.rgb = RGBColor.from_string("555555")
# ═══════════════════════════════════════════════════════
# Save
# ═══════════════════════════════════════════════════════
output_path = "/tmp/workspace/ayurvedic-diet-chart/Ayurvedic_Diet_Chart_Vata_Pitta_Kapha.docx"
doc.save(output_path)
print(f"Document saved: {output_path}")
cd /tmp/workspace/ayurvedic-diet-chart && python3 create_diet_chart.py
ls -lh /tmp/workspace/ayurvedic-diet-chart/
Ayurvedic Diet Chart Vata Pitta Kapha
Word Document · DOCX
Probiotics and other i need only chart with small intro
What scope do you want for the chart? · Format?
ls /tmp/workspace/ayurvedic-diet-chart/
~/ayurvedic-diet-chart/create_gut_health_chart.py
from docx import Document
from docx.shared import Pt, Inches, RGBColor, Cm
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.enum.table import WD_TABLE_ALIGNMENT
from docx.oxml.ns import qn
from docx.oxml import OxmlElement
doc = Document()
# ── Page setup ──
section = doc.sections[0]
section.page_width = Inches(8.5)
section.page_height = Inches(11)
section.left_margin = Inches(0.8)
section.right_margin = Inches(0.8)
section.top_margin = Inches(0.75)
section.bottom_margin= Inches(0.75)
normal_style = doc.styles["Normal"]
normal_style.font.name = "Calibri"
normal_style.font.size = Pt(11)
# ── Helpers ──
def shade(cell, hex_color):
tc = cell._tc
tcPr = tc.get_or_add_tcPr()
shd = OxmlElement("w:shd")
shd.set(qn("w:val"), "clear")
shd.set(qn("w:color"), "auto")
shd.set(qn("w:fill"), hex_color)
tcPr.append(shd)
def hdr_cell(cell, text, hex_bg, text_color="FFFFFF", size=11):
shade(cell, hex_bg)
p = cell.paragraphs[0]; p.clear()
r = p.add_run(text); r.bold = True
r.font.size = Pt(size)
r.font.color.rgb = RGBColor.from_string(text_color)
p.alignment = WD_ALIGN_PARAGRAPH.CENTER
def body_cell(cell, text, hex_bg="FFFFFF", bold=False, size=10, align=WD_ALIGN_PARAGRAPH.LEFT):
shade(cell, hex_bg)
p = cell.paragraphs[0]; p.clear()
r = p.add_run(text); r.bold = bold
r.font.size = Pt(size)
p.alignment = align
def section_intro(doc, title, color_hex, intro_text):
"""Adds a colored section heading + 1-line intro paragraph."""
h = doc.add_heading(title, level=1)
for run in h.runs:
run.font.color.rgb = RGBColor.from_string(color_hex)
p = doc.add_paragraph(intro_text)
p.runs[0].font.size = Pt(10.5)
p.runs[0].italic = True
p.paragraph_format.space_after = Pt(4)
def divider(doc, hex_color="CCCCCC"):
t = doc.add_table(rows=1, cols=1)
t.style = "Table Grid"
shade(t.cell(0, 0), hex_color)
t.cell(0, 0).paragraphs[0].text = ""
doc.add_paragraph("")
# ══════════════════════════════════════════════════════
# TITLE
# ══════════════════════════════════════════════════════
tp = doc.add_paragraph()
tp.alignment = WD_ALIGN_PARAGRAPH.CENTER
tr = tp.add_run("GUT HEALTH DIET CHART")
tr.bold = True; tr.font.size = Pt(24)
tr.font.color.rgb = RGBColor.from_string("1B4F72")
sp = doc.add_paragraph()
sp.alignment = WD_ALIGN_PARAGRAPH.CENTER
sr = sp.add_run("Probiotics · Prebiotics · Synbiotics · Postbiotics · Fermented Foods · Dietary Fiber")
sr.bold = True; sr.font.size = Pt(12)
sr.font.color.rgb = RGBColor.from_string("2E86C1")
doc.add_paragraph()
note = doc.add_paragraph()
note.alignment = WD_ALIGN_PARAGRAPH.CENTER
nr = note.add_run("For Naturopathy & Clinical Nutrition Practice | Prepared: July 2026")
nr.font.size = Pt(9.5); nr.italic = True
nr.font.color.rgb = RGBColor.from_string("666666")
doc.add_paragraph()
divider(doc, "1B4F72")
# ══════════════════════════════════════════════════════
# QUICK OVERVIEW TABLE
# ══════════════════════════════════════════════════════
ov_intro = doc.add_paragraph(
"Quick Reference: How Probiotics, Prebiotics, Synbiotics, and Postbiotics differ and work together."
)
ov_intro.runs[0].font.size = Pt(10.5)
ov_intro.runs[0].italic = True
ov_intro.paragraph_format.space_before = Pt(4)
ov = doc.add_table(rows=1, cols=5)
ov.style = "Table Grid"
ov.alignment = WD_TABLE_ALIGNMENT.CENTER
for i, (h, bg) in enumerate(zip(
["Term", "Definition", "Mechanism", "Key Example", "Clinical Use"],
["1B4F72","1B4F72","1B4F72","1B4F72","1B4F72"])):
hdr_cell(ov.cell(0, i), h, bg, size=10)
ov_data = [
("Probiotics", "Live beneficial microorganisms that, when consumed in adequate amounts, confer a health benefit on the host.",
"Colonise gut temporarily; compete with pathogens; modulate immune response; produce SCFAs",
"Lactobacillus acidophilus, Bifidobacterium longum",
"IBS, AAD, diarrhoea, immunity"),
("Prebiotics", "Non-digestible food components that selectively stimulate growth/activity of beneficial gut bacteria.",
"Fermented by colonic bacteria → produce SCFAs (butyrate, acetate, propionate)",
"Inulin, FOS, GOS, lactulose, resistant starch",
"Constipation, gut dysbiosis, obesity"),
("Synbiotics", "Combination of probiotics + prebiotics that synergistically benefit the host.",
"Prebiotic selectively feeds the co-administered probiotic, enhancing its survival and effect",
"Lactobacillus GG + Inulin; Bifidobacterium + FOS",
"IBD, liver disease, neonates"),
("Postbiotics", "Bioactive compounds produced by gut bacteria or released from bacterial cells that benefit the host.",
"Direct effect of metabolites (SCFAs, bacteriocins, vitamins, peptides) on host cells",
"Butyrate, SCFAs, bacteriocins, B-vitamins, lactoferrin",
"Gut barrier repair, anti-inflammatory"),
]
alt = ["EBF5FB","FFFFFF","EBF5FB","FFFFFF"]
for row_data, bg in zip(ov_data, alt):
row = ov.add_row()
for j, val in enumerate(row_data):
body_cell(row.cells[j], val, bg, bold=(j==0), size=9.5)
doc.add_paragraph()
# ══════════════════════════════════════════════════════
# 1. PROBIOTICS
# ══════════════════════════════════════════════════════
doc.add_page_break()
section_intro(doc,
"1. PROBIOTICS",
"1A5276",
"Live microorganisms that restore and maintain a healthy gut microbiome. "
"Must be consumed in adequate doses (typically ≥10⁹ CFU/day) to be effective.")
# 1a. Strains chart
h2 = doc.add_heading("1.1 Key Probiotic Strains, Sources & Benefits", level=2)
for r in h2.runs: r.font.color.rgb = RGBColor.from_string("1A5276")
t1 = doc.add_table(rows=1, cols=5)
t1.style = "Table Grid"
t1.alignment = WD_TABLE_ALIGNMENT.CENTER
for i, (h, bg) in enumerate(zip(
["Genus / Species", "Strain", "Natural Food Source", "Key Health Benefit", "Clinical Indication"],
["1A5276"]*5)):
hdr_cell(t1.cell(0, i), h, bg, size=10)
probiotic_data = [
("Lactobacillus acidophilus", "NCFM / La-5", "Yoghurt, kefir", "Lactose digestion, IBS, vaginal flora", "IBS, vaginitis, lactose intolerance"),
("Lactobacillus rhamnosus", "GG (LGG)", "Fermented dairy, supplements", "AAD prevention, gut barrier, immune boost", "Antibiotic-assoc. diarrhoea, Crohn's, eczema"),
("Lactobacillus reuteri", "DSM 17938", "Breast milk, fermented foods", "Colic, H. pylori suppression, oral health", "Infant colic, H. pylori, dental caries"),
("Lactobacillus casei", "Shirota", "Yakult, fermented milk", "Immune regulation, bowel regularity", "Constipation, immunity, IBD"),
("Lactobacillus plantarum", "299v", "Sauerkraut, kimchi, fermented veg", "IBS (bloating, pain), gut mucosal integrity", "IBS, traveller's diarrhoea"),
("Bifidobacterium longum", "BB536", "Colon dominant; dairy/supplements", "Allergy, constipation, immunity", "Constipation, allergic rhinitis, IBS"),
("Bifidobacterium lactis", "Bb-12", "Yoghurt, infant formula", "Stool consistency, infant gut health", "Infant diarrhoea, immunity"),
("Bifidobacterium breve", "M-16V", "Breast milk, dairy ferments", "Infant gut colonisation, eczema prevention", "Preterm infants, atopic dermatitis"),
("Streptococcus thermophilus", "ST-21", "Yoghurt (primary fermenter)", "Lactose digestion, gut pH balance", "Lactose intolerance, yoghurt cultures"),
("Saccharomyces boulardii", "CNCM I-745", "Probiotic supplement (yeast)", "AAD, traveller's diarrhoea, C. difficile", "C. difficile colitis, acute diarrhoea"),
("Lactobacillus helveticus", "R0052", "Hard cheeses (Emmental, Gruyère)", "Gut-brain axis, anxiety reduction, calcium abs.", "Anxiety, stress, sleep"),
("Enterococcus faecium", "SF68", "Some supplements/fermented foods", "Bowel flora restoration post-antibiotics", "Post-antibiotic gut restoration"),
]
for idx, row_data in enumerate(probiotic_data):
row = t1.add_row()
bg = "EBF5FB" if idx % 2 == 0 else "FFFFFF"
for j, val in enumerate(row_data):
body_cell(row.cells[j], val, bg, bold=(j==0), size=9.5)
doc.add_paragraph()
# 1b. Probiotic food sources
h2b = doc.add_heading("1.2 Natural Probiotic Food Sources", level=2)
for r in h2b.runs: r.font.color.rgb = RGBColor.from_string("1A5276")
t1b = doc.add_table(rows=1, cols=4)
t1b.style = "Table Grid"
t1b.alignment = WD_TABLE_ALIGNMENT.CENTER
for i, (h, bg) in enumerate(zip(
["Food", "Origin / Tradition", "Dominant Organisms", "Notes"],
["1A5276"]*4)):
hdr_cell(t1b.cell(0, i), h, bg, size=10)
food_sources = [
("Yoghurt (Dahi)", "Universal / Indian", "L. acidophilus, S. thermophilus, L. bulgaricus", "Best when fresh, homemade; avoid flavoured/sweetened"),
("Kefir", "Caucasus / Eastern EU", "30+ strains of Lactobacillus, Bifidobacterium + yeasts", "Most diverse probiotic food; contains kefiran"),
("Sauerkraut", "Germany / Eastern EU", "L. plantarum, L. mesenteroides", "Unpasteurised only; rich in Vit C"),
("Kimchi", "Korea", "L. kimchii, L. plantarum, L. brevis", "Fermented cabbage + chilli; anti-inflammatory"),
("Miso", "Japan", "Aspergillus oryzae + L. acidophilus", "Fermented soybean paste; umami; anti-oxidant"),
("Tempeh", "Indonesia", "Rhizopus oligosporus (mould) + bacteria", "Fermented soybeans; high protein"),
("Kanji (Black carrot)", "India (North)", "Lactobacillus spp.", "Traditional Indian probiotic drink"),
("Idli / Dosa batter", "India (South)", "L. mesenteroides, L. fermentum", "Fermented rice-lentil; excellent prebiotic too"),
("Gundruk", "Nepal / North-East India", "Lactobacillus fermentum, L. plantarum", "Fermented leafy greens"),
("Kombucha", "China / Russia", "Acetic acid bacteria + yeasts (SCOBY)", "Fermented tea; contains B vitamins, organic acids"),
("Natto", "Japan", "Bacillus subtilis natto", "Fermented soybeans; highest source of Vit K2"),
("Lassi / Buttermilk", "India", "Lactobacillus spp.", "Diluted cultured yoghurt; Ayurvedically recommended"),
]
for idx, row_data in enumerate(food_sources):
row = t1b.add_row()
bg = "EBF5FB" if idx % 2 == 0 else "FFFFFF"
for j, val in enumerate(row_data):
body_cell(row.cells[j], val, bg, bold=(j==0), size=9.5)
doc.add_paragraph()
# 1c. Clinical indications
h2c = doc.add_heading("1.3 Probiotics by Clinical Indication", level=2)
for r in h2c.runs: r.font.color.rgb = RGBColor.from_string("1A5276")
t1c = doc.add_table(rows=1, cols=3)
t1c.style = "Table Grid"
t1c.alignment = WD_TABLE_ALIGNMENT.CENTER
for i, (h, bg) in enumerate(zip(
["Condition / Indication", "Recommended Strains", "Dosage Guidance"],
["1A5276"]*3)):
hdr_cell(t1c.cell(0, i), h, bg, size=10)
indications = [
("Antibiotic-Associated Diarrhoea (AAD)", "L. rhamnosus GG, S. boulardii", "10⁹–10¹⁰ CFU/day; start day 1 of antibiotics"),
("IBS (Irritable Bowel Syndrome)", "L. plantarum 299v, B. infantis 35624, VSL#3", "10⁹–10¹⁰ CFU/day for 4–8 weeks"),
("Acute Infectious Diarrhoea", "L. rhamnosus GG, S. boulardii, L. acidophilus", "10¹⁰ CFU/day for 5–7 days"),
("H. pylori (adjunct to triple therapy)", "L. reuteri, L. acidophilus, S. boulardii", "During and 2 weeks post antibiotic therapy"),
("Constipation", "B. longum, B. lactis Bb-12, L. reuteri", "10⁹ CFU/day for minimum 4 weeks"),
("Inflammatory Bowel Disease (IBD)", "VSL#3 (UC), L. rhamnosus GG, E. coli Nissle 1917", "High dose, specialist guidance"),
("Vaginal Dysbiosis / BV", "L. acidophilus, L. rhamnosus, L. reuteri RC-14", "Oral or vaginal; 10⁸–10⁹ CFU/day"),
("Atopic Dermatitis / Eczema", "L. rhamnosus GG, B. breve, L. salivarius", "Prenatal + postnatal; 10⁹ CFU/day"),
("Traveller's Diarrhoea (prevention)", "S. boulardii, L. acidophilus, L. casei", "Start 2 days before travel; continue throughout"),
("Infant Colic", "L. reuteri DSM 17938", "10⁸ CFU/day; 30 min before feed"),
("Liver Disease (NAFLD/NASH adjunct)", "L. rhamnosus, B. longum + FOS synbiotic", "Under medical supervision"),
("Post-COVID Gut Dysbiosis", "Multi-strain (Lactobacillus + Bifidobacterium blend)", "10¹⁰ CFU/day for 8–12 weeks"),
]
for idx, row_data in enumerate(indications):
row = t1c.add_row()
bg = "EBF5FB" if idx % 2 == 0 else "FFFFFF"
for j, val in enumerate(row_data):
body_cell(row.cells[j], val, bg, bold=(j==0), size=9.5)
doc.add_paragraph()
# ══════════════════════════════════════════════════════
# 2. PREBIOTICS
# ══════════════════════════════════════════════════════
doc.add_page_break()
section_intro(doc,
"2. PREBIOTICS",
"1E8449",
"Non-digestible dietary fibres and compounds that selectively feed beneficial gut bacteria "
"(Lactobacillus, Bifidobacterium). They are not alive but are essential for probiotic survival and gut health.")
h2_pre = doc.add_heading("2.1 Types of Prebiotics, Food Sources & Functions", level=2)
for r in h2_pre.runs: r.font.color.rgb = RGBColor.from_string("1E8449")
t2 = doc.add_table(rows=1, cols=5)
t2.style = "Table Grid"
t2.alignment = WD_TABLE_ALIGNMENT.CENTER
for i, (h, bg) in enumerate(zip(
["Prebiotic Type", "Best Food Sources", "Bacteria Fed", "Key Benefit", "Daily Target"],
["1E8449"]*5)):
hdr_cell(t2.cell(0, i), h, bg, size=10)
prebiotic_data = [
("Inulin", "Chicory root (highest), garlic, onion, leek, asparagus, Jerusalem artichoke, banana (unripe)", "Bifidobacterium, Lactobacillus", "Bowel regularity, calcium absorption, lipid reduction", "5–10 g/day"),
("Fructo-oligosaccharides (FOS)", "Onion, garlic, banana, wheat, tomato, leek, honey", "Bifidobacterium spp.", "Gut flora balance, constipation, immune modulation", "3–8 g/day"),
("Galacto-oligosaccharides (GOS)", "Human milk (naturally); commercial infant formula + legumes", "Bifidobacterium, Lactobacillus", "Infant gut health, immune tolerance, allergy prevention","2–10 g/day"),
("Resistant Starch (RS)", "Green banana, cooked-cooled rice/pasta/potato, legumes, oats (raw), Hi-maize corn", "Butyrate-producing bacteria (Faecalibacterium, Roseburia)", "Colon cancer prevention, insulin sensitivity, satiety", "15–20 g/day"),
("Pectin", "Apple (skin), citrus peel, guava, plum, carrot, beet", "Lactobacillus, Bifidobacterium", "Cholesterol reduction, gut barrier support", "6–12 g/day"),
("Beta-glucan", "Oats (best source), barley, mushrooms (shiitake, reishi, oyster), rye", "Lactobacillus, Bifidobacterium", "Cholesterol reduction, immune stimulation, glucose control","3–5 g/day"),
("Arabinoxylan (AXOS)", "Whole wheat bran, oat bran, sorghum, bamboo shoots", "Bifidobacterium spp.", "Anti-oxidant, colon health, lipid profile", "3–10 g/day"),
("Lactulose", "Pharmaceutical (synthetic from lactose); small amounts in heated milk", "Lactobacillus, Bifidobacterium", "Constipation treatment, hepatic encephalopathy", "10–30 g/day (medical)"),
("Polyphenols (prebiotic-like)", "Berries, pomegranate, green tea, cocoa (dark chocolate >70%), turmeric, flaxseed", "Akkermansia, Bifidobacterium", "Anti-inflammatory, gut barrier, antioxidant", "Dietary amounts"),
]
for idx, row_data in enumerate(prebiotic_data):
row = t2.add_row()
bg = "EAFAF1" if idx % 2 == 0 else "FFFFFF"
for j, val in enumerate(row_data):
body_cell(row.cells[j], val, bg, bold=(j==0), size=9.5)
doc.add_paragraph()
# 2b. Top prebiotic foods quick chart
h2b_pre = doc.add_heading("2.2 Top Prebiotic Foods – Quick Reference", level=2)
for r in h2b_pre.runs: r.font.color.rgb = RGBColor.from_string("1E8449")
t2b = doc.add_table(rows=1, cols=4)
t2b.style = "Table Grid"
t2b.alignment = WD_TABLE_ALIGNMENT.CENTER
for i, (h, bg) in enumerate(zip(
["Food", "Prebiotic Content", "How to Use", "Notes"],
["1E8449"]*4)):
hdr_cell(t2b.cell(0, i), h, bg, size=10)
pre_foods = [
("Chicory Root", "Highest inulin (41% dry weight)", "Chicory tea, coffee substitute, supplement", "Best single source of inulin"),
("Garlic (raw)", "Inulin 9–16 g/100 g, FOS", "Raw in salads/dressing; minimal cooking", "Cooking reduces prebiotic content"),
("Onion (raw)", "FOS 2–6 g/100 g, inulin", "Raw in salads; sauteed (some retained)", "Red onion has extra polyphenols"),
("Leek", "FOS + Inulin", "Soups, stir-fry, raw", "Milder than onion; good tolerance"),
("Jerusalem Artichoke", "Inulin 14–19 g/100 g", "Cooked, roasted, raw", "May cause gas initially; introduce slowly"),
("Asparagus", "Inulin ~2–3 g/100 g", "Steamed, roasted, raw", "Also rich in folate"),
("Banana (unripe/green)","Resistant starch 4–19 g/100 g", "Smoothies, raw", "Ripening reduces RS; ripe banana less prebiotic"),
("Oats (raw/rolled)", "Beta-glucan 4–8 g/100 g, RS", "Overnight oats, porridge (less RS when hot)", "Cooking lowers RS; raw oats retain more"),
("Apple (with skin)", "Pectin 1–1.5 g/apple", "Raw with skin; juice loses pectin", "Also contains polyphenols"),
("Garbanzo / Chickpeas", "RS + FOS", "Cooked, hummus, salads", "Cook-cool cycle increases RS"),
("Flaxseed", "Mucilaginous fibres + polyphenols", "Ground flax in smoothies, yoghurt", "Must be ground; whole seeds pass undigested"),
("Dark Chocolate (>70%)","Polyphenols (cocoa flavanols)", "20–30 g/day", "Feeds Lactobacillus & Bifidobacterium"),
]
for idx, row_data in enumerate(pre_foods):
row = t2b.add_row()
bg = "EAFAF1" if idx % 2 == 0 else "FFFFFF"
for j, val in enumerate(row_data):
body_cell(row.cells[j], val, bg, bold=(j==0), size=9.5)
doc.add_paragraph()
# ══════════════════════════════════════════════════════
# 3. FERMENTED FOODS (extended)
# ══════════════════════════════════════════════════════
doc.add_page_break()
section_intro(doc,
"3. FERMENTED FOODS",
"7D3C98",
"Foods produced through microbial fermentation of sugars/proteins. "
"They are among the oldest naturally occurring sources of live cultures and bioactive metabolites.")
h3 = doc.add_heading("3.1 Global Fermented Foods Chart", level=2)
for r in h3.runs: r.font.color.rgb = RGBColor.from_string("7D3C98")
t3 = doc.add_table(rows=1, cols=5)
t3.style = "Table Grid"
t3.alignment = WD_TABLE_ALIGNMENT.CENTER
for i, (h, bg) in enumerate(zip(
["Food", "Country / Tradition", "Base Ingredient", "Microorganisms", "Key Health Benefits"],
["7D3C98"]*5)):
hdr_cell(t3.cell(0, i), h, bg, size=10)
fermented_foods = [
("Yoghurt / Dahi", "Universal / India", "Cow/buffalo/goat milk", "L. bulgaricus, S. thermophilus, L. acidophilus", "Digestion, lactose intolerance, immunity, skin"),
("Kefir", "Caucasus", "Milk or water", "30+ strains: Lactobacillus + yeasts", "Strongest probiotic drink; anti-tumour, allergy"),
("Kimchi", "Korea", "Cabbage, radish, spices", "L. kimchii, L. plantarum, L. brevis", "Anti-obesity, anti-inflammatory, gut flora"),
("Sauerkraut", "Germany / Eastern Europe","Cabbage + salt", "L. plantarum, L. mesenteroides", "Immune support, Vit C, B12, gut health"),
("Miso", "Japan", "Soybeans + rice/barley", "Aspergillus oryzae + LAB", "Antioxidant, anti-cancer, gut microbiome support"),
("Tempeh", "Indonesia", "Soybeans", "Rhizopus oligosporus", "High protein, B12 (vegan source), gut health"),
("Natto", "Japan", "Soybeans", "Bacillus subtilis natto", "Highest Vit K2 source; cardioprotective, bone health"),
("Kombucha", "China / Russia", "Black/green tea + sugar", "SCOBY (acetic acid bacteria + yeasts)", "Detox, antioxidant, gut health, B vitamins"),
("Kanji", "India (North)", "Black/purple carrot + mustard seeds", "Lactobacillus spp.", "Traditional probiotic; anti-oxidant, digestive"),
("Idli / Dosa batter","India (South)", "Rice + urad dal", "L. mesenteroides, L. fermentum, S. faecalis", "Highly digestible; probiotic + prebiotic"),
("Dhokla / Khaman", "India (Gujarat)", "Chickpea flour (besan)", "L. fermentum, L. brevis", "Protein-rich, fermented, light and digestive"),
("Lassi / Buttermilk","India", "Yoghurt + water", "L. acidophilus, L. casei", "Cooling, digestive, Pitta-pacifying"),
("Kvass", "Russia / Eastern Europe", "Bread (rye)", "LAB + yeast", "B vitamins, digestive, anti-microbial"),
("Poi", "Hawaii / Pacific", "Taro root", "LAB (L. mesenteroides)", "Digestive, hypoallergenic"),
("Injera", "Ethiopia", "Teff flour", "LAB + wild yeasts", "Iron bioavailability, digestive"),
("Cheese (aged)", "Universal", "Milk", "Various LAB, moulds (Penicillium for blue)", "Calcium, Vit K2, B12; aged = less lactose"),
("Pickles (brine-fermented)", "Universal", "Vegetables in salt brine", "L. plantarum, L. brevis", "Gut flora support; NOT vinegar pickles — no live culture"),
("Water Kefir", "Mexico / Universal", "Water + sugar + fruit", "LAB + yeasts (Lactobacillus, Leuconostoc)", "Dairy-free probiotic option; B vitamins"),
]
for idx, row_data in enumerate(fermented_foods):
row = t3.add_row()
bg = "F5EEF8" if idx % 2 == 0 else "FFFFFF"
for j, val in enumerate(row_data):
body_cell(row.cells[j], val, bg, bold=(j==0), size=9.5)
doc.add_paragraph()
# ══════════════════════════════════════════════════════
# 4. DIETARY FIBER
# ══════════════════════════════════════════════════════
doc.add_page_break()
section_intro(doc,
"4. DIETARY FIBER",
"B7770D",
"Dietary fiber is the indigestible carbohydrate portion of plant foods. "
"Classified as Soluble (fermented by gut bacteria → SCFAs) or Insoluble (adds bulk, promotes motility). "
"Recommended intake: 25–38 g/day (women/men).")
h4 = doc.add_heading("4.1 Types of Dietary Fiber", level=2)
for r in h4.runs: r.font.color.rgb = RGBColor.from_string("B7770D")
t4 = doc.add_table(rows=1, cols=5)
t4.style = "Table Grid"
t4.alignment = WD_TABLE_ALIGNMENT.CENTER
for i, (h, bg) in enumerate(zip(
["Fiber Type", "Classification", "Best Food Sources", "Key Functions", "Clinical Benefits"],
["B7770D"]*5)):
hdr_cell(t4.cell(0, i), h, bg, size=10)
fiber_data = [
("Beta-glucan", "Soluble / Viscous", "Oats, barley, mushrooms", "Viscous gel slows glucose/fat absorption", "Cholesterol reduction, T2DM, immunity"),
("Pectin", "Soluble / Fermentable", "Apple, citrus peel, guava, carrot","Gels in gut; slows gastric emptying", "Diarrhoea, cholesterol, gut barrier"),
("Inulin / FOS / GOS", "Soluble / Fermentable (Prebiotic)", "Chicory, onion, garlic, banana", "Prebiotic; fermented to SCFAs (butyrate)", "Gut microbiome, constipation, bone health"),
("Psyllium Husk", "Soluble / Mucilaginous", "Psyllium (Plantago ovata seed husk)", "Bulking + softening stool; bile acid binding","IBS-C, IBS-D, constipation, hyperlipidaemia"),
("Resistant Starch", "Soluble / Fermentable", "Green banana, cooled potato/rice, legumes", "Fermented by colon bacteria → butyrate", "Colon cancer prevention, insulin sensitivity"),
("Cellulose", "Insoluble", "Whole grains, green vegetables, bran", "Adds bulk; accelerates intestinal transit", "Constipation, diverticulosis prevention"),
("Hemicellulose", "Insoluble/Soluble", "Wheat bran, oat bran, rye", "Bulks stool, feeds bacteria", "Bowel regularity, colon health"),
("Lignin", "Insoluble", "Flaxseed, sesame, whole grains, woody vegetables", "Not fermented; binds bile acids, carcinogens", "Constipation, anti-cancer, cholesterol"),
("Guar Gum", "Soluble / Viscous", "Guar beans; food additive", "Slows gastric emptying, reduces glucose spike", "Obesity, T2DM, IBS"),
("Arabinoxylan (AXOS)", "Soluble / Prebiotic", "Wheat bran, rye, psyllium", "Selectively feeds Bifidobacterium", "Cholesterol, colon health, microbiome"),
]
for idx, row_data in enumerate(fiber_data):
row = t4.add_row()
bg = "FEF9E7" if idx % 2 == 0 else "FFFFFF"
for j, val in enumerate(row_data):
body_cell(row.cells[j], val, bg, bold=(j==0), size=9.5)
doc.add_paragraph()
# 4b. High fiber foods
h4b = doc.add_heading("4.2 High-Fiber Foods Chart (Fiber Content per 100 g)", level=2)
for r in h4b.runs: r.font.color.rgb = RGBColor.from_string("B7770D")
t4b = doc.add_table(rows=1, cols=4)
t4b.style = "Table Grid"
t4b.alignment = WD_TABLE_ALIGNMENT.CENTER
for i, (h, bg) in enumerate(zip(
["Food", "Total Fiber (g/100g)", "Fiber Type (dominant)", "Additional Notes"],
["B7770D"]*4)):
hdr_cell(t4b.cell(0, i), h, bg, size=10)
fiber_foods = [
("Psyllium husk (isabgol)", "71 g", "Soluble (mucilaginous)", "Best single fiber supplement; take with plenty of water"),
("Chia seeds", "34 g", "Soluble + Insoluble", "Omega-3 + fiber; soak before use"),
("Flaxseeds (ground)", "27 g", "Soluble (lignin + mucilage)", "Must be ground; rich in lignans"),
("Split lentils (masoor)", "15 g", "Soluble + Insoluble", "Also excellent plant protein"),
("Chickpeas (boiled)", "7.6 g", "Soluble (RS + FOS)", "Versatile; hummus, curry, salad"),
("Black beans", "8.7 g", "Soluble + Insoluble", "Highest fiber among common legumes"),
("Green banana (unripe)", "5–6 g", "Resistant starch (soluble)", "RS content drops as banana ripens"),
("Oats (rolled, raw)", "10 g", "Soluble (beta-glucan)", "Best for cholesterol; cook lightly"),
("Barley (cooked)", "3.8 g", "Soluble (beta-glucan)", "Best grain for Kapha types; cholesterol"),
("Avocado", "6.7 g", "Soluble + Insoluble", "Also healthy fats; gut-friendly"),
("Broccoli (raw)", "2.6 g", "Insoluble (cellulose)", "Anti-cancer (sulforaphane) + fiber"),
("Apple (with skin)", "2.4 g", "Soluble (pectin)", "Skin has most pectin; eat raw"),
("Almonds", "12.5 g","Insoluble", "Also prebiotic lipids; healthy fats"),
("Wheat bran", "42 g", "Insoluble (cellulose)", "Best for constipation bulk"),
("Quinoa (cooked)", "2.8 g", "Soluble + Insoluble", "Complete protein + fiber; gluten-free"),
]
for idx, row_data in enumerate(fiber_foods):
row = t4b.add_row()
bg = "FEF9E7" if idx % 2 == 0 else "FFFFFF"
for j, val in enumerate(row_data):
body_cell(row.cells[j], val, bg, bold=(j==0), size=9.5)
doc.add_paragraph()
# ══════════════════════════════════════════════════════
# 5. SYNBIOTICS + POSTBIOTICS
# ══════════════════════════════════════════════════════
doc.add_page_break()
section_intro(doc,
"5. SYNBIOTICS",
"1A5276",
"A Synbiotic combines a probiotic + a prebiotic in a single product, where the prebiotic specifically "
"supports the co-administered probiotic. This enhances probiotic survival in the GI tract and amplifies benefits.")
h5a = doc.add_heading("5.1 Common Synbiotic Combinations", level=2)
for r in h5a.runs: r.font.color.rgb = RGBColor.from_string("1A5276")
t5a = doc.add_table(rows=1, cols=4)
t5a.style = "Table Grid"
t5a.alignment = WD_TABLE_ALIGNMENT.CENTER
for i, (h, bg) in enumerate(zip(
["Probiotic Component", "Prebiotic Component", "Synergistic Effect", "Clinical Use"],
["1A5276"]*4)):
hdr_cell(t5a.cell(0, i), h, bg, size=10)
synbiotic_data = [
("L. rhamnosus GG", "Inulin / FOS", "Improved GG survival; enhanced bowel flora", "Antibiotic-assoc. diarrhoea, IBS"),
("Bifidobacterium lactis", "GOS", "Infant gut colonisation; immune tolerance", "Neonates, infant formula, allergies"),
("B. longum + L. acidophilus", "FOS + Inulin", "Synergistic Bifidobacterium growth; colon health", "IBD, constipation, colon cancer prevention"),
("L. casei Shirota", "Lactulose", "Enhanced bifidogenic effect; constipation relief", "Constipation, hepatic encephalopathy"),
("Multi-strain LAB blend", "Beta-glucan (oats)", "Boosted immune modulation; SCFA production", "Metabolic syndrome, T2DM, obesity"),
("L. plantarum + L. reuteri", "Pectin + Psyllium", "IBS symptom reduction; gut barrier support", "IBS-C and IBS-D, leaky gut syndrome"),
]
for idx, row_data in enumerate(synbiotic_data):
row = t5a.add_row()
bg = "EBF5FB" if idx % 2 == 0 else "FFFFFF"
for j, val in enumerate(row_data):
body_cell(row.cells[j], val, bg, bold=(j==0), size=9.5)
doc.add_paragraph()
section_intro(doc,
"6. POSTBIOTICS",
"922B21",
"Postbiotics are inanimate microorganisms and/or their components or metabolic by-products that confer "
"a health benefit on the host. They act directly — no live bacteria needed.")
h6 = doc.add_heading("6.1 Key Postbiotic Compounds", level=2)
for r in h6.runs: r.font.color.rgb = RGBColor.from_string("922B21")
t6 = doc.add_table(rows=1, cols=4)
t6.style = "Table Grid"
t6.alignment = WD_TABLE_ALIGNMENT.CENTER
for i, (h, bg) in enumerate(zip(
["Postbiotic", "Source", "Key Actions", "Clinical Application"],
["922B21"]*4)):
hdr_cell(t6.cell(0, i), h, bg, size=10)
postbiotic_data = [
("Short-Chain Fatty Acids (SCFAs):\nButyrate, Acetate, Propionate",
"Fermentation of dietary fiber by colonic bacteria",
"Colonocyte fuel; anti-inflammatory; tight junction repair; anti-cancer",
"IBD, leaky gut, colon cancer prevention, insulin sensitivity"),
("Bacteriocins (e.g. nisin, reuterin)",
"Produced by Lactobacillus, Lactococcus",
"Antimicrobial peptides; inhibit pathogens (C. difficile, Listeria, Staph)",
"Infection prevention, food preservation, dysbiosis"),
("B-Vitamins (B2, B9, B12, B6, K2)",
"Produced by Bifidobacterium, Lactobacillus, Bacillus",
"Coenzyme functions; neurological health; blood formation; bone health",
"Deficiency states, vegans, neuropathy"),
("Tryptophan metabolites (Indoles)",
"Gut bacteria metabolism of dietary tryptophan",
"Gut barrier integrity; immune regulation; gut-brain axis signalling",
"Anxiety, depression, gut permeability"),
("Exopolysaccharides (EPS)",
"LAB cell surface polysaccharides",
"Immune modulation; anti-tumour; gut mucus layer support",
"IBD, mucus barrier deficiency"),
("Heat-killed / Tyndallized probiotics",
"Commercially inactivated L. acidophilus, B. longum",
"Immune modulation without live organism risk; epithelial barrier support",
"Immunocompromised patients; infants; post-surgery"),
("Muramyl dipeptide (MDP)",
"Fragment of bacterial peptidoglycan cell wall",
"NOD2 receptor activation; innate immunity regulation",
"IBD (Crohn's), innate immune deficiency"),
]
for idx, row_data in enumerate(postbiotic_data):
row = t6.add_row()
bg = "FDEDEC" if idx % 2 == 0 else "FFFFFF"
for j, val in enumerate(row_data):
body_cell(row.cells[j], val, bg, bold=(j==0), size=9.5)
doc.add_paragraph()
# ══════════════════════════════════════════════════════
# 6. PRACTICAL GUT HEALTH DIET CHART
# ══════════════════════════════════════════════════════
doc.add_page_break()
section_intro(doc,
"7. PRACTICAL GUT-HEALTH DIET CHART",
"1B4F72",
"A simple, practical daily food guide combining Probiotics, Prebiotics, Fiber, and Fermented foods "
"for optimal gut microbiome health.")
h7 = doc.add_heading("7.1 Daily Gut Health Foods – Eat Every Day", level=2)
for r in h7.runs: r.font.color.rgb = RGBColor.from_string("1B4F72")
t7 = doc.add_table(rows=1, cols=4)
t7.style = "Table Grid"
t7.alignment = WD_TABLE_ALIGNMENT.CENTER
for i, (h, bg) in enumerate(zip(
["Category", "Foods to Include Daily", "Serving Suggestion", "Why"],
["1B4F72"]*4)):
hdr_cell(t7.cell(0, i), h, bg, size=10)
daily_gut = [
("Probiotic (at least 1)", "Fresh yoghurt (dahi), kefir, buttermilk (lassi), kimchi, miso", "1 cup yoghurt OR 1 glass lassi at noon", "Replenishes live beneficial bacteria"),
("Prebiotic (at least 1)", "Garlic, onion, asparagus, banana (unripe), oats", "1 small raw onion in meals; 1 banana; oats at breakfast", "Feeds and sustains probiotic colonies"),
("Soluble Fiber", "Oats, apple (with skin), psyllium husk, legumes, barley", "½ cup oats at breakfast; 1 apple daily; add isabgol in water", "Cholesterol, glucose control, butyrate"),
("Insoluble Fiber", "Whole grains, leafy greens, wheat bran, cucumber, celery", "2 cups vegetables per meal; whole grain rotis", "Bowel motility, detox, satiety"),
("Polyphenol-rich", "Berries, pomegranate, dark chocolate (>70%), green tea, turmeric", "1 tsp turmeric in food; berries in breakfast; 1 cup green tea", "Feeds Akkermansia; anti-inflammatory"),
("Fermented grain / legume", "Idli, dosa, dhokla, whole grain sourdough bread", "2 idli / 1 dosa at breakfast or any meal", "Natural LAB + prebiotic combination"),
("Omega-3 rich", "Flaxseed (ground), walnuts, fatty fish, chia seeds", "1 tbsp ground flax in smoothie or roti dough", "Reduces gut inflammation; EPA/DHA"),
("Adequate hydration", "Warm water, coconut water, herbal tea", "8–10 glasses warm water; sip between meals", "Keeps gut transit healthy; fiber works with water"),
]
for idx, row_data in enumerate(daily_gut):
row = t7.add_row()
bg = "EBF5FB" if idx % 2 == 0 else "FFFFFF"
for j, val in enumerate(row_data):
body_cell(row.cells[j], val, bg, bold=(j==0), size=9.5)
doc.add_paragraph()
# 7b. Foods to AVOID
h7b = doc.add_heading("7.2 Foods that Harm the Gut Microbiome – Minimise or Avoid", level=2)
for r in h7b.runs: r.font.color.rgb = RGBColor.from_string("C0392B")
t7b = doc.add_table(rows=1, cols=3)
t7b.style = "Table Grid"
t7b.alignment = WD_TABLE_ALIGNMENT.CENTER
for i, (h, bg) in enumerate(zip(
["Harmful Food / Habit", "Mechanism of Gut Damage", "Better Alternative"],
["C0392B"]*3)):
hdr_cell(t7b.cell(0, i), h, bg, size=10)
avoid_data = [
("Ultra-processed foods (chips, instant noodles, packaged snacks)", "Reduce microbiome diversity; contain emulsifiers (Polysorbate 80, CMC) disrupting mucus layer", "Whole foods, homemade snacks"),
("Refined sugar and high-fructose corn syrup", "Feeds pathogenic bacteria (Clostridium), yeast (Candida), reduces Bifidobacterium", "Jaggery, dates, raw honey in moderation"),
("Artificial sweeteners (aspartame, sucralose, saccharin)", "Directly alter gut microbiome composition; reduce microbiome diversity", "Stevia, small amounts of raw honey"),
("Antibiotics (unnecessary/self-prescribed)", "Broad-spectrum killing of beneficial bacteria; dysbiosis; AAD; Candida overgrowth", "Only when medically required; follow with probiotics"),
("Alcohol (excess)", "Increases intestinal permeability (leaky gut); shifts microbiome toward pathobionts", "Limit; fermented options (kefir, kombucha) are gut-friendly"),
("Chronic stress + poor sleep", "Increases cortisol → reduces Lactobacillus/Bifidobacterium; slows gut motility", "Relaxation, yoga, consistent sleep schedule"),
("Fried and trans-fat foods", "Pro-inflammatory; reduce microbiome diversity; increase LPS-producing bacteria", "Olive oil, ghee, coconut oil in moderation"),
("Vinegar pickles (pasteurised)", "No live culture (heat-killed); high sodium", "Brine-fermented (unpasteurised) pickles or kimchi"),
("NSAIDs (long-term use)", "Damage gut lining; alter microbiome; increase intestinal permeability", "Short-term use; gut-protective medications if needed"),
]
for idx, row_data in enumerate(avoid_data):
row = t7b.add_row()
bg = "FDEDEC" if idx % 2 == 0 else "FFFFFF"
for j, val in enumerate(row_data):
body_cell(row.cells[j], val, bg, bold=(j==0), size=9.5)
doc.add_paragraph()
# ══════════════════════════════════════════════════════
# SAMPLE DAY MEAL PLAN
# ══════════════════════════════════════════════════════
h8 = doc.add_heading("8. Sample Gut-Health Day Meal Plan", level=1)
for r in h8.runs: r.font.color.rgb = RGBColor.from_string("1B4F72")
doc.add_paragraph("Incorporates all four pillars: Probiotics, Prebiotics, Fiber, Fermented Foods."
).runs[0].italic = True
t8 = doc.add_table(rows=1, cols=3)
t8.style = "Table Grid"
t8.alignment = WD_TABLE_ALIGNMENT.CENTER
for i, (h, bg) in enumerate(zip(
["Time / Meal", "Food", "Gut Health Component"],
["1B4F72"]*3)):
hdr_cell(t8.cell(0, i), h, bg, size=10)
meal_plan = [
("Early Morning (6–7 AM)", "Warm water + 1 tsp psyllium husk + lemon", "Soluble fiber, hydration"),
("Breakfast (8 AM)", "Oat porridge with banana slices + 1 tsp ground flax + berries", "Prebiotics (oat beta-glucan + banana RS) + Omega-3"),
("Mid-Morning (10:30 AM)", "1 glass lassi (fresh yoghurt + cumin) OR kefir", "Probiotics (live LAB)"),
("Lunch (1 PM)", "2 idli / barley khichdi + sabzi with garlic/onion + dal + green salad", "Fermented + Probiotics + Prebiotic (garlic, onion)"),
("Afternoon (4 PM)", "1 apple (with skin) + 1 square dark chocolate (>70%) + green tea", "Pectin (soluble fiber) + Polyphenols"),
("Dinner (7 PM)", "Whole wheat chapati + cooked vegetables + miso soup OR kimchi side (small)", "Fiber + Probiotics (fermented)"),
("Before Bed (9:30 PM)", "Warm turmeric milk (haldi doodh) OR warm chamomile tea", "Anti-inflammatory; gut barrier support"),
]
for idx, row_data in enumerate(meal_plan):
row = t8.add_row()
bg = "EBF5FB" if idx % 2 == 0 else "FFFFFF"
for j, val in enumerate(row_data):
body_cell(row.cells[j], val, bg, bold=(j==0), size=9.5)
doc.add_paragraph()
# Footer
fn = doc.add_paragraph(
"Reference: WHO/FAO Probiotic Guidelines (2002, updated 2022) | ISAPP Consensus Statements | "
"Gut Microbiome Research (2024) | For educational/clinical use. Individual assessment recommended."
)
fn.runs[0].font.size = Pt(9); fn.runs[0].italic = True
fn.runs[0].font.color.rgb = RGBColor.from_string("666666")
# ── Save ──
out = "/tmp/workspace/ayurvedic-diet-chart/Gut_Health_Chart_Probiotics_Prebiotics.docx"
doc.save(out)
print(f"Saved: {out}")
cd /tmp/workspace/ayurvedic-diet-chart && python3 create_gut_health_chart.py
ls -lh /tmp/workspace/ayurvedic-diet-chart/
Gut Health Chart Probiotics Prebiotics
Word Document · DOCX
Piramid of food chain according to bnys food and ditrics
What format do you need the Food Pyramid in? · What scope for the BNYS Food & Dietetics pyramid?
A detailed, professional, colorful food pyramid diagram for BNYS (Bachelor of Naturopathy and Yogic Sciences) Food and Dietetics curriculum, including naturopathic diet principles. The pyramid has 7 levels from bottom to top, each level clearly labeled with a different color band: Level 1 (BASE - largest, green): "WATER & HYDRATION" — Warm water, coconut water, herbal teas, vegetable juices, buttermilk. Label: "8-10 glasses/day — Foundation of all naturopathic healing" Level 2 (large, light green): "GRAINS & COMPLEX CARBOHYDRATES" — Whole wheat, brown rice, millets (bajra, jowar, ragi), oats, barley, quinoa. Label: "6-11 servings/day — Primary energy source" Level 3 (medium-large, yellow-green): "VEGETABLES & SPROUTS" — Raw salads, cooked vegetables, green leafy vegetables, sprouts, bitter gourd. Label: "4-6 servings/day — Alkaline forming, detoxifying" Level 4 (medium, orange): "FRUITS & NATURAL SUGARS" — Fresh seasonal fruits, dry fruits (soaked), fruit juices. Label: "3-5 servings/day — Antioxidants, vitamins, enzymes" Level 5 (smaller, orange-red): "PROTEINS — LEGUMES, DAIRY & NUTS" — Lentils/dal, moong, milk, curd/yoghurt, paneer, almonds, seeds. Label: "2-3 servings/day — Body building, repair" Level 6 (small, red): "FATS & OILS" — Cold-pressed oils (sesame, coconut, olive), ghee, avocado. Label: "2-3 tsp/day — Essential fatty acids" Level 7 (APEX - smallest, deep red/maroon): "THERAPEUTIC FOODS & HERBS" — Turmeric, ginger, neem, amla, tulsi, honey, garlic. Label: "Small therapeutic doses — Medicinal, disease-specific" On the LEFT SIDE of the pyramid, a vertical column labeled "NATUROPATHIC DIET TYPES" listing from bottom to top: Eliminative Diet → Soothing Diet → Constructive Diet → Normal Naturopathic Diet → Specific Therapeutic Diet On the RIGHT SIDE, another column labeled "DIET PRINCIPLES (BNYS)" listing: Sattvic foods preferred | Fresh, seasonal, local | Minimal cooking | No refined/processed | Adequate fiber | Proper food combining | Fasting as therapy At the TOP above the pyramid: Title "BNYS FOOD PYRAMID" in large bold text. At the BOTTOM: subtitle "Naturopathic & Dietetic Principles — BNYS Curriculum" Color scheme: earthy, warm, natural greens, yellows, oranges. Clean white background. Professional medical/academic style with clear labels, food icons or illustrations at each level. Easy to read for students and clinicians.

| Level | Food Group | Servings | Naturopathic Role |
|---|---|---|---|
| 1 (Base) | Water & Hydration | 8-10 glasses/day | Foundation of all healing |
| 2 | Whole Grains & Millets | 6-11 servings | Primary energy (complex carbs) |
| 3 | Vegetables & Sprouts | 4-6 servings | Alkaline, detoxifying |
| 4 | Fruits & Natural Sugars | 3-5 servings | Enzymes, vitamins, antioxidants |
| 5 | Protein (Legumes, Dairy, Nuts) | 2-3 servings | Body building, repair |
| 6 | Fats & Cold-pressed Oils | 2-3 tsp | Essential fatty acids |
| 7 (Apex) | Therapeutic Herbs & Foods | Medicinal doses | Disease-specific healing |
Your Gut Health Chart is ready! Download it here: make diagram with images
A beautiful, detailed, colorful and professional infographic poster titled "GUT HEALTH CHART" for naturopathy and clinical nutrition. The poster has a clean white background with 4 clearly separated sections arranged in a 2x2 grid layout, each with its own color theme, real food illustrations, and clear labels. TOP LEFT SECTION — "PROBIOTICS" (Blue theme, #1A5276): A circular badge at top with title "PROBIOTICS" and subtitle "Live beneficial bacteria". Below, a visual grid showing illustrated food icons with labels: - Yoghurt/Dahi bowl (illustrated) - Kefir bottle - Kimchi jar (Korean fermented cabbage) - Sauerkraut - Miso soup bowl - Idli on a plate - Kombucha bottle - Lassi glass Each food has a small bacteria icon next to it. Below the foods, a small info box: "Key Strains: Lactobacillus • Bifidobacterium • Saccharomyces • Streptococcus" and "Benefits: Digestion • Immunity • IBS • Diarrhoea • Vaginal Health" TOP RIGHT SECTION — "PREBIOTICS" (Green theme, #1E8449): Title "PREBIOTICS" with subtitle "Food for good bacteria". Illustrated food icons: - Garlic bulbs - Onion (cut showing layers) - Banana (slightly green/unripe) - Oats in a bowl - Asparagus bunch - Chicory root - Apple with skin - Flaxseeds Below: info box "Key Types: Inulin • FOS • GOS • Beta-glucan • Resistant Starch • Pectin" and "Benefits: Microbiome balance • Constipation • Cholesterol • Blood sugar" BOTTOM LEFT SECTION — "FERMENTED FOODS" (Purple theme, #7D3C98): Title "FERMENTED FOODS" with subtitle "Ancient probiotic tradition". Illustrated foods: - Kimchi pot - Tempeh block - Natto (sticky soybeans) - Kanji (dark carrot drink) - Idli/Dosa plate - Kombucha SCOBY jar - Miso jar - Sauerkraut jar Below info box: "Contain: Live LAB cultures • B vitamins • Organic acids • Enzymes" and "Benefits: Gut flora • Immunity • Antioxidant • Mental health" BOTTOM RIGHT SECTION — "DIETARY FIBER" (Amber/Orange theme, #B7770D): Title "DIETARY FIBER" with subtitle "Fuel for your microbiome". Two sub-columns: Left sub-column "SOLUBLE": Oats, Apple, Psyllium husk, Lentils, Barley — with a wave icon Right sub-column "INSOLUBLE": Wheat bran, Broccoli, Whole grain roti, Celery — with a stick icon Below: info box "Daily Target: 25–38 g/day • Produces SCFAs (Butyrate) • Feeds probiotic bacteria • Bowel regularity" IN THE CENTER of the 2x2 grid, a circular hub icon of a happy illustrated gut/intestine with the text "HEALTHY GUT MICROBIOME" and 4 arrows pointing outward to each section. AT THE TOP of the poster, large bold title: "GUT HEALTH DIET CHART" with subtitle "Probiotics • Prebiotics • Fermented Foods • Dietary Fiber" AT THE BOTTOM, a horizontal strip showing "HARMFUL TO GUT: ❌ Ultra-processed foods ❌ Refined sugar ❌ Artificial sweeteners ❌ Alcohol (excess) ❌ Antibiotics (overuse) ❌ Chronic stress" Style: Bright, warm, natural color palette. Illustrated food icons (not photos). Clean, easy to read. Medical/educational infographic style. Professional, suitable for clinical practice display or student handout.
400, message: Got more than 4194304 bytes when reading: b'data: {"candidates": [{"content": {"role": "model","parts": [{"inlineData": {"mimeType": "image/png"...'.
We encountered an error while processing your request. Please try again or reach out to us for help.
Make a simple poster
A simple, clean gut health poster with colorful food illustrations. Title at top: "GUT HEALTH CHART". Four colored sections in a 2x2 grid: 1) Blue - PROBIOTICS with yoghurt, kefir, kimchi illustrations. 2) Green - PREBIOTICS with garlic, banana, oats illustrations. 3) Purple - FERMENTED FOODS with miso, sauerkraut, idli illustrations. 4) Orange - DIETARY FIBER with oats, apple, lentils illustrations. Center: happy gut icon. Bottom: red strip "AVOID: junk food, sugar, antibiotics overuse". Simple flat design, bright colors, minimal text.

Generate a detailed food list PDF to accompany the poster
~/ayurvedic-diet-chart/create_gut_pdf.py
from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.units import mm, cm
from reportlab.platypus import (SimpleDocTemplate, Paragraph, Spacer, Table,
TableStyle, HRFlowable, PageBreak)
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY
from reportlab.pdfbase import pdfmetrics
W, H = A4
out = "/tmp/workspace/ayurvedic-diet-chart/Gut_Health_Food_List.pdf"
doc = SimpleDocTemplate(
out, pagesize=A4,
leftMargin=18*mm, rightMargin=18*mm,
topMargin=16*mm, bottomMargin=16*mm,
title="Gut Health Food List",
author="BNYS Naturopathy Practice"
)
styles = getSampleStyleSheet()
# ── Custom styles ──
def mkstyle(name, parent="Normal", **kw):
s = ParagraphStyle(name, parent=styles[parent], **kw)
return s
title_style = mkstyle("MyTitle", fontSize=22, textColor=colors.HexColor("#1B4F72"),
alignment=TA_CENTER, spaceAfter=4, fontName="Helvetica-Bold")
subtitle_style = mkstyle("MySub", fontSize=11, textColor=colors.HexColor("#2E86C1"),
alignment=TA_CENTER, spaceAfter=3, fontName="Helvetica-Bold")
tagline_style = mkstyle("Tag", fontSize=9, textColor=colors.HexColor("#666666"),
alignment=TA_CENTER, spaceAfter=10, fontName="Helvetica-Oblique")
sec_style = mkstyle("SecHdr", fontSize=13, textColor=colors.white,
fontName="Helvetica-Bold", alignment=TA_LEFT, spaceAfter=2)
sub_style = mkstyle("SubHdr", fontSize=11, textColor=colors.HexColor("#1B4F72"),
fontName="Helvetica-Bold", spaceBefore=8, spaceAfter=3)
body_style = mkstyle("Body", fontSize=9.5, textColor=colors.HexColor("#222222"),
leading=14, spaceAfter=2)
italic_style = mkstyle("Italic", fontSize=9, textColor=colors.HexColor("#555555"),
fontName="Helvetica-Oblique", spaceAfter=6, leading=13)
note_style = mkstyle("Note", fontSize=8.5, textColor=colors.HexColor("#555555"),
fontName="Helvetica-Oblique", leading=12)
# ── Colors ──
C_BLUE = colors.HexColor("#1A5276")
C_GREEN = colors.HexColor("#1E8449")
C_PURPLE = colors.HexColor("#7D3C98")
C_AMBER = colors.HexColor("#B7770D")
C_RED = colors.HexColor("#922B21")
C_NAVY = colors.HexColor("#1B4F72")
C_LB = colors.HexColor("#EBF5FB")
C_LG = colors.HexColor("#EAFAF1")
C_LP = colors.HexColor("#F5EEF8")
C_LA = colors.HexColor("#FEF9E7")
C_LR = colors.HexColor("#FDEDEC")
C_WHITE = colors.white
C_LGREY = colors.HexColor("#F5F5F5")
C_MGREY = colors.HexColor("#CCCCCC")
def section_header(text, bg_color):
data = [[Paragraph(f"<b>{text}</b>", sec_style)]]
t = Table(data, colWidths=[W - 36*mm])
t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), bg_color),
("TOPPADDING", (0,0),(-1,-1), 7),
("BOTTOMPADDING", (0,0),(-1,-1), 7),
("LEFTPADDING", (0,0),(-1,-1), 10),
("ROUNDEDCORNERS",[4,4,4,4]),
]))
return t
def make_table(headers, rows, col_widths, hdr_color, alt_color):
hdr_style = ParagraphStyle("th", fontSize=9.5, fontName="Helvetica-Bold",
textColor=colors.white, alignment=TA_LEFT)
cell_style = ParagraphStyle("td", fontSize=9, fontName="Helvetica",
textColor=colors.HexColor("#222222"), leading=13)
data = [[Paragraph(h, hdr_style) for h in headers]]
for row in rows:
data.append([Paragraph(str(c), cell_style) for c in row])
t = Table(data, colWidths=col_widths, repeatRows=1)
ts = [
("BACKGROUND", (0,0), (-1,0), hdr_color),
("ROWBACKGROUNDS",(0,1), (-1,-1), [alt_color, C_WHITE]),
("GRID", (0,0), (-1,-1), 0.4, C_MGREY),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING", (0,0), (-1,-1), 5),
("LEFTPADDING", (0,0), (-1,-1), 6),
("RIGHTPADDING", (0,0), (-1,-1), 6),
("VALIGN", (0,0), (-1,-1), "TOP"),
]
t.setStyle(TableStyle(ts))
return t
# ═══════════════════════════════════════════
story = []
# ── Title block ──
story.append(Paragraph("GUT HEALTH FOOD LIST", title_style))
story.append(Paragraph("Probiotics · Prebiotics · Fermented Foods · Dietary Fiber · Synbiotics · Postbiotics", subtitle_style))
story.append(Paragraph("Companion Reference for the Gut Health Chart Poster | BNYS Naturopathy Practice | July 2026", tagline_style))
story.append(HRFlowable(width="100%", thickness=2, color=C_NAVY, spaceAfter=10))
# ── Quick Overview ──
story.append(Paragraph("QUICK OVERVIEW", sub_style))
ov_headers = ["Term", "Definition", "Main Source", "Key Benefit"]
ov_rows = [
("Probiotics", "Live beneficial microorganisms", "Yoghurt, Kefir, Kimchi", "Restore gut flora, immunity, digestion"),
("Prebiotics", "Non-digestible fiber that feeds good bacteria", "Garlic, Onion, Oats, Banana", "Microbiome balance, cholesterol, bowel"),
("Synbiotics", "Probiotic + Prebiotic combined", "Yoghurt + Inulin supplement", "Enhanced probiotic survival & effect"),
("Postbiotics", "Beneficial metabolites produced by gut bacteria", "SCFAs from fiber fermentation", "Gut barrier repair, anti-inflammatory"),
("Fermented Foods", "Foods processed by beneficial microorganisms", "Miso, Sauerkraut, Idli", "Natural live cultures + bioactive compounds"),
("Dietary Fiber","Indigestible plant carbohydrates", "Whole grains, Legumes, Fruits", "Feeds bacteria, bowel health, satiety"),
]
story.append(make_table(ov_headers, ov_rows,
[38*mm, 55*mm, 48*mm, 52*mm], C_NAVY, C_LB))
story.append(Spacer(1, 10))
# ═══════════════════════════════════════════
# SECTION 1 — PROBIOTICS
# ═══════════════════════════════════════════
story.append(section_header("1. PROBIOTICS — Live Beneficial Bacteria", C_BLUE))
story.append(Spacer(1,4))
story.append(Paragraph(
"Probiotics are live microorganisms that, when consumed in adequate amounts (≥10⁹ CFU/day), "
"confer a health benefit. They colonise the gut temporarily, compete with pathogens, modulate "
"immunity, and produce short-chain fatty acids (SCFAs).", italic_style))
story.append(Paragraph("1.1 Key Probiotic Strains", sub_style))
p_headers = ["Strain", "Natural Food Source", "Health Benefit", "Clinical Use"]
p_rows = [
("Lactobacillus acidophilus (NCFM)", "Yoghurt, kefir, supplements", "Lactose digestion, IBS, vaginal flora", "IBS, lactose intolerance, vaginitis"),
("Lactobacillus rhamnosus GG (LGG)", "Fermented dairy, supplements", "AAD prevention, gut barrier, immunity", "Antibiotic-associated diarrhoea, eczema"),
("Lactobacillus reuteri DSM 17938", "Breast milk, fermented foods", "Infant colic, H. pylori suppression", "Infant colic, H. pylori, oral health"),
("Lactobacillus casei Shirota", "Yakult, fermented milk", "Immune regulation, bowel regularity", "Constipation, immunity, IBD"),
("Lactobacillus plantarum 299v", "Sauerkraut, kimchi", "IBS (bloating, pain), gut integrity", "IBS, traveller's diarrhoea"),
("Bifidobacterium longum BB536", "Dairy, supplements", "Allergy, constipation, immunity", "Constipation, allergic rhinitis"),
("Bifidobacterium lactis Bb-12", "Yoghurt, infant formula", "Stool consistency, infant gut", "Infant diarrhoea, immunity"),
("Saccharomyces boulardii", "Supplement (probiotic yeast)", "AAD, C. difficile, traveller's D.", "C. difficile colitis, acute diarrhoea"),
("Streptococcus thermophilus", "Yoghurt (primary fermenter)", "Lactose digestion, gut pH", "Lactose intolerance, yoghurt ferments"),
("Lactobacillus helveticus R0052", "Hard cheeses (Emmental)", "Gut-brain axis, anxiety, sleep", "Anxiety, stress, sleep disorders"),
]
story.append(make_table(p_headers, p_rows,
[44*mm, 40*mm, 52*mm, 50*mm], C_BLUE, C_LB))
story.append(Spacer(1,8))
story.append(Paragraph("1.2 Probiotic Food Sources (India-Focused)", sub_style))
pf_headers = ["Food", "Tradition", "Organisms", "Notes"]
pf_rows = [
("Dahi (Yoghurt)", "Universal/India", "L. acidophilus, S. thermophilus, L. bulgaricus", "Fresh, homemade; avoid flavoured/sweetened"),
("Kefir", "Caucasus", "30+ Lactobacillus strains + yeasts", "Most diverse probiotic; kefiran polysaccharide"),
("Lassi / Buttermilk", "India", "Lactobacillus spp.", "Cooling; Ayurvedically ideal after meals"),
("Idli / Dosa batter", "South India", "L. mesenteroides, L. fermentum", "Natural LAB fermentation; also prebiotic"),
("Kanji", "North India", "Lactobacillus spp.", "Purple/black carrot drink; anti-oxidant"),
("Dhokla / Khaman", "Gujarat", "L. fermentum, L. brevis", "Fermented besan; light and protein-rich"),
("Kimchi", "Korea", "L. kimchii, L. plantarum", "Anti-obesity, anti-inflammatory"),
("Sauerkraut", "Germany", "L. plantarum, L. mesenteroides", "Unpasteurised only; rich in Vit C"),
("Miso", "Japan", "Aspergillus oryzae + LAB", "Fermented soybean; antioxidant, umami"),
("Tempeh", "Indonesia", "Rhizopus oligosporus + bacteria", "High protein; Vit B12 (vegan source)"),
("Natto", "Japan", "Bacillus subtilis natto", "Highest Vit K2; cardioprotective"),
("Kombucha", "China/Russia", "SCOBY (acetic acid bacteria + yeasts)", "B vitamins, organic acids, antioxidant"),
]
story.append(make_table(pf_headers, pf_rows,
[34*mm, 28*mm, 54*mm, 70*mm], C_BLUE, C_LB))
story.append(Spacer(1,8))
story.append(Paragraph("1.3 Probiotics by Clinical Indication", sub_style))
pi_headers = ["Condition", "Recommended Strains", "Dose & Duration"]
pi_rows = [
("Antibiotic-Associated Diarrhoea", "L. rhamnosus GG, S. boulardii", "10⁹–10¹⁰ CFU/day; start Day 1 of antibiotics"),
("IBS", "L. plantarum 299v, B. infantis 35624, VSL#3","10⁹–10¹⁰ CFU/day for 4–8 weeks"),
("Acute Infectious Diarrhoea", "L. rhamnosus GG, S. boulardii", "10¹⁰ CFU/day for 5–7 days"),
("H. pylori (adjunct)", "L. reuteri, L. acidophilus, S. boulardii", "During + 2 weeks after triple therapy"),
("Constipation", "B. longum, B. lactis Bb-12, L. reuteri", "10⁹ CFU/day for min. 4 weeks"),
("IBD / Ulcerative Colitis", "VSL#3, E. coli Nissle 1917", "High dose; specialist supervision"),
("Vaginal Dysbiosis / BV", "L. acidophilus, L. reuteri RC-14", "10⁸–10⁹ CFU/day oral or vaginal"),
("Atopic Dermatitis / Eczema", "L. rhamnosus GG, B. breve", "10⁹ CFU/day prenatal + postnatal"),
("Infant Colic", "L. reuteri DSM 17938", "10⁸ CFU/day; 30 min before feed"),
("Traveller's Diarrhoea (prevent)", "S. boulardii, L. acidophilus", "Start 2 days before travel"),
]
story.append(make_table(pi_headers, pi_rows,
[52*mm, 68*mm, 66*mm], C_BLUE, C_LB))
story.append(PageBreak())
# ═══════════════════════════════════════════
# SECTION 2 — PREBIOTICS
# ═══════════════════════════════════════════
story.append(section_header("2. PREBIOTICS — Food for Your Good Bacteria", C_GREEN))
story.append(Spacer(1,4))
story.append(Paragraph(
"Prebiotics are non-digestible dietary components that selectively stimulate growth and activity "
"of beneficial gut bacteria (Lactobacillus, Bifidobacterium). They are fermented in the colon "
"to produce SCFAs — butyrate, acetate, and propionate.", italic_style))
story.append(Paragraph("2.1 Types of Prebiotics", sub_style))
pre_headers = ["Type", "Best Food Sources", "Bacteria Fed", "Daily Target", "Key Benefit"]
pre_rows = [
("Inulin", "Chicory root, garlic, onion, asparagus, Jerusalem artichoke", "Bifidobacterium, Lactobacillus", "5–10 g", "Bowel regularity, Ca absorption, lipids"),
("FOS (Fructo-oligosaccharides)", "Onion, garlic, banana, wheat, honey, tomato", "Bifidobacterium spp.", "3–8 g", "Gut flora balance, constipation"),
("GOS (Galacto-oligosaccharides)","Human milk; legumes; commercial infant formula", "Bifidobacterium, Lactobacillus", "2–10 g", "Infant gut, immune tolerance, allergy"),
("Resistant Starch", "Green banana, cooked-cooled potato/rice, legumes, raw oats", "Butyrate-producing bacteria (Roseburia)", "15–20 g", "Colon cancer prevention, insulin sensitivity"),
("Pectin", "Apple (with skin), citrus peel, guava, plum, carrot, beet", "Lactobacillus, Bifidobacterium", "6–12 g", "Cholesterol, gut barrier support"),
("Beta-glucan", "Oats, barley, shiitake/reishi mushrooms", "Lactobacillus, Bifidobacterium", "3–5 g", "Cholesterol, immune stimulation, glucose"),
("Arabinoxylan (AXOS)","Wheat bran, oat bran, psyllium husk", "Bifidobacterium spp.", "3–10 g", "Antioxidant, colon health, lipids"),
("Polyphenols", "Berries, pomegranate, green tea, cocoa (>70%), turmeric", "Akkermansia, Bifidobacterium", "Dietary", "Anti-inflammatory, gut barrier"),
]
story.append(make_table(pre_headers, pre_rows,
[32*mm, 52*mm, 42*mm, 18*mm, 42*mm], C_GREEN, C_LG))
story.append(Spacer(1,8))
story.append(Paragraph("2.2 Top Prebiotic Foods Quick Reference", sub_style))
prf_headers = ["Food", "Prebiotic Content", "Best Way to Use", "Key Note"]
prf_rows = [
("Chicory Root", "Inulin 41% (dry weight)", "Chicory tea; coffee substitute", "Single highest inulin source"),
("Garlic (raw)", "Inulin 9–16 g / 100 g + FOS", "Raw in salads, dressing, chutneys", "Cooking reduces prebiotic content"),
("Onion (raw)", "FOS 2–6 g / 100 g + inulin", "Raw in salads; lightly sauteed", "Red onion adds extra polyphenols"),
("Jerusalem Artichoke", "Inulin 14–19 g / 100 g", "Cooked, roasted, raw", "Introduce slowly — may cause gas"),
("Banana (green/unripe)", "Resistant starch 4–19 g / 100 g", "Smoothie; raw (green stage)", "RS drops as banana ripens"),
("Oats (raw / rolled)", "Beta-glucan 4–8 g / 100 g + RS", "Overnight oats; light cooking", "Raw oats retain more RS than cooked"),
("Apple (with skin)", "Pectin ~1–1.5 g / apple", "Raw with skin; avoid juicing", "Skin = most pectin; eat whole"),
("Flaxseed (ground)", "Mucilaginous fiber + polyphenols", "Ground in yoghurt, smoothie, roti", "Must be ground; whole passes undigested"),
("Dark Chocolate (>70%)", "Cocoa polyphenols (flavanols)", "20–30 g/day", "Feeds Lactobacillus & Bifidobacterium"),
("Asparagus", "Inulin 2–3 g / 100 g", "Steamed, roasted, raw", "Also rich in folate"),
("Chickpeas (boiled)", "RS + FOS", "Hummus, salad, curry", "Cook-cool cycle increases RS"),
("Barley", "Beta-glucan 3–8 g / 100 g", "Khichdi, soup, porridge", "Best grain for cholesterol & Kapha"),
]
story.append(make_table(prf_headers, prf_rows,
[36*mm, 42*mm, 46*mm, 60*mm], C_GREEN, C_LG))
story.append(PageBreak())
# ═══════════════════════════════════════════
# SECTION 3 — FERMENTED FOODS
# ═══════════════════════════════════════════
story.append(section_header("3. FERMENTED FOODS — Ancient Probiotic Tradition", C_PURPLE))
story.append(Spacer(1,4))
story.append(Paragraph(
"Fermented foods are produced through controlled microbial activity on food substrates. "
"They naturally contain live cultures, B vitamins, organic acids, and bioactive metabolites. "
"Always choose unpasteurised/raw-fermented varieties to get live bacteria.", italic_style))
ff_headers = ["Food", "Country", "Base Ingredient", "Key Organisms", "Health Benefit"]
ff_rows = [
("Yoghurt / Dahi", "Universal / India", "Milk", "L. bulgaricus, S. thermophilus, L. acidophilus", "Digestion, immunity, skin, bones"),
("Kefir", "Caucasus", "Milk or water", "30+ strains: LAB + yeasts", "Strongest probiotic drink; anti-tumour"),
("Kimchi", "Korea", "Cabbage + chilli", "L. kimchii, L. plantarum, L. brevis", "Anti-obesity, anti-inflammatory, gut flora"),
("Sauerkraut", "Germany / E. Europe", "Cabbage + salt", "L. plantarum, L. mesenteroides", "Immunity, Vit C, gut health"),
("Miso", "Japan", "Soybean + rice/barley", "Aspergillus oryzae + LAB", "Antioxidant, anti-cancer, microbiome"),
("Tempeh", "Indonesia", "Soybeans", "Rhizopus oligosporus", "High protein, Vit B12 (vegan), gut"),
("Natto", "Japan", "Soybeans", "Bacillus subtilis natto", "Highest Vit K2; cardioprotective, bone"),
("Kombucha", "China / Russia", "Tea + sugar (SCOBY)", "Acetic acid bacteria + yeasts", "Detox, antioxidant, B vitamins"),
("Kanji", "North India", "Black carrot + mustard","Lactobacillus spp.", "Traditional probiotic; anti-oxidant"),
("Idli / Dosa batter", "South India", "Rice + urad dal", "L. mesenteroides, L. fermentum", "Probiotic + prebiotic; easily digestible"),
("Dhokla / Khaman", "Gujarat, India", "Chickpea flour (besan)","L. fermentum, L. brevis", "Light, protein-rich fermented snack"),
("Lassi / Buttermilk", "India", "Yoghurt + water", "Lactobacillus spp.", "Cooling, digestive, Pitta-pacifying"),
("Water Kefir", "Mexico / Universal", "Water + sugar + fruit", "LAB + yeasts (Lactobacillus, Leuconostoc)", "Dairy-free probiotic; B vitamins"),
("Cheese (aged)", "Universal", "Milk", "Various LAB + moulds", "Ca, Vit K2, B12; less lactose when aged"),
("Brine pickles (raw)", "Universal", "Vegetables + salt", "L. plantarum, L. brevis", "Gut flora; NOT vinegar pickles"),
("Injera", "Ethiopia", "Teff flour", "LAB + wild yeasts", "Iron bioavailability, digestive"),
]
story.append(make_table(ff_headers, ff_rows,
[30*mm, 26*mm, 32*mm, 48*mm, 48*mm], C_PURPLE, C_LP))
story.append(PageBreak())
# ═══════════════════════════════════════════
# SECTION 4 — DIETARY FIBER
# ═══════════════════════════════════════════
story.append(section_header("4. DIETARY FIBER — Fuel for Your Microbiome", C_AMBER))
story.append(Spacer(1,4))
story.append(Paragraph(
"Dietary fiber consists of indigestible plant carbohydrates. Soluble fiber is fermented by gut "
"bacteria to produce SCFAs (especially butyrate — the primary fuel for colonocytes). Insoluble "
"fiber adds bulk and accelerates bowel transit. Recommended intake: 25–38 g/day.", italic_style))
story.append(Paragraph("4.1 Types of Dietary Fiber", sub_style))
ft_headers = ["Fiber Type", "Class", "Best Sources", "Key Functions", "Clinical Benefit"]
ft_rows = [
("Psyllium Husk", "Soluble / Mucilaginous", "Isabgol (Plantago ovata)", "Bulks + softens stool; binds bile acids", "IBS-C, IBS-D, constipation, hyperlipidaemia"),
("Beta-glucan", "Soluble / Viscous", "Oats, barley, mushrooms", "Viscous gel; slows glucose/fat absorption", "Cholesterol, T2DM, immunity"),
("Pectin", "Soluble / Fermentable", "Apple, citrus peel, guava","Gels in gut; slows gastric emptying", "Diarrhoea, cholesterol, gut barrier"),
("Inulin / FOS / GOS", "Soluble / Prebiotic", "Chicory, onion, garlic", "Fermented to SCFAs; feeds Bifidobacterium", "Microbiome, constipation, bone mineral density"),
("Resistant Starch", "Soluble / Fermentable", "Green banana, cooled rice","Fermented by colon bacteria → butyrate", "Colon cancer prevention, insulin sensitivity"),
("Cellulose", "Insoluble", "Whole grains, leafy greens","Bulk; accelerates intestinal transit", "Constipation, diverticulosis prevention"),
("Lignin", "Insoluble", "Flaxseed, sesame, bran", "Binds bile acids and carcinogens", "Constipation, anti-cancer, cholesterol"),
("Arabinoxylan (AXOS)", "Soluble / Prebiotic", "Wheat bran, rye, psyllium","Selectively feeds Bifidobacterium", "Cholesterol, colon health, antioxidant"),
("Guar Gum", "Soluble / Viscous", "Guar beans", "Slows gastric emptying", "Obesity, T2DM, IBS"),
]
story.append(make_table(ft_headers, ft_rows,
[32*mm, 28*mm, 38*mm, 48*mm, 48*mm], C_AMBER, C_LA))
story.append(Spacer(1,8))
story.append(Paragraph("4.2 High-Fiber Foods (per 100 g)", sub_style))
hf_headers = ["Food", "Fiber (g/100g)", "Dominant Type", "Best Use"]
hf_rows = [
("Psyllium husk (isabgol)", "71 g", "Soluble (mucilaginous)", "Mix in water; take with plenty of fluids"),
("Chia seeds", "34 g", "Soluble + Insoluble", "Soak overnight; smoothies, pudding"),
("Flaxseed (ground)", "27 g", "Soluble (lignin + mucilage)", "Ground in yoghurt, roti dough, smoothie"),
("Wheat bran", "42 g", "Insoluble (cellulose)", "Add to roti, porridge, cereal"),
("Almonds", "12.5 g","Insoluble", "10–12 soaked almonds daily"),
("Split lentils (masoor)", "15 g", "Soluble + Insoluble", "Daily dal; excellent plant protein too"),
("Black beans", "8.7 g", "Soluble + Insoluble", "Salads, curry, soup"),
("Chickpeas (boiled)", "7.6 g", "Soluble (RS + FOS)", "Hummus, salad, chana chaat"),
("Avocado", "6.7 g", "Soluble + Insoluble", "Salad, spread; healthy fats too"),
("Green banana (unripe)", "5–6 g", "Resistant starch", "Smoothies; RS drops as it ripens"),
("Oats (raw/rolled)", "10 g", "Soluble (beta-glucan)", "Overnight oats; cook lightly to retain RS"),
("Barley (cooked)", "3.8 g", "Soluble (beta-glucan)", "Khichdi, soup, porridge"),
("Quinoa (cooked)", "2.8 g", "Soluble + Insoluble", "Complete protein + fiber; gluten-free"),
("Apple (with skin)", "2.4 g", "Soluble (pectin)", "Eat raw with skin; don't peel"),
("Broccoli (raw)", "2.6 g", "Insoluble (cellulose)", "Steam lightly; raw in salad"),
]
story.append(make_table(hf_headers, hf_rows,
[45*mm, 26*mm, 42*mm, 70*mm], C_AMBER, C_LA))
story.append(PageBreak())
# ═══════════════════════════════════════════
# SECTION 5 — SYNBIOTICS + POSTBIOTICS
# ═══════════════════════════════════════════
story.append(section_header("5. SYNBIOTICS — Probiotic + Prebiotic Combinations", C_NAVY))
story.append(Spacer(1,4))
story.append(Paragraph(
"A synbiotic pairs a probiotic with a prebiotic that specifically supports it, enhancing "
"probiotic survival through the GI tract and amplifying gut health benefits.", italic_style))
sy_headers = ["Probiotic", "Paired Prebiotic", "Synergistic Benefit", "Clinical Use"]
sy_rows = [
("L. rhamnosus GG", "Inulin / FOS", "Improved GG survival; enhanced gut flora", "Antibiotic-associated diarrhoea, IBS"),
("Bifidobacterium lactis", "GOS", "Infant gut colonisation; immune tolerance", "Neonates, infant formula, allergies"),
("B. longum + L. acidophilus", "FOS + Inulin", "Synergistic Bifidobacterium growth; colon health", "IBD, constipation, colon cancer prevention"),
("L. casei Shirota", "Lactulose", "Enhanced bifidogenic effect; constipation relief", "Constipation, hepatic encephalopathy"),
("Multi-strain LAB blend", "Beta-glucan (oats)", "Boosted immunity; SCFA production", "Metabolic syndrome, T2DM, obesity"),
("L. plantarum + L. reuteri", "Pectin + Psyllium", "IBS symptom reduction; gut barrier support", "IBS-C and IBS-D, leaky gut syndrome"),
]
story.append(make_table(sy_headers, sy_rows,
[44*mm, 38*mm, 58*mm, 52*mm], C_NAVY, C_LB))
story.append(Spacer(1,10))
story.append(section_header("6. POSTBIOTICS — Beneficial Bacterial Metabolites", C_RED))
story.append(Spacer(1,4))
story.append(Paragraph(
"Postbiotics are inanimate microorganisms and/or their metabolic by-products that confer direct "
"health benefits. They do not require live bacteria — they act directly on host cells.", italic_style))
po_headers = ["Postbiotic", "Source", "Actions", "Clinical Application"]
po_rows = [
("SCFAs: Butyrate, Acetate, Propionate", "Fiber fermentation by colonic bacteria", "Colonocyte fuel; anti-inflammatory; tight junction repair; anti-cancer", "IBD, leaky gut, colon cancer prevention, insulin sensitivity"),
("Bacteriocins (nisin, reuterin)", "Lactobacillus, Lactococcus", "Antimicrobial peptides; inhibit C. difficile, Listeria, Staph", "Infection prevention, gut dysbiosis"),
("B-Vitamins (B2, B6, B9, B12, K2)", "Bifidobacterium, Lactobacillus, Bacillus", "Coenzyme functions; neurological health; blood formation", "Deficiency, vegans, neuropathy, bone health"),
("Tryptophan metabolites (Indoles)", "Gut bacteria + dietary tryptophan", "Gut barrier integrity; immune regulation; gut-brain axis", "Anxiety, depression, gut permeability"),
("Exopolysaccharides (EPS)", "LAB cell surface polysaccharides", "Immune modulation; anti-tumour; mucus layer support", "IBD, mucus barrier deficiency"),
("Heat-killed probiotics (Tyndallized)", "Inactivated L. acidophilus, B. longum", "Immune modulation without live organism risk", "Immunocompromised, infants, post-surgery"),
]
story.append(make_table(po_headers, po_rows,
[40*mm, 38*mm, 56*mm, 52*mm], C_RED, C_LR))
story.append(PageBreak())
# ═══════════════════════════════════════════
# SECTION 7 — PRACTICAL DAILY CHART
# ═══════════════════════════════════════════
story.append(section_header("7. DAILY GUT HEALTH FOOD GUIDE", C_NAVY))
story.append(Spacer(1,4))
story.append(Paragraph(
"Include at least one food from each category every day for a healthy, diverse gut microbiome.", italic_style))
dg_headers = ["Category", "Foods to Include", "Serving", "Why"]
dg_rows = [
("Probiotic (1+ serving)", "Dahi/yoghurt, kefir, buttermilk, kimchi, miso", "1 cup yoghurt or 1 glass lassi at noon", "Replenishes live beneficial bacteria"),
("Prebiotic (1+ serving)", "Garlic, onion, banana, oats, asparagus", "Raw onion in meals; oats at breakfast", "Feeds and sustains probiotic colonies"),
("Soluble Fiber", "Oats, apple (with skin), psyllium, legumes, barley", "½ cup oats; 1 apple; 1 tbsp isabgol in water", "Cholesterol, glucose, butyrate production"),
("Insoluble Fiber", "Whole grains, leafy greens, wheat bran, broccoli", "2 cups vegetables per meal; whole grain rotis", "Bowel motility, detox, satiety"),
("Polyphenol-rich", "Berries, pomegranate, dark choc (>70%), green tea, turmeric", "1 tsp turmeric in food; 1 cup green tea/day", "Feeds Akkermansia; anti-inflammatory"),
("Fermented grain/legume", "Idli, dosa, dhokla, sourdough whole grain bread", "2 idli / 1 dosa at any meal", "Natural LAB + prebiotic combination"),
("Omega-3 rich", "Ground flaxseed, walnuts, fatty fish, chia seeds", "1 tbsp ground flax in smoothie or roti dough", "Reduces gut inflammation; EPA/DHA"),
("Adequate water", "Warm water, coconut water, herbal teas", "8–10 glasses warm water between meals", "Fiber functions only with sufficient water"),
]
story.append(make_table(dg_headers, dg_rows,
[32*mm, 52*mm, 48*mm, 54*mm], C_NAVY, C_LB))
story.append(Spacer(1,10))
# ── Sample Meal Plan ──
story.append(Paragraph("Sample Day Gut Health Meal Plan", sub_style))
mp_headers = ["Time / Meal", "Food", "Gut Benefit"]
mp_rows = [
("Early Morning (6–7 AM)", "Warm water + 1 tsp psyllium husk (isabgol) + lemon", "Soluble fiber, hydration, bowel motility"),
("Breakfast (8 AM)", "Oat porridge + banana (green-ish) + ground flax + berries", "Prebiotics (beta-glucan, RS) + Omega-3 + polyphenols"),
("Mid-Morning (10:30 AM)", "1 glass lassi (yoghurt + cumin) OR kefir", "Live probiotics — Lactobacillus spp."),
("Lunch (1 PM)", "2 idli + sambar + sabzi with garlic/onion + green salad", "Fermented + Probiotics + Prebiotic (garlic, onion)"),
("Afternoon (4 PM)", "1 apple (with skin) + 1 square dark choc (>70%) + green tea", "Pectin (soluble fiber) + polyphenols"),
("Dinner (7 PM)", "Whole wheat chapati + cooked vegetables + miso soup or kimchi (small)", "Fiber + Fermented probiotics"),
("Before Bed (9:30 PM)", "Warm turmeric milk (haldi doodh) OR chamomile tea", "Anti-inflammatory; gut barrier support; sleep"),
]
story.append(make_table(mp_headers, mp_rows,
[40*mm, 80*mm, 65*mm], C_NAVY, C_LB))
story.append(Spacer(1,10))
# ── Foods to Avoid ──
story.append(section_header("8. FOODS & HABITS THAT HARM THE GUT MICROBIOME — MINIMISE OR AVOID", colors.HexColor("#922B21")))
story.append(Spacer(1,4))
av_headers = ["Harmful Item", "How It Damages the Gut", "Better Alternative"]
av_rows = [
("Ultra-processed foods (chips, instant noodles)", "Reduce microbiome diversity; emulsifiers (Polysorbate 80, CMC) disrupt mucus layer", "Whole foods, homemade snacks"),
("Refined sugar & high-fructose corn syrup", "Feeds Clostridium, Candida; reduces Bifidobacterium", "Jaggery, dates, raw honey (small amounts)"),
("Artificial sweeteners (aspartame, sucralose)", "Alter microbiome composition; reduce diversity", "Stevia, small amounts raw honey"),
("Unnecessary antibiotics", "Broad-spectrum killing of beneficial bacteria; dysbiosis, AAD, Candida", "Only when medically essential + follow with probiotics"),
("Excess alcohol", "Increases gut permeability (leaky gut); pathobionts increase", "Limit; fermented options (kefir, kombucha) are gut-friendly"),
("Fried foods / trans fats", "Pro-inflammatory; reduce microbiome diversity", "Cold-pressed oils, ghee, coconut oil in moderation"),
("Chronic stress + poor sleep", "Elevated cortisol reduces Lactobacillus/Bifidobacterium; slows gut motility", "Yoga, meditation, consistent sleep schedule"),
("Long-term NSAID use", "Damages gut lining; increases intestinal permeability", "Short-term only; gut-protective cover if needed"),
("Vinegar pickles (pasteurised)", "No live culture (heat-killed); excess sodium", "Brine-fermented (unpasteurised) pickles or kimchi"),
]
story.append(make_table(av_headers, av_rows,
[52*mm, 64*mm, 68*mm], colors.HexColor("#922B21"), C_LR))
story.append(Spacer(1,10))
# ── Footer ──
story.append(HRFlowable(width="100%", thickness=1, color=C_MGREY, spaceAfter=6))
story.append(Paragraph(
"References: WHO/FAO Probiotic Guidelines (2002, updated 2022) | ISAPP Consensus Statements on Probiotics, "
"Prebiotics, Synbiotics, Postbiotics (2020–2021) | For educational and clinical naturopathy practice use only. "
"Individual patient assessment by a qualified practitioner is recommended.",
note_style))
doc.build(story)
print(f"PDF saved: {out}")
cd /tmp/workspace/ayurvedic-diet-chart && python3 create_gut_pdf.py
ls -lh /tmp/workspace/ayurvedic-diet-chart/Gut_Health_Food_List.pdf
Gut Health Food List
PDF Document · PDF
| Section | Content |
|---|---|
| Quick Overview | Probiotics vs Prebiotics vs Synbiotics vs Postbiotics vs Fermented Foods vs Fiber — at a glance |
| 1. Probiotics | 10 strain chart + 12 food sources (Indian-focused: Dahi, Idli, Kanji, Lassi...) + Clinical indication table with dosage |
| 2. Prebiotics | 8 types with daily targets + 12 top prebiotic foods with content & usage tips |
| 3. Fermented Foods | 16 global fermented foods (Indian + international) with organisms & benefits |
| 4. Dietary Fiber | 9 fiber types (soluble vs insoluble) + 15 high-fiber foods with grams per 100 g |
| 5. Synbiotics | 6 key probiotic + prebiotic combinations with clinical use |
| 6. Postbiotics | SCFAs, Bacteriocins, B-vitamins, Tryptophan metabolites, EPS |
| 7. Daily Guide | 8 daily food categories with servings + 7-meal sample day plan |
| 8. Foods to Avoid | 9 gut-harmful foods/habits with mechanism + better alternatives |
Create a printable meal planning template for weekly gut health menus
~/ayurvedic-diet-chart/create_meal_plan_template.py
from reportlab.lib.pagesizes import A4, landscape
from reportlab.lib import colors
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.units import mm
from reportlab.platypus import (SimpleDocTemplate, Paragraph, Spacer, Table,
TableStyle, HRFlowable, PageBreak, KeepTogether)
from reportlab.lib.enums import TA_CENTER, TA_LEFT
W, H = landscape(A4)
out = "/tmp/workspace/ayurvedic-diet-chart/Weekly_Gut_Health_Meal_Planner.pdf"
doc = SimpleDocTemplate(
out, pagesize=landscape(A4),
leftMargin=12*mm, rightMargin=12*mm,
topMargin=12*mm, bottomMargin=12*mm,
title="Weekly Gut Health Meal Planner",
author="BNYS Naturopathy Practice"
)
# ── Colours ──
C_NAVY = colors.HexColor("#1B4F72")
C_BLUE = colors.HexColor("#1A5276")
C_GREEN = colors.HexColor("#1E8449")
C_PURPLE = colors.HexColor("#7D3C98")
C_AMBER = colors.HexColor("#B7770D")
C_RED = colors.HexColor("#C0392B")
C_TEAL = colors.HexColor("#117A65")
C_GREY = colors.HexColor("#717D7E")
C_LB = colors.HexColor("#D6EAF8")
C_LG = colors.HexColor("#D5F5E3")
C_LP = colors.HexColor("#E8DAEF")
C_LA = colors.HexColor("#FDEBD0")
C_LR = colors.HexColor("#FADBD8")
C_LT = colors.HexColor("#D1F2EB")
C_LGREY = colors.HexColor("#F2F3F4")
C_MGREY = colors.HexColor("#BDC3C7")
C_WHITE = colors.white
# Meal colours (one per meal slot)
MEAL_COLORS = {
"Early Morning": colors.HexColor("#D6EAF8"),
"Breakfast": colors.HexColor("#D5F5E3"),
"Mid-Morning": colors.HexColor("#FDEBD0"),
"Lunch": colors.HexColor("#E8DAEF"),
"Evening Snack": colors.HexColor("#FDEBD0"),
"Dinner": colors.HexColor("#D1F2EB"),
"Bedtime": colors.HexColor("#F2F3F4"),
}
MEAL_HDR_COLORS = {
"Early Morning": colors.HexColor("#2E86C1"),
"Breakfast": colors.HexColor("#1E8449"),
"Mid-Morning": colors.HexColor("#B7770D"),
"Lunch": colors.HexColor("#7D3C98"),
"Evening Snack": colors.HexColor("#D35400"),
"Dinner": colors.HexColor("#117A65"),
"Bedtime": colors.HexColor("#717D7E"),
}
styles = getSampleStyleSheet()
def mks(name, **kw):
return ParagraphStyle(name, parent=styles["Normal"], **kw)
title_s = mks("T", fontSize=17, textColor=C_NAVY, fontName="Helvetica-Bold", alignment=TA_CENTER, spaceAfter=2)
sub_s = mks("S", fontSize=9, textColor=C_BLUE, fontName="Helvetica-Bold", alignment=TA_CENTER, spaceAfter=2)
tag_s = mks("Ta", fontSize=7.5,textColor=C_GREY, fontName="Helvetica-Oblique", alignment=TA_CENTER, spaceAfter=6)
day_s = mks("D", fontSize=9, textColor=C_WHITE, fontName="Helvetica-Bold", alignment=TA_CENTER)
meal_s = mks("M", fontSize=7.5,textColor=C_WHITE, fontName="Helvetica-Bold", alignment=TA_CENTER)
cell_s = mks("C", fontSize=7.5,textColor=colors.HexColor("#1a1a1a"), fontName="Helvetica", leading=10)
hint_s = mks("H", fontSize=7, textColor=colors.HexColor("#888888"), fontName="Helvetica-Oblique", leading=9)
legend_s = mks("L", fontSize=7.5,textColor=colors.HexColor("#333333"), fontName="Helvetica", leading=10)
bold_s = mks("B", fontSize=7.5,textColor=colors.HexColor("#1a1a1a"), fontName="Helvetica-Bold", leading=10)
note_s = mks("N", fontSize=7.5,textColor=colors.HexColor("#555555"), fontName="Helvetica-Oblique", leading=10)
DAYS = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]
MEALS = ["Early Morning", "Breakfast", "Mid-Morning", "Lunch", "Evening Snack", "Dinner", "Bedtime"]
TIMES = ["6–7 AM", "8–9 AM", "10:30 AM", "12:30–1:30 PM", "4–5 PM", "7–8 PM", "9:30 PM"]
# Sample menu for Week 1
SAMPLE = {
"Early Morning": [
"Warm water\n+ psyllium husk\n+ lemon",
"Ginger-lemon\nwarm water\n+ soaked raisins",
"Warm water\n+ turmeric\n+ black pepper",
"Coconut water\n+ chia seeds\n(soaked)",
"Warm water\n+ amla juice\n(1 tbsp)",
"Warm water\n+ isabgol\n+ honey",
"Ginger-tulsi tea\n+ soaked almonds\n(5 nos)",
],
"Breakfast": [
"Oat porridge\n+ banana + flax\n+ berries",
"2 Idli\n+ sambar\n+ coconut chutney",
"Dalia (broken wheat)\n+ vegetables\n+ curd",
"Moong dal cheela\n+ mint chutney",
"Poha (beaten rice)\n+ onion + mustard\n+ lemon",
"Ragi porridge\n+ dates + banana",
"Whole wheat upma\n+ vegetables\n+ peanuts",
],
"Mid-Morning": [
"1 apple (with skin)\n+ green tea",
"Pomegranate juice\n(fresh)",
"Kefir (1 glass)\nor buttermilk",
"Mixed fruit bowl\n(papaya, guava,\npear)",
"Coconut water\n+ 1 banana",
"Fennel seed tea\n+ soaked figs (2)",
"Lassi\n(plain, unsweetened)\n+ cumin",
],
"Lunch": [
"Brown rice\n+ moong dal\n+ sabzi + raita",
"Barley khichdi\n+ stir-fry greens\n+ buttermilk",
"Whole wheat roti (2)\n+ chana dal\n+ cucumber salad",
"Millet (bajra) roti\n+ palak sabzi\n+ dahi",
"Brown rice\n+ rajma\n+ cooked beets",
"Jowar roti\n+ methi sabzi\n+ moong sprouts salad",
"Quinoa pulao\n+ dal tadka\n+ green salad",
],
"Evening Snack": [
"Dark chocolate\n(1 sq, >70%)\n+ green tea",
"Roasted makhana\n(fox nuts)\n+ ginger tea",
"Sprouts chaat\n(moong + lemon\n+ chilli)",
"Fruit + nut mix\n(apple + walnuts\n+ raisins)",
"Dhokla (2 pcs)\n+ green chutney",
"Carrot & hummus\n(homemade)",
"Oat biscuits\n(homemade)\n+ herbal tea",
],
"Dinner": [
"Wheat roti (2)\n+ mixed veg curry\n+ miso soup",
"Moong dal soup\n+ sauteed greens\n+ whole grain roti",
"Vegetable khichdi\n(rice + dal)\n+ kimchi (small)",
"Roti + paneer curry\n(light)\n+ sauerkraut side",
"Soup (tomato-\nspinach-ginger)\n+ 1 roti",
"Oat / barley\ncongee\n+ stir-fry veg",
"Light dal rice\n+ yoghurt\n+ cucumber",
],
"Bedtime": [
"Haldi doodh\n(turmeric milk)",
"Warm water\n+ honey + ginger",
"Chamomile tea\n(plain)",
"Warm milk\n+ cardamom\n+ saffron",
"Ashwagandha milk\n(warm)",
"Fennel-licorice\ntea",
"Haldi doodh\n(turmeric milk)",
],
}
# ── GUT HEALTH TRACKER ICONS (text-based) ──
TRACKER_LABELS = ["✓ Probiotic", "✓ Prebiotic", "✓ Fermented", "✓ 2L Water", "✓ Fiber 25g+", "✓ Exercise"]
story = []
# ══════════════════════════════════════════════════════
# PAGE 1 — FILLED SAMPLE WEEK (WEEK 1)
# ══════════════════════════════════════════════════════
story.append(Paragraph("WEEKLY GUT HEALTH MEAL PLANNER", title_s))
story.append(Paragraph("Probiotics · Prebiotics · Fermented Foods · Dietary Fiber", sub_s))
story.append(Paragraph(
"Week: ____________ Name / Patient: ________________________ "
"Practitioner: ________________________ Date: ____________",
tag_s))
# Build the main planner table
# Columns: Meal label | Mon | Tue | Wed | Thu | Fri | Sat | Sun
# Available width
TW = W - 24*mm
meal_col = 22*mm
day_col = (TW - meal_col) / 7 # ~37mm each
col_widths = [meal_col] + [day_col]*7
# Header row: empty + days
def make_day_hdr(day, color=C_NAVY):
return Paragraph(f"<b>{day}</b>", day_s)
header_row = [Paragraph("")] + [make_day_hdr(d) for d in DAYS]
# Build data rows (one per meal)
table_data = [header_row]
table_style_cmds = [
# Header row
("BACKGROUND", (0,0), (-1,0), C_NAVY),
("TOPPADDING", (0,0), (-1,-1), 3),
("BOTTOMPADDING", (0,0), (-1,-1), 3),
("LEFTPADDING", (0,0), (-1,-1), 3),
("RIGHTPADDING", (0,0), (-1,-1), 3),
("VALIGN", (0,0), (-1,-1), "TOP"),
("GRID", (0,0), (-1,-1), 0.4, C_MGREY),
("ALIGN", (0,0), (0,-1), "CENTER"),
]
for r_idx, (meal, time) in enumerate(zip(MEALS, TIMES), 1):
meal_bg = MEAL_HDR_COLORS[meal]
cell_bg = MEAL_COLORS[meal]
meal_cell = Table(
[[Paragraph(f"<b>{meal}</b>", meal_s)],
[Paragraph(time, mks("t2", fontSize=6.5, textColor=colors.HexColor("#EEEEEE"),
fontName="Helvetica-Oblique", alignment=TA_CENTER))]],
colWidths=[meal_col]
)
meal_cell.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), meal_bg),
("TOPPADDING", (0,0), (-1,-1), 4),
("BOTTOMPADDING", (0,0), (-1,-1), 4),
("LEFTPADDING", (0,0), (-1,-1), 3),
("RIGHTPADDING", (0,0), (-1,-1), 3),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
]))
row = [meal_cell]
for d_idx, day in enumerate(DAYS):
sample_text = SAMPLE[meal][d_idx]
row.append(Paragraph(sample_text, cell_s))
table_data.append(row)
table_style_cmds.append(("BACKGROUND", (1, r_idx), (-1, r_idx), cell_bg))
table_style_cmds.append(("BACKGROUND", (0, r_idx), (0, r_idx), meal_bg))
main_table = Table(table_data, colWidths=col_widths, repeatRows=1)
main_table.setStyle(TableStyle(table_style_cmds))
story.append(main_table)
story.append(Spacer(1, 4))
# Daily tracker strip
tracker_data = [
[Paragraph("<b>Daily Gut Health Tracker</b>", bold_s)] +
[Paragraph(" · ".join(TRACKER_LABELS), legend_s)] * 1
]
# One row per day
tracker_col = [30*mm, TW - 30*mm]
tracker_rows = [[Paragraph("<b>Daily Gut Health Tracker →</b>", bold_s),
Paragraph(" ".join([f"[ ] {lbl}" for lbl in TRACKER_LABELS]) +
" " * 3, legend_s)]]
tr = Table(tracker_rows, colWidths=tracker_col)
tr.setStyle(TableStyle([
("BACKGROUND", (0,0), (0,0), C_TEAL),
("BACKGROUND", (1,0), (1,0), C_LT),
("TOPPADDING", (0,0), (-1,-1), 4),
("BOTTOMPADDING", (0,0), (-1,-1), 4),
("LEFTPADDING", (0,0), (-1,-1), 6),
("GRID", (0,0), (-1,-1), 0.4, C_MGREY),
("TEXTCOLOR", (0,0), (0,0), C_WHITE),
]))
story.append(tr)
story.append(PageBreak())
# ══════════════════════════════════════════════════════
# PAGE 2 — BLANK TEMPLATE (fill-in-yourself)
# ══════════════════════════════════════════════════════
story.append(Paragraph("WEEKLY GUT HEALTH MEAL PLANNER — MY PLAN", title_s))
story.append(Paragraph("Fill in your personalised meals for the week", sub_s))
story.append(Paragraph(
"Week: ____________ Name / Patient: ________________________ "
"Practitioner: ________________________ Date: ____________",
tag_s))
blank_data = [header_row]
blank_style_cmds = [
("BACKGROUND", (0,0), (-1,0), C_NAVY),
("TOPPADDING", (0,0), (-1,-1), 3),
("BOTTOMPADDING", (0,0), (-1,-1), 3),
("LEFTPADDING", (0,0), (-1,-1), 3),
("RIGHTPADDING", (0,0), (-1,-1), 3),
("VALIGN", (0,0), (-1,-1), "TOP"),
("GRID", (0,0), (-1,-1), 0.4, C_MGREY),
]
for r_idx, (meal, time) in enumerate(zip(MEALS, TIMES), 1):
meal_bg = MEAL_HDR_COLORS[meal]
cell_bg = MEAL_COLORS[meal]
meal_cell = Table(
[[Paragraph(f"<b>{meal}</b>", meal_s)],
[Paragraph(time, mks("t3", fontSize=6.5, textColor=colors.HexColor("#EEEEEE"),
fontName="Helvetica-Oblique", alignment=TA_CENTER))]],
colWidths=[meal_col]
)
meal_cell.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), meal_bg),
("TOPPADDING", (0,0), (-1,-1), 4),
("BOTTOMPADDING", (0,0), (-1,-1), 4),
("LEFTPADDING", (0,0), (-1,-1), 3),
("RIGHTPADDING", (0,0), (-1,-1), 3),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
]))
row = [meal_cell]
for _ in DAYS:
# blank writable cell with faint hint text
row.append(Paragraph("", hint_s))
blank_data.append(row)
blank_style_cmds.append(("BACKGROUND", (1, r_idx), (-1, r_idx), cell_bg))
blank_style_cmds.append(("BACKGROUND", (0, r_idx), (0, r_idx), meal_bg))
blank_style_cmds.append(("ROWHEIGHT", (0, r_idx), (-1, r_idx), 28*mm if meal == "Lunch" else 22*mm))
blank_table = Table(blank_data, colWidths=col_widths, repeatRows=1)
blank_table.setStyle(TableStyle(blank_style_cmds))
story.append(blank_table)
story.append(Spacer(1, 4))
# Tracker strip blank
blank_tracker_row = [
[Paragraph("<b>Daily Gut Health Tracker →</b>", bold_s),
Paragraph(" ".join([f"[ ] {lbl}" for lbl in TRACKER_LABELS]) +
" " * 3, legend_s)]
]
btr = Table(blank_tracker_row, colWidths=tracker_col)
btr.setStyle(TableStyle([
("BACKGROUND", (0,0), (0,0), C_TEAL),
("BACKGROUND", (1,0), (1,0), C_LT),
("TOPPADDING", (0,0), (-1,-1), 4),
("BOTTOMPADDING", (0,0), (-1,-1), 4),
("LEFTPADDING", (0,0), (-1,-1), 6),
("GRID", (0,0), (-1,-1), 0.4, C_MGREY),
("TEXTCOLOR", (0,0), (0,0), C_WHITE),
]))
story.append(btr)
story.append(PageBreak())
# ══════════════════════════════════════════════════════
# PAGE 3 — REFERENCE CARD
# ══════════════════════════════════════════════════════
story.append(Paragraph("GUT HEALTH QUICK REFERENCE CARD", title_s))
story.append(Paragraph("Use this guide while filling your weekly meal planner", sub_s))
story.append(Spacer(1, 5))
# Two-column layout using a table
ref_col = (TW - 6*mm) / 2
# LEFT column content
left_items = [
("PROBIOTICS — Include Daily", C_BLUE, C_LB, [
("Best Foods", "Fresh dahi/yoghurt, kefir, lassi, buttermilk, kimchi (small), miso soup, idli/dosa"),
("Key Strains", "L. acidophilus · L. rhamnosus GG · B. longum · S. boulardii"),
("Daily Goal", "At least 1 serving of a probiotic food per day"),
("When to Eat", "Yoghurt/lassi ideally at lunch; kefir in the morning"),
]),
("PREBIOTICS — Include Daily", C_GREEN, C_LG, [
("Best Foods", "Raw garlic & onion in meals, banana (slightly unripe), oats, asparagus, flaxseed (ground)"),
("Key Fibers", "Inulin · FOS · Beta-glucan · Resistant Starch · Pectin"),
("Daily Goal", "5–10 g prebiotic fiber from whole foods"),
("Tip", "Garlic and onion in every cooked meal = easy daily prebiotic"),
]),
("FERMENTED FOODS — 3–5×/week", C_PURPLE, C_LP, [
("Indian Options", "Idli · Dosa · Dhokla · Kanji · Lassi · Kadhi"),
("Global Options", "Kimchi · Sauerkraut · Miso · Tempeh · Kombucha · Kefir"),
("Important", "Choose UNPASTEURISED / freshly fermented for live cultures"),
("Avoid", "Pasteurised / heat-treated versions — no live bacteria remain"),
]),
]
right_items = [
("DIETARY FIBER — Every Meal", C_AMBER, C_LA, [
("Daily Target", "Women: 25 g/day · Men: 38 g/day"),
("Soluble Sources", "Oats, apple (with skin), psyllium husk, legumes, barley, chia"),
("Insoluble Sources", "Whole wheat roti, leafy greens, broccoli, cucumber, wheat bran"),
("Quick Boost", "1 tsp psyllium husk in warm water morning = +4 g fiber instantly"),
]),
("FOODS TO AVOID", C_RED, C_LR, [
("Microbiome Killers", "Ultra-processed snacks, refined sugar, artificial sweeteners"),
("Gut Permeability", "Excess alcohol, long-term NSAIDs, fried trans-fat foods"),
("No Live Culture", "Pasteurised vinegar pickles, flavoured/sweetened yoghurt"),
("Lifestyle", "Stress, poor sleep, overuse of antibiotics — equally harmful"),
]),
("HYDRATION & TIMING", C_TEAL, C_LT, [
("Water Goal", "8–10 glasses warm water per day — fiber needs water to work"),
("Meal Timing", "Largest meal at noon; light dinner before 7:30 PM"),
("Avoid", "Cold water with meals; drinking large amounts during eating"),
("Best Drinks", "Warm water · Herbal teas · Coconut water · Kanji · Kombucha"),
]),
]
def make_ref_block(title, hdr_color, bg_color, rows):
block_data = [[Paragraph(f"<b>{title}</b>",
mks("rh", fontSize=8.5, textColor=C_WHITE,
fontName="Helvetica-Bold", alignment=TA_LEFT))]]
for label, value in rows:
block_data.append([
Table([[Paragraph(f"<b>{label}:</b>", bold_s), Paragraph(value, cell_s)]],
colWidths=[22*mm, ref_col - 22*mm - 6*mm])
])
t = Table(block_data, colWidths=[ref_col - 3*mm])
cmds = [
("BACKGROUND", (0,0), (-1,0), hdr_color),
("BACKGROUND", (0,1), (-1,-1), bg_color),
("TOPPADDING", (0,0), (-1,-1), 4),
("BOTTOMPADDING", (0,0), (-1,-1), 4),
("LEFTPADDING", (0,0), (-1,-1), 6),
("RIGHTPADDING", (0,0), (-1,-1), 4),
("GRID", (0,0), (-1,-1), 0.3, C_MGREY),
("VALIGN", (0,0), (-1,-1), "TOP"),
("BOTTOMPADDING", (0,-1), (-1,-1), 6),
]
t.setStyle(TableStyle(cmds))
return t
left_blocks = [make_ref_block(*item) for item in left_items]
right_blocks = [make_ref_block(*item) for item in right_items]
# Assemble left/right as a 2-column table
ref_rows = []
max_rows = max(len(left_blocks), len(right_blocks))
for i in range(max_rows):
l = left_blocks[i] if i < len(left_blocks) else Paragraph("")
r = right_blocks[i] if i < len(right_blocks) else Paragraph("")
ref_rows.append([l, Spacer(6*mm, 1), r])
ref_grid = Table(ref_rows, colWidths=[ref_col, 6*mm, ref_col])
ref_grid.setStyle(TableStyle([
("VALIGN", (0,0), (-1,-1), "TOP"),
("TOPPADDING", (0,0), (-1,-1), 4),
("BOTTOMPADDING", (0,0), (-1,-1), 4),
("LEFTPADDING", (0,0), (-1,-1), 0),
("RIGHTPADDING", (0,0), (-1,-1), 0),
]))
story.append(ref_grid)
story.append(Spacer(1, 6))
# Sample day strip at bottom
story.append(HRFlowable(width="100%", thickness=1, color=C_MGREY, spaceAfter=4))
story.append(Paragraph("<b>Sample Gut Health Day at a Glance</b>", bold_s))
story.append(Spacer(1, 3))
sample_strip_data = [[
Paragraph("<b>6–7 AM</b>\nWarm water\n+ isabgol\n+ lemon", cell_s),
Paragraph("<b>8–9 AM</b>\nOat porridge\n+ banana\n+ flax", cell_s),
Paragraph("<b>10:30 AM</b>\nFresh lassi\nor kefir", cell_s),
Paragraph("<b>1 PM</b>\nBrown rice\n+ moong dal\n+ sabzi + raita", cell_s),
Paragraph("<b>4 PM</b>\nApple + dark\nchocolate\n+ green tea", cell_s),
Paragraph("<b>7 PM</b>\nRoti + sabzi\n+ miso soup\nor kimchi", cell_s),
Paragraph("<b>9:30 PM</b>\nHaldi doodh\nor chamomile\ntea", cell_s),
]]
ss_colors = [C_LB, C_LG, C_LB, C_LP, C_LA, C_LT, C_LGREY]
strip_col = TW / 7
ss_table = Table(sample_strip_data, colWidths=[strip_col]*7)
ss_cmds = [
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING", (0,0), (-1,-1), 5),
("LEFTPADDING", (0,0), (-1,-1), 4),
("GRID", (0,0), (-1,-1), 0.4, C_MGREY),
("VALIGN", (0,0), (-1,-1), "TOP"),
]
for i, c in enumerate(ss_colors):
ss_cmds.append(("BACKGROUND", (i,0), (i,0), c))
ss_table.setStyle(TableStyle(ss_cmds))
story.append(ss_table)
story.append(Spacer(1, 4))
story.append(Paragraph(
"BNYS Naturopathy Practice | Gut Health Meal Planner | July 2026 | "
"For clinical / educational use. Personalise based on individual assessment.",
mks("ft", fontSize=7, textColor=C_GREY, fontName="Helvetica-Oblique", alignment=TA_CENTER)))
doc.build(story)
print(f"Saved: {out}")
cd /tmp/workspace/ayurvedic-diet-chart && python3 create_meal_plan_template.py
ls -lh /tmp/workspace/ayurvedic-diet-chart/Weekly_Gut_Health_Meal_Planner.pdf
Weekly Gut Health Meal Planner
PDF Document · PDF
[ ] Probiotic · [ ] Prebiotic · [ ] Fermented · [ ] 2L Water · [ ] Fiber 25g+ · [ ] ExerciseFasting chart for flex
Which type of fasting chart? · Format?
Point no 3&4
~/ayurvedic-diet-chart/create_fasting_chart.py
from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.units import mm
from reportlab.platypus import (SimpleDocTemplate, Paragraph, Spacer, Table,
TableStyle, HRFlowable, PageBreak)
from reportlab.lib.enums import TA_CENTER, TA_LEFT
W, H = A4
out = "/tmp/workspace/ayurvedic-diet-chart/Fasting_Chart_IF_Naturopathic_Ayurvedic.pdf"
doc = SimpleDocTemplate(
out, pagesize=A4,
leftMargin=16*mm, rightMargin=16*mm,
topMargin=14*mm, bottomMargin=14*mm,
title="Fasting Chart — IF + Naturopathic + Ayurvedic",
author="BNYS Naturopathy Practice"
)
# ── Palette ──
C_NAVY = colors.HexColor("#1B4F72")
C_BLUE = colors.HexColor("#1A5276")
C_GREEN = colors.HexColor("#1E8449")
C_PURPLE = colors.HexColor("#6C3483")
C_AMBER = colors.HexColor("#B7770D")
C_RED = colors.HexColor("#922B21")
C_TEAL = colors.HexColor("#117A65")
C_OLIVE = colors.HexColor("#7D6608")
C_GREY = colors.HexColor("#717D7E")
C_LB = colors.HexColor("#D6EAF8")
C_LG = colors.HexColor("#D5F5E3")
C_LP = colors.HexColor("#E8DAEF")
C_LA = colors.HexColor("#FDEBD0")
C_LR = colors.HexColor("#FADBD8")
C_LT = colors.HexColor("#D1F2EB")
C_LO = colors.HexColor("#FDFDE7")
C_LGREY = colors.HexColor("#F2F3F4")
C_MGREY = colors.HexColor("#BDC3C7")
C_WHITE = colors.white
TW = W - 32*mm # usable width
styles = getSampleStyleSheet()
def mks(name, **kw):
return ParagraphStyle(name, parent=styles["Normal"], **kw)
title_s = mks("Ti", fontSize=20, textColor=C_NAVY, fontName="Helvetica-Bold", alignment=TA_CENTER, spaceAfter=3)
sub_s = mks("Su", fontSize=10, textColor=C_BLUE, fontName="Helvetica-Bold", alignment=TA_CENTER, spaceAfter=2)
tag_s = mks("Ta", fontSize=8, textColor=C_GREY, fontName="Helvetica-Oblique", alignment=TA_CENTER, spaceAfter=8)
sec_s = mks("Se", fontSize=12, textColor=C_WHITE, fontName="Helvetica-Bold", alignment=TA_LEFT)
sub2_s = mks("S2", fontSize=10, textColor=C_NAVY, fontName="Helvetica-Bold", spaceBefore=8, spaceAfter=3)
cell_s = mks("Ce", fontSize=9, textColor=colors.HexColor("#1a1a1a"), fontName="Helvetica", leading=13)
bold_s = mks("Bo", fontSize=9, textColor=colors.HexColor("#1a1a1a"), fontName="Helvetica-Bold", leading=13)
ital_s = mks("It", fontSize=8.5,textColor=colors.HexColor("#555555"), fontName="Helvetica-Oblique", leading=12, spaceAfter=5)
note_s = mks("No", fontSize=7.5,textColor=colors.HexColor("#666666"), fontName="Helvetica-Oblique", leading=11)
hdr_s = mks("Hd", fontSize=9.5,textColor=C_WHITE, fontName="Helvetica-Bold", alignment=TA_LEFT)
def sec_hdr(text, bg):
t = Table([[Paragraph(text, sec_s)]], colWidths=[TW])
t.setStyle(TableStyle([
("BACKGROUND", (0,0),(-1,-1), bg),
("TOPPADDING", (0,0),(-1,-1), 7),
("BOTTOMPADDING", (0,0),(-1,-1), 7),
("LEFTPADDING", (0,0),(-1,-1), 10),
]))
return t
def make_table(headers, rows, col_widths, hdr_color, alt_color):
data = [[Paragraph(h, hdr_s) for h in headers]]
for row in rows:
data.append([Paragraph(str(c), cell_s) for c in row])
t = Table(data, colWidths=col_widths, repeatRows=1)
t.setStyle(TableStyle([
("BACKGROUND", (0,0),(-1,0), hdr_color),
("ROWBACKGROUNDS",(0,1),(-1,-1),[alt_color, C_WHITE]),
("GRID", (0,0),(-1,-1), 0.4, C_MGREY),
("TOPPADDING", (0,0),(-1,-1), 5),
("BOTTOMPADDING", (0,0),(-1,-1), 5),
("LEFTPADDING", (0,0),(-1,-1), 6),
("RIGHTPADDING", (0,0),(-1,-1), 6),
("VALIGN", (0,0),(-1,-1), "TOP"),
]))
return t
story = []
# ══ TITLE ══
story.append(Paragraph("FASTING CHART", title_s))
story.append(Paragraph("Intermittent Fasting · Naturopathic Fasting · Ayurvedic Fasting (Upavasa)", sub_s))
story.append(Paragraph("BNYS Food & Dietetics Reference | For Naturopathy Clinical Practice | July 2026", tag_s))
story.append(HRFlowable(width="100%", thickness=2, color=C_NAVY, spaceAfter=8))
# ══ OVERVIEW TABLE ══
story.append(Paragraph("Overview: Types of Fasting", sub2_s))
ov_h = ["Category", "Approach", "Duration", "Best For", "Ayurvedic/Naturo Name"]
ov_r = [
("Intermittent Fasting (IF)", "Time-restricted eating windows", "Daily 12–24 hr fasts", "Weight, metabolic health, gut reset", "Langhana (lightening therapy)"),
("Naturopathic Fasting", "Juice / water / eliminative fasts", "1 day to 21 days", "Detox, chronic disease, gut healing", "Shodana (purification)"),
("Ayurvedic Fasting (Upavasa)","Seasonal, lunar-based, dosha-specific","Weekly to seasonal","Dosha balance, spiritual, disease", "Upavasa / Vrata"),
]
story.append(make_table(ov_h, ov_r, [36*mm, 44*mm, 28*mm, 44*mm, 40*mm], C_NAVY, C_LB))
story.append(Spacer(1,10))
# ══════════════════════════════════════════
# PART A — INTERMITTENT FASTING
# ══════════════════════════════════════════
story.append(sec_hdr("PART A — INTERMITTENT FASTING (IF) PROTOCOLS", C_BLUE))
story.append(Spacer(1,4))
story.append(Paragraph(
"Intermittent fasting involves cycling between periods of eating and voluntary fasting. "
"It works by depleting liver glycogen, shifting metabolism to fat oxidation, reducing "
"insulin, triggering autophagy (cellular clean-up), and improving gut microbiome diversity.",
ital_s))
# A1 — IF Protocols
story.append(Paragraph("A1. IF Protocols Comparison Chart", sub2_s))
if_h = ["Protocol", "Eating Window", "Fasting Window", "How It Works", "Best For", "Difficulty"]
if_r = [
("12:12 (Beginners)", "12 hours (e.g. 7 AM – 7 PM)", "12 hours overnight", "Gives gut rest overnight; basic circadian sync", "Beginners, maintenance, gut health", "★☆☆☆☆ Very Easy"),
("14:10", "10 hours (e.g. 8 AM – 6 PM)", "14 hours", "Mild fat oxidation; improves overnight digestion", "Beginners stepping up, metabolic syndrome", "★★☆☆☆ Easy"),
("16:8 (Most Popular)", "8 hours (e.g. 10 AM – 6 PM)", "16 hours", "Strong insulin drop; significant autophagy onset", "Weight loss, T2DM, IBS, inflammation", "★★★☆☆ Moderate"),
("18:6", "6 hours (e.g. 12 PM – 6 PM)", "18 hours", "Deeper ketosis; enhanced fat burn & autophagy", "Advanced IF, PCOS, obesity, NAFLD", "★★★★☆ Moderate-Hard"),
("20:4 (Warrior Diet)", "4 hours (e.g. 4 PM – 8 PM)", "20 hours", "One main meal; maximum autophagy; deep ketosis", "Experienced fasters, quick fat loss", "★★★★☆ Hard"),
("OMAD (One Meal a Day)","1 meal/day (~1 hour window)", "23 hours", "Extreme caloric restriction window; strong autophagy", "Short-term therapeutic; supervised only", "★★★★★ Very Hard"),
("5:2 Diet", "Normal 5 days/week", "500–600 kcal on 2 non-consecutive days", "Periodic caloric restriction; metabolic reset", "Weight loss, T2DM prevention, longevity", "★★★☆☆ Moderate"),
("Alternate Day Fasting (ADF)", "Normal eating one day", "24-hr fast or <500 kcal next day", "Strong metabolic flexibility; mimics ancestral eating", "Obesity, metabolic syndrome, gut dysbiosis","★★★★☆ Hard"),
("Extended Fast (24 hr)","1 meal/day or skipping 24 hr", "24 hours", "Full glycogen depletion; autophagy peak; gut microbiome reset", "Monthly gut reset, anti-inflammatory", "★★★★☆ Hard"),
]
story.append(make_table(if_h, if_r,
[28*mm, 32*mm, 25*mm, 44*mm, 40*mm, 22*mm], C_BLUE, C_LB))
story.append(Spacer(1,8))
# A2 — What to eat/drink during fasting window
story.append(Paragraph("A2. What to Consume During the Fasting Window", sub2_s))
fw_h = ["Item", "Allowed?", "Why / Notes"]
fw_r = [
("Plain water (warm/room temp)", "✅ YES — Essential", "Keeps hydrated; breaks no fast; aids detox"),
("Black coffee (no sugar/milk)", "✅ YES — with caution", "Does not break fast; may suppress hunger; avoid if acidity prone"),
("Plain green tea / herbal tea", "✅ YES", "Zero calories; antioxidant; gut-friendly; reduces hunger"),
("Sparkling / mineral water", "✅ YES", "No calories; fine during fast window"),
("Apple cider vinegar (1 tsp in water)", "✅ YES (trace cal)", "Helps blood sugar; minimal caloric impact"),
("Electrolyte water (no sugar)", "✅ YES", "Useful during extended fasts to prevent electrolyte loss"),
("Lemon water (plain)", "✅ YES", "Minimal calories; alkalising; digestive support"),
("Milk / dairy", "❌ NO", "Contains calories + lactose; triggers insulin response"),
("Fruit juice", "❌ NO", "High sugar; breaks fast immediately"),
("Bone broth / vegetable broth", "⚠️ GREY ZONE", "Used in extended therapeutic fasting; breaks strict IF"),
("Chewing gum (sugar-free)", "⚠️ GREY ZONE", "May trigger cephalic phase insulin response; best avoided"),
("Medications / supplements", "⚠️ CHECK", "Fat-soluble vitamins need food; most medications fine with water"),
]
story.append(make_table(fw_h, fw_r, [50*mm, 28*mm, TW - 78*mm], C_BLUE, C_LB))
story.append(Spacer(1,8))
# A3 — Sample 16:8 schedule
story.append(Paragraph("A3. Sample 16:8 Daily Schedule", sub2_s))
s168_h = ["Time", "Phase", "Action / Food"]
s168_r = [
("6:00 AM", "Fasting Window", "Wake up — warm water with lemon (no calories)"),
("7:00 AM", "Fasting Window", "Green tea or black coffee (plain, no milk/sugar)"),
("9:00 AM", "Fasting Window", "Herbal tea (tulsi, ginger, fennel) — optional"),
("10:00 AM", "EATING WINDOW OPENS", "Break fast: 1 banana + soaked almonds + yoghurt — gentle start"),
("12:30–1:00 PM", "Eating Window", "Main lunch: Brown rice / roti + dal + sabzi + salad + lassi"),
("3:30 PM", "Eating Window", "Light snack: fruit + handful nuts OR dark chocolate + green tea"),
("5:30–6:00 PM", "EATING WINDOW CLOSES", "Last meal: Whole wheat roti + sabzi + soup / light dinner"),
("6:00 PM onwards","Fasting Window", "Only water, herbal tea, plain black coffee allowed"),
("9:30 PM", "Fasting Window", "Warm water or plain chamomile tea before bed"),
("6:00 AM next day","Fasting Window","16 hours complete — new eating window opens at 10 AM"),
]
story.append(make_table(s168_h, s168_r, [25*mm, 38*mm, TW - 63*mm], C_BLUE, C_LB))
story.append(Spacer(1,8))
# A4 — IF Benefits & Contraindications
story.append(Paragraph("A4. Health Benefits & Contraindications of IF", sub2_s))
bene_h = ["Health Benefit", "Mechanism", "Contraindications / Caution"]
bene_r = [
("Weight loss / fat reduction", "Insulin drop → fat oxidation; reduced caloric window", "Underweight (BMI <18.5), anorexia, wasting diseases"),
("Improved insulin sensitivity", "Glycogen depletion → enhanced glucose uptake by cells", "Type 1 diabetes (requires strict medical supervision)"),
("Gut microbiome diversity", "Fasting period allows gut rest; promotes Akkermansia", "Active IBD flare, severe malnutrition"),
("Autophagy (cellular clean-up)", "mTOR inhibition during fast → damaged cell recycling", "Pregnancy, breastfeeding"),
("Reduced inflammation", "Lower IL-6, TNF-α; ketones are anti-inflammatory", "Children under 18 — not recommended"),
("Improved sleep quality", "Circadian alignment when eating window matches daylight", "History of eating disorders"),
("Cognitive clarity / focus", "Ketones as alternate brain fuel; BDNF increase", "Active peptic ulcer, GERD (may worsen acidity)"),
("Longevity / anti-ageing", "Sirtuin activation; telomere preservation", "On blood sugar or blood pressure medications — monitor closely"),
]
story.append(make_table(bene_h, bene_r, [42*mm, 52*mm, TW - 94*mm], C_BLUE, C_LB))
story.append(PageBreak())
# ══════════════════════════════════════════
# PART B — NATUROPATHIC FASTING
# ══════════════════════════════════════════
story.append(sec_hdr("PART B — NATUROPATHIC THERAPEUTIC FASTING", C_GREEN))
story.append(Spacer(1,4))
story.append(Paragraph(
"Naturopathic fasting is a structured therapeutic intervention using controlled food restriction "
"to promote detoxification, healing, and disease reversal. It follows a 3-phase protocol: "
"Preparation → Fasting → Breaking the fast (most critical). "
"Types range from eliminative (raw/juice) to total water fasting.",
ital_s))
# B1 — Types
story.append(Paragraph("B1. Types of Naturopathic Fasting", sub2_s))
nf_h = ["Type", "What is Allowed", "Duration", "Purpose / Indication", "Supervision"]
nf_r = [
("Eliminative Diet\n(Pre-fasting prep)", "Fruits, raw vegetables, juices, coconut water only", "2–3 days before fast", "Prepare digestive system; reduce toxic load", "Self / guided"),
("Fruit Fast", "Only fresh fruits (one type or mixed); water", "1–3 days", "Mild detox, digestive rest, fever, cold onset", "Self with guidance"),
("Juice Fast\n(Juice Therapy)", "Fresh vegetable + fruit juices every 2–3 hrs; water", "3–7 days", "Liver detox, obesity, skin disorders, hypertension", "Practitioner supervised"),
("Mono Diet Fast", "Single food only (e.g. only watermelon, only grapes, only milk)", "1–5 days", "Specific organ support; traditional naturo method", "Supervised"),
("Semi-Fast\n(Restricted Diet)", "2 light meals of raw/cooked vegetables + dal only", "7–14 days", "Chronic disease management, weight loss, autoimmune", "Supervised"),
("Complete Water Fast","Only plain warm water", "1–3 days (max)", "Deepest detox; acute illness; gut rest; spiritual", "Strict medical supervision"),
("Dry Fast\n(NOT recommended routinely)", "No food AND no water", "12–24 hrs max; religious context only", "Traditional/spiritual fasting only (Navratri, Ekadashi)", "Avoid in clinical practice; dangerous >24 hrs"),
]
story.append(make_table(nf_h, nf_r, [32*mm, 38*mm, 22*mm, 46*mm, 28*mm], C_GREEN, C_LG))
story.append(Spacer(1,8))
# B2 — Naturo Fasting Protocol (3 phases)
story.append(Paragraph("B2. Naturopathic Fasting Protocol — 3 Phases", sub2_s))
phases_h = ["Phase", "Day(s)", "What to Do", "Allowed Foods", "Key Principle"]
phases_r = [
("PHASE 1\nPREPARATION\n(Eliminative Diet)", "Day 1–3\nbefore fast", "Gradually reduce solid food; stop meat, dairy, fried, refined items", "Fruits, raw vegetables, fresh juices, coconut water, warm water", "Prepare digestive system; reduce auto-intoxication; light the Agni gently"),
("PHASE 2\nFASTING\n(Active Fast)", "Day 4 onwards\n(1–7 days)", "Complete or partial food restriction; complete rest; minimal activity; sun-bathing, light yoga permitted", "Water fast: warm water only\nJuice fast: fresh juices every 2–3 hrs\nFruit fast: light fresh fruits", "Allow the healing crisis (Herxheimer reaction); trust the process; no suppression"),
("PHASE 3\nBREAKING THE FAST\n(MOST CRITICAL)", "Equal days to fasting", "Re-introduce foods VERY slowly; never break with heavy food — risk of refeeding syndrome", "Day 1: Fresh fruit juice / coconut water\nDay 2: Soft fruits (banana, papaya)\nDay 3: Khichdi / moong dal soup\nDay 4+: Normal naturo diet gradually", "This phase determines success. Break fast gently. Never overeat after fasting."),
]
story.append(make_table(phases_h, phases_r, [28*mm, 18*mm, 44*mm, 44*mm, 52*mm], C_GREEN, C_LG))
story.append(Spacer(1,8))
# B3 — Sample 7-day juice fast schedule
story.append(Paragraph("B3. Sample 7-Day Naturopathic Juice Fast Schedule", sub2_s))
jf_h = ["Day", "Morning", "Mid-Morning", "Afternoon", "Evening", "Night"]
jf_r = [
("Day 1\n(Prep)", "Warm water + lemon", "Mixed fruit bowl", "Fresh fruit juice", "Vegetable soup (light)", "Warm water + honey"),
("Day 2\n(Prep)", "Warm lemon water", "Papaya / watermelon", "Coconut water", "Raw vegetable salad", "Herbal tea"),
("Day 3\n(Prep)", "Warm water + ginger", "Apple + carrot juice", "Fresh orange juice", "Cucumber + lemon juice", "Warm water"),
("Day 4\n(Fast starts)", "Warm water", "Carrot-beetroot juice", "Mixed veggie juice\n(spinach-cucumber-ginger)", "Apple juice (fresh)", "Warm water"),
("Day 5\n(Fast)", "Warm lemon water", "Pomegranate juice", "Coconut water", "Cucumber-celery juice", "Warm water + honey"),
("Day 6\n(Fast)", "Warm water + ginger", "Carrot-apple-ginger juice", "Amla + water", "Spinach-cucumber juice", "Herbal tea (fennel)"),
("Day 7\n(Last fast day)", "Warm water", "Coconut water", "Mixed fruit juice", "Vegetable broth (thin)", "Warm water"),
("Day 8\n(Break fast)", "Warm water + lemon", "Fresh fruit juice ONLY", "Soft fruit (banana, papaya)", "Coconut water", "Warm water"),
("Day 9\n(Reintroduction)", "Lemon warm water", "Soft fruits", "Moong dal soup (thin)", "Steamed vegetables (light)", "Warm water"),
("Day 10\n(Soothing diet)", "Warm water + ginger", "Fresh fruit", "Khichdi (moong + rice, soft)", "Stewed vegetables", "Haldi doodh (light)"),
]
story.append(make_table(jf_h, jf_r, [16*mm, 32*mm, 38*mm, 42*mm, 36*mm, 28*mm], C_GREEN, C_LG))
story.append(Spacer(1,8))
# B4 — Healing crisis
story.append(Paragraph("B4. Healing Crisis (Herxheimer Reaction) — What to Expect", sub2_s))
hc_h = ["Symptom During Fast", "Cause", "Management", "When to Stop Fast"]
hc_r = [
("Headache (Days 1–3)", "Caffeine withdrawal + toxin mobilisation", "Extra warm water; rest; cold compress on forehead", "Severe, persistent migraine"),
("Fatigue, weakness", "Shift from glucose to ketone fuel", "Complete bed rest; no strenuous activity", "Extreme weakness / fainting"),
("Nausea, mild vomiting", "Liver/gut detox; bile mobilisation", "Sip warm water; ginger tea; rest", "Persistent vomiting"),
("Bad breath / coated tongue", "Toxin excretion through mucous membranes", "Tongue scraping; warm saline gargle", "Not a reason to stop"),
("Skin rashes / eruptions", "Skin elimination organ activated", "Tepid water bath; no suppression with creams", "Not a reason to stop — a good sign"),
("Low blood pressure / dizziness", "Reduced salt + fluid intake", "Salt + water supplementation; slow positional changes", "Persistent, severe hypotension"),
("Blood sugar drop (hypoglycaemia)","Restricted caloric intake", "Fruit juice immediately; monitor glucose", "Glucose < 60 mg/dL"),
]
story.append(make_table(hc_h, hc_r, [38*mm, 36*mm, 46*mm, TW - 120*mm], C_GREEN, C_LG))
story.append(PageBreak())
# ══════════════════════════════════════════
# PART C — AYURVEDIC FASTING (UPAVASA)
# ══════════════════════════════════════════
story.append(sec_hdr("PART C — AYURVEDIC FASTING (UPAVASA / LANGHANA)", C_PURPLE))
story.append(Spacer(1,4))
story.append(Paragraph(
"In Ayurveda, fasting is called Upavasa (staying near God / self) or Langhana (lightening). "
"It is one of the Shat Upakramas (six sub-therapies of Langhana). Fasting is prescribed "
"based on the patient's Prakriti, Dosha imbalance, season, and disease condition. "
"The Agni (digestive fire) is the cornerstone — fasting rekindles weak Agni and clears Ama (toxins).",
ital_s))
# C1 — Langhana types
story.append(Paragraph("C1. Langhana (Fasting & Lightening Therapies) in Ayurveda", sub2_s))
lang_h = ["Langhana Type", "Method", "Dosha Indication", "Duration", "Key Effect"]
lang_r = [
("Upavasa\n(Complete fast)", "No food; warm water only or very light fluids", "Kapha + Ama predominance; fever (Jwara); obesity", "1 day to 3 days", "Clears Ama; kindles Agni; reduces Kapha"),
("Laghu Ahara\n(Light diet fast)", "Only easily digestible foods: moong dal khichdi, warm water, fruit", "All doshas; mild Ama", "3–7 days", "Gentle Agni-kindling without full starvation"),
("Langhana with Yava\n(Barley fast)", "Only barley water (Yavagu) or barley preparations", "Kapha, Pitta excess; metabolic disorders, diabetes", "5–21 days", "Deepana-pachana; reduces Kapha; anti-diabetic"),
("Pachana Karma\n(Digestive therapy)", "Digestive herbs (Trikatu, Haritaki) + fasting", "Ama-laden conditions, IBS, poor digestion", "Until Ama clears", "Burns Ama without full fasting"),
("Pipasanigraha\n(Thirst control)", "Restricted fluid intake", "Kapha excess, oedema, obesity", "Supervised", "Reduces heaviness, oedema; dries excess Kapha"),
("Vyayama\n(Exercise as Langhana)", "Intense physical exercise to reduce excess Dosha", "Kapha, obesity", "Daily", "Reduces Kapha without food restriction"),
("Atapa Sevana\n(Sun therapy)", "Sunbathing + light diet", "Kapha, cold + damp conditions", "Morning sun 30–60 min", "Dries Kapha; warms body; Vitamin D"),
]
story.append(make_table(lang_h, lang_r, [32*mm, 42*mm, 36*mm, 20*mm, 48*mm], C_PURPLE, C_LP))
story.append(Spacer(1,8))
# C2 — Dosha-specific fasting
story.append(Paragraph("C2. Dosha-Specific Fasting Guidelines", sub2_s))
dosha_h = ["Dosha / Prakriti", "Fasting Type", "Allowed During Fast", "Duration", "Break Fast With", "Avoid"]
dosha_r = [
("VATA\n(Air + Ether)", "Laghu (Light) fast only\nNO prolonged fasting — aggravates Vata", "Warm water, herbal teas (ginger, fennel), diluted fresh juice, warm moong dal water", "Max 1 day; intermittent only (12:12 or 14:10)", "Warm moong khichdi with ghee; warm milk with cardamom", "Water fasting, prolonged OMAD, dry fasting, cold foods"),
("PITTA\n(Fire + Water)", "Moderate fast — juice or fruit fast\nIF: 16:8 suitable", "Coconut water, pomegranate juice, cool herbal teas (coriander, fennel, mint), sweet fruits", "3–5 day juice fast; 16:8 IF daily", "Sweet fruits (mango, pomegranate, grapes); cool milk with saffron", "Skipping meals entirely; hot spicy during fast; prolonged hunger (increases Pitta fire)"),
("KAPHA\n(Earth + Water)", "BEST for fasting — all types beneficial\nIF: 18:6 or OMAD ideal", "Warm water with dry ginger + black pepper + lemon; herbal teas; thin vegetable broth", "Up to 7 days juice/water; 18:6 or 20:4 IF daily", "Warm vegetable soup with ginger; thin barley water; light khichdi", "Heavy foods after fast; banana, dairy, sweets to break fast — will negate effect"),
]
story.append(make_table(dosha_h, dosha_r, [24*mm, 32*mm, 40*mm, 22*mm, 40*mm, 38*mm], C_PURPLE, C_LP))
story.append(Spacer(1,8))
# C3 — Lunar / Calendar based fasting
story.append(Paragraph("C3. Ayurvedic Calendar & Lunar-Based Fasting (Vrata)", sub2_s))
lunar_h = ["Fast Name", "Day / Occasion", "Fasting Rules", "Physiological Benefit", "Deity / Tradition"]
lunar_r = [
("Ekadashi Fast", "11th day of each lunar fortnight\n(2× per month)", "No grains (rice, wheat); fruits, roots, dairy, water allowed; some observe complete water fast", "Gut rest; reduces Ama; digestive reset; improves microbiome; fasting aligns with lunar tidal pull on gut fluids", "Vishnu; pan-Hindu; widely practiced"),
("Purnima Fast\n(Full Moon)", "Full moon day each month", "Light diet or fruit fast; no grains; reduce heavy food", "Kapha naturally high on full moon; fasting counters excess fluid retention", "Shiva, Vishnu; lunar worship"),
("Amavasya Fast\n(New Moon)", "New moon day each month", "Light diet; pitta-reducing foods; fruits and water", "Vata is elevated on new moon; light diet stabilises", "Ancestors (Pitru); Shiva"),
("Pradosh Fast", "13th lunar day (Trayodashi)", "Fasting till evening; fruits + water; meal after sunset", "Combined benefit of Ekadashi principles applied bi-monthly", "Shiva"),
("Navratri Fast", "9 nights × 2/year (Ashwin + Chaitra)", "No grains; only Sabudana, kuttu (buckwheat), fruits, milk, sendha namak (rock salt)", "Seasonal detox at equinox; gut rest; Kapha/Pitta purging with seasonal transition", "Durga / Devi; pan-India"),
("Monday Fast\n(Somvar)", "Every Monday", "One meal a day or fruit-only; no meat; sattvic diet", "Weekly gut rest; reduces Pitta + Kapha; spiritual calm", "Shiva"),
("Saturday Fast", "Every Saturday", "Restricted food; often sesame seeds + water; oil-free", "Vata + nervous system regulation; reduces excess Vata", "Shani; South India / North India"),
("Shravan Maas Fast", "Entire month of Shravan\n(July–August)", "Avoid green leafy veg (insect risk monsoon); vegetarian; sattvic only", "Microbiome protection in monsoon; reduces Pitta aggravated in monsoon season", "Shiva; widespread"),
]
story.append(make_table(lunar_h, lunar_r, [28*mm, 30*mm, 44*mm, 48*mm, 34*mm], C_PURPLE, C_LP))
story.append(Spacer(1,8))
# C4 — What to eat on Ekadashi (most common)
story.append(Paragraph("C4. Ekadashi Fast — Detailed Food Guide (Most Practiced)", sub2_s))
ek_h = ["Category", "Allowed on Ekadashi", "Avoid on Ekadashi", "Reason"]
ek_r = [
("Grains", "None on strict Ekadashi", "Rice, wheat, all grains and pulses", "Grains are considered heavy; rest digestive tract on Ekadashi"),
("Fruits", "All fresh fruits: banana, mango, papaya, apple, grapes, pomegranate, coconut", "Dried unsoaked fruits (in excess)", "Light, easily digestible; sattvic energy"),
("Vegetables", "Potato, sweet potato, raw banana, yam, sabudana (tapioca)", "Onion, garlic, green leafy (traditional rules)", "Rajasic/Tamasic items restricted; sattvic only"),
("Dairy", "Milk, curd, ghee, paneer, butter (unsalted)", "Commercial cheese, cream (excess)", "Dairy is sattvic; pure, light energy"),
("Sweeteners", "Honey, jaggery, rock sugar (mishri)", "Refined white sugar", "Natural sweeteners are sattvic"),
("Salt", "Sendha namak (rock salt / pink Himalayan salt) only", "Table salt (iodised), sea salt", "Rock salt is considered pure in Ayurvedic tradition"),
("Nuts & seeds","Almonds, cashews, walnuts, sesame seeds, pumpkin seeds","Peanuts (considered pulse by some regions)", "Light, nourishing energy during fast"),
("Beverages", "Water, coconut water, fresh fruit juices, milk", "Tea, coffee, alcohol", "Pure, sattvic liquids only; mental clarity"),
("Special foods","Sabudana khichdi (sendha namak), makhana (fox nut) kheer, singhara (water chestnut) atta rotis", "Any grain-based food", "Traditional non-grain alternatives"),
]
story.append(make_table(ek_h, ek_r, [24*mm, 50*mm, 44*mm, TW - 118*mm], C_PURPLE, C_LP))
story.append(PageBreak())
# ══════════════════════════════════════════
# PART D — COMPARISON + CONTRAINDICATIONS
# ══════════════════════════════════════════
story.append(sec_hdr("PART D — COMPARISON TABLE & GENERAL GUIDELINES", C_AMBER))
story.append(Spacer(1,4))
# D1 — Quick comparison
story.append(Paragraph("D1. IF vs Naturopathic vs Ayurvedic Fasting — Quick Comparison", sub2_s))
comp_h = ["Parameter", "Intermittent Fasting", "Naturopathic Fasting", "Ayurvedic Fasting (Upavasa)"]
comp_r = [
("Approach", "Time-restricted eating windows", "Complete food restriction with juice/water", "Dosha-based; lunar/seasonal; spiritual"),
("Duration", "Daily (ongoing lifestyle)", "1 day to 21 days", "1 day (weekly/bimonthly) to Navratri (9 days)"),
("Best For", "Weight, metabolic health, gut", "Detox, chronic disease, acute illness", "Dosha balance, Ama clearance, spiritual"),
("Supervision", "Self-guided (most protocols)", "Practitioner supervised (extended fasts)", "Traditional / self-guided for calendar fasts"),
("Contraindications","Pregnancy, T1DM, underweight, eating disorders", "Same + severe chronic disease without supervision", "Not restrictive for healthy individuals; Vata types need modification"),
("Food During Fast", "Nothing (or calorie-free drinks)","Juices, water, broth (type-dependent)", "Fruits, roots, dairy, sendha namak, sattvic foods"),
("Ayurvedic Concept","Langhana (lightening)", "Shodana (purification)", "Upavasa (nearness to self/God) + Agni rekindling"),
("Scientific Basis", "Autophagy, insulin, circadian biology", "Detox, elimination, gut rest", "Dosha theory, Agni-Ama balance, circadian + lunar biology"),
]
story.append(make_table(comp_h, comp_r, [32*mm, 44*mm, 44*mm, 58*mm], C_AMBER, C_LA))
story.append(Spacer(1,8))
# D2 — Universal contraindications
story.append(Paragraph("D2. Contraindications — Who Should NOT Fast (or Fast Under Supervision Only)", sub2_s))
contra_h = ["Condition", "Type of Fasting to Avoid", "Safe Alternative"]
contra_r = [
("Pregnancy", "All prolonged fasting; extended IF", "12:12 at most; normal balanced diet"),
("Breastfeeding", "Extended fasts, OMAD, water fast", "Regular meals; light 12:12 if desired"),
("Type 1 Diabetes", "All fasting without strict supervision", "Only under endocrinologist + naturopath"),
("Type 2 Diabetes (on insulin)", "Prolonged fasting; OMAD", "16:8 with glucose monitoring; supervised"),
("Underweight (BMI < 18.5)", "All prolonged fasting", "Constructive naturo diet; no restriction"),
("Children under 18", "All therapeutic fasting", "Balanced whole food diet; no restriction"),
("Active eating disorder", "All types of fasting", "Therapeutic nutrition counselling"),
("Active IBD flare", "Water fast, prolonged juice fast", "Elemental diet; liquid diet supervised"),
("Kidney disease", "Extended water fast", "Short 12:12 IF; supervised fasting only"),
("Severe anaemia", "All prolonged fasting", "Iron-rich constructive naturo diet"),
("Pre/post surgery", "All fasting", "High-protein recovery diet"),
("Severe stress / adrenal fatigue","Extended IF; OMAD", "Nourishing diet; 12:12 at most"),
]
story.append(make_table(contra_h, contra_r, [46*mm, 52*mm, TW - 98*mm], C_AMBER, C_LA))
story.append(Spacer(1,8))
# D3 — Tips
story.append(Paragraph("D3. Universal Fasting Tips for Safe Practice", sub2_s))
tips = [
"Always start with shorter fasting windows and progress gradually (12:12 → 14:10 → 16:8).",
"Drink adequate warm water throughout — most fasting discomfort is actually dehydration.",
"The first 2–3 days of any new fast protocol are the hardest; symptoms usually ease by Day 4.",
"Breaking the fast is as important as the fast itself — never break with heavy/fried food.",
"During fasting windows, distract yourself with light activity, reading, yoga, or meditation.",
"Add electrolytes (pinch of pink Himalayan salt + lemon in water) during extended fasts.",
"Vata types: warm, nourishing foods when breaking fast; avoid cold; limit fasting days.",
"Pitta types: avoid fasting during peak summer; break fast with cooling, sweet foods.",
"Kapha types: fasting is most beneficial — even skipping breakfast daily is therapeutic.",
"Ekadashi and Navratri fasts provide a natural bi-monthly gut reset aligned with lunar cycles.",
"Avoid vigorous exercise during extended fasts (>16 hrs); light yoga and walking are fine.",
"Always consult a BNYS/Ayurvedic practitioner before recommending extended fasting to patients.",
]
for tip in tips:
story.append(Paragraph(f"• {tip}", cell_s))
story.append(Spacer(1, 10))
story.append(HRFlowable(width="100%", thickness=1, color=C_MGREY, spaceAfter=5))
story.append(Paragraph(
"References: Charaka Samhita (Sutrasthana Ch. 22 — Langhana-Brimhana); Ashtanga Hridayam; "
"ISAPP / NIH Guidelines on Intermittent Fasting; Naturopathic Dietetics — BNYS Curriculum. "
"For educational use. Clinical application requires individual assessment.",
note_s))
doc.build(story)
print(f"Saved: {out}")
cd /tmp/workspace/ayurvedic-diet-chart && python3 create_fasting_chart.py
ls -lh /tmp/workspace/ayurvedic-diet-chart/Fasting_Chart_IF_Naturopathic_Ayurvedic.pdf
Fasting Chart IF Naturopathic Ayurvedic
PDF Document · PDF
| Table | Content |
|---|---|
| IF Protocols | 12:12 · 14:10 · 16:8 · 18:6 · 20:4 · OMAD · 5:2 · ADF · Extended 24hr — with eating window, mechanism, difficulty rating |
| Fasting Window Guide | What to drink ✅ / avoid ❌ during fasting hours (water, black coffee, herbal tea, ACV vs milk, juice, gum) |
| Sample 16:8 Schedule | Hour-by-hour day plan with exact meals |
| Benefits & Contraindications | 8 benefits with mechanisms + who should NOT fast |
| Table | Content |
|---|---|
| Types | Eliminative · Fruit fast · Juice fast · Mono diet · Semi-fast · Water fast · Dry fast |
| 3-Phase Protocol | Preparation → Fasting → Breaking the fast (most critical phase explained) |
| 7-Day Juice Fast | Day-by-day schedule with 5 meal slots |
| Healing Crisis | 7 symptoms (headache, fatigue, rash, low BP...) with causes, management, and when to stop |
| Table | Content |
|---|---|
| Langhana Types | Upavasa · Laghu Ahara · Yava (barley) fast · Pachana · Vyayama |
| Dosha-Specific Rules | Vata (max 1 day, no water fast) · Pitta (16:8, juice fast) · Kapha (best candidate, 18:6 or OMAD) |
| Lunar Calendar Fasts | Ekadashi · Purnima · Amavasya · Navratri · Shravan Maas · Monday/Saturday fasts |
| Ekadashi Food Guide | Allowed vs avoided with reasons (sabudana, makhana, fruits, sendha namak) |
Make an flex or poster in doc form 5*5 feets
cd /tmp/workspace/attachments/f2ee3e4b-7b62-4196-999f-fead3ab3ea9b && python3 -c " from docx import Document doc = Document('Ankit (1).docx') for p in doc.paragraphs: if p.text.strip(): print(f'[{p.style.name}] {p.text}') for t in doc.tables: for row in t.rows: for cell in row.cells: if cell.text.strip(): print('TABLE:', cell.text.strip()[:120]) "
~/ayurvedic-diet-chart/create_flex_poster.py
from docx import Document
from docx.shared import Pt, Inches, RGBColor, Cm
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.enum.table import WD_TABLE_ALIGNMENT
from docx.oxml.ns import qn
from docx.oxml import OxmlElement
# 5 feet = 60 inches for both width and height
PAGE_W = Inches(60)
PAGE_H = Inches(60)
doc = Document()
section = doc.sections[0]
section.page_width = PAGE_W
section.page_height = PAGE_H
section.left_margin = Inches(1.5)
section.right_margin = Inches(1.5)
section.top_margin = Inches(1.2)
section.bottom_margin= Inches(1.2)
CONTENT_W = 60 - 3 # inches minus margins
normal = doc.styles["Normal"]
normal.font.name = "Calibri"
normal.font.size = Pt(28) # large base size for 5ft print
# ── Helpers ──
def shade(cell, hex_color):
tc = cell._tc
tcPr = tc.get_or_add_tcPr()
shd = OxmlElement("w:shd")
shd.set(qn("w:val"), "clear")
shd.set(qn("w:color"), "auto")
shd.set(qn("w:fill"), hex_color)
tcPr.append(shd)
def hdr_cell(cell, text, bg, fg="FFFFFF", size=32, center=True):
shade(cell, bg)
p = cell.paragraphs[0]; p.clear()
r = p.add_run(text); r.bold = True
r.font.size = Pt(size)
r.font.color.rgb = RGBColor.from_string(fg)
p.alignment = WD_ALIGN_PARAGRAPH.CENTER if center else WD_ALIGN_PARAGRAPH.LEFT
def body_cell(cell, text, bg="FFFFFF", bold=False, size=26, center=False):
shade(cell, bg)
p = cell.paragraphs[0]; p.clear()
r = p.add_run(text); r.bold = bold
r.font.size = Pt(size)
p.alignment = WD_ALIGN_PARAGRAPH.CENTER if center else WD_ALIGN_PARAGRAPH.LEFT
def add_heading(doc, text, level, color, size):
h = doc.add_heading(text, level=level)
for run in h.runs:
run.font.color.rgb = RGBColor.from_string(color)
run.font.size = Pt(size)
return h
def add_para(doc, text, size=26, color="222222", bold=False, center=False, italic=False):
p = doc.add_paragraph()
p.alignment = WD_ALIGN_PARAGRAPH.CENTER if center else WD_ALIGN_PARAGRAPH.LEFT
r = p.add_run(text)
r.font.size = Pt(size)
r.font.color.rgb = RGBColor.from_string(color)
r.bold = bold
r.italic = italic
return p
# ════════════════════════════════════════════════════
# TITLE BANNER
# ════════════════════════════════════════════════════
title_tbl = doc.add_table(rows=1, cols=1)
title_tbl.style = "Table Grid"
title_cell = title_tbl.cell(0,0)
shade(title_cell, "1F3864")
tp = title_cell.paragraphs[0]; tp.clear()
tr = tp.add_run("AYURVEDIC DIET CHART")
tr.bold = True; tr.font.size = Pt(120)
tr.font.color.rgb = RGBColor.from_string("FFFFFF")
tp.alignment = WD_ALIGN_PARAGRAPH.CENTER
title_cell.add_paragraph("").add_run("")
p2 = title_cell.add_paragraph()
r2 = p2.add_run("Based on Vata · Pitta · Kapha Prakriti | Sattvic, Rajasic, Tamasic Classification | Viruddha Ahara")
r2.font.size = Pt(52); r2.font.color.rgb = RGBColor.from_string("AED6F1"); r2.bold = True
p2.alignment = WD_ALIGN_PARAGRAPH.CENTER
doc.add_paragraph("")
# ════════════════════════════════════════════════════
# DOSHA OVERVIEW (3 columns side by side)
# ════════════════════════════════════════════════════
add_heading(doc, "THE THREE DOSHAS — PRAKRITI OVERVIEW", 1, "1F3864", 72)
ov_table = doc.add_table(rows=4, cols=4)
ov_table.style = "Table Grid"
ov_table.alignment = WD_TABLE_ALIGNMENT.CENTER
COL = [Inches(7), Inches(17), Inches(17), Inches(17)]
# Set column widths
for i, w in enumerate(COL):
for row in ov_table.rows:
row.cells[i].width = w
hdr_cell(ov_table.cell(0,0), "Attribute", "1F3864", size=36)
hdr_cell(ov_table.cell(0,1), "VATA", "8B4513", size=40)
hdr_cell(ov_table.cell(0,2), "PITTA", "8B0000", size=40)
hdr_cell(ov_table.cell(0,3), "KAPHA", "1A5276", size=40)
rows_ov = [
("Elements", "Air + Ether (Vayu + Akasha)", "Fire + Water (Agni + Jala)", "Earth + Water (Prithvi + Jala)"),
("Qualities", "Dry, Light, Cold, Rough, Mobile", "Hot, Sharp, Light, Oily, Spreading", "Heavy, Slow, Cool, Oily, Dense"),
("Season", "Late Autumn / Winter", "Summer / Monsoon", "Spring / Late Winter"),
]
alt = ["F5F5F5", "FFFFFF", "F5F5F5"]
for r_i, (row_d, bg) in enumerate(zip(rows_ov, alt), 1):
for c_i, val in enumerate(row_d):
cell = ov_table.cell(r_i, c_i)
shade(cell, bg)
p = cell.paragraphs[0]; p.clear()
rn = p.add_run(val)
rn.font.size = Pt(30)
rn.bold = (c_i == 0)
doc.add_paragraph("")
# ════════════════════════════════════════════════════
# THREE DOSHA SECTIONS — side by side wide table
# ════════════════════════════════════════════════════
# ─── VATA ───
add_heading(doc, "VATA PRAKRITI — Air + Ether | Pacified by: Sweet, Sour, Salty Tastes | Warm · Moist · Heavy Foods", 1, "8B4513", 64)
# Vata Diet Chart
v_tbl = doc.add_table(rows=1, cols=3)
v_tbl.style = "Table Grid"
v_tbl.alignment = WD_TABLE_ALIGNMENT.CENTER
hdr_cell(v_tbl.cell(0,0), "Food Category", "8B4513", size=34)
hdr_cell(v_tbl.cell(0,1), "FAVOUR (Pathya) ✅", "2E7D32", size=34)
hdr_cell(v_tbl.cell(0,2), "AVOID (Apathya) ❌", "C62828", size=34)
vata_diet = [
("Grains", "White/brown rice, wheat, oats (cooked), quinoa, amaranth, semolina",
"Barley, rye, corn, millet, dry oats, crackers, popcorn"),
("Legumes", "Moong dal, red lentils, tofu, urad dal",
"Rajma, chana, black-eyed peas, dry soya chunks"),
("Vegetables", "Cooked: carrot, beet, sweet potato, asparagus, spinach, zucchini, fennel, pumpkin",
"Raw/frozen veg; broccoli, cabbage, cauliflower, celery, kale, mushrooms"),
("Fruits", "Sweet ripe: banana, mango, avocado, dates, figs, peach, papaya, grapes, soaked raisins",
"Dry/unripe fruits; raw apples, cranberries, watermelon"),
("Dairy", "Warm milk, ghee, butter, cream, yoghurt (room temp), paneer",
"Cold/frozen dairy, ice cream"),
("Oils", "Sesame (best), almond, olive, ghee — use liberally",
"Avoid excessive dry cooking"),
("Sweeteners", "Raw honey (unheated), jaggery, date sugar, molasses",
"Refined white sugar, artificial sweeteners"),
("Spices", "Ginger (best), cumin, coriander, cardamom, cinnamon, hing, fennel, nutmeg",
"Excess chilli, dry bitter herbs"),
("Beverages", "Warm water, warm milk with spices, ginger tea, licorice tea, chamomile",
"Cold water, carbonated drinks, alcohol, excess tea/coffee"),
("Nuts & Seeds", "Almonds (soaked), walnuts, cashews, sesame seeds, sunflower seeds",
"Dry-roasted or salted nuts"),
]
for idx, (cat, fav, avd) in enumerate(vata_diet):
row = v_tbl.add_row()
bg = "FDF6EC" if idx % 2 == 0 else "FFFFFF"
body_cell(row.cells[0], cat, bg, bold=True, size=28)
body_cell(row.cells[1], fav, bg, size=26)
body_cell(row.cells[2], avd, bg, size=26)
doc.add_paragraph("")
# Vata Meal Plan + Disorders (two-col)
vd_tbl = doc.add_table(rows=1, cols=2)
vd_tbl.style = "Table Grid"
vd_tbl.alignment = WD_TABLE_ALIGNMENT.CENTER
# Left: meal plan
left = vd_tbl.cell(0, 0)
shade(left, "FDF6EC")
lp = left.paragraphs[0]; lp.clear()
lr = lp.add_run("SAMPLE DAILY MEAL PLAN — VATA"); lr.bold=True; lr.font.size=Pt(36); lr.font.color.rgb=RGBColor.from_string("8B4513")
lp.alignment = WD_ALIGN_PARAGRAPH.CENTER
vata_meals = [
("Early Morning (6–7 AM)", "Warm water + honey + lemon; 5 soaked almonds"),
("Breakfast (7:30–8:30 AM)", "Warm oatmeal with dates, ghee, cardamom OR wheat upma"),
("Mid-Morning (10:30 AM)", "Warm milk with ashwagandha / banana"),
("Lunch (12:30–1:30 PM)", "Rice + moong dal khichdi + cooked carrots + ghee + takra"),
("Evening Snack (4–5 PM)", "Soaked raisins + ginger tea OR sesame laddoo"),
("Dinner (6:30–7:30 PM)", "Wheat chapati + cooked vegetables + warm soup"),
("Bedtime (9:30 PM)", "Warm milk + turmeric + nutmeg (Haldi Doodh)"),
]
for time, food in vata_meals:
mp = left.add_paragraph()
mr = mp.add_run(f"• {time}: "); mr.bold=True; mr.font.size=Pt(28); mr.font.color.rgb=RGBColor.from_string("8B4513")
mr2 = mp.add_run(food); mr2.font.size=Pt(26)
# Right: disorders
right = vd_tbl.cell(0, 1)
shade(right, "FFF8F0")
rp = right.paragraphs[0]; rp.clear()
rr = rp.add_run("COMMON VATA DISORDERS"); rr.bold=True; rr.font.size=Pt(36); rr.font.color.rgb=RGBColor.from_string("8B4513")
rp.alignment = WD_ALIGN_PARAGRAPH.CENTER
vata_dis = ["Constipation, bloating, flatulence (Apaana Vata)",
"Arthritis, joint pain, dry cracking joints (Amavata)",
"Sciatica, lower backache, neuralgia",
"Insomnia, anxiety, nervousness, fear-based disorders",
"Dry eczema, psoriasis, dandruff",
"Irregular menstruation, dysmenorrhoea",
"Palpitations, arrhythmia",
"Emaciation, weight loss, anorexia",
"Tinnitus, dry eyes, dizziness",
"Parkinson's disease, tremors (Kampa Vata)"]
for d in vata_dis:
dp = right.add_paragraph()
dr = dp.add_run(f"❖ {d}"); dr.font.size=Pt(26)
doc.add_paragraph("")
# ─── PITTA ───
add_heading(doc, "PITTA PRAKRITI — Fire + Water | Pacified by: Sweet, Bitter, Astringent Tastes | Cool · Light · Dry Foods", 1, "8B0000", 64)
p_tbl = doc.add_table(rows=1, cols=3)
p_tbl.style = "Table Grid"
p_tbl.alignment = WD_TABLE_ALIGNMENT.CENTER
hdr_cell(p_tbl.cell(0,0), "Food Category", "8B0000", size=34)
hdr_cell(p_tbl.cell(0,1), "FAVOUR (Pathya) ✅", "2E7D32", size=34)
hdr_cell(p_tbl.cell(0,2), "AVOID (Apathya) ❌", "C62828", size=34)
pitta_diet = [
("Grains", "Wheat, basmati rice, oats (cooked), quinoa, barley, amaranth",
"Corn, buckwheat, rye, millet, brown rice (excess)"),
("Legumes", "Moong dal, chickpeas, tofu, black lentils, split peas",
"Red/orange lentils (excess), urad dal (heavy)"),
("Vegetables", "Cucumber, leafy greens, broccoli, cauliflower, celery, asparagus, fennel, zucchini, sweet potato",
"Nightshades (tomato, chilli), raw onion, garlic (excess), radish"),
("Fruits", "Sweet ripe: coconut, pomegranate, grapes, melon, pear, mango (sweet), fig, dates, cherries",
"Sour fruits: lemon (excess), grapefruit, sour oranges, unripe fruits"),
("Dairy", "Cow's milk (cool), ghee (excellent), butter (unsalted), cottage cheese",
"Sour cream, salted cheese, sour yoghurt, fermented dairy"),
("Oils", "Coconut oil (best), sunflower oil, olive oil, ghee (moderate)",
"Sesame oil, almond oil, mustard oil (heating)"),
("Sweeteners", "Raw sugar, maple syrup, date sugar, stevia",
"Honey (heated), molasses, refined sugar"),
("Spices", "Coriander, fennel, cardamom, turmeric, cumin, fresh ginger (small), mint, saffron",
"Chilli, black pepper (excess), clove, mustard, garlic (excess)"),
("Beverages", "Coconut water, rose water drink, cucumber juice, coriander tea, fennel tea, pomegranate juice",
"Alcohol, coffee, black tea, energy drinks, hot beverages"),
("Nuts & Seeds", "Coconut, sunflower seeds, pumpkin seeds, flax seeds (small amount)",
"Almonds (dry/excess), cashews, peanuts, walnuts"),
]
for idx, (cat, fav, avd) in enumerate(pitta_diet):
row = p_tbl.add_row()
bg = "FFF3F3" if idx % 2 == 0 else "FFFFFF"
body_cell(row.cells[0], cat, bg, bold=True, size=28)
body_cell(row.cells[1], fav, bg, size=26)
body_cell(row.cells[2], avd, bg, size=26)
doc.add_paragraph("")
pd_tbl = doc.add_table(rows=1, cols=2)
pd_tbl.style = "Table Grid"
pd_tbl.alignment = WD_TABLE_ALIGNMENT.CENTER
pleft = pd_tbl.cell(0,0); shade(pleft, "FFF3F3")
pp = pleft.paragraphs[0]; pp.clear()
pr = pp.add_run("SAMPLE DAILY MEAL PLAN — PITTA"); pr.bold=True; pr.font.size=Pt(36); pr.font.color.rgb=RGBColor.from_string("8B0000")
pp.alignment = WD_ALIGN_PARAGRAPH.CENTER
pitta_meals = [
("Early Morning (6–7 AM)", "Coconut water or rose water; soaked raisins/dates"),
("Breakfast (8 AM)", "Oatmeal + coconut milk + dates OR wheat bread + ghee + fruit"),
("Mid-Morning (10:30 AM)", "Fresh coconut / pomegranate juice or sweet fruit"),
("Lunch (12–1 PM)", "Basmati rice + moong dal + cooked greens + ghee + cucumber raita"),
("Evening Snack (4–5 PM)", "Fennel tea + fig/date OR coconut ladoo"),
("Dinner (7 PM)", "Wheat chapati + cooked veg (broccoli/zucchini) + plain yoghurt"),
("Bedtime (9:30 PM)", "Cool milk with cardamom and saffron"),
]
for time, food in pitta_meals:
mp = pleft.add_paragraph()
mr = mp.add_run(f"• {time}: "); mr.bold=True; mr.font.size=Pt(28); mr.font.color.rgb=RGBColor.from_string("8B0000")
mr2 = mp.add_run(food); mr2.font.size=Pt(26)
pright = pd_tbl.cell(0,1); shade(pright, "FFF8F8")
rpp = pright.paragraphs[0]; rpp.clear()
rpr = rpp.add_run("COMMON PITTA DISORDERS"); rpr.bold=True; rpr.font.size=Pt(36); rpr.font.color.rgb=RGBColor.from_string("8B0000")
rpp.alignment = WD_ALIGN_PARAGRAPH.CENTER
pitta_dis = ["Acid reflux, gastritis, peptic ulcer (Amlapitta)",
"Inflammatory bowel disease (Pittaja Grahani)",
"Skin disorders: acne, rosacea, urticaria, contact dermatitis",
"Liver disorders: hepatitis, jaundice (Kamala)",
"Hypertension, cardiovascular inflammation",
"Migraine (Pittaja Shiroroga) and fever (Pitta Jwara)",
"Bleeding disorders: epistaxis, heavy menstruation, haemorrhoids",
"Inflammatory arthritis, gout (Vatrakta)",
"Hyperthyroidism",
"Anger, irritability, conjunctivitis"]
for d in pitta_dis:
dp = pright.add_paragraph()
dr = dp.add_run(f"❖ {d}"); dr.font.size=Pt(26)
doc.add_paragraph("")
# ─── KAPHA ───
add_heading(doc, "KAPHA PRAKRITI — Earth + Water | Pacified by: Pungent, Bitter, Astringent Tastes | Light · Dry · Warm Foods", 1, "1A5276", 64)
k_tbl = doc.add_table(rows=1, cols=3)
k_tbl.style = "Table Grid"
k_tbl.alignment = WD_TABLE_ALIGNMENT.CENTER
hdr_cell(k_tbl.cell(0,0), "Food Category", "1A5276", size=34)
hdr_cell(k_tbl.cell(0,1), "FAVOUR (Pathya) ✅", "2E7D32", size=34)
hdr_cell(k_tbl.cell(0,2), "AVOID (Apathya) ❌", "C62828", size=34)
kapha_diet = [
("Grains", "Barley (best), millet, quinoa, amaranth, buckwheat, corn, rye, small basmati rice",
"Wheat, oats (heavy), white rice (excess), pasta, bread"),
("Legumes", "All legumes: moong (best), chana, black-eyed peas, masoor, kidney beans (moderate)",
"Soya flour, tofu (excess), urad dal"),
("Vegetables", "Kale, spinach, arugula, broccoli, cabbage, cauliflower, celery, mushrooms, onion, garlic, radish, eggplant",
"Sweet potato, potato, zucchini (excess), tomato (excess), cucumber"),
("Fruits", "Apples, pears, pomegranate, berries, cherries, mango (small), dry figs, prunes, raisins",
"Banana, avocado, dates (excess), coconut (excess), melon, grapes"),
("Dairy", "Low-fat milk (warm, spiced), ghee (small amounts only), diluted buttermilk",
"Full-fat milk, butter, cream, cheese, yoghurt (excess), ice cream"),
("Oils", "Mustard oil, flaxseed oil, sunflower oil — use minimally",
"Sesame, coconut, ghee (excess), olive oil (excess)"),
("Sweeteners", "Raw honey (best — do not heat), stevia",
"White sugar, jaggery, maple syrup, molasses"),
("Spices", "Dry ginger (best!), black pepper, pippali, turmeric, mustard, hing, cumin, cardamom, clove, cinnamon",
"Salt (excess), sweet spices in excess"),
("Beverages", "Warm water + dry ginger, honey-lemon (warm), herbal teas (ginger, tulsi, cinnamon, peppermint)",
"Cold water, cold beverages, alcohol, carbonated drinks, cold milk"),
("Nuts & Seeds", "Pumpkin seeds, sunflower seeds (moderate), flaxseeds",
"Almonds, cashews, walnuts, peanuts, pine nuts, coconut"),
]
for idx, (cat, fav, avd) in enumerate(kapha_diet):
row = k_tbl.add_row()
bg = "EBF5FB" if idx % 2 == 0 else "FFFFFF"
body_cell(row.cells[0], cat, bg, bold=True, size=28)
body_cell(row.cells[1], fav, bg, size=26)
body_cell(row.cells[2], avd, bg, size=26)
doc.add_paragraph("")
kd_tbl = doc.add_table(rows=1, cols=2)
kd_tbl.style = "Table Grid"
kd_tbl.alignment = WD_TABLE_ALIGNMENT.CENTER
kleft = kd_tbl.cell(0,0); shade(kleft, "EBF5FB")
kpp = kleft.paragraphs[0]; kpp.clear()
kpr = kpp.add_run("SAMPLE DAILY MEAL PLAN — KAPHA"); kpr.bold=True; kpr.font.size=Pt(36); kpr.font.color.rgb=RGBColor.from_string("1A5276")
kpp.alignment = WD_ALIGN_PARAGRAPH.CENTER
kapha_meals = [
("Early Morning (5:30–6 AM)", "Warm water + dry ginger + lemon + pinch black pepper"),
("Breakfast (8–9 AM)", "Light/optional: apple + cinnamon tea OR barley porridge + pumpkin seeds"),
("Mid-Morning (11 AM)", "Pomegranate juice or light herbal tea"),
("Lunch (12–1 PM)", "Barley/millet + moong dal + stir-fried greens + spicy rasam"),
("Evening Snack (4–5 PM)", "Ginger tea + roasted makhana (fox nuts) OR light fruit"),
("Dinner (6–7 PM)", "Wheat chapati (1–2) + cooked veg + thin lentil soup; eat lightly"),
("Bedtime (9 PM)", "Warm water + honey + dry ginger powder (no milk)"),
]
for time, food in kapha_meals:
mp = kleft.add_paragraph()
mr = mp.add_run(f"• {time}: "); mr.bold=True; mr.font.size=Pt(28); mr.font.color.rgb=RGBColor.from_string("1A5276")
mr2 = mp.add_run(food); mr2.font.size=Pt(26)
kright = kd_tbl.cell(0,1); shade(kright, "F0F8FF")
rkpp = kright.paragraphs[0]; rkpp.clear()
rkpr = rkpp.add_run("COMMON KAPHA DISORDERS"); rkpr.bold=True; rkpr.font.size=Pt(36); rkpr.font.color.rgb=RGBColor.from_string("1A5276")
rkpp.alignment = WD_ALIGN_PARAGRAPH.CENTER
kapha_dis = ["Obesity, overweight, slow metabolism",
"Type 2 Diabetes (Madhumeha / Prameha)",
"Hypothyroidism, sluggish thyroid",
"Respiratory: asthma, bronchitis, chronic cough, sinusitis",
"High cholesterol, atherosclerosis",
"Oedema, water retention",
"Lethargy, chronic fatigue, depression",
"Benign tumours, cysts, lipomas",
"Excess mucus, allergic rhinitis",
"PCOS (polycystic ovary syndrome)"]
for d in kapha_dis:
dp = kright.add_paragraph()
dr = dp.add_run(f"❖ {d}"); dr.font.size=Pt(26)
doc.add_paragraph("")
# ════════════════════════════════════════════════════
# QUICK COMPARISON TABLE (All 3 doshas)
# ════════════════════════════════════════════════════
add_heading(doc, "QUICK COMPARISON — VATA vs PITTA vs KAPHA DIET", 1, "1F3864", 64)
comp_data = [
("Best Taste", "Sweet, Sour, Salty", "Sweet, Bitter, Astringent", "Pungent, Bitter, Astringent"),
("Avoid Taste", "Bitter, Pungent, Astringent","Sour, Pungent, Salty", "Sweet, Sour, Salty"),
("Food Temperature", "Warm / Hot", "Cool / Room Temp", "Warm / Hot"),
("Food Quality", "Moist, Heavy, Oily", "Light, Cool, Dry", "Light, Dry, Warm"),
("Best Oil", "Sesame, Almond, Ghee", "Coconut, Sunflower, Ghee", "Mustard, Sunflower (minimal)"),
("Best Grain", "Rice, Wheat, Oats", "Basmati Rice, Wheat, Barley", "Barley, Millet, Quinoa"),
("Best Legume", "Moong Dal, Red Lentil", "Moong Dal, Chickpea", "Moong Dal, All Legumes"),
("Best Dairy", "Warm Milk, Ghee, Yoghurt", "Milk, Ghee", "Low-fat Milk, Thin Buttermilk"),
("Best Sweetener", "Jaggery, Dates, Honey", "Maple Syrup, Raw Sugar", "Raw Honey (unheated)"),
("Best Spice", "Ginger (fresh), Hing", "Coriander, Fennel, Turmeric", "Dry Ginger, Black Pepper, Trikatu"),
("Meal Frequency", "Regular; 3 meals + snacks", "Regular; do not skip meals", "2 meals; skip breakfast if possible"),
("Cooking Method", "Boiled, Steamed, Sauteed", "Steamed, Baked, Boiled", "Baked, Grilled, Dry-roasted"),
]
c_tbl = doc.add_table(rows=1, cols=4)
c_tbl.style = "Table Grid"
c_tbl.alignment = WD_TABLE_ALIGNMENT.CENTER
hdr_cell(c_tbl.cell(0,0), "Parameter", "1F3864", size=34)
hdr_cell(c_tbl.cell(0,1), "VATA", "8B4513", size=36)
hdr_cell(c_tbl.cell(0,2), "PITTA", "8B0000", size=36)
hdr_cell(c_tbl.cell(0,3), "KAPHA", "1A5276", size=36)
for idx, row_data in enumerate(comp_data):
row = c_tbl.add_row()
bg = "F5F5F5" if idx % 2 == 0 else "FFFFFF"
for j, val in enumerate(row_data):
shade(row.cells[j], bg)
p = row.cells[j].paragraphs[0]; p.clear()
r = p.add_run(val)
r.font.size = Pt(28)
r.bold = (j == 0)
doc.add_paragraph("")
# ════════════════════════════════════════════════════
# SATTVIC / RAJASIC / TAMASIC GUNAS
# ════════════════════════════════════════════════════
add_heading(doc, "FOOD CLASSIFICATION BY GUNA (Quality) — Sattvic · Rajasic · Tamasic", 1, "1F3864", 64)
g_tbl = doc.add_table(rows=1, cols=3)
g_tbl.style = "Table Grid"
g_tbl.alignment = WD_TABLE_ALIGNMENT.CENTER
hdr_cell(g_tbl.cell(0,0), "SATTVIC — Pure & Harmonious", "1F6B1F", size=36)
hdr_cell(g_tbl.cell(0,1), "RAJASIC — Stimulating", "B7770D", size=36)
hdr_cell(g_tbl.cell(0,2), "TAMASIC — Dull & Inert", "7B241C", size=36)
guna_row = g_tbl.add_row()
shade(guna_row.cells[0], "EAFAF1")
shade(guna_row.cells[1], "FEF9E7")
shade(guna_row.cells[2], "FDEDEC")
sattvic_items = ["Fresh fruits & vegetables", "Moong dal", "Milk, ghee, honey", "Seeds & fresh herbs", "Basmati rice, oats, wheat",
"Promotes: Clarity, Peace, Wisdom, Spiritual Growth"]
rajasic_items = ["Onion, garlic, coffee, tea", "Spicy food, eggs", "Meat, fish", "Excessive salt, sour foods", "Processed food",
"Promotes: Restlessness, Passion, Ambition (excess = anger)"]
tamasic_items = ["Stale / reheated food", "Alcohol, red meat", "Heavy processed food", "Junk food, frozen food", "Leftovers > 24 hours",
"Promotes: Lethargy, Dullness, Depression — AVOID"]
for items, cell, color in [(sattvic_items, guna_row.cells[0], "1F6B1F"),
(rajasic_items, guna_row.cells[1], "B7770D"),
(tamasic_items, guna_row.cells[2], "7B241C")]:
for item in items:
p = cell.add_paragraph()
r = p.add_run(f"• {item}")
r.font.size = Pt(27)
if item.startswith("Promotes"):
r.bold = True
r.font.color.rgb = RGBColor.from_string(color)
# Remove first empty paragraph
for cell in guna_row.cells:
if len(cell.paragraphs) > 1:
cell.paragraphs[0]._element.getparent().remove(cell.paragraphs[0]._element)
doc.add_paragraph("")
# ════════════════════════════════════════════════════
# VIRUDDHA AHARA
# ════════════════════════════════════════════════════
add_heading(doc, "VIRUDDHA AHARA — Incompatible Food Combinations to AVOID", 1, "7B241C", 64)
vh_tbl = doc.add_table(rows=1, cols=2)
vh_tbl.style = "Table Grid"
vh_tbl.alignment = WD_TABLE_ALIGNMENT.CENTER
hdr_cell(vh_tbl.cell(0,0), "Incompatible Combination", "7B241C", size=36)
hdr_cell(vh_tbl.cell(0,1), "Why to Avoid", "7B241C", size=36)
viruddha = [
("Milk + Fish", "Causes skin disorders, vitiligo, complex digestive imbalance"),
("Milk + Sour Fruits (lemon, orange)", "Curdles in stomach; causes toxic fermentation"),
("Honey + Ghee (equal quantities)", "Forms Ama (toxic metabolite) when heated together"),
("Milk + Salt", "Opposite qualities; causes Kapha accumulation"),
("Cold water after oily food","Solidifies fats; impairs digestion"),
("Fruit + Grain meal", "Fruit digests faster; causes fermentation"),
("Honey (heated above 40°C)","Becomes toxic (Ama-kara); NEVER cook honey"),
("Banana + Milk", "Heavy combination; causes mucus, Kapha aggravation"),
("Yoghurt at night", "Increases Kapha, Ama; best taken at noon with cumin"),
("Radish + Milk", "Skin disorders, digestive disturbance"),
]
for idx, (combo, reason) in enumerate(viruddha):
row = vh_tbl.add_row()
bg = "FFF0F0" if idx % 2 == 0 else "FFFFFF"
shade(row.cells[0], bg); p = row.cells[0].paragraphs[0]; p.clear()
r = p.add_run(combo); r.font.size=Pt(28); r.bold=True; r.font.color.rgb=RGBColor.from_string("7B241C")
shade(row.cells[1], bg); p2 = row.cells[1].paragraphs[0]; p2.clear()
r2 = p2.add_run(reason); r2.font.size=Pt(26)
doc.add_paragraph("")
# ════════════════════════════════════════════════════
# GENERAL AYURVEDIC DIETARY RULES
# ════════════════════════════════════════════════════
add_heading(doc, "GENERAL AYURVEDIC DIETARY RULES — Applicable to All Prakriti", 1, "1F3864", 64)
rules = [
"Eat freshly cooked food (Sattvic) — avoid reheated, stale, or frozen meals",
"Eat the largest meal at noon when Agni (digestive fire) is strongest",
"Do not eat until the previous meal is fully digested (minimum 3–4 hours gap)",
"Eat in a calm, mindful atmosphere — avoid eating under stress or distraction",
"Fill 1/3 stomach with food, 1/3 with water/liquids, and leave 1/3 empty (Mitahara principle)",
"Avoid incompatible food combinations (Viruddha Ahara): milk + fish, milk + sour fruits, heated honey + ghee",
"Sip warm water during meals; avoid cold water especially after oily food",
"Do not suppress natural urges (hunger, thirst) — eat when genuinely hungry",
"Seasonal eating (Ritucharya): adjust diet with the seasons",
"Agni (digestive fire) must be respected — eat according to your digestive capacity",
"Morning: light meal; Noon: heaviest meal; Evening: light meal",
"Chew food properly — 32 chews per mouthful (classical recommendation)",
]
rules_tbl = doc.add_table(rows=3, cols=4)
rules_tbl.style = "Table Grid"
rules_tbl.alignment = WD_TABLE_ALIGNMENT.CENTER
rule_colors = ["1F3864","2E86C1","1A5276","117A65","1E8449","7D3C98",
"B7770D","8B0000","8B4513","555555","333333","000000"]
for i, rule in enumerate(rules):
row_i = i // 4
col_i = i % 4
cell = rules_tbl.cell(row_i, col_i)
shade(cell, "F0F8FF" if (row_i + col_i) % 2 == 0 else "FFFFFF")
p = cell.paragraphs[0]; p.clear()
rn = p.add_run(f"{i+1}. {rule}")
rn.font.size = Pt(26)
rn.bold = False
doc.add_paragraph("")
# ════════════════════════════════════════════════════
# FOOTER
# ════════════════════════════════════════════════════
ft_tbl = doc.add_table(rows=1, cols=1)
ft_tbl.style = "Table Grid"
ft_cell = ft_tbl.cell(0,0)
shade(ft_cell, "1F3864")
fp = ft_cell.paragraphs[0]; fp.clear()
fr = fp.add_run("BNYS Naturopathy & Yogic Sciences | Ayurvedic Diet Chart | Reference: Charaka Samhita · Ashtanga Hridayam · Classical Ayurvedic Texts")
fr.font.size = Pt(32); fr.font.color.rgb = RGBColor.from_string("AED6F1"); fr.bold = True
fp.alignment = WD_ALIGN_PARAGRAPH.CENTER
fp2 = ft_cell.add_paragraph()
fr2 = fp2.add_run("For Educational & Clinical Naturopathy Practice | Individual assessment by a qualified Ayurvedic Vaidya is recommended")
fr2.font.size = Pt(26); fr2.font.color.rgb = RGBColor.from_string("85C1E9"); fr2.italic = True
fp2.alignment = WD_ALIGN_PARAGRAPH.CENTER
out = "/tmp/workspace/ayurvedic-diet-chart/Ayurvedic_Diet_FLEX_POSTER_5x5ft.docx"
doc.save(out)
print(f"Saved: {out}")
cd /tmp/workspace/ayurvedic-diet-chart && python3 create_flex_poster.py
ls -lh /tmp/workspace/ayurvedic-diet-chart/Ayurvedic_Diet_FLEX_POSTER_5x5ft.docx
Ayurvedic Diet FLEX POSTER 5x5ft
Word Document · DOCX
| Section | Content |
|---|---|
| Title Banner (Dark Navy) | "AYURVEDIC DIET CHART" in 120 pt + subtitle |
| Dosha Overview Table | Elements · Qualities · Season for all 3 |
| VATA Section (Brown) | Full diet chart (10 food categories) + Sample meal plan + 10 disorders |
| PITTA Section (Red) | Full diet chart + Sample meal plan + 11 disorders |
| KAPHA Section (Blue) | Full diet chart + Sample meal plan + 11 disorders |
| Quick Comparison Table | 12 parameters: Vata vs Pitta vs Kapha side by side |
| Gunas Table | Sattvic · Rajasic · Tamasic foods with effects |
| Viruddha Ahara (Maroon) | 10 incompatible food combinations + why to avoid |
| Dietary Rules Grid | 12 Ayurvedic dietary rules in a 3×4 grid |
| Footer Banner (Navy) | BNYS reference + classical text citations |
Both IF + Naturopathic fasting types AND Ayurvedic fasting (Upavasa, Ekadashi, Langhana) — as a PDF. Building now! make in doc form with 5*5 or make it accordingly to you as a chart or felx
~/ayurvedic-diet-chart/create_fasting_flex.py
from docx import Document
from docx.shared import Pt, Inches, RGBColor
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.enum.table import WD_TABLE_ALIGNMENT
from docx.oxml.ns import qn
from docx.oxml import OxmlElement
doc = Document()
section = doc.sections[0]
section.page_width = Inches(60)
section.page_height = Inches(60)
section.left_margin = Inches(1.2)
section.right_margin = Inches(1.2)
section.top_margin = Inches(1.0)
section.bottom_margin = Inches(1.0)
CONTENT_W = 57.6 # inches
normal = doc.styles["Normal"]
normal.font.name = "Calibri"
normal.font.size = Pt(28)
# ── Helpers ──
def shade(cell, hex_color):
tc = cell._tc
tcPr = tc.get_or_add_tcPr()
shd = OxmlElement("w:shd")
shd.set(qn("w:val"), "clear")
shd.set(qn("w:color"), "auto")
shd.set(qn("w:fill"), hex_color)
tcPr.append(shd)
def hcell(cell, text, bg, fg="FFFFFF", size=34, center=True):
shade(cell, bg)
p = cell.paragraphs[0]; p.clear()
r = p.add_run(text); r.bold = True
r.font.size = Pt(size)
r.font.color.rgb = RGBColor.from_string(fg)
p.alignment = WD_ALIGN_PARAGRAPH.CENTER if center else WD_ALIGN_PARAGRAPH.LEFT
def bcell(cell, text, bg="FFFFFF", bold=False, size=26, center=False, color="1a1a1a"):
shade(cell, bg)
p = cell.paragraphs[0]; p.clear()
r = p.add_run(text); r.bold = bold
r.font.size = Pt(size)
r.font.color.rgb = RGBColor.from_string(color)
p.alignment = WD_ALIGN_PARAGRAPH.CENTER if center else WD_ALIGN_PARAGRAPH.LEFT
def add_cell_lines(cell, lines, bg, size=26, bold_first=False, hdr_color=None):
shade(cell, bg)
first = True
for line in lines:
if first and len(cell.paragraphs[0].text) == 0:
p = cell.paragraphs[0]
else:
p = cell.add_paragraph()
p.clear()
r = p.add_run(line)
r.font.size = Pt(size)
if first and bold_first:
r.bold = True
if hdr_color:
r.font.color.rgb = RGBColor.from_string(hdr_color)
first = False
def section_banner(doc, text, sub, bg, fg="FFFFFF", fg2="DDDDDD"):
tbl = doc.add_table(rows=1, cols=1)
tbl.style = "Table Grid"
cell = tbl.cell(0,0)
shade(cell, bg)
p = cell.paragraphs[0]; p.clear()
r = p.add_run(text); r.bold=True; r.font.size=Pt(80)
r.font.color.rgb = RGBColor.from_string(fg)
p.alignment = WD_ALIGN_PARAGRAPH.CENTER
if sub:
p2 = cell.add_paragraph(); p2.clear()
r2 = p2.add_run(sub); r2.font.size=Pt(40)
r2.font.color.rgb = RGBColor.from_string(fg2)
p2.alignment = WD_ALIGN_PARAGRAPH.CENTER
doc.add_paragraph("")
def add_h(doc, text, color, size=60):
h = doc.add_heading(text, level=1)
for run in h.runs:
run.font.color.rgb = RGBColor.from_string(color)
run.font.size = Pt(size)
return h
def make_table(doc, headers, rows, col_widths, hdr_bg, alt_bg, row_size=26, hdr_size=32):
tbl = doc.add_table(rows=1, cols=len(headers))
tbl.style = "Table Grid"
tbl.alignment = WD_TABLE_ALIGNMENT.CENTER
for i, (h, bg) in enumerate(zip(headers, hdr_bg if isinstance(hdr_bg, list) else [hdr_bg]*len(headers))):
hcell(tbl.cell(0,i), h, bg, size=hdr_size)
for idx, row_data in enumerate(rows):
row = tbl.add_row()
bg = alt_bg if idx % 2 == 0 else "FFFFFF"
for j, val in enumerate(row_data):
bcell(row.cells[j], str(val), bg, bold=(j==0), size=row_size)
doc.add_paragraph("")
return tbl
# ════════════════════════════════════════════
# TITLE BANNER
# ════════════════════════════════════════════
tbl = doc.add_table(rows=1, cols=1)
tbl.style = "Table Grid"
c = tbl.cell(0,0); shade(c, "0D1B2A")
p = c.paragraphs[0]; p.clear()
r = p.add_run("FASTING CHART"); r.bold=True; r.font.size=Pt(140)
r.font.color.rgb = RGBColor.from_string("FFFFFF"); p.alignment = WD_ALIGN_PARAGRAPH.CENTER
p2 = c.add_paragraph(); p2.clear()
r2 = p2.add_run("Intermittent Fasting · Naturopathic Therapeutic Fasting · Ayurvedic Upavasa / Langhana")
r2.font.size=Pt(52); r2.font.color.rgb=RGBColor.from_string("AED6F1"); r2.bold=True
p2.alignment = WD_ALIGN_PARAGRAPH.CENTER
p3 = c.add_paragraph(); p3.clear()
r3 = p3.add_run("BNYS Food & Dietetics | Naturopathy Clinical Practice Reference")
r3.font.size=Pt(38); r3.font.color.rgb=RGBColor.from_string("85C1E9"); r3.italic=True
p3.alignment = WD_ALIGN_PARAGRAPH.CENTER
doc.add_paragraph("")
# ════════════════════════════════════════════
# OVERVIEW BAR — 3 categories
# ════════════════════════════════════════════
add_h(doc, "THE THREE APPROACHES TO FASTING", "1B4F72", size=64)
ov_tbl = doc.add_table(rows=1, cols=3)
ov_tbl.style = "Table Grid"
ov_data = [
("1A5276","INTERMITTENT FASTING (IF)",
["Time-restricted eating windows",
"Works daily as a lifestyle",
"Based on circadian biology + insulin control",
"Triggers autophagy, fat oxidation, gut microbiome diversity",
"Protocols: 12:12 · 14:10 · 16:8 · 18:6 · 20:4 · OMAD · 5:2 · ADF",
"Ayurvedic term: Langhana (lightening therapy)"]),
("1E8449","NATUROPATHIC FASTING",
["Structured therapeutic food restriction",
"1 day to 21 days under supervision",
"Types: Fruit fast · Juice fast · Mono fast · Water fast · Eliminative diet",
"Follows 3 phases: Preparation → Fasting → Breaking fast (most critical)",
"Promotes deep detox, gut rest, organ healing",
"Ayurvedic term: Shodana (purification)"]),
("6C3483","AYURVEDIC FASTING — UPAVASA",
["Dosha-based, lunar-calendar, seasonal fasting",
"Prescribed per Prakriti (Vata / Pitta / Kapha)",
"Types: Upavasa · Laghu Ahara · Yava · Pachana · Langhana",
"Calendar fasts: Ekadashi · Purnima · Navratri · Shravan Maas · Pradosh",
"Rekindles Agni, clears Ama, balances Doshas",
"Ayurvedic term: Upavasa (staying near God / self)"]),
]
for i, (bg, title, items) in enumerate(ov_data):
cell = ov_tbl.cell(0,i)
shade(cell, bg)
p = cell.paragraphs[0]; p.clear()
r = p.add_run(title); r.bold=True; r.font.size=Pt(42)
r.font.color.rgb = RGBColor.from_string("FFFFFF")
p.alignment = WD_ALIGN_PARAGRAPH.CENTER
for item in items:
pp = cell.add_paragraph()
rr = pp.add_run(f"• {item}"); rr.font.size=Pt(30)
rr.font.color.rgb = RGBColor.from_string("E8F8F5")
doc.add_paragraph("")
# ════════════════════════════════════════════
# PART A — INTERMITTENT FASTING
# ════════════════════════════════════════════
section_banner(doc, "PART A — INTERMITTENT FASTING (IF)",
"Time-restricted eating · Daily lifestyle approach · Circadian biology",
"1A5276")
# A1 — Protocols table
add_h(doc, "A1. IF Protocols — Comparison Chart", "1A5276", 56)
if_tbl = doc.add_table(rows=1, cols=6)
if_tbl.style = "Table Grid"
if_tbl.alignment = WD_TABLE_ALIGNMENT.CENTER
for i, h in enumerate(["Protocol","Eating Window","Fasting Window","How It Works","Best For","Difficulty"]):
hcell(if_tbl.cell(0,i), h, "1A5276", size=32)
if_rows = [
("12:12 (Beginners)", "12 hours (7 AM–7 PM)", "12 hours overnight", "Gut rest overnight; circadian sync", "Beginners, maintenance, gut health", "★☆☆☆☆ Very Easy"),
("14:10", "10 hours (8 AM–6 PM)", "14 hours", "Mild fat oxidation; improved overnight digestion", "Beginners stepping up; metabolic syndrome", "★★☆☆☆ Easy"),
("16:8 ★ Most Popular", "8 hours (10 AM–6 PM)", "16 hours", "Insulin drop; significant autophagy onset; gut flora", "Weight, T2DM, IBS, inflammation", "★★★☆☆ Moderate"),
("18:6", "6 hours (12 PM–6 PM)", "18 hours", "Deeper ketosis; enhanced fat burn + autophagy", "Advanced IF, PCOS, obesity, NAFLD", "★★★★☆ Moderate-Hard"),
("20:4 (Warrior Diet)", "4 hours (4–8 PM)", "20 hours", "One main meal; maximum autophagy; deep ketosis", "Experienced fasters; quick fat loss", "★★★★☆ Hard"),
("OMAD", "1 meal (~1 hr window)", "23 hours", "Extreme fasting window; strong autophagy", "Short-term therapeutic; supervised", "★★★★★ Very Hard"),
("5:2 Diet", "Normal 5 days", "500–600 kcal ×2 days/week","Periodic caloric restriction; metabolic reset", "Weight loss; T2DM prevention; longevity", "★★★☆☆ Moderate"),
("Alternate Day (ADF)", "Normal one day", "Fast or <500 kcal next day","Metabolic flexibility; mimics ancestral eating", "Obesity; metabolic syndrome; gut dysbiosis", "★★★★☆ Hard"),
("Extended 24 hr Fast", "1 meal after 24 hr", "24 hours full fast", "Full glycogen depletion; gut microbiome reset", "Monthly gut reset; anti-inflammatory", "★★★★☆ Hard"),
]
for idx, row_data in enumerate(if_rows):
row = if_tbl.add_row()
bg = "D6EAF8" if idx % 2 == 0 else "FFFFFF"
for j, val in enumerate(row_data):
bcell(row.cells[j], val, bg, bold=(j==0), size=28)
doc.add_paragraph("")
# A2 — What to consume
add_h(doc, "A2. What to Consume During the Fasting Window", "1A5276", 52)
fw_tbl = doc.add_table(rows=1, cols=3)
fw_tbl.style = "Table Grid"
fw_tbl.alignment = WD_TABLE_ALIGNMENT.CENTER
for i,h in enumerate(["Item","Allowed?","Notes"]):
hcell(fw_tbl.cell(0,i), h, "1A5276", size=32)
fw_rows = [
("Plain warm water", "✅ YES — Essential", "Breaks no fast; hydration; detox support"),
("Black coffee (no milk/sugar)", "✅ YES — with caution", "No calories; suppresses hunger; avoid if acidity"),
("Plain green / herbal tea", "✅ YES", "Zero calories; antioxidant; gut-friendly"),
("Lemon water (plain)", "✅ YES", "Minimal calories; alkalising; digestive support"),
("Electrolyte water (no sugar)", "✅ YES", "Prevents electrolyte loss in extended fasts"),
("Apple cider vinegar (1 tsp)", "✅ YES", "Helps blood sugar; trace caloric impact"),
("Milk / dairy / juice", "❌ NO", "Calories + lactose/sugar trigger insulin response"),
("Bone broth / veg broth", "⚠️ GREY ZONE", "Used in extended therapeutic fasts; breaks strict IF"),
("Chewing gum (sugar-free)", "⚠️ GREY ZONE", "May trigger cephalic phase insulin response"),
]
for idx, row_data in enumerate(fw_rows):
row = fw_tbl.add_row()
bg = "D6EAF8" if idx % 2 == 0 else "FFFFFF"
for j,val in enumerate(row_data):
bcell(row.cells[j], val, bg, bold=(j==0), size=28)
doc.add_paragraph("")
# A3 — Sample 16:8 schedule
add_h(doc, "A3. Sample 16:8 Daily Schedule", "1A5276", 52)
s168_tbl = doc.add_table(rows=1, cols=3)
s168_tbl.style = "Table Grid"
s168_tbl.alignment = WD_TABLE_ALIGNMENT.CENTER
for i,h in enumerate(["Time","Phase","Food / Action"]):
hcell(s168_tbl.cell(0,i), h, "1A5276", size=32)
s168_rows = [
("6:00 AM", "Fasting Window", "Warm water with lemon"),
("7:00 AM", "Fasting Window", "Black coffee or green tea (plain)"),
("9:00 AM", "Fasting Window", "Herbal tea (tulsi, ginger, fennel) — optional"),
("10:00 AM", "EATING WINDOW OPENS ✅", "Break fast: banana + soaked almonds + yoghurt"),
("12:30–1:00 PM", "Eating Window — Main Meal","Brown rice / roti + dal + sabzi + salad + lassi"),
("3:30 PM", "Eating Window", "Light snack: fruit + nuts OR dark chocolate + green tea"),
("5:30–6:00 PM", "EATING WINDOW CLOSES 🔒", "Last meal: roti + sabzi + light soup"),
("6 PM onwards", "Fasting Window", "Water, herbal tea, plain black coffee only"),
("9:30 PM", "Fasting Window", "Warm water or chamomile tea before bed"),
]
for idx, row_data in enumerate(s168_rows):
row = s168_tbl.add_row()
bg = "D6EAF8" if idx % 2 == 0 else "FFFFFF"
for j,val in enumerate(row_data):
bcell(row.cells[j], val, bg, bold=(j==0 or "OPENS" in val or "CLOSES" in val), size=28)
doc.add_paragraph("")
# A4 — Benefits + Contraindications (side by side)
add_h(doc, "A4. Benefits & Contraindications of IF", "1A5276", 52)
bc_tbl = doc.add_table(rows=1, cols=2)
bc_tbl.style = "Table Grid"
bc_tbl.alignment = WD_TABLE_ALIGNMENT.CENTER
bleft = bc_tbl.cell(0,0); shade(bleft, "D6EAF8")
p = bleft.paragraphs[0]; p.clear()
r = p.add_run("HEALTH BENEFITS OF IF"); r.bold=True; r.font.size=Pt(38)
r.font.color.rgb = RGBColor.from_string("1A5276"); p.alignment = WD_ALIGN_PARAGRAPH.CENTER
benefits = [
"Weight loss / fat reduction — insulin drop → fat oxidation",
"Improved insulin sensitivity — glycogen depletion → enhanced glucose uptake",
"Gut microbiome diversity — fasting promotes Akkermansia, reduces pathobionts",
"Autophagy (cellular clean-up) — mTOR inhibition during fasting window",
"Reduced inflammation — lower IL-6, TNF-α; ketones are anti-inflammatory",
"Improved sleep quality — circadian alignment with eating window",
"Cognitive clarity / focus — ketones as brain fuel; BDNF increase",
"Longevity / anti-ageing — Sirtuin activation; telomere preservation",
]
for b in benefits:
pp = bleft.add_paragraph()
rr = pp.add_run(f"✓ {b}"); rr.font.size=Pt(28)
bright = bc_tbl.cell(0,1); shade(bright, "FADBD8")
p2 = bright.paragraphs[0]; p2.clear()
r2 = p2.add_run("CONTRAINDICATIONS — WHO SHOULD NOT FAST"); r2.bold=True; r2.font.size=Pt(38)
r2.font.color.rgb = RGBColor.from_string("922B21"); p2.alignment = WD_ALIGN_PARAGRAPH.CENTER
contras = [
"Pregnancy & breastfeeding — all prolonged fasting",
"Type 1 Diabetes — requires strict endocrinologist supervision",
"Underweight (BMI < 18.5) — all prolonged fasting",
"Children under 18 — therapeutic fasting not recommended",
"Active eating disorders — any fasting type",
"Active IBD flare — extended water or juice fasting",
"Severe anaemia — all prolonged fasting",
"Pre / post surgery — complete rest + nourishment required",
"Chronic stress / adrenal fatigue — 12:12 maximum",
"Medications for blood sugar/BP — monitor closely; supervised only",
]
for c in contras:
pp = bright.add_paragraph()
rr = pp.add_run(f"✗ {c}"); rr.font.size=Pt(28)
doc.add_paragraph("")
# ════════════════════════════════════════════
# PART B — NATUROPATHIC FASTING
# ════════════════════════════════════════════
section_banner(doc, "PART B — NATUROPATHIC THERAPEUTIC FASTING",
"Juice · Fruit · Water · Eliminative · Mono Diet Fasting | 3-Phase Protocol",
"1E8449")
add_h(doc, "B1. Types of Naturopathic Fasting", "1E8449", 56)
nf_tbl = doc.add_table(rows=1, cols=5)
nf_tbl.style = "Table Grid"
nf_tbl.alignment = WD_TABLE_ALIGNMENT.CENTER
for i,h in enumerate(["Type","What is Allowed","Duration","Indication","Supervision"]):
hcell(nf_tbl.cell(0,i), h, "1E8449", size=32)
nf_rows = [
("Eliminative Diet\n(Pre-fasting prep)", "Fruits, raw veg, juices, coconut water only", "2–3 days before fast", "Prepare digestive system; reduce toxic load", "Self / guided"),
("Fruit Fast", "Only fresh fruits; water", "1–3 days", "Mild detox, digestive rest, fever, cold onset", "Self with guidance"),
("Juice Fast ★", "Fresh veg + fruit juices every 2–3 hrs; water","3–7 days", "Liver detox, obesity, skin disorders, hypertension","Practitioner supervised"),
("Mono Diet Fast", "Single food only (watermelon / grapes / milk)","1–5 days", "Specific organ support; traditional naturo method", "Supervised"),
("Semi-Fast", "2 light meals of raw/cooked veg + dal only", "7–14 days", "Chronic disease, weight loss, autoimmune", "Supervised"),
("Complete Water Fast", "Only plain warm water", "1–3 days max", "Deepest detox; acute illness; gut rest; spiritual", "Strict medical supervision"),
("Dry Fast\n(Religious only)", "No food AND no water", "12–24 hrs; religious only", "Navratri, Ekadashi, Vrat only — clinical caution", "Avoid in clinical practice"),
]
for idx, row_data in enumerate(nf_rows):
row = nf_tbl.add_row()
bg = "D5F5E3" if idx % 2 == 0 else "FFFFFF"
for j,val in enumerate(row_data):
bcell(row.cells[j], val, bg, bold=(j==0), size=28)
doc.add_paragraph("")
# B2 — 3 Phase Protocol (3-column block)
add_h(doc, "B2. Naturopathic Fasting — 3-Phase Protocol (Most Important)", "1E8449", 52)
phase_tbl = doc.add_table(rows=1, cols=3)
phase_tbl.style = "Table Grid"
phase_tbl.alignment = WD_TABLE_ALIGNMENT.CENTER
phases = [
("1E8449", "PHASE 1 — PREPARATION\n(Eliminative Diet · Days 1–3 before fast)",
["Stop meat, dairy, fried, refined, processed foods",
"Eat only: fruits, raw vegetables, fresh juices, coconut water",
"Take warm water throughout the day",
"Reduce solid food gradually each day",
"Avoid caffeine, alcohol, tobacco — withdrawal symptoms expected",
"PURPOSE: Prepare digestive system; reduce Ama (toxic load); kindle Agni gently"]),
("B7770D", "PHASE 2 — ACTIVE FASTING\n(Juice / Water / Fruit Fast · 1–7 days)",
["Complete or partial food restriction",
"Complete physical rest; minimal activity",
"Light yoga, sun-bathing, meditation permitted",
"Water fast: warm water only throughout day",
"Juice fast: fresh juices every 2–3 hours",
"HEALING CRISIS expected Days 1–3: headache, fatigue, coated tongue, rashes — NORMAL SIGNS OF DETOX",
"PURPOSE: Allow deep cellular detoxification and organ rest"]),
("922B21", "PHASE 3 — BREAKING THE FAST\n(MOST CRITICAL PHASE · Equal days to fasting)",
["NEVER break with heavy, fried, or grain-based food",
"Day 1: Fresh fruit juice / coconut water only",
"Day 2: Soft fruits — banana, papaya, ripe mango",
"Day 3: Moong dal soup (thin) + khichdi",
"Day 4+: Gradually return to normal naturopathic diet",
"⚠ Refeeding syndrome risk if broken too quickly with heavy food",
"PURPOSE: Rebuild digestive fire; repopulate gut; avoid metabolic shock"]),
]
for i, (bg, title, items) in enumerate(phases):
cell = phase_tbl.cell(0,i)
shade(cell, bg)
p = cell.paragraphs[0]; p.clear()
r = p.add_run(title); r.bold=True; r.font.size=Pt(38)
r.font.color.rgb = RGBColor.from_string("FFFFFF"); p.alignment = WD_ALIGN_PARAGRAPH.CENTER
for item in items:
pp = cell.add_paragraph()
rr = pp.add_run(f"• {item}"); rr.font.size=Pt(28)
rr.font.color.rgb = RGBColor.from_string("FDFEFE")
doc.add_paragraph("")
# B3 — 7-day juice fast
add_h(doc, "B3. Sample 7-Day Juice Fast Schedule", "1E8449", 52)
jf_tbl = doc.add_table(rows=1, cols=5)
jf_tbl.style = "Table Grid"
jf_tbl.alignment = WD_TABLE_ALIGNMENT.CENTER
for i,h in enumerate(["Day","Morning","Mid-Morning / Afternoon","Evening","Night"]):
hcell(jf_tbl.cell(0,i), h, "1E8449", size=32)
jf_rows = [
("Day 1 — Prep", "Warm water + lemon", "Mixed fruit bowl + coconut water", "Vegetable soup (light)", "Warm water + honey"),
("Day 2 — Prep", "Warm lemon water", "Papaya + watermelon", "Raw vegetable salad", "Herbal tea"),
("Day 3 — Prep", "Warm water + ginger", "Apple + carrot juice", "Cucumber + lemon juice", "Warm water"),
("Day 4 — Fast ★", "Warm water", "Carrot-beetroot juice", "Mixed veg juice (spinach + cucumber + ginger)", "Warm water"),
("Day 5 — Fast", "Warm lemon water", "Pomegranate juice", "Cucumber-celery juice", "Warm water + honey"),
("Day 6 — Fast", "Warm water + ginger", "Carrot-apple-ginger juice", "Amla + water diluted", "Fennel herbal tea"),
("Day 7 — Fast", "Warm water", "Coconut water", "Thin vegetable broth", "Warm water"),
("Day 8 — Break fast","Warm water + lemon", "Fresh fruit juice ONLY", "Soft fruit (banana, papaya)","Warm water"),
("Day 9 — Reintro", "Warm water + ginger", "Soft fruits", "Moong dal soup (thin)", "Warm water"),
("Day 10 — Soothing", "Warm water", "Fresh fruit", "Khichdi (soft moong + rice)","Haldi doodh (light)"),
]
for idx, row_data in enumerate(jf_rows):
row = jf_tbl.add_row()
bg = "D5F5E3" if idx % 2 == 0 else "FFFFFF"
for j,val in enumerate(row_data):
bcell(row.cells[j], val, bg, bold=(j==0), size=27)
doc.add_paragraph("")
# B4 — Healing Crisis
add_h(doc, "B4. Healing Crisis (Herxheimer Reaction) — What to Expect During Fast", "1E8449", 52)
hc_tbl = doc.add_table(rows=1, cols=4)
hc_tbl.style = "Table Grid"
hc_tbl.alignment = WD_TABLE_ALIGNMENT.CENTER
for i,h in enumerate(["Symptom","Cause","Management","Stop Fast If"]):
hcell(hc_tbl.cell(0,i), h, "1E8449", size=32)
hc_rows = [
("Headache (Days 1–3)", "Caffeine withdrawal + toxin mobilisation", "Extra warm water; rest; cold compress", "Severe migraine not resolving"),
("Fatigue / weakness", "Shift from glucose to ketone metabolism", "Complete bed rest; no strenuous activity", "Extreme weakness / fainting"),
("Nausea, mild vomiting", "Liver/gut detox; bile mobilisation", "Ginger tea; warm water; rest", "Persistent vomiting"),
("Bad breath / coated tongue", "Toxin excretion through mucous membranes", "Tongue scraping; warm saline gargle", "Not a reason to stop — good sign"),
("Skin rashes / eruptions", "Skin acting as elimination organ", "Tepid bath; no suppression with creams", "Not a reason to stop — a good sign"),
("Low BP / dizziness", "Reduced salt + fluid", "Electrolyte water; slow position changes", "Persistent severe hypotension"),
("Blood sugar drop", "Restricted caloric intake", "Fruit juice immediately; monitor glucose", "Glucose < 60 mg/dL"),
]
for idx, row_data in enumerate(hc_rows):
row = hc_tbl.add_row()
bg = "D5F5E3" if idx % 2 == 0 else "FFFFFF"
for j,val in enumerate(row_data):
bcell(row.cells[j], val, bg, bold=(j==0), size=27)
doc.add_paragraph("")
# ════════════════════════════════════════════
# PART C — AYURVEDIC FASTING
# ════════════════════════════════════════════
section_banner(doc, "PART C — AYURVEDIC FASTING (UPAVASA / LANGHANA)",
"Upavasa · Ekadashi · Navratri · Pradosh · Langhana · Dosha-Specific Fasting",
"6C3483")
add_h(doc, "C1. Langhana — Lightening Therapies in Ayurveda", "6C3483", 56)
lang_tbl = doc.add_table(rows=1, cols=5)
lang_tbl.style = "Table Grid"
lang_tbl.alignment = WD_TABLE_ALIGNMENT.CENTER
for i,h in enumerate(["Langhana Type","Method","Dosha Indication","Duration","Key Effect"]):
hcell(lang_tbl.cell(0,i), h, "6C3483", size=32)
lang_rows = [
("Upavasa (Complete fast)", "No food; warm water only or very light fluids", "Kapha + Ama + fever; obesity", "1–3 days", "Clears Ama; kindles Agni; reduces Kapha"),
("Laghu Ahara (Light diet)", "Easily digestible foods only: moong khichdi, fruit","All doshas; mild Ama", "3–7 days", "Gentle Agni-kindling without full starvation"),
("Yava (Barley fast)", "Only barley water (Yavagu) or barley preparations","Kapha, Pitta; metabolic + diabetes", "5–21 days", "Deepana-pachana; anti-diabetic; reduces Kapha"),
("Pachana Karma", "Digestive herbs (Trikatu, Haritaki) + fasting", "Ama-laden; IBS; poor digestion", "Till Ama clears","Burns Ama without full fasting"),
("Vyayama (Exercise fast)", "Intense exercise to reduce excess Dosha", "Kapha; obesity", "Daily", "Reduces Kapha without food restriction"),
("Pipasanigraha (Thirst ctrl)", "Restricted fluid intake", "Kapha excess; oedema; obesity", "Supervised", "Reduces heaviness; dries excess Kapha"),
("Atapa Sevana (Sun therapy)", "Sunbathing + light diet", "Kapha; cold + damp conditions", "30–60 min/day","Dries Kapha; warms body; Vitamin D"),
]
for idx, row_data in enumerate(lang_rows):
row = lang_tbl.add_row()
bg = "E8DAEF" if idx % 2 == 0 else "FFFFFF"
for j,val in enumerate(row_data):
bcell(row.cells[j], val, bg, bold=(j==0), size=27)
doc.add_paragraph("")
# C2 — Dosha-specific
add_h(doc, "C2. Dosha-Specific Fasting Guidelines", "6C3483", 56)
dosha_tbl = doc.add_table(rows=1, cols=5)
dosha_tbl.style = "Table Grid"
dosha_tbl.alignment = WD_TABLE_ALIGNMENT.CENTER
hcell(dosha_tbl.cell(0,0), "Dosha / Prakriti", "8B4513", size=34)
hcell(dosha_tbl.cell(0,1), "Fasting Type", "6C3483", size=34)
hcell(dosha_tbl.cell(0,2), "Allowed During Fast", "1E8449", size=34)
hcell(dosha_tbl.cell(0,3), "Duration / IF Protocol","1A5276", size=34)
hcell(dosha_tbl.cell(0,4), "Break Fast With", "B7770D", size=34)
dosha_rows = [
("VATA — Air + Ether",
"Laghu (Light) fast ONLY\nNO prolonged fasting — severely aggravates Vata",
"Warm water, ginger+fennel tea, diluted fresh juice, warm moong dal water",
"Max 1 day only\nIF: 12:12 or 14:10 maximum\nNever OMAD or water fast",
"Warm moong khichdi + ghee; warm milk + cardamom"),
("PITTA — Fire + Water",
"Moderate fast — juice or fruit fast\nIF: 16:8 is ideal",
"Coconut water, pomegranate juice, cool herbal teas (coriander, fennel, mint), sweet fruits",
"3–5 day juice fast tolerated\nIF: 16:8 daily; avoid skipping meals entirely",
"Sweet fruits (mango, pomegranate, grapes); cool milk + saffron; NOT spicy food"),
("KAPHA — Earth + Water",
"BEST dosha for fasting — ALL types beneficial\nIF: 18:6 or OMAD ideal",
"Warm water + dry ginger + black pepper + lemon; herbal teas; thin veg broth",
"Up to 7 days juice/water fast\nIF: 18:6 or 20:4 daily; skip breakfast always",
"Warm veg soup + ginger; thin barley water; NOT banana/dairy/sweets — will negate benefit"),
]
for idx, row_data in enumerate(dosha_rows):
row = dosha_tbl.add_row()
bgs = ["FDF6EC","FFF3F3","EBF5FB"]
for j,val in enumerate(row_data):
bcell(row.cells[j], val, bgs[idx], bold=(j==0), size=27)
doc.add_paragraph("")
# C3 — Lunar Calendar fasting
add_h(doc, "C3. Ayurvedic Calendar & Lunar-Based Fasting (Vrata)", "6C3483", 56)
lunar_tbl = doc.add_table(rows=1, cols=5)
lunar_tbl.style = "Table Grid"
lunar_tbl.alignment = WD_TABLE_ALIGNMENT.CENTER
for i,h in enumerate(["Fast / Vrata","Day / Occasion","Fasting Rules","Physiological Benefit","Tradition"]):
hcell(lunar_tbl.cell(0,i), h, "6C3483", size=32)
lunar_rows = [
("Ekadashi ★★★", "11th day of each lunar fortnight\n(2× per month)", "No grains (rice, wheat, pulses)\nFruits, roots, dairy, water allowed\nSome observe complete water fast", "Gut rest; reduces Ama; digestive reset; microbiome diversity; lunar tidal pull aligns with gut fluids", "Vishnu; pan-Hindu; widely practiced"),
("Purnima (Full Moon)", "Full moon day each month", "Light diet / fruit fast; no grains; reduce heavy food", "Kapha naturally high on full moon; fasting counters excess fluid retention", "Shiva, Vishnu; lunar worship"),
("Amavasya (New Moon)", "New moon day each month", "Light diet; pitta-reducing foods; fruits and water", "Vata elevated on new moon; light diet stabilises Vata", "Ancestors (Pitru); Shiva"),
("Pradosh Fast", "13th lunar day (Trayodashi)", "Fasting till evening; fruits + water; meal after sunset","Combined Ekadashi-type benefit applied bi-monthly", "Shiva"),
("Navratri ★★★", "9 nights × 2/year\n(Ashwin + Chaitra)", "No grains; Sabudana, kuttu, fruits, milk, sendha namak only", "Seasonal detox at equinox; gut rest; Kapha/Pitta purging at seasonal transition", "Durga / Devi; pan-India"),
("Monday Fast (Somvar)","Every Monday", "One meal a day or fruit-only; no meat; sattvic diet", "Weekly gut rest; reduces Pitta + Kapha; spiritual calm", "Shiva"),
("Saturday Fast", "Every Saturday", "Restricted food; sesame seeds + water; oil-free", "Vata + nervous system regulation", "Shani; North + South India"),
("Shravan Maas", "Entire monsoon month (July–Aug)", "No green leafy veg (insect risk); vegetarian; sattvic", "Microbiome protection in monsoon; reduces Pitta aggravated in summer", "Shiva; widespread"),
]
for idx, row_data in enumerate(lunar_rows):
row = lunar_tbl.add_row()
bg = "E8DAEF" if idx % 2 == 0 else "FFFFFF"
for j,val in enumerate(row_data):
bcell(row.cells[j], val, bg, bold=(j==0), size=26)
doc.add_paragraph("")
# C4 — Ekadashi food guide
add_h(doc, "C4. Ekadashi Fast — Detailed Food Guide", "6C3483", 52)
ek_tbl = doc.add_table(rows=1, cols=4)
ek_tbl.style = "Table Grid"
ek_tbl.alignment = WD_TABLE_ALIGNMENT.CENTER
for i,h in enumerate(["Category","ALLOWED on Ekadashi ✅","AVOID on Ekadashi ❌","Reason"]):
hcell(ek_tbl.cell(0,i), h, "6C3483", size=32)
ek_rows = [
("Grains", "None on strict Ekadashi", "Rice, wheat, all grains and pulses", "Rest digestive tract; grains are heavy (Guru)"),
("Fruits", "All fresh fruits: banana, mango, papaya, apple, grapes, pomegranate, coconut","Dried unsoaked fruits (excess)", "Light, easily digestible; pure sattvic energy"),
("Vegetables", "Potato, sweet potato, raw banana, yam, sabudana (tapioca)", "Onion, garlic (traditional); green leafy", "Sattvic only; rajasic/tamasic items restricted"),
("Dairy", "Milk, curd, ghee, paneer, butter (unsalted)", "Commercial processed cheese, sour cream", "Dairy is sattvic; pure, light energy source"),
("Salt", "Sendha namak (rock / pink Himalayan salt) ONLY", "Table salt (iodised), sea salt", "Rock salt is considered pure in Ayurvedic tradition"),
("Nuts & Seeds","Almonds, cashews, walnuts, sesame seeds, pumpkin seeds, makhana","Peanuts (considered pulse in some regions)", "Light, nourishing energy during fast"),
("Beverages", "Water, coconut water, fresh fruit juices, milk", "Tea, coffee, alcohol", "Pure sattvic liquids only; mental clarity"),
("Special foods","Sabudana khichdi (sendha namak), makhana kheer, singhara atta rotis, rajgira ladoo","Any grain-based food", "Traditional non-grain substitutes — allowed"),
]
for idx, row_data in enumerate(ek_rows):
row = ek_tbl.add_row()
bg = "E8DAEF" if idx % 2 == 0 else "FFFFFF"
for j,val in enumerate(row_data):
bcell(row.cells[j], val, bg, bold=(j==0), size=26)
doc.add_paragraph("")
# ════════════════════════════════════════════
# PART D — COMPARISON + TIPS
# ════════════════════════════════════════════
section_banner(doc, "PART D — COMPARISON & UNIVERSAL FASTING TIPS",
"IF vs Naturopathic vs Ayurvedic | Safety Guidelines",
"B7770D")
add_h(doc, "D1. IF vs Naturopathic vs Ayurvedic Fasting — Quick Comparison", "B7770D", 56)
comp_tbl = doc.add_table(rows=1, cols=4)
comp_tbl.style = "Table Grid"
comp_tbl.alignment = WD_TABLE_ALIGNMENT.CENTER
hcell(comp_tbl.cell(0,0), "Parameter", "1B4F72", size=32)
hcell(comp_tbl.cell(0,1), "INTERMITTENT FASTING", "1A5276", size=32)
hcell(comp_tbl.cell(0,2), "NATUROPATHIC FASTING", "1E8449", size=32)
hcell(comp_tbl.cell(0,3), "AYURVEDIC FASTING", "6C3483", size=32)
comp_rows = [
("Approach", "Time-restricted eating windows", "Complete food restriction (juice/water)", "Dosha-based; lunar/seasonal; spiritual"),
("Duration", "Daily (ongoing lifestyle)", "1 day to 21 days", "1 day (weekly) to 9 days (Navratri)"),
("Best For", "Weight, metabolic health, gut flora", "Detox, chronic disease, acute illness", "Dosha balance, Ama clearance, spiritual growth"),
("Supervision", "Self-guided (most protocols)", "Practitioner supervised for extended fasts", "Traditional / self-guided for calendar fasts"),
("Food Allowed", "Nothing caloric during fasting window", "Juices, water, broth (type-dependent)", "Fruits, roots, dairy, sendha namak, sattvic"),
("Science Basis", "Autophagy, insulin, circadian biology", "Detoxification, elimination, gut rest", "Dosha theory, Agni-Ama balance, lunar biology"),
("Ayurvedic Name", "Langhana (lightening)", "Shodana (purification)", "Upavasa (nearness to God/self) + Agni kindling"),
("Contraindicated", "Pregnancy, T1DM, underweight, eating disorders","Same + severe chronic disease unsupervised", "Vata types need modification; not restrictive for healthy"),
]
for idx, row_data in enumerate(comp_rows):
row = comp_tbl.add_row()
bg = "FEF9E7" if idx % 2 == 0 else "FFFFFF"
for j,val in enumerate(row_data):
bcell(row.cells[j], val, bg, bold=(j==0), size=27)
doc.add_paragraph("")
# Universal tips grid
add_h(doc, "D2. Universal Fasting Tips for Safe Practice", "B7770D", 52)
tips = [
"Start with 12:12 and progress gradually → 14:10 → 16:8 over weeks",
"Drink adequate warm water throughout — most fasting discomfort is actually dehydration",
"First 2–3 days of any new fast are hardest; symptoms ease by Day 4 (healing crisis is normal)",
"Breaking the fast is as important as the fast itself — NEVER break with heavy/fried food",
"Add a pinch of pink Himalayan salt + lemon in water during extended fasts for electrolytes",
"Vata types: warm nourishing foods when breaking fast; limit fasting duration strictly",
"Pitta types: avoid fasting during peak summer; break fast with cooling sweet foods",
"Kapha types: fasting is most beneficial — skipping breakfast daily is therapeutic",
"Ekadashi + Navratri fasts provide natural bi-monthly gut reset aligned with lunar cycles",
"Avoid vigorous exercise during extended fasts (>16 hrs); light yoga and walking are ideal",
"Distract yourself during fasting windows — light activity, reading, yoga, meditation help",
"Always consult a BNYS / Ayurvedic Vaidya before recommending extended fasting to patients",
]
tips_tbl = doc.add_table(rows=3, cols=4)
tips_tbl.style = "Table Grid"
tips_tbl.alignment = WD_TABLE_ALIGNMENT.CENTER
tip_colors = ["1B4F72","1A5276","1E8449","6C3483","B7770D","922B21",
"117A65","555555","7D6608","333333","000000","1B4F72"]
for i, tip in enumerate(tips):
row_i = i // 4
col_i = i % 4
cell = tips_tbl.cell(row_i, col_i)
shade(cell, "FEF9E7" if (row_i + col_i) % 2 == 0 else "FFFDE7")
p = cell.paragraphs[0]; p.clear()
rn = p.add_run(f"{i+1}. {tip}")
rn.font.size = Pt(27)
doc.add_paragraph("")
# ════════════════════════════════════════════
# FOOTER BANNER
# ════════════════════════════════════════════
ft_tbl = doc.add_table(rows=1, cols=1)
ft_tbl.style = "Table Grid"
ft_cell = ft_tbl.cell(0,0); shade(ft_cell, "0D1B2A")
fp = ft_cell.paragraphs[0]; fp.clear()
fr = fp.add_run("BNYS Naturopathy & Yogic Sciences · Fasting Chart · References: Charaka Samhita (Sutrasthana Ch.22) · NIH/ISAPP IF Guidelines · Ashtanga Hridayam")
fr.font.size=Pt(34); fr.font.color.rgb=RGBColor.from_string("AED6F1"); fr.bold=True
fp.alignment = WD_ALIGN_PARAGRAPH.CENTER
fp2 = ft_cell.add_paragraph(); fp2.clear()
fr2 = fp2.add_run("For Educational & Clinical Naturopathy Practice | Individual assessment by a qualified BNYS / Ayurvedic physician is recommended before prescribing fasting")
fr2.font.size=Pt(28); fr2.font.color.rgb=RGBColor.from_string("85C1E9"); fr2.italic=True
fp2.alignment = WD_ALIGN_PARAGRAPH.CENTER
out = "/tmp/workspace/ayurvedic-diet-chart/Fasting_Chart_FLEX_POSTER_5x5ft.docx"
doc.save(out)
print(f"Saved: {out}")
cd /tmp/workspace/ayurvedic-diet-chart && python3 create_fasting_flex.py
ls -lh /tmp/workspace/ayurvedic-diet-chart/Fasting_Chart_FLEX_POSTER_5x5ft.docx
Fasting Chart FLEX POSTER 5x5ft
Word Document · DOCX
| Section | Content |
|---|---|
| Overview strip | 3-column intro: IF · Naturopathic · Ayurvedic at a glance |
| Protocols table | 9 protocols: 12:12 → 14:10 → 16:8 → 18:6 → 20:4 → OMAD → 5:2 → ADF → 24hr with difficulty stars ★ |
| Fasting window guide | ✅ Allowed / ❌ Avoid / ⚠️ Grey zone items during fasting hours |
| Sample 16:8 schedule | Hour-by-hour full day plan |
| Benefits vs Contraindications | 2-column block — 8 benefits + 10 contraindications |
| Section | Content |
|---|---|
| Fasting types | 7 types: Eliminative → Fruit → Juice → Mono → Semi → Water → Dry |
| 3-Phase Protocol | 3 colour-coded columns: Preparation → Active Fasting → Breaking the fast |
| 7-day juice schedule | Day-by-day with 4 meal slots + 3 reintroduction days |
| Healing crisis guide | 7 symptoms with cause, management, when to stop |
| Section | Content |
|---|---|
| Langhana types | 7 types: Upavasa · Laghu Ahara · Yava · Pachana · Vyayama · Pipasanigraha · Atapa Sevana |
| Dosha-specific rules | Vata (max 1 day) · Pitta (16:8, juice) · Kapha (OMAD, best candidate) |
| Lunar calendar fasts | 8 fasts: Ekadashi · Purnima · Amavasya · Pradosh · Navratri · Monday · Saturday · Shravan |
| Ekadashi food guide | Allowed vs Avoid per category with Ayurvedic reasoning |
Make same posters in doc form
ls -lh /tmp/workspace/ayurvedic-diet-chart/*.docx
.docx format — similar to what we did for the Ayurvedic Diet chart. Let me clarify quickly:Which poster(s) do you need as 5×5 ft flex .docx?
.docx now!~/ayurvedic-diet-chart/create_gut_flex.py
from docx import Document
from docx.shared import Pt, Inches, RGBColor
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.enum.table import WD_TABLE_ALIGNMENT
from docx.oxml.ns import qn
from docx.oxml import OxmlElement
doc = Document()
section = doc.sections[0]
section.page_width = Inches(60)
section.page_height = Inches(60)
section.left_margin = Inches(1.2)
section.right_margin = Inches(1.2)
section.top_margin = Inches(1.0)
section.bottom_margin = Inches(1.0)
normal = doc.styles["Normal"]
normal.font.name = "Calibri"
normal.font.size = Pt(28)
# ── Helpers ──
def shade(cell, hex_color):
tc = cell._tc
tcPr = tc.get_or_add_tcPr()
shd = OxmlElement("w:shd")
shd.set(qn("w:val"), "clear")
shd.set(qn("w:color"), "auto")
shd.set(qn("w:fill"), hex_color)
tcPr.append(shd)
def hcell(cell, text, bg, fg="FFFFFF", size=34, center=True):
shade(cell, bg)
p = cell.paragraphs[0]; p.clear()
r = p.add_run(text); r.bold = True
r.font.size = Pt(size)
r.font.color.rgb = RGBColor.from_string(fg)
p.alignment = WD_ALIGN_PARAGRAPH.CENTER if center else WD_ALIGN_PARAGRAPH.LEFT
def bcell(cell, text, bg="FFFFFF", bold=False, size=26, center=False, color="1a1a1a"):
shade(cell, bg)
p = cell.paragraphs[0]; p.clear()
r = p.add_run(text); r.bold = bold
r.font.size = Pt(size)
r.font.color.rgb = RGBColor.from_string(color)
p.alignment = WD_ALIGN_PARAGRAPH.CENTER if center else WD_ALIGN_PARAGRAPH.LEFT
def section_banner(doc, title, subtitle, bg, fg="FFFFFF", fg2="CCEEEE"):
t = doc.add_table(rows=1, cols=1)
t.style = "Table Grid"
c = t.cell(0,0); shade(c, bg)
p = c.paragraphs[0]; p.clear()
r = p.add_run(title); r.bold=True; r.font.size=Pt(80)
r.font.color.rgb = RGBColor.from_string(fg); p.alignment = WD_ALIGN_PARAGRAPH.CENTER
if subtitle:
p2 = c.add_paragraph(); p2.clear()
r2 = p2.add_run(subtitle); r2.font.size=Pt(40)
r2.font.color.rgb = RGBColor.from_string(fg2); r2.bold=True
p2.alignment = WD_ALIGN_PARAGRAPH.CENTER
doc.add_paragraph("")
def add_h(doc, text, color, size=56):
h = doc.add_heading(text, level=1)
for run in h.runs:
run.font.color.rgb = RGBColor.from_string(color)
run.font.size = Pt(size)
def make_table(doc, headers, rows, hdr_bg, alt_bg, hdr_size=32, row_size=26):
tbl = doc.add_table(rows=1, cols=len(headers))
tbl.style = "Table Grid"
tbl.alignment = WD_TABLE_ALIGNMENT.CENTER
bgs = hdr_bg if isinstance(hdr_bg, list) else [hdr_bg]*len(headers)
for i,(h,bg) in enumerate(zip(headers, bgs)):
hcell(tbl.cell(0,i), h, bg, size=hdr_size)
for idx, row_data in enumerate(rows):
row = tbl.add_row()
bg = alt_bg if idx % 2 == 0 else "FFFFFF"
for j, val in enumerate(row_data):
bcell(row.cells[j], str(val), bg, bold=(j==0), size=row_size)
doc.add_paragraph("")
return tbl
# ─────────────────────────────────────────────
# TITLE BANNER
# ─────────────────────────────────────────────
t = doc.add_table(rows=1, cols=1)
t.style = "Table Grid"
c = t.cell(0,0); shade(c, "0A3D62")
p = c.paragraphs[0]; p.clear()
r = p.add_run("GUT HEALTH DIET CHART"); r.bold=True; r.font.size=Pt(140)
r.font.color.rgb = RGBColor.from_string("FFFFFF"); p.alignment = WD_ALIGN_PARAGRAPH.CENTER
p2 = c.add_paragraph(); p2.clear()
r2 = p2.add_run("Probiotics · Prebiotics · Fermented Foods · Dietary Fiber · Synbiotics · Postbiotics")
r2.font.size=Pt(52); r2.font.color.rgb=RGBColor.from_string("AED6F1"); r2.bold=True
p2.alignment = WD_ALIGN_PARAGRAPH.CENTER
p3 = c.add_paragraph(); p3.clear()
r3 = p3.add_run("BNYS Naturopathy Clinical Practice Reference | Companion to the Gut Health Poster")
r3.font.size=Pt(38); r3.font.color.rgb=RGBColor.from_string("85C1E9"); r3.italic=True
p3.alignment = WD_ALIGN_PARAGRAPH.CENTER
doc.add_paragraph("")
# ─────────────────────────────────────────────
# QUICK OVERVIEW — 4 pillars intro
# ─────────────────────────────────────────────
add_h(doc, "THE FOUR PILLARS OF GUT HEALTH", "0A3D62", size=70)
four_tbl = doc.add_table(rows=1, cols=4)
four_tbl.style = "Table Grid"
four_tbl.alignment = WD_TABLE_ALIGNMENT.CENTER
pillars = [
("1A5276", "PROBIOTICS", "Live beneficial microorganisms",
["Restore and maintain gut microbiome",
"Compete with pathogens; modulate immunity",
"Produce SCFAs; support gut barrier",
"Minimum dose: ≥10⁹ CFU/day",
"Key foods: Yoghurt · Kefir · Kimchi · Idli · Lassi",
"Key strains: Lactobacillus · Bifidobacterium · Saccharomyces"]),
("1E8449", "PREBIOTICS", "Non-digestible food for good bacteria",
["Selectively feed Lactobacillus & Bifidobacterium",
"Fermented in colon → produce SCFAs (butyrate)",
"Not alive but essential for probiotic survival",
"Daily goal: 5–10 g prebiotic fiber",
"Key foods: Garlic · Onion · Oats · Banana · Chicory",
"Key types: Inulin · FOS · GOS · Beta-glucan · Resistant Starch"]),
("7D3C98", "FERMENTED FOODS", "Ancient natural probiotic sources",
["Produced by controlled microbial fermentation",
"Contain live cultures + B vitamins + organic acids",
"Choose unpasteurised for live bacteria",
"Indian options: Idli · Dosa · Kanji · Dhokla · Lassi",
"Global options: Kefir · Kimchi · Miso · Tempeh · Kombucha",
"Best eaten daily at lunch or dinner"]),
("B7770D", "DIETARY FIBER", "Fuel for your microbiome",
["Indigestible plant carbohydrates",
"Soluble fiber fermented → butyrate (colonocyte fuel)",
"Insoluble fiber adds bulk; promotes bowel motility",
"Daily target: Women 25 g · Men 38 g",
"Key foods: Oats · Psyllium · Apple · Lentils · Chia",
"Types: Pectin · Beta-glucan · Inulin · Resistant Starch · Lignin"]),
]
for i, (bg, title, sub, items) in enumerate(pillars):
cell = four_tbl.cell(0,i)
shade(cell, bg)
p = cell.paragraphs[0]; p.clear()
r = p.add_run(title); r.bold=True; r.font.size=Pt(46)
r.font.color.rgb = RGBColor.from_string("FFFFFF"); p.alignment = WD_ALIGN_PARAGRAPH.CENTER
ps = cell.add_paragraph(); ps.clear()
rs = ps.add_run(sub); rs.font.size=Pt(32); rs.italic=True
rs.font.color.rgb = RGBColor.from_string("DDFFDD"); ps.alignment = WD_ALIGN_PARAGRAPH.CENTER
for item in items:
pp = cell.add_paragraph(); pp.clear()
rr = pp.add_run(f"• {item}"); rr.font.size=Pt(29)
rr.font.color.rgb = RGBColor.from_string("F0FFF0")
doc.add_paragraph("")
# ─────────────────────────────────────────────
# SECTION 1 — PROBIOTICS
# ─────────────────────────────────────────────
section_banner(doc, "1 — PROBIOTICS", "Live microorganisms · ≥10⁹ CFU/day · Restore gut flora", "1A5276")
add_h(doc, "1.1 Key Probiotic Strains, Food Sources & Benefits", "1A5276", 56)
make_table(doc,
["Strain", "Natural Food Source", "Key Health Benefit", "Clinical Indication"],
[
("Lactobacillus acidophilus (NCFM)", "Yoghurt, kefir", "Lactose digestion, IBS, vaginal flora", "IBS, lactose intolerance, vaginitis"),
("Lactobacillus rhamnosus GG (LGG)", "Fermented dairy, supplements","AAD prevention, gut barrier, immunity", "Antibiotic-associated diarrhoea, eczema"),
("Lactobacillus reuteri DSM 17938", "Breast milk, fermented foods","Infant colic, H. pylori suppression", "Infant colic, H. pylori, oral health"),
("Lactobacillus casei Shirota", "Yakult, fermented milk", "Immune regulation, bowel regularity", "Constipation, immunity, IBD"),
("Lactobacillus plantarum 299v", "Sauerkraut, kimchi", "IBS (bloating, pain), gut integrity", "IBS, traveller's diarrhoea"),
("Bifidobacterium longum BB536", "Dairy, supplements", "Allergy, constipation, immunity", "Constipation, allergic rhinitis"),
("Bifidobacterium lactis Bb-12", "Yoghurt, infant formula", "Stool consistency, infant gut", "Infant diarrhoea, immunity"),
("Bifidobacterium breve M-16V", "Breast milk, dairy ferments", "Infant gut colonisation, eczema prevention", "Preterm infants, atopic dermatitis"),
("Saccharomyces boulardii CNCM I-745","Supplement (probiotic yeast)","AAD, C. difficile, traveller's diarrhoea", "C. difficile colitis, acute diarrhoea"),
("Streptococcus thermophilus", "Yoghurt (primary fermenter)", "Lactose digestion, gut pH balance", "Lactose intolerance, yoghurt cultures"),
("Lactobacillus helveticus R0052", "Hard cheeses (Emmental)", "Gut-brain axis, anxiety, sleep quality", "Anxiety, stress, sleep disorders"),
],
"1A5276", "D6EAF8")
add_h(doc, "1.2 Natural Probiotic Food Sources (India-Focused)", "1A5276", 52)
make_table(doc,
["Food", "Country / Tradition", "Dominant Organisms", "Key Benefit", "Notes"],
[
("Dahi / Yoghurt", "Universal / India", "L. acidophilus, S. thermophilus, L. bulgaricus", "Digestion, immunity, skin, bones", "Fresh, homemade; avoid flavoured/sweetened"),
("Kefir", "Caucasus", "30+ strains: Lactobacillus + yeasts", "Strongest probiotic drink; anti-tumour", "Most diverse; contains kefiran polysaccharide"),
("Lassi / Buttermilk", "India", "Lactobacillus spp.", "Cooling, digestive, Pitta-pacifying", "Best at noon after meal; diluted yoghurt"),
("Idli / Dosa batter", "South India", "L. mesenteroides, L. fermentum", "Probiotic + prebiotic; easily digestible", "Natural LAB fermentation of rice + urad dal"),
("Kanji", "North India", "Lactobacillus spp.", "Traditional probiotic; anti-oxidant", "Black/purple carrot + mustard seeds"),
("Dhokla / Khaman", "Gujarat", "L. fermentum, L. brevis", "Light, protein-rich fermented snack", "Fermented chickpea flour (besan)"),
("Kimchi", "Korea", "L. kimchii, L. plantarum, L. brevis", "Anti-obesity, anti-inflammatory, gut flora", "Fermented cabbage + chilli"),
("Sauerkraut", "Germany / E. Europe", "L. plantarum, L. mesenteroides", "Immunity, Vit C, gut health", "Unpasteurised only — live cultures"),
("Miso", "Japan", "Aspergillus oryzae + LAB", "Antioxidant, anti-cancer, microbiome", "Fermented soybean paste; add to soup"),
("Tempeh", "Indonesia", "Rhizopus oligosporus + bacteria", "High protein, Vit B12 (vegan source)", "Fermented soybeans; firm texture"),
("Natto", "Japan", "Bacillus subtilis natto", "Highest Vit K2; cardioprotective, bone", "Sticky fermented soybeans; strong flavour"),
("Kombucha", "China / Russia", "SCOBY (acetic acid bacteria + yeasts)", "Detox, B vitamins, antioxidant", "Fermented tea; avoid excess — acidic"),
],
"1A5276", "D6EAF8")
add_h(doc, "1.3 Probiotics by Clinical Indication + Dosage", "1A5276", 52)
make_table(doc,
["Condition", "Recommended Strains", "Dose & Duration"],
[
("Antibiotic-Associated Diarrhoea (AAD)", "L. rhamnosus GG, S. boulardii", "10⁹–10¹⁰ CFU/day; start Day 1 of antibiotics"),
("IBS (Irritable Bowel Syndrome)", "L. plantarum 299v, B. infantis 35624, VSL#3","10⁹–10¹⁰ CFU/day for 4–8 weeks"),
("Acute Infectious Diarrhoea", "L. rhamnosus GG, S. boulardii", "10¹⁰ CFU/day for 5–7 days"),
("H. pylori (adjunct to triple therapy)", "L. reuteri, L. acidophilus, S. boulardii","During + 2 weeks post antibiotic therapy"),
("Constipation", "B. longum, B. lactis Bb-12, L. reuteri", "10⁹ CFU/day for minimum 4 weeks"),
("IBD / Ulcerative Colitis", "VSL#3, E. coli Nissle 1917", "High dose; specialist supervision required"),
("Vaginal Dysbiosis / BV", "L. acidophilus, L. reuteri RC-14", "Oral or vaginal; 10⁸–10⁹ CFU/day"),
("Atopic Dermatitis / Eczema", "L. rhamnosus GG, B. breve", "10⁹ CFU/day prenatal + postnatal"),
("Infant Colic", "L. reuteri DSM 17938", "10⁸ CFU/day; 30 min before feed"),
("Traveller's Diarrhoea (prevention)", "S. boulardii, L. acidophilus", "Start 2 days before travel; continue throughout"),
],
"1A5276", "D6EAF8")
# ─────────────────────────────────────────────
# SECTION 2 — PREBIOTICS
# ─────────────────────────────────────────────
section_banner(doc, "2 — PREBIOTICS", "Non-digestible fiber · Feed good bacteria · Produce SCFAs", "1E8449")
add_h(doc, "2.1 Types of Prebiotics — Sources, Bacteria Fed & Benefits", "1E8449", 56)
make_table(doc,
["Prebiotic Type", "Best Food Sources", "Bacteria Fed", "Daily Target", "Key Benefit"],
[
("Inulin", "Chicory root (41%), garlic, onion, asparagus, Jerusalem artichoke, banana", "Bifidobacterium, Lactobacillus", "5–10 g", "Bowel regularity, calcium absorption, lipid reduction"),
("FOS (Fructo-oligosaccharides)", "Onion, garlic, banana, wheat, tomato, honey, leek", "Bifidobacterium spp.", "3–8 g", "Gut flora balance, constipation relief"),
("GOS (Galacto-oligosaccharides)", "Human milk; legumes; commercial infant formula", "Bifidobacterium, Lactobacillus","2–10 g", "Infant gut health, immune tolerance, allergy prevention"),
("Resistant Starch (RS)","Green banana, cooked-cooled potato/rice, legumes, raw oats", "Butyrate-producing bacteria (Roseburia, Faecalibacterium)", "15–20 g","Colon cancer prevention, insulin sensitivity, satiety"),
("Pectin", "Apple (skin), citrus peel, guava, plum, carrot, beet", "Lactobacillus, Bifidobacterium","6–12 g", "Cholesterol reduction, gut barrier support"),
("Beta-glucan", "Oats (best), barley, shiitake/reishi mushrooms, rye", "Lactobacillus, Bifidobacterium","3–5 g", "Cholesterol, immune stimulation, blood glucose"),
("Arabinoxylan (AXOS)", "Wheat bran, oat bran, psyllium husk, sorghum", "Bifidobacterium spp.", "3–10 g", "Antioxidant, colon health, lipid profile"),
("Polyphenols", "Berries, pomegranate, green tea, cocoa (>70%), turmeric, flaxseed", "Akkermansia, Bifidobacterium", "Dietary", "Anti-inflammatory, gut barrier, antioxidant"),
],
"1E8449", "D5F5E3")
add_h(doc, "2.2 Top Prebiotic Foods — Quick Reference", "1E8449", 52)
make_table(doc,
["Food", "Prebiotic Content", "Best Way to Use", "Key Note"],
[
("Chicory Root", "Inulin 41% dry weight", "Chicory tea; coffee substitute", "Highest single source of inulin"),
("Garlic (raw)", "Inulin 9–16 g/100g + FOS", "Raw in salads, dressings, chutneys", "Cooking reduces prebiotic content significantly"),
("Onion (raw)", "FOS 2–6 g/100g + inulin", "Raw in salads; lightly sauteed", "Red onion adds polyphenols too"),
("Jerusalem Artichoke", "Inulin 14–19 g/100g", "Cooked, roasted, or raw", "Introduce slowly — may cause gas initially"),
("Banana (green/unripe)", "Resistant starch 4–19 g/100g", "Smoothie; raw when slightly green", "RS drops as banana fully ripens"),
("Oats (raw/rolled)", "Beta-glucan 4–8 g/100g + RS", "Overnight oats; light cooking preserves RS","Raw oats retain more RS than fully cooked"),
("Apple (with skin)", "Pectin ~1.5 g/apple", "Raw with skin; avoid juicing", "Skin = most pectin; don't peel"),
("Flaxseed (ground)", "Mucilaginous fiber + lignans", "Ground in yoghurt, smoothie, roti dough", "Must be ground; whole passes undigested"),
("Dark Chocolate (>70%)", "Cocoa flavanols (polyphenols)", "20–30 g/day", "Feeds Lactobacillus + Bifidobacterium"),
("Asparagus", "Inulin 2–3 g/100g", "Steamed, roasted, or raw", "Also rich in folate"),
("Chickpeas (boiled)", "RS + FOS", "Hummus, salad, curry", "Cook-cool cycle increases resistant starch"),
("Barley", "Beta-glucan 3–8 g/100g", "Khichdi, soup, porridge", "Best grain for cholesterol + Kapha types"),
],
"1E8449", "D5F5E3")
# ─────────────────────────────────────────────
# SECTION 3 — FERMENTED FOODS
# ─────────────────────────────────────────────
section_banner(doc, "3 — FERMENTED FOODS", "Ancient probiotic tradition · Live cultures · Bioactive metabolites", "7D3C98")
add_h(doc, "3.1 Global Fermented Foods Chart", "7D3C98", 56)
make_table(doc,
["Food", "Country / Tradition", "Base Ingredient", "Key Organisms", "Health Benefit"],
[
("Yoghurt / Dahi", "Universal / India", "Milk", "L. bulgaricus, S. thermophilus, L. acidophilus", "Digestion, immunity, skin, bones, lactose"),
("Kefir", "Caucasus", "Milk or water", "30+ Lactobacillus strains + yeasts", "Strongest probiotic drink; anti-tumour; anti-allergy"),
("Kimchi", "Korea", "Cabbage + chilli", "L. kimchii, L. plantarum, L. brevis", "Anti-obesity, anti-inflammatory, gut flora diversity"),
("Sauerkraut", "Germany / E. Europe", "Cabbage + salt", "L. plantarum, L. mesenteroides", "Immunity, Vitamin C, gut health — unpasteurised only"),
("Miso", "Japan", "Soybean + rice/barley", "Aspergillus oryzae + LAB", "Antioxidant, anti-cancer, gut microbiome support"),
("Tempeh", "Indonesia", "Soybeans", "Rhizopus oligosporus + bacteria", "High protein, Vitamin B12 (vegan source), gut health"),
("Natto", "Japan", "Soybeans", "Bacillus subtilis natto", "Highest Vit K2 source; cardioprotective, bone health"),
("Kombucha", "China / Russia", "Tea + sugar (SCOBY)", "Acetic acid bacteria + yeasts", "Detox, antioxidant, B vitamins, organic acids"),
("Kanji", "North India", "Black carrot + mustard","Lactobacillus spp.", "Traditional probiotic; anti-oxidant; seasonal"),
("Idli / Dosa batter", "South India", "Rice + urad dal", "L. mesenteroides, L. fermentum", "Probiotic + prebiotic combo; highly digestible"),
("Dhokla / Khaman", "Gujarat, India", "Chickpea flour (besan)","L. fermentum, L. brevis", "Light, protein-rich fermented snack"),
("Lassi / Buttermilk", "India", "Yoghurt + water", "Lactobacillus spp.", "Cooling, digestive, ideal after lunch"),
("Water Kefir", "Mexico / Universal", "Water + sugar + fruit", "LAB + yeasts (Lactobacillus, Leuconostoc)", "Dairy-free probiotic option; B vitamins"),
("Cheese (aged)", "Universal", "Milk", "Various LAB + moulds", "Calcium, Vit K2, B12; less lactose when aged"),
("Brine pickles (raw)", "Universal", "Vegetables + salt brine","L. plantarum, L. brevis", "Gut flora support — NOT vinegar pickles (no live culture)"),
("Injera", "Ethiopia", "Teff flour", "LAB + wild yeasts", "Iron bioavailability, digestive health"),
],
"7D3C98", "E8DAEF")
# ─────────────────────────────────────────────
# SECTION 4 — DIETARY FIBER
# ─────────────────────────────────────────────
section_banner(doc, "4 — DIETARY FIBER", "Indigestible plant carbs · Feeds microbiome · Produces butyrate · 25–38 g/day", "B7770D")
add_h(doc, "4.1 Types of Dietary Fiber", "B7770D", 56)
make_table(doc,
["Fiber Type", "Class", "Best Sources", "Key Functions", "Clinical Benefit"],
[
("Psyllium Husk (isabgol)","Soluble / Mucilaginous", "Plantago ovata seed husk", "Bulks + softens stool; binds bile acids", "IBS-C, IBS-D, constipation, hyperlipidaemia"),
("Beta-glucan", "Soluble / Viscous", "Oats, barley, shiitake mushrooms", "Viscous gel slows glucose/fat absorption", "Cholesterol reduction, T2DM control, immunity"),
("Pectin", "Soluble / Fermentable", "Apple (skin), citrus peel, guava, carrot", "Gels in gut; slows gastric emptying", "Diarrhoea management, cholesterol, gut barrier"),
("Inulin / FOS / GOS", "Soluble / Prebiotic", "Chicory, garlic, onion, banana", "Fermented to SCFAs; prebiotic for Bifidobacterium","Gut microbiome, constipation, bone mineral density"),
("Resistant Starch", "Soluble / Fermentable", "Green banana, cooked-cooled potato/rice/pasta","Fermented by colon bacteria → butyrate (colon fuel)","Colon cancer prevention, insulin sensitivity"),
("Cellulose", "Insoluble", "Whole grains, leafy greens, bran", "Bulk; accelerates intestinal transit", "Constipation relief, diverticulosis prevention"),
("Lignin", "Insoluble", "Flaxseed, sesame seeds, woody vegetables", "Binds bile acids and carcinogens in gut", "Anti-cancer, cholesterol, constipation"),
("Arabinoxylan (AXOS)", "Soluble / Prebiotic", "Wheat bran, rye, psyllium husk", "Selectively feeds Bifidobacterium spp.", "Cholesterol, colon health, antioxidant"),
],
"B7770D", "FEF9E7")
add_h(doc, "4.2 High-Fiber Foods (Fiber Content per 100 g)", "B7770D", 52)
make_table(doc,
["Food", "Total Fiber (g/100g)", "Dominant Type", "Best Way to Use"],
[
("Psyllium husk (isabgol)", "71 g", "Soluble / mucilaginous", "Mix 1 tsp in warm water + drink immediately; take with plenty of water"),
("Wheat bran", "42 g", "Insoluble (cellulose)", "Add to roti dough, porridge, cereal, smoothies"),
("Chia seeds", "34 g", "Soluble + Insoluble", "Soak overnight; smoothies, pudding, yoghurt"),
("Flaxseed (ground)", "27 g", "Soluble (lignin + mucilage)", "Ground only — whole passes undigested; add to roti dough"),
("Almonds", "12.5 g", "Insoluble", "10–12 soaked almonds daily; skin provides fiber"),
("Split lentils (masoor)", "15 g", "Soluble + Insoluble", "Daily dal; excellent plant protein source too"),
("Black beans", "8.7 g", "Soluble + Insoluble", "Salads, curry, soups"),
("Chickpeas (boiled)", "7.6 g", "Soluble (RS + FOS)", "Hummus, chana chaat, salad; cook-cool increases RS"),
("Avocado", "6.7 g", "Soluble + Insoluble", "Salad, spread; also healthy fats"),
("Green banana (unripe)", "5–6 g", "Resistant starch (soluble)", "Smoothies when green; RS decreases as it ripens"),
("Oats (raw/rolled)", "10 g", "Soluble (beta-glucan)", "Overnight oats preserve RS; lightly cook to retain beta-glucan"),
("Barley (cooked)", "3.8 g", "Soluble (beta-glucan)", "Khichdi, soup, porridge; best grain for cholesterol"),
("Quinoa (cooked)", "2.8 g", "Soluble + Insoluble", "Complete protein + fiber; gluten-free"),
("Apple (with skin)", "2.4 g", "Soluble (pectin)", "Eat raw with skin; don't peel; juice removes pectin"),
("Broccoli (raw)", "2.6 g", "Insoluble (cellulose)", "Lightly steam or eat raw in salad"),
],
"B7770D", "FEF9E7")
# ─────────────────────────────────────────────
# SECTION 5 — SYNBIOTICS + POSTBIOTICS (side by side)
# ─────────────────────────────────────────────
section_banner(doc, "5 — SYNBIOTICS + POSTBIOTICS",
"Synbiotics: Probiotic + Prebiotic combined · Postbiotics: Beneficial bacterial metabolites",
"0A3D62")
# 5-column two section block
sp_tbl = doc.add_table(rows=1, cols=2)
sp_tbl.style = "Table Grid"
sp_tbl.alignment = WD_TABLE_ALIGNMENT.CENTER
# LEFT — Synbiotics
sleft = sp_tbl.cell(0,0)
shade(sleft, "D6EAF8")
p = sleft.paragraphs[0]; p.clear()
r = p.add_run("SYNBIOTICS"); r.bold=True; r.font.size=Pt(52)
r.font.color.rgb=RGBColor.from_string("1A5276"); p.alignment = WD_ALIGN_PARAGRAPH.CENTER
p2 = sleft.add_paragraph(); p2.clear()
r2 = p2.add_run("A synbiotic pairs a probiotic with a prebiotic that specifically supports it, enhancing survival and amplifying benefit.")
r2.font.size=Pt(28); r2.italic=True; r2.font.color.rgb=RGBColor.from_string("1A5276")
# Small table inside left cell
syn_rows = [
("L. rhamnosus GG", "Inulin / FOS", "Improved GG survival; enhanced gut flora", "AAD, IBS"),
("Bifidobacterium lactis", "GOS", "Infant gut colonisation; immune tolerance", "Neonates, infant formula, allergies"),
("B. longum + L. acidophilus", "FOS + Inulin", "Synergistic Bifidobacterium growth", "IBD, constipation, colon cancer prevention"),
("L. casei Shirota", "Lactulose", "Enhanced bifidogenic effect; constipation relief","Constipation, hepatic encephalopathy"),
("Multi-strain LAB blend", "Beta-glucan (oats)", "Boosted immunity; SCFA production", "Metabolic syndrome, T2DM, obesity"),
("L. plantarum + L. reuteri", "Pectin + Psyllium", "IBS symptom reduction; gut barrier support", "IBS-C and IBS-D, leaky gut"),
]
for probiotic, prebiotic, benefit, use in syn_rows:
pp = sleft.add_paragraph()
pp.clear()
rr = pp.add_run(f"• {probiotic} + {prebiotic}")
rr.bold = True; rr.font.size = Pt(28); rr.font.color.rgb = RGBColor.from_string("1A5276")
pp2 = sleft.add_paragraph()
pp2.clear()
rr2 = pp2.add_run(f" → {benefit} | Use: {use}")
rr2.font.size = Pt(26)
# RIGHT — Postbiotics
sright = sp_tbl.cell(0,1)
shade(sright, "FADBD8")
p3 = sright.paragraphs[0]; p3.clear()
r3 = p3.add_run("POSTBIOTICS"); r3.bold=True; r3.font.size=Pt(52)
r3.font.color.rgb=RGBColor.from_string("922B21"); p3.alignment = WD_ALIGN_PARAGRAPH.CENTER
p4 = sright.add_paragraph(); p4.clear()
r4 = p4.add_run("Inanimate microorganisms / metabolic by-products that directly benefit the host. No live bacteria needed.")
r4.font.size=Pt(28); r4.italic=True; r4.font.color.rgb=RGBColor.from_string("922B21")
post_rows = [
("SCFAs: Butyrate, Acetate, Propionate", "Fiber fermentation by colonic bacteria", "Colonocyte fuel; anti-inflammatory; tight junction repair; anti-cancer", "IBD, leaky gut, colon cancer, insulin sensitivity"),
("Bacteriocins (nisin, reuterin)", "Lactobacillus, Lactococcus", "Antimicrobial peptides; inhibit C. difficile, Listeria", "Infection prevention, gut dysbiosis"),
("B-Vitamins (B2, B6, B9, B12, K2)", "Bifidobacterium, Lactobacillus", "Coenzyme functions; neurological health; blood formation; bone", "Deficiency states, vegans, neuropathy"),
("Tryptophan metabolites (Indoles)", "Gut bacteria + dietary tryptophan", "Gut barrier; immune regulation; gut-brain axis signalling", "Anxiety, depression, gut permeability"),
("Exopolysaccharides (EPS)", "LAB cell surface polysaccharides", "Immune modulation; anti-tumour; mucus layer support", "IBD, mucus barrier deficiency"),
("Heat-killed probiotics (Tyndallized)", "Inactivated L. acidophilus, B. longum","Immune modulation without live organism risk", "Immunocompromised patients, infants, post-surgery"),
]
for postbiotic, source, actions, app in post_rows:
pp = sright.add_paragraph(); pp.clear()
rr = pp.add_run(f"• {postbiotic}"); rr.bold=True; rr.font.size=Pt(28); rr.font.color.rgb=RGBColor.from_string("922B21")
pp2 = sright.add_paragraph(); pp2.clear()
rr2 = pp2.add_run(f" Source: {source}\n Action: {actions}\n Use: {app}"); rr2.font.size=Pt(25)
doc.add_paragraph("")
# ─────────────────────────────────────────────
# SECTION 6 — DAILY GUIDE + SAMPLE MEAL PLAN
# ─────────────────────────────────────────────
section_banner(doc, "6 — PRACTICAL GUT HEALTH DAILY GUIDE + SAMPLE MEAL PLAN",
"Include at least one food from each category every day",
"0A3D62")
add_h(doc, "6.1 Daily Gut Health Food Guide — What to Include Every Day", "0A3D62", 52)
make_table(doc,
["Category", "Foods to Include Daily", "Serving", "Why"],
[
("Probiotic (1+ serving)", "Fresh dahi, kefir, lassi, kimchi, miso, idli", "1 cup yoghurt or 1 glass lassi at noon", "Replenishes live beneficial bacteria daily"),
("Prebiotic (1+ serving)", "Raw garlic, onion, banana, oats, asparagus, flaxseed", "Garlic in every cooked meal; oats at breakfast", "Feeds and sustains probiotic colonies"),
("Soluble Fiber", "Oats, apple (with skin), psyllium, legumes, barley", "½ cup oats; 1 apple; 1 tsp isabgol in water", "Cholesterol, glucose control, butyrate"),
("Insoluble Fiber", "Whole grains, leafy greens, wheat bran, broccoli", "2 cups vegetables per meal; whole grain roti", "Bowel motility, detox, satiety"),
("Polyphenol-rich", "Berries, pomegranate, dark choc (>70%), green tea, turmeric","1 tsp turmeric + 1 cup green tea daily", "Feeds Akkermansia; anti-inflammatory"),
("Fermented grain / legume", "Idli, dosa, dhokla, whole grain sourdough", "2 idli / 1 dosa at any meal", "Natural LAB + prebiotic combination"),
("Omega-3 rich", "Ground flaxseed, walnuts, fatty fish, chia seeds", "1 tbsp ground flax in smoothie or roti dough", "Reduces gut inflammation; EPA/DHA"),
("Hydration", "Warm water, coconut water, herbal teas", "8–10 glasses warm water throughout day", "Fiber works only with adequate water"),
],
"0A3D62", "EBF5FB")
add_h(doc, "6.2 Sample Gut Health Day Meal Plan", "0A3D62", 52)
make_table(doc,
["Time / Meal", "Food", "Gut Health Component"],
[
("Early Morning (6–7 AM)", "Warm water + 1 tsp psyllium husk (isabgol) + lemon", "Soluble fiber, hydration, bowel motility"),
("Breakfast (8 AM)", "Oat porridge + banana (slightly green) + ground flax + fresh berries", "Prebiotics (beta-glucan + RS) + Omega-3 + polyphenols"),
("Mid-Morning (10:30 AM)", "1 glass lassi (yoghurt + cumin) OR kefir", "Live probiotics — Lactobacillus spp."),
("Lunch (1 PM)", "2 idli + sambar + sabzi with garlic/onion + green salad", "Fermented + Probiotics + Prebiotics (garlic, onion, dal)"),
("Afternoon (4 PM)", "1 apple (with skin) + 1 square dark chocolate (>70%) + green tea", "Pectin (soluble fiber) + polyphenols + antioxidants"),
("Dinner (7 PM)", "Whole wheat chapati + cooked vegetables + miso soup or kimchi (small)", "Dietary fiber + Fermented probiotics"),
("Before Bed (9:30 PM)", "Warm turmeric milk (haldi doodh) OR chamomile tea", "Anti-inflammatory; gut barrier support; sleep"),
],
"0A3D62", "EBF5FB")
# ─────────────────────────────────────────────
# SECTION 7 — FOODS THAT HARM
# ─────────────────────────────────────────────
section_banner(doc, "7 — FOODS & HABITS THAT HARM THE GUT MICROBIOME — AVOID",
"Minimise or eliminate for a healthy, diverse gut", "922B21")
make_table(doc,
["Harmful Item", "Mechanism of Gut Damage", "Better Alternative"],
[
("Ultra-processed foods\n(chips, instant noodles, packaged snacks)", "Reduce microbiome diversity; emulsifiers (Polysorbate 80, CMC) disrupt mucus layer", "Whole foods, homemade snacks, roasted makhana"),
("Refined sugar & HFCS", "Feeds Clostridium, Candida; reduces Bifidobacterium sharply", "Jaggery, dates, raw honey (small amounts)"),
("Artificial sweeteners\n(aspartame, sucralose, saccharin)", "Directly alter microbiome; reduce diversity", "Stevia, small amounts raw honey"),
("Unnecessary antibiotics", "Broad-spectrum killing of beneficial bacteria; dysbiosis; Candida", "Only when medically essential; follow with probiotics"),
("Excess alcohol", "Increases gut permeability (leaky gut); pathogens increase", "Limit; fermented kombucha or kefir are gut-friendly"),
("Fried foods / trans fats", "Pro-inflammatory; reduce microbiome diversity", "Cold-pressed oils, ghee, coconut oil in moderation"),
("Chronic stress + poor sleep", "Elevated cortisol reduces Lactobacillus/Bifidobacterium significantly", "Yoga, meditation, consistent 7–8 hr sleep schedule"),
("Long-term NSAID use", "Damages gut lining; increases intestinal permeability", "Short-term only; gut-protective medications if needed"),
("Vinegar pickles (pasteurised)", "No live culture (heat-killed); high sodium content", "Brine-fermented unpasteurised pickles or kimchi"),
],
"922B21", "FADBD8")
# ─────────────────────────────────────────────
# FOOTER
# ─────────────────────────────────────────────
doc.add_paragraph("")
ft = doc.add_table(rows=1, cols=1)
ft.style = "Table Grid"
fc = ft.cell(0,0); shade(fc, "0A3D62")
fp = fc.paragraphs[0]; fp.clear()
fr = fp.add_run("BNYS Naturopathy & Yogic Sciences · Gut Health Diet Chart · References: WHO/FAO Probiotic Guidelines (2022) · ISAPP Consensus Statements (2020–2021)")
fr.font.size=Pt(34); fr.font.color.rgb=RGBColor.from_string("AED6F1"); fr.bold=True
fp.alignment = WD_ALIGN_PARAGRAPH.CENTER
fp2 = fc.add_paragraph(); fp2.clear()
fr2 = fp2.add_run("For Educational & Clinical Naturopathy Practice | Individual assessment recommended | July 2026")
fr2.font.size=Pt(28); fr2.font.color.rgb=RGBColor.from_string("85C1E9"); fr2.italic=True
fp2.alignment = WD_ALIGN_PARAGRAPH.CENTER
out = "/tmp/workspace/ayurvedic-diet-chart/Gut_Health_FLEX_POSTER_5x5ft.docx"
doc.save(out)
print(f"Saved: {out}")
cd /tmp/workspace/ayurvedic-diet-chart && python3 create_gut_flex.py
ls -lh /tmp/workspace/ayurvedic-diet-chart/*.docx
Gut Health FLEX POSTER 5x5ft
Word Document · DOCX
| Poster | File | Size |
|---|---|---|
| Ayurvedic Diet Chart (Vata · Pitta · Kapha) | Ayurvedic Diet FLEX POSTER 5x5ft Word Document · DOCX | 44 KB |
| Fasting Chart (IF · Naturopathic · Ayurvedic) | Fasting Chart FLEX POSTER 5x5ft Word Document · DOCX | 48 KB |
| Gut Health Chart (Probiotics · Prebiotics · Fiber) | Gut Health FLEX POSTER 5x5ft Word Document · DOCX | 49 KB |
For Educational & Clinical Naturopathy Practice | Individual assessment by a qualified BNYS / Ayurvedic physician is recommended before prescribing fasting remove this line from both
python3 -c " from docx import Document import copy files = [ '/tmp/workspace/attachments/f2ee3e4b-7b62-4196-999f-fead3ab3ea9b/Ayurvedic_Diet_FLEX_POSTER_5x5ft.docx', '/tmp/workspace/attachments/f2ee3e4b-7b62-4196-999f-fead3ab3ea9b/Fasting_Chart_FLEX_POSTER_5x5ft (1).docx', ] remove_text = 'For Educational & Clinical Naturopathy Practice' for fpath in files: doc = Document(fpath) removed = 0 # Check paragraphs for para in doc.paragraphs: if remove_text in para.text: print(f'PARA FOUND: {para.text[:120]}') removed += 1 # Check tables (footer banners are in tables) for table in doc.tables: for row in table.rows: for cell in row.cells: for para in cell.paragraphs: if remove_text in para.text: print(f'TABLE PARA FOUND: {para.text[:120]}') removed += 1 print(f'{fpath[-40:]}: found {removed} occurrences') "
python3 -c " from docx import Document from docx.oxml.ns import qn from lxml import etree remove_text = 'For Educational & Clinical Naturopathy Practice' files_out = [ ('/tmp/workspace/attachments/f2ee3e4b-7b62-4196-999f-fead3ab3ea9b/Ayurvedic_Diet_FLEX_POSTER_5x5ft.docx', '/tmp/workspace/ayurvedic-diet-chart/Ayurvedic_Diet_FLEX_POSTER_5x5ft_v2.docx'), ('/tmp/workspace/attachments/f2ee3e4b-7b62-4196-999f-fead3ab3ea9b/Fasting_Chart_FLEX_POSTER_5x5ft (1).docx', '/tmp/workspace/ayurvedic-diet-chart/Fasting_Chart_FLEX_POSTER_5x5ft_v2.docx'), ] for src, dst in files_out: doc = Document(src) removed = 0 # Remove from standalone paragraphs for para in doc.paragraphs: if remove_text in para.text: p_elem = para._element p_elem.getparent().remove(p_elem) removed += 1 # Remove from table cells for table in doc.tables: for row in table.rows: for cell in row.cells: for para in list(cell.paragraphs): if remove_text in para.text: p_elem = para._element p_elem.getparent().remove(p_elem) removed += 1 doc.save(dst) print(f'Saved {dst[-50:]} | removed {removed} paragraph(s)') "
python3 -c " from docx import Document src = '/tmp/workspace/attachments/f2ee3e4b-7b62-4196-999f-fead3ab3ea9b/Ayurvedic_Diet_FLEX_POSTER_5x5ft.docx' doc = Document(src) keyword = 'For Educational' for table in doc.tables: for row in table.rows: for cell in row.cells: for i, para in enumerate(cell.paragraphs): full = para.text if keyword in full: print(f' PARA idx={i}: {repr(full[:150])}') for j, run in enumerate(para.runs): print(f' RUN {j}: {repr(run.text)}') "
python3 -c " from docx import Document # Search ALL text including nested tables src = '/tmp/workspace/attachments/f2ee3e4b-7b62-4196-999f-fead3ab3ea9b/Ayurvedic_Diet_FLEX_POSTER_5x5ft.docx' doc = Document(src) keyword = 'Educational' # Extract every paragraph including deeply nested def search_body(element, depth=0): from docx.oxml.ns import qn tag = element.tag.split('}')[-1] if '}' in element.tag else element.tag if tag == 'p': text = ''.join(r.text or '' for r in element.iter('{http://schemas.openxmlformats.org/wordprocessingml/2006/main}t')) if keyword in text: print(f' depth={depth} text={repr(text[:180])}') for child in element: search_body(child, depth+1) search_body(doc.element.body) print('scan complete') "
python3 -c " from docx import Document # The uploaded Ayurvedic file may differ from what was generated. Let's dump ALL text src = '/tmp/workspace/attachments/f2ee3e4b-7b62-4196-999f-fead3ab3ea9b/Ayurvedic_Diet_FLEX_POSTER_5x5ft.docx' doc = Document(src) # Check the last table (footer) tables = doc.tables print(f'Total tables: {len(tables)}') if tables: last = tables[-1] for i, row in enumerate(last.rows): for j, cell in enumerate(row.cells): for k, para in enumerate(cell.paragraphs): if para.text.strip(): print(f'Table[-1] row={i} cell={j} para={k}: {repr(para.text[:200])}') "
python3 -c " from docx import Document src = '/tmp/workspace/attachments/f2ee3e4b-7b62-4196-999f-fead3ab3ea9b/Ayurvedic_Diet_FLEX_POSTER_5x5ft.docx' doc = Document(src) # Dump EVERY paragraph from every table for ti, table in enumerate(doc.tables): for ri, row in enumerate(table.rows): for ci, cell in enumerate(row.cells): for pi, para in enumerate(cell.paragraphs): t = para.text.strip() if t: print(f't{ti} r{ri} c{ci} p{pi}: {repr(t[:100])}') " 2>&1 | tail -30
python3 -c " from docx import Document src = '/tmp/workspace/attachments/f2ee3e4b-7b62-4196-999f-fead3ab3ea9b/Ayurvedic_Diet_FLEX_POSTER_5x5ft.docx' doc = Document(src) # Check table 12 (last one) for ti, table in enumerate(doc.tables): if ti == 12: for ri, row in enumerate(table.rows): for ci, cell in enumerate(row.cells): for pi, para in enumerate(cell.paragraphs): t = para.text.strip() if t: print(f't{ti} r{ri} c{ci} p{pi}: {repr(t[:200])}') # Also check standalone paragraphs at end print('--- STANDALONE PARAS (last 10) ---') all_paras = doc.paragraphs for p in all_paras[-10:]: if p.text.strip(): print(repr(p.text[:200])) "
python3 -c " from docx import Document # Verify Fasting v2 — confirm line is gone src = '/tmp/workspace/ayurvedic-diet-chart/Fasting_Chart_FLEX_POSTER_5x5ft_v2.docx' doc = Document(src) keyword = 'For Educational' found = [] for table in doc.tables: for row in table.rows: for cell in row.cells: for para in cell.paragraphs: if keyword in para.text: found.append(para.text[:120]) for para in doc.paragraphs: if keyword in para.text: found.append(para.text[:120]) if found: print('STILL PRESENT:', found) else: print('✅ Fasting v2: disclaimer line REMOVED successfully') # Also check what the footer now says for ti, table in enumerate(doc.tables): for ri, row in enumerate(table.rows): for ci, cell in enumerate(row.cells): for pi, para in enumerate(cell.paragraphs): t = para.text.strip() if 'BNYS' in t or 'Charaka' in t or 'Reference' in t: print(f'Footer remaining: {repr(t[:150])}') "
Fasting Chart FLEX POSTER 5x5ft v2
Word Document · DOCX
Ayurvedic Diet FLEX POSTER 5x5ft
Word Document · DOCX
Download all files and send to flex printing at 60×60 inches
| # | Poster | Download |
|---|---|---|
| 1 | Ayurvedic Diet Chart (Vata · Pitta · Kapha) | Ayurvedic Diet FLEX POSTER 5x5ft Word Document · DOCX |
| 2 | Fasting Chart (IF · Naturopathic · Ayurvedic) — updated | Fasting Chart FLEX POSTER 5x5ft v2 Word Document · DOCX |
| 3 | Gut Health Chart (Probiotics · Prebiotics · Fiber) | Gut Health FLEX POSTER 5x5ft Word Document · DOCX |
Ok make some flex according to your intelligence size 2*3 for my clg with diagrams and composed of good information on dietician fasting and accordingly to you in doc form approx 5 in no
~/ayurvedic-diet-chart/create_college_flex_posters.py
from docx import Document
from docx.shared import Pt, Inches, RGBColor, Cm
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.enum.table import WD_TABLE_ALIGNMENT
from docx.oxml.ns import qn
from docx.oxml import OxmlElement
import os
OUT_DIR = "/tmp/workspace/ayurvedic-diet-chart/college-flex/"
os.makedirs(OUT_DIR, exist_ok=True)
# 2ft wide x 3ft tall = 24 x 36 inches (portrait)
PW = Inches(24)
PH = Inches(36)
LM = RM = Inches(0.8)
TM = BM = Inches(0.7)
CW = 24 - 1.6 # content width in inches
# ── Helpers ──────────────────────────────────────────
def new_doc():
doc = Document()
s = doc.sections[0]
s.page_width = PW; s.page_height = PH
s.left_margin = LM; s.right_margin = RM
s.top_margin = TM; s.bottom_margin = BM
doc.styles["Normal"].font.name = "Calibri"
doc.styles["Normal"].font.size = Pt(22)
return doc
def shade(cell, hex_c):
tc = cell._tc; tcPr = tc.get_or_add_tcPr()
shd = OxmlElement("w:shd")
shd.set(qn("w:val"), "clear"); shd.set(qn("w:color"), "auto"); shd.set(qn("w:fill"), hex_c)
tcPr.append(shd)
def hcell(cell, text, bg, fg="FFFFFF", size=26, center=True, italic=False):
shade(cell, bg); p = cell.paragraphs[0]; p.clear()
r = p.add_run(text); r.bold = True; r.italic = italic
r.font.size = Pt(size); r.font.color.rgb = RGBColor.from_string(fg)
p.alignment = WD_ALIGN_PARAGRAPH.CENTER if center else WD_ALIGN_PARAGRAPH.LEFT
def bcell(cell, text, bg="FFFFFF", bold=False, size=20, center=False, color="111111", italic=False):
shade(cell, bg); p = cell.paragraphs[0]; p.clear()
r = p.add_run(text); r.bold = bold; r.italic = italic
r.font.size = Pt(size); r.font.color.rgb = RGBColor.from_string(color)
p.alignment = WD_ALIGN_PARAGRAPH.CENTER if center else WD_ALIGN_PARAGRAPH.LEFT
def add_lines(cell, lines, bg, size=20, first_bold=True, first_color=None, text_color="111111"):
shade(cell, bg)
for i, line in enumerate(lines):
p = cell.paragraphs[0] if i == 0 else cell.add_paragraph()
p.clear(); r = p.add_run(line)
r.font.size = Pt(size)
r.bold = (i == 0 and first_bold)
if i == 0 and first_color:
r.font.color.rgb = RGBColor.from_string(first_color)
else:
r.font.color.rgb = RGBColor.from_string(text_color)
def title_banner(doc, line1, line2, line3, bg, fg1="FFFFFF", fg2="CCDDFF", fg3="AABBEE"):
t = doc.add_table(rows=1, cols=1); t.style = "Table Grid"
c = t.cell(0,0); shade(c, bg)
p = c.paragraphs[0]; p.clear()
r = p.add_run(line1); r.bold=True; r.font.size=Pt(72); r.font.color.rgb=RGBColor.from_string(fg1)
p.alignment = WD_ALIGN_PARAGRAPH.CENTER
if line2:
p2 = c.add_paragraph(); p2.clear()
r2 = p2.add_run(line2); r2.font.size=Pt(32); r2.bold=True; r2.font.color.rgb=RGBColor.from_string(fg2)
p2.alignment = WD_ALIGN_PARAGRAPH.CENTER
if line3:
p3 = c.add_paragraph(); p3.clear()
r3 = p3.add_run(line3); r3.font.size=Pt(24); r3.italic=True; r3.font.color.rgb=RGBColor.from_string(fg3)
p3.alignment = WD_ALIGN_PARAGRAPH.CENTER
doc.add_paragraph("")
def section_hdr(doc, text, bg, fg="FFFFFF", size=34):
t = doc.add_table(rows=1, cols=1); t.style = "Table Grid"
c = t.cell(0,0); shade(c, bg)
p = c.paragraphs[0]; p.clear()
r = p.add_run(text); r.bold=True; r.font.size=Pt(size); r.font.color.rgb=RGBColor.from_string(fg)
p.alignment = WD_ALIGN_PARAGRAPH.CENTER
doc.add_paragraph("")
def sub_hdr(doc, text, color, size=28):
h = doc.add_heading(text, level=2)
for run in h.runs:
run.font.color.rgb = RGBColor.from_string(color)
run.font.size = Pt(size)
def footer_bar(doc, text, bg="1B2631", fg="AED6F1"):
doc.add_paragraph("")
t = doc.add_table(rows=1, cols=1); t.style = "Table Grid"
c = t.cell(0,0); shade(c, bg)
p = c.paragraphs[0]; p.clear()
r = p.add_run(text); r.font.size=Pt(22); r.bold=True; r.font.color.rgb=RGBColor.from_string(fg)
p.alignment = WD_ALIGN_PARAGRAPH.CENTER
def make_table(doc, headers, rows, hdr_bg, alt_bg, hdr_sz=24, row_sz=20):
tbl = doc.add_table(rows=1, cols=len(headers)); tbl.style = "Table Grid"
tbl.alignment = WD_TABLE_ALIGNMENT.CENTER
bgs = hdr_bg if isinstance(hdr_bg, list) else [hdr_bg]*len(headers)
for i,(h,b) in enumerate(zip(headers,bgs)): hcell(tbl.cell(0,i), h, b, size=hdr_sz)
for idx, row_data in enumerate(rows):
row = tbl.add_row()
bg = alt_bg if idx%2==0 else "FFFFFF"
for j, val in enumerate(row_data):
bcell(row.cells[j], str(val), bg, bold=(j==0), size=row_sz)
doc.add_paragraph(""); return tbl
# ════════════════════════════════════════════════════════
# POSTER 1 — INTERMITTENT FASTING VISUAL GUIDE
# ════════════════════════════════════════════════════════
doc1 = new_doc()
title_banner(doc1, "INTERMITTENT FASTING", "A Visual Guide to Time-Restricted Eating",
"BNYS Naturopathy · Food & Dietetics", "0D47A1")
# Visual timeline diagram using table
section_hdr(doc1, "⏰ IF PROTOCOLS — FASTING vs EATING WINDOWS", "1565C0")
# Clock-style diagram as table
timeline_tbl = doc1.add_table(rows=9, cols=4)
timeline_tbl.style = "Table Grid"
timeline_tbl.alignment = WD_TABLE_ALIGNMENT.CENTER
# Headers
for i,(h,bg) in enumerate(zip(
["Protocol", "🟢 EATING WINDOW", "🔴 FASTING WINDOW", "Difficulty"],
["1565C0","1E8449","C62828","7B1FA2"])):
hcell(timeline_tbl.cell(0,i), h, bg, size=24)
protocols = [
("12:12", "████████████ 12 hrs\n7 AM → 7 PM", "████████████ 12 hrs\n7 PM → 7 AM", "⭐ Beginner"),
("14:10", "██████████ 10 hrs\n8 AM → 6 PM", "██████████████ 14 hrs\n6 PM → 8 AM", "⭐⭐ Easy"),
("16:8 ★", "████████ 8 hrs\n10 AM → 6 PM", "████████████████ 16 hrs\n6 PM → 10 AM", "⭐⭐⭐ Moderate"),
("18:6", "██████ 6 hrs\n12 PM → 6 PM", "██████████████████ 18 hrs\n6 PM → 12 PM", "⭐⭐⭐⭐ Hard"),
("20:4", "████ 4 hrs\n4 PM → 8 PM", "████████████████████ 20 hrs\n8 PM → 4 PM", "⭐⭐⭐⭐ Hard"),
("OMAD", "█ 1 meal/day", "███████████████████████ 23 hrs", "⭐⭐⭐⭐⭐ Expert"),
("5:2", "Normal × 5 days/week", "500–600 kcal × 2 non-consec. days", "⭐⭐⭐ Moderate"),
("ADF", "Normal eating today", "Fast / <500 kcal alternate day", "⭐⭐⭐⭐ Hard"),
]
row_bgs = ["E3F2FD","FFFFFF"]
for idx,(name,eat,fast,diff) in enumerate(protocols):
row = timeline_tbl.rows[idx+1]
bg = row_bgs[idx%2]
bcell(row.cells[0], name, "E8EAF6", bold=True, size=22, center=True, color="1A237E")
bcell(row.cells[1], eat, "E8F5E9", size=19, color="1B5E20")
bcell(row.cells[2], fast, "FFEBEE", size=19, color="B71C1C")
bcell(row.cells[3], diff, bg, size=20, center=True, color="4A148C")
doc1.add_paragraph("")
# Benefits diagram — 2 column
section_hdr(doc1, "🔬 WHAT HAPPENS IN YOUR BODY DURING FASTING?", "1565C0")
body_tbl = doc1.add_table(rows=1, cols=2)
body_tbl.style = "Table Grid"
body_tbl.alignment = WD_TABLE_ALIGNMENT.CENTER
bleft = body_tbl.cell(0,0); shade(bleft, "E3F2FD")
p = bleft.paragraphs[0]; p.clear()
r = p.add_run("HOUR-BY-HOUR CHANGES"); r.bold=True; r.font.size=Pt(26); r.font.color.rgb=RGBColor.from_string("0D47A1")
p.alignment = WD_ALIGN_PARAGRAPH.CENTER
timeline_items = [
("0–4 hrs", "🍽️ Digestion phase — insulin rises, glucose used for energy"),
("4–8 hrs", "📉 Insulin drops — body shifts to fat stores"),
("8–12 hrs", "🔥 Fat oxidation begins — ketones start forming"),
("12–16 hrs", "⚙️ Autophagy activates — damaged cell recycling"),
("16–24 hrs", "🧬 Sirtuin activation — anti-ageing pathways"),
("24–48 hrs", "🧠 Peak ketosis — maximum autophagy — gut microbiome reset"),
("48+ hrs", "🔄 Stem cell regeneration — immune reset (water fast only)"),
]
for time, event in timeline_items:
pp = bleft.add_paragraph(); pp.clear()
rr = pp.add_run(f"{time}: "); rr.bold=True; rr.font.size=Pt(22); rr.font.color.rgb=RGBColor.from_string("1565C0")
rr2 = pp.add_run(event); rr2.font.size=Pt(20)
bright = body_tbl.cell(0,1); shade(bright, "F3E5F5")
p2 = bright.paragraphs[0]; p2.clear()
r2 = p2.add_run("TOP 8 HEALTH BENEFITS"); r2.bold=True; r2.font.size=Pt(26); r2.font.color.rgb=RGBColor.from_string("6A1B9A")
p2.alignment = WD_ALIGN_PARAGRAPH.CENTER
benefits_if = [
("⚖️ Weight Loss", "Reduces insulin; activates fat burning"),
("🩺 Blood Sugar", "Improves insulin sensitivity; reduces HbA1c"),
("🧠 Brain Health", "Increases BDNF; improves focus and memory"),
("🫀 Heart Health", "Reduces BP, LDL, triglycerides, inflammation"),
("🦠 Gut Microbiome", "Fasting periods increase Akkermansia; diversity"),
("🔄 Autophagy", "Cellular clean-up; removes damaged proteins"),
("😴 Sleep Quality", "Circadian alignment improves sleep depth"),
("🧬 Longevity", "Sirtuin activation; telomere protection"),
]
for icon_title, desc in benefits_if:
pp = bright.add_paragraph(); pp.clear()
rr = pp.add_run(f"{icon_title}: "); rr.bold=True; rr.font.size=Pt(22); rr.font.color.rgb=RGBColor.from_string("6A1B9A")
rr2 = pp.add_run(desc); rr2.font.size=Pt(20)
doc1.add_paragraph("")
# Allowed during fast
section_hdr(doc1, "✅ ALLOWED vs ❌ NOT ALLOWED DURING FASTING WINDOW", "37474F")
fw_tbl = doc1.add_table(rows=1, cols=2)
fw_tbl.style = "Table Grid"
fw_tbl.alignment = WD_TABLE_ALIGNMENT.CENTER
allowed_cell = fw_tbl.cell(0,0); shade(allowed_cell, "E8F5E9")
p3 = allowed_cell.paragraphs[0]; p3.clear()
r3 = p3.add_run("✅ ALLOWED"); r3.bold=True; r3.font.size=Pt(28); r3.font.color.rgb=RGBColor.from_string("1B5E20")
p3.alignment = WD_ALIGN_PARAGRAPH.CENTER
for item in ["💧 Warm water / mineral water","🍋 Lemon water (plain)","☕ Black coffee (no milk/sugar)","🍵 Plain green / herbal tea","🧂 Electrolyte water (no sugar)","🍎 Apple cider vinegar (1 tsp)"]:
pp = allowed_cell.add_paragraph(); rr = pp.add_run(f" {item}"); rr.font.size=Pt(22)
avoid_cell = fw_tbl.cell(0,1); shade(avoid_cell, "FFEBEE")
p4 = avoid_cell.paragraphs[0]; p4.clear()
r4 = p4.add_run("❌ NOT ALLOWED"); r4.bold=True; r4.font.size=Pt(28); r4.font.color.rgb=RGBColor.from_string("B71C1C")
p4.alignment = WD_ALIGN_PARAGRAPH.CENTER
for item in ["🥛 Milk / dairy / cream","🧃 Fruit juice / smoothies","🍬 Sugar / honey / sweeteners","🥤 Energy drinks / soda","🍪 Any food with calories","💊 Fat-soluble supplements"]:
pp = avoid_cell.add_paragraph(); rr = pp.add_run(f" {item}"); rr.font.size=Pt(22)
footer_bar(doc1, "BNYS Food & Dietetics · Naturopathy College Display · IF Reference Chart", "0D47A1")
doc1.save(OUT_DIR + "Poster1_Intermittent_Fasting.docx")
print("Poster 1 saved")
# ════════════════════════════════════════════════════════
# POSTER 2 — GUT HEALTH PYRAMID
# ════════════════════════════════════════════════════════
doc2 = new_doc()
title_banner(doc2, "GUT HEALTH PYRAMID", "Probiotics · Prebiotics · Fermented Foods · Fiber",
"BNYS Naturopathy · Digestive Wellness", "00695C", "FFFFFF", "B2DFDB", "80CBC4")
section_hdr(doc2, "🏔️ THE GUT HEALTH FOOD PYRAMID", "00695C")
# Pyramid as stacked table rows (widening bottom = base)
pyramid_levels = [
("APEX", "THERAPEUTIC / MEDICINAL", "Turmeric · Ginger · Neem · Amla · Tulsi · Honey", "As needed", "4E342E", "EFEBE9"),
("L6", "PROBIOTICS", "Yoghurt · Kefir · Kimchi · Lassi · Idli · Miso · Kombucha", "1 serving/day", "1A5276", "D6EAF8"),
("L5", "PREBIOTICS", "Garlic · Onion · Oats · Banana · Asparagus · Chicory · Flaxseed", "5–10 g/day", "1E8449", "D5F5E3"),
("L4", "FRUITS & ANTIOXIDANTS", "Berries · Pomegranate · Apple · Citrus · Mango · Papaya · Guava", "3–5 servings/day", "AD1457", "FCE4EC"),
("L3", "VEGETABLES & LEGUMES", "Leafy greens · Broccoli · Lentils · Chickpeas · Moong dal · Peas", "4–6 servings/day", "558B2F", "F1F8E9"),
("L2", "WHOLE GRAINS & FIBER", "Barley · Millet · Oats · Quinoa · Brown rice · Wheat bran", "6–8 servings/day", "E65100", "FFF3E0"),
("BASE", "WATER & FERMENTED DRINKS", "8–10 glasses warm water · Kanji · Kefir · Herbal teas daily", "Foundation", "0277BD", "E1F5FE"),
]
pyr_tbl = doc2.add_table(rows=len(pyramid_levels), cols=3)
pyr_tbl.style = "Table Grid"
pyr_tbl.alignment = WD_TABLE_ALIGNMENT.CENTER
for i, (level, name, foods, qty, hdr_bg, row_bg) in enumerate(pyramid_levels):
hcell(pyr_tbl.cell(i,0), f"{level}\n{qty}", hdr_bg, size=20)
hcell(pyr_tbl.cell(i,1), name, hdr_bg, size=24, center=False)
bcell(pyr_tbl.cell(i,2), foods, row_bg, size=19)
doc2.add_paragraph("")
# 4 pillar cards
section_hdr(doc2, "🔬 THE 4 PILLARS OF GUT HEALTH", "00695C")
pillar_tbl = doc2.add_table(rows=1, cols=4)
pillar_tbl.style = "Table Grid"
pillar_tbl.alignment = WD_TABLE_ALIGNMENT.CENTER
pillars2 = [
("1A5276","🦠 PROBIOTICS","Live bacteria that restore gut flora",
["Best: Yoghurt, Kefir,","Kimchi, Idli, Lassi","Key strains: Lactobacillus","Bifidobacterium","Dose: ≥10⁹ CFU/day","Clinical use: IBS, AAD,","Constipation, Immunity"]),
("1E8449","🌱 PREBIOTICS","Food that feeds good bacteria",
["Best: Garlic, Onion,","Oats, Banana, Chicory","Types: Inulin, FOS, GOS,","Beta-glucan, Pectin","Goal: 5–10 g/day","Produces: Butyrate (SCFAs)","Benefit: Cholesterol, Sugar"]),
("7D3C98","🫙 FERMENTED FOODS","Ancient natural probiotic sources",
["Indian: Dahi, Kanji,","Dhokla, Idli, Lassi","Global: Kimchi, Miso,","Tempeh, Kombucha","Choose unpasteurised","for live cultures only","Daily or 3–5×/week"]),
("B7770D","🌾 DIETARY FIBER","Fuel for your microbiome",
["Target: 25–38 g/day","Soluble: Oats, Apple,","Psyllium, Lentils","Insoluble: Wheat bran,","Broccoli, Whole grains","Produces SCFAs → Butyrate","= colonocyte energy"]),
]
for i,(bg, title, sub, items) in enumerate(pillars2):
cell = pillar_tbl.cell(0,i); shade(cell, bg)
p = cell.paragraphs[0]; p.clear()
r = p.add_run(title); r.bold=True; r.font.size=Pt(26); r.font.color.rgb=RGBColor.from_string("FFFFFF")
p.alignment = WD_ALIGN_PARAGRAPH.CENTER
ps = cell.add_paragraph(); ps.clear()
rs = ps.add_run(sub); rs.font.size=Pt(20); rs.italic=True; rs.font.color.rgb=RGBColor.from_string("DDFFEE")
ps.alignment = WD_ALIGN_PARAGRAPH.CENTER
for item in items:
pp = cell.add_paragraph(); rr = pp.add_run(f"• {item}"); rr.font.size=Pt(20); rr.font.color.rgb=RGBColor.from_string("F0FFFA")
doc2.add_paragraph("")
# Sample day
section_hdr(doc2, "🍽️ SAMPLE GUT-HEALTHY DAY", "00695C")
day_tbl = doc2.add_table(rows=1, cols=7)
day_tbl.style = "Table Grid"
day_tbl.alignment = WD_TABLE_ALIGNMENT.CENTER
meals = [
("6 AM","💧 Warm water\n+ isabgol\n+ lemon","E3F2FD"),
("8 AM","🥣 Oat porridge\n+ banana\n+ flaxseed","E8F5E9"),
("10:30 AM","🥛 Fresh lassi\nor kefir","F3E5F5"),
("1 PM","🍱 Idli + sambar\n+ onion-garlic\nsabzi + salad","FFF8E1"),
("4 PM","🍎 Apple\n+ dark choc\n+ green tea","FCE4EC"),
("7 PM","🫙 Roti + veg\n+ miso soup\nor kimchi","E8F5E9"),
("9:30 PM","🌿 Haldi doodh\nor chamomile\ntea","FFF3E0"),
]
for i,(time, food, bg) in enumerate(meals):
cell = day_tbl.cell(0,i); shade(cell, bg)
p = cell.paragraphs[0]; p.clear()
r = p.add_run(time); r.bold=True; r.font.size=Pt(22); r.font.color.rgb=RGBColor.from_string("00695C")
p.alignment = WD_ALIGN_PARAGRAPH.CENTER
pp = cell.add_paragraph(); rr = pp.add_run(food); rr.font.size=Pt(20)
pp.alignment = WD_ALIGN_PARAGRAPH.CENTER
footer_bar(doc2, "BNYS Food & Dietetics · Gut Health Pyramid · Naturopathy College Display", "00695C")
doc2.save(OUT_DIR + "Poster2_Gut_Health_Pyramid.docx")
print("Poster 2 saved")
# ════════════════════════════════════════════════════════
# POSTER 3 — AYURVEDIC DOSHA DIET
# ════════════════════════════════════════════════════════
doc3 = new_doc()
title_banner(doc3, "AYURVEDIC DOSHA DIET", "Vata · Pitta · Kapha — Know Your Prakriti",
"BNYS Naturopathy · Ayurvedic Dietetics", "4A148C", "FFFFFF", "CE93D8", "AB47BC")
# 3 dosha intro boxes
section_hdr(doc3, "🌿 THE THREE DOSHAS (PRAKRITI)", "6A1B9A")
dosha_intro = doc3.add_table(rows=1, cols=3)
dosha_intro.style = "Table Grid"
dosha_intro.alignment = WD_TABLE_ALIGNMENT.CENTER
dosha_info = [
("8B4513","VATA","Air + Ether",
"Dry · Light · Cold · Mobile",
["Body: Thin, light frame","Dry skin, cold hands/feet","Variable digestion","Light, interrupted sleep","Quick mind, creative"],
["Anxiety, insomnia","Constipation, bloating","Arthritis, joint pain","Dry skin, eczema","Sciatica, backache"],
"Warm · Moist · Heavy · Nourishing\nSweet · Sour · Salty tastes"),
("8B0000","PITTA","Fire + Water",
"Hot · Sharp · Oily · Spreading",
["Body: Medium, muscular","Warm, oily skin, rashes","Strong appetite","Premature grey hair","Sharp, focused mind"],
["Acid reflux, gastritis","Skin: acne, rosacea","Migraines, hypertension","Liver disorders, jaundice","Anger, irritability"],
"Cool · Light · Sweet · Refreshing\nSweet · Bitter · Astringent tastes"),
("1A5276","KAPHA","Earth + Water",
"Heavy · Slow · Cool · Dense",
["Body: Heavy, large frame","Thick, oily smooth skin","Slow digestion/metabolism","Deep, heavy sleep","Calm, patient mind"],
["Obesity, slow metabolism","Type 2 Diabetes","Asthma, sinusitis","Hypothyroidism, PCOS","Lethargy, depression"],
"Light · Dry · Warm · Stimulating\nPungent · Bitter · Astringent tastes"),
]
for i,(bg, name, elements, qualities, traits, disorders, diet_p) in enumerate(dosha_info):
cell = dosha_intro.cell(0,i); shade(cell, bg)
p = cell.paragraphs[0]; p.clear()
r = p.add_run(name); r.bold=True; r.font.size=Pt(40); r.font.color.rgb=RGBColor.from_string("FFFFFF")
p.alignment = WD_ALIGN_PARAGRAPH.CENTER
for label, val, items in [("Elements:", elements, []), ("Qualities:", qualities, []),
("Physical Traits:", "", traits), ("Common Disorders:", "", disorders),
("Dietary Principle:", diet_p, [])]:
pp = cell.add_paragraph(); pp.clear()
rr = pp.add_run(label); rr.bold=True; rr.font.size=Pt(22); rr.font.color.rgb=RGBColor.from_string("FFDDAA")
if val:
rr2 = pp.add_run(f" {val}"); rr2.font.size=Pt(20); rr2.font.color.rgb=RGBColor.from_string("FFFFFF")
for item in items:
pi = cell.add_paragraph(); ri = pi.add_run(f" • {item}"); ri.font.size=Pt(20); ri.font.color.rgb=RGBColor.from_string("FFFFFF")
doc3.add_paragraph("")
# Diet chart 3 columns
section_hdr(doc3, "🍽️ DOSHA DIET CHART — FOODS TO FAVOUR & AVOID", "6A1B9A")
diet3_tbl = doc3.add_table(rows=1, cols=4)
diet3_tbl.style = "Table Grid"
diet3_tbl.alignment = WD_TABLE_ALIGNMENT.CENTER
hcell(diet3_tbl.cell(0,0), "Food Category", "37474F", size=22)
hcell(diet3_tbl.cell(0,1), "✅ VATA\nFavour", "8B4513", size=22)
hcell(diet3_tbl.cell(0,2), "✅ PITTA\nFavour", "8B0000", size=22)
hcell(diet3_tbl.cell(0,3), "✅ KAPHA\nFavour", "1A5276", size=22)
diet_compare = [
("Grains", "Rice, wheat, oats, quinoa", "Basmati rice, wheat, barley", "Barley, millet, quinoa, buckwheat"),
("Legumes", "Moong dal, red lentils", "Moong, chickpeas, tofu", "All legumes; moong best"),
("Vegetables", "Cooked: carrot, sweet potato, beet, spinach", "Cucumber, leafy greens, broccoli, fennel", "Broccoli, kale, cabbage, mushrooms"),
("Fruits", "Banana, mango, avocado, dates, figs", "Coconut, pomegranate, grapes, pear", "Apple, pear, berries, pomegranate"),
("Dairy", "Warm milk, ghee, paneer", "Milk (cool), ghee, butter", "Low-fat milk (warm), thin buttermilk"),
("Oils", "Sesame, almond, ghee", "Coconut, sunflower, ghee", "Mustard, sunflower (minimal)"),
("Spices", "Ginger, cumin, hing, cardamom","Coriander, fennel, turmeric", "Dry ginger, black pepper, trikatu"),
("Best drink", "Warm water, ginger tea", "Coconut water, fennel tea", "Warm water + ginger/lemon"),
]
for idx, row_data in enumerate(diet_compare):
row = diet3_tbl.add_row()
bgs_row = ["FDF6EC","FFF3F3","EBF5FB"]
bcell(row.cells[0], row_data[0], "F5F5F5", bold=True, size=20)
bcell(row.cells[1], row_data[1], bgs_row[0], size=19)
bcell(row.cells[2], row_data[2], bgs_row[1], size=19)
bcell(row.cells[3], row_data[3], bgs_row[2], size=19)
doc3.add_paragraph("")
# Quick comparison summary
section_hdr(doc3, "⚡ QUICK REFERENCE SUMMARY", "6A1B9A")
qr_tbl = doc3.add_table(rows=1, cols=4)
qr_tbl.style = "Table Grid"
qr_tbl.alignment = WD_TABLE_ALIGNMENT.CENTER
hcell(qr_tbl.cell(0,0), "Parameter", "37474F", size=22)
hcell(qr_tbl.cell(0,1), "VATA", "8B4513", size=22)
hcell(qr_tbl.cell(0,2), "PITTA", "8B0000", size=22)
hcell(qr_tbl.cell(0,3), "KAPHA", "1A5276", size=22)
qr_rows = [
("Food Temp", "Warm / Hot", "Cool / Room temp", "Warm / Hot"),
("Food Quality", "Moist, Heavy", "Light, Cool, Dry", "Light, Dry"),
("Meal Pattern", "3 meals + snacks","Never skip meals", "Skip breakfast"),
("Best Fast", "12:12 max only", "16:8 ideal", "18:6 or OMAD"),
("Cooking", "Boiled, steamed", "Steamed, baked", "Grilled, dry-roasted"),
("Best Herb", "Ashwagandha", "Brahmi, Amalaki", "Trikatu, Guggulu"),
]
for idx, row_data in enumerate(qr_rows):
row = qr_tbl.add_row()
bg = "F5F5F5" if idx%2==0 else "FFFFFF"
for j, val in enumerate(row_data):
bcell(row.cells[j], val, bg, bold=(j==0), size=20)
footer_bar(doc3, "BNYS Naturopathy · Ayurvedic Dosha Diet Chart · College Display Poster", "4A148C")
doc3.save(OUT_DIR + "Poster3_Ayurvedic_Dosha_Diet.docx")
print("Poster 3 saved")
# ════════════════════════════════════════════════════════
# POSTER 4 — NATUROPATHIC FASTING PROTOCOL
# ════════════════════════════════════════════════════════
doc4 = new_doc()
title_banner(doc4, "NATUROPATHIC FASTING", "Therapeutic Fasting Protocols & Healing Crisis Guide",
"BNYS Naturopathy · Clinical Dietetics", "1B5E20", "FFFFFF", "A5D6A7", "66BB6A")
# 3-phase flowchart using coloured table
section_hdr(doc4, "🔄 THE 3-PHASE NATUROPATHIC FASTING PROTOCOL", "2E7D32")
arrow_tbl = doc4.add_table(rows=1, cols=5)
arrow_tbl.style = "Table Grid"
arrow_tbl.alignment = WD_TABLE_ALIGNMENT.CENTER
phases4 = [
("1E8449", "PHASE 1\nPREPARATION\nDays 1–3",
["Stop: Meat, dairy,","fried, refined food","Eat ONLY:","• Fresh fruits","• Raw vegetables","• Coconut water","• Fresh juices","• Warm water","PURPOSE:","Reduce Ama; prepare","digestive system"]),
("B7770D", "➡️", []),
("E65100", "PHASE 2\nACTIVE FAST\nDay 4 onwards",
["Juice fast:","Fresh juice every","2–3 hours","Water fast:","Warm water only","Fruit fast:","Light fresh fruits","Rest completely","Light yoga only","HEALING CRISIS","expected Days 1–3"]),
("B71C1C", "➡️", []),
("1A5276", "PHASE 3\nBREAKING FAST\n⚠️ MOST CRITICAL",
["Day 1: Juice only","Day 2: Soft fruits","Day 3: Moong soup","Day 4: Khichdi","Day 5+: Normal diet","NEVER break with","heavy/fried food","Risk: Refeeding","syndrome if rushed","Equal days to fast"]),
]
for i, (bg, title, items) in enumerate(phases4):
cell = arrow_tbl.cell(0,i); shade(cell, bg)
p = cell.paragraphs[0]; p.clear()
r = p.add_run(title); r.bold=True; r.font.size=Pt(28 if items else 40)
r.font.color.rgb=RGBColor.from_string("FFFFFF"); p.alignment = WD_ALIGN_PARAGRAPH.CENTER
for item in items:
pp = cell.add_paragraph(); rr = pp.add_run(f"• {item}" if not item.startswith("•") else item)
rr.font.size=Pt(20); rr.font.color.rgb=RGBColor.from_string("F0FFF0")
doc4.add_paragraph("")
# Fasting types
section_hdr(doc4, "📋 TYPES OF NATUROPATHIC FASTING", "2E7D32")
make_table(doc4,
["Type","What is Allowed","Duration","Best For"],
[
("Eliminative Diet\n(Pre-fast prep)", "Fruits, raw veg, juices, coconut water", "2–3 days", "Preparing body; reducing Ama"),
("Fruit Fast", "Only fresh fruits + water", "1–3 days", "Mild detox, fever, cold onset"),
("Juice Fast ⭐", "Fresh veg + fruit juices every 2–3 hrs","3–7 days", "Liver, obesity, skin, HTN"),
("Mono Diet Fast", "One food only (watermelon / grapes)", "1–5 days", "Specific organ support"),
("Semi-Fast", "2 light meals: raw/cooked veg + dal", "7–14 days", "Chronic disease, autoimmune"),
("Water Fast", "Warm plain water only", "1–3 days", "Deep detox, acute illness"),
],
"2E7D32", "E8F5E9", hdr_sz=22, row_sz=20)
# Healing crisis + sample 5-day
section_hdr(doc4, "⚡ HEALING CRISIS — WHAT TO EXPECT", "2E7D32")
hc_tbl2 = doc4.add_table(rows=1, cols=2)
hc_tbl2.style = "Table Grid"
hc_tbl2.alignment = WD_TABLE_ALIGNMENT.CENTER
hcleft = hc_tbl2.cell(0,0); shade(hcleft, "E8F5E9")
p = hcleft.paragraphs[0]; p.clear()
r = p.add_run("SYMPTOMS & MANAGEMENT"); r.bold=True; r.font.size=Pt(24); r.font.color.rgb=RGBColor.from_string("1B5E20")
p.alignment = WD_ALIGN_PARAGRAPH.CENTER
hc_items = [
("Headache (Days 1–3)", "Caffeine withdrawal + toxins", "Extra warm water; rest"),
("Fatigue / weakness", "Glucose→ketone fuel shift", "Complete bed rest"),
("Nausea, mild vomiting", "Liver/gut detox", "Ginger tea; warm water"),
("Bad breath, coated tongue","Toxin excretion", "Tongue scraping; gargle"),
("Skin rashes", "Skin elimination", "Tepid bath — good sign!"),
("Low BP / dizziness", "Reduced salt + fluid", "Electrolyte water"),
]
for sym, cause, mgmt in hc_items:
pp = hcleft.add_paragraph(); pp.clear()
rr = pp.add_run(f"• {sym}: "); rr.bold=True; rr.font.size=Pt(21); rr.font.color.rgb=RGBColor.from_string("2E7D32")
rr2 = pp.add_run(f"{cause} → {mgmt}"); rr2.font.size=Pt(19)
hcright = hc_tbl2.cell(0,1); shade(hcright, "FFF8E1")
p2 = hcright.paragraphs[0]; p2.clear()
r2 = p2.add_run("5-DAY JUICE FAST SCHEDULE"); r2.bold=True; r2.font.size=Pt(24); r2.font.color.rgb=RGBColor.from_string("E65100")
p2.alignment = WD_ALIGN_PARAGRAPH.CENTER
schedule5 = [
("Day 1 (Prep)", "Warm water + fruits + veg salad"),
("Day 2 (Prep)", "Juices + coconut water + light fruits"),
("Day 3 (Fast)", "Carrot-beet juice + warm water"),
("Day 4 (Fast)", "Pomegranate + cucumber-celery juice"),
("Day 5 (Fast)", "Mixed veg juice + coconut water"),
("Day 6 (Break)","Fruit juice only → soft fruits"),
("Day 7 (Break)","Moong dal soup → khichdi slowly"),
]
for day, food in schedule5:
pp = hcright.add_paragraph(); rr = pp.add_run(f"• {day}: "); rr.bold=True; rr.font.size=Pt(21); rr.font.color.rgb=RGBColor.from_string("E65100")
rr2 = pp.add_run(food); rr2.font.size=Pt(20)
footer_bar(doc4, "BNYS Naturopathy · Therapeutic Fasting Protocol · Clinical Reference Display", "1B5E20")
doc4.save(OUT_DIR + "Poster4_Naturopathic_Fasting.docx")
print("Poster 4 saved")
# ════════════════════════════════════════════════════════
# POSTER 5 — THERAPEUTIC DIETS IN NATUROPATHY
# ════════════════════════════════════════════════════════
doc5 = new_doc()
title_banner(doc5, "THERAPEUTIC DIETS", "Naturopathic Diet Ladder — From Eliminative to Constructive",
"BNYS Food & Dietetics · Clinical Nutrition", "880E4F", "FFFFFF", "F48FB1", "EC407A")
# Diet ladder — visual staircase using table
section_hdr(doc5, "🪜 THE NATUROPATHIC DIET LADDER", "880E4F")
ladder_tbl = doc5.add_table(rows=5, cols=3)
ladder_tbl.style = "Table Grid"
ladder_tbl.alignment = WD_TABLE_ALIGNMENT.CENTER
ladder = [
("C62828","ELIMINATIVE DIET\n(Stage 1 — Acute illness, Detox phase)",
"Only: Fruits (one type / mono fruit)\nRaw juices · Coconut water · Warm water only\nAvoid ALL cooked food, dairy, grains, salt",
"Acute fever · Cold & flu onset · Skin disorders\nJaundice · Headache · Digestive crises · Beginning of all naturo treatment"),
("E65100","SOOTHING DIET\n(Stage 2 — Transition phase)",
"Raw + boiled fruits · Vegetable juices · Salads\nSteamed vegetables · Soups (salt-free) · Coconut water\nNo grains, no dairy, no cooked proteins",
"After eliminative diet · Sub-acute illness\nChronic skin · Digestive disorders · Hypertension · Obesity transition"),
("F9A825","CONSTRUCTIVE DIET\n(Stage 3 — Rebuilding phase)",
"Whole grains (rice, millet, oats) · Legumes (moong dal)\nRaw + cooked vegetables · Sprouts · Low-fat dairy\nFresh fruits · Minimal salt · Cold-pressed oils",
"Chronic disease management · Post-acute illness\nWeight management · IBS · T2DM · PCOS · General health maintenance"),
("2E7D32","NORMAL NATUROPATHIC DIET\n(Stage 4 — Maintenance)",
"Balanced whole food diet · Fresh, seasonal, local\n70% raw / 30% cooked ratio · Sattvic foods preferred\nNo refined/processed food · Adequate fiber · Proper food combining",
"Daily maintenance for healthy individuals\nLong-term disease prevention · All Prakriti types\nThe foundation of BNYS dietetic practice"),
("1A5276","SPECIFIC THERAPEUTIC DIET\n(Stage 5 — Disease-specific)",
"Disease-specific modifications of Stage 3/4\nExamples: Diabetic diet · Renal diet · Cardiac diet\nElimination diet · Anti-inflammatory diet",
"Diabetes (Prameha) · Renal disease · Hypertension\nRheumatoid arthritis · IBD · Cancer supportive care\nObesity · NAFLD · Autoimmune conditions"),
]
for i, (bg, name, foods, indication) in enumerate(ladder):
shade(ladder_tbl.cell(i,0), bg)
p = ladder_tbl.cell(i,0).paragraphs[0]; p.clear()
r = p.add_run(name); r.bold=True; r.font.size=Pt(24); r.font.color.rgb=RGBColor.from_string("FFFFFF")
p.alignment = WD_ALIGN_PARAGRAPH.LEFT
shade(ladder_tbl.cell(i,1), "F9F9F9")
p2 = ladder_tbl.cell(i,1).paragraphs[0]; p2.clear()
r2 = p2.add_run("ALLOWED FOODS:\n"); r2.bold=True; r2.font.size=Pt(21); r2.font.color.rgb=RGBColor.from_string("1B5E20")
r3 = p2.add_run(foods); r3.font.size=Pt(19)
shade(ladder_tbl.cell(i,2), "F9F9F9")
p3 = ladder_tbl.cell(i,2).paragraphs[0]; p3.clear()
r4 = p3.add_run("CLINICAL INDICATION:\n"); r4.bold=True; r4.font.size=Pt(21); r4.font.color.rgb=RGBColor.from_string("880E4F")
r5 = p3.add_run(indication); r5.font.size=Pt(19)
doc5.add_paragraph("")
# Sattvic/Rajasic/Tamasic
section_hdr(doc5, "🌿 FOOD QUALITY (GUNA) CLASSIFICATION", "880E4F")
guna_tbl = doc5.add_table(rows=1, cols=3)
guna_tbl.style = "Table Grid"
guna_tbl.alignment = WD_TABLE_ALIGNMENT.CENTER
gunas = [
("1F6B1F","🌟 SATTVIC\nPure · Harmonious · Healing",
["Fresh fruits & vegetables","Moong dal, milk, ghee, honey","Seeds, fresh herbs","Basmati rice, oats, wheat","Freshly cooked food"],
"Promotes: Clarity · Peace\nWisdom · Good health\nSpiritual growth\n✅ RECOMMENDED for all"),
("B7770D","⚡ RAJASIC\nStimulating · Activating",
["Onion, garlic, coffee, tea","Spicy food, eggs, meat","Excessive salt, sour foods","Fermented cheese","Processed food"],
"Promotes: Restlessness\nPassion, Ambition\nAnger when in excess\n⚠️ USE IN MODERATION"),
("7B241C","🌑 TAMASIC\nDull · Inert · Toxic",
["Stale / reheated food","Alcohol, red meat","Junk / frozen food","Leftovers > 24 hrs","Deep fried foods"],
"Promotes: Lethargy\nDullness, Confusion\nDepression, Disease\n❌ AVOID COMPLETELY"),
]
for i,(bg, name, foods, effect) in enumerate(gunas):
cell = guna_tbl.cell(0,i); shade(cell, bg)
p = cell.paragraphs[0]; p.clear()
r = p.add_run(name); r.bold=True; r.font.size=Pt(28); r.font.color.rgb=RGBColor.from_string("FFFFFF")
p.alignment = WD_ALIGN_PARAGRAPH.CENTER
pp = cell.add_paragraph(); rr = pp.add_run("Examples:"); rr.bold=True; rr.font.size=Pt(22); rr.font.color.rgb=RGBColor.from_string("FFDDAA")
for food in foods:
pf = cell.add_paragraph(); rf = pf.add_run(f"• {food}"); rf.font.size=Pt(20); rf.font.color.rgb=RGBColor.from_string("FFFFFF")
pe = cell.add_paragraph(); re = pe.add_run(effect); re.font.size=Pt(21); re.bold=True; re.font.color.rgb=RGBColor.from_string("FFFFAA")
doc5.add_paragraph("")
# Viruddha Ahara quick chart
section_hdr(doc5, "⚠️ VIRUDDHA AHARA — TOP INCOMPATIBLE FOOD COMBINATIONS", "880E4F")
via_tbl = doc5.add_table(rows=1, cols=2)
via_tbl.style = "Table Grid"
via_tbl.alignment = WD_TABLE_ALIGNMENT.CENTER
via_left = via_tbl.cell(0,0); shade(via_left, "FFEBEE")
p = via_left.paragraphs[0]; p.clear()
r = p.add_run("❌ NEVER COMBINE"); r.bold=True; r.font.size=Pt(26); r.font.color.rgb=RGBColor.from_string("B71C1C")
p.alignment = WD_ALIGN_PARAGRAPH.CENTER
combos = [("Milk + Fish","Skin disorders, vitiligo"),("Milk + Sour fruits","Toxic fermentation"),
("Honey + Ghee (equal)","Forms Ama when heated"),("Cold water after oily food","Solidifies fats"),
("Banana + Milk","Heavy; causes Kapha/mucus"),("Honey heated >40°C","Becomes toxic Ama")]
for combo, reason in combos:
pp = via_left.add_paragraph(); rr = pp.add_run(f"• {combo}: "); rr.bold=True; rr.font.size=Pt(22); rr.font.color.rgb=RGBColor.from_string("C62828")
rr2 = pp.add_run(reason); rr2.font.size=Pt(20)
via_right = via_tbl.cell(0,1); shade(via_right, "E8F5E9")
p2 = via_right.paragraphs[0]; p2.clear()
r2 = p2.add_run("✅ AYURVEDIC DIET RULES"); r2.bold=True; r2.font.size=Pt(26); r2.font.color.rgb=RGBColor.from_string("1B5E20")
p2.alignment = WD_ALIGN_PARAGRAPH.CENTER
rules5 = ["Eat freshly cooked (Sattvic) food",
"Largest meal at noon (Agni strongest)",
"3–4 hours gap between meals",
"Fill: 1/3 food · 1/3 water · 1/3 empty",
"Eat calm; avoid stress while eating",
"Sip warm water during meals",
"Eat when genuinely hungry",
"Chew 32 times per mouthful"]
for rule in rules5:
pp = via_right.add_paragraph(); rr = pp.add_run(f"✓ {rule}"); rr.font.size=Pt(21)
footer_bar(doc5, "BNYS Naturopathy · Therapeutic Diets & Diet Ladder · College Clinical Display", "880E4F")
doc5.save(OUT_DIR + "Poster5_Therapeutic_Diets.docx")
print("Poster 5 saved")
print("\n✅ All 5 posters saved to", OUT_DIR)
cd /tmp/workspace/ayurvedic-diet-chart && python3 create_college_flex_posters.py 2>&1
ls -lh /tmp/workspace/ayurvedic-diet-chart/college-flex/
Download all 5 college flex posters now (24×36 inches)
Download all 5 college flex posters now (24×36 inches)