I have ibs I want a very realistic plan from basics for bpt 1st year university exam till October timing 4am to 6am evening 6 30pm to 9
And I cannot study on tues thrusday in evening and Sunday also just 1 hr in evening after 8pm
BPT 1st year syllabus anatomy physiology biochemistry psychology sociology exam topics
IBS study tips stress management students university exam
| Slot | Days | Hours |
|---|---|---|
| Morning 4:00-6:00 AM | Mon, Tue, Wed, Thu, Fri, Sat, Sun | 2 hrs x 7 = 14 hrs |
| Evening 6:30-9:00 PM | Mon, Wed, Fri, Sat only | 2.5 hrs x 4 = 10 hrs |
| Evening (limited) | Tue, Thu = 0 hrs; Sun = 1 hr after 8 PM | 1 hr |
| Weekly total | ~25 hrs/week |
| Subject | Weight | Difficulty | Priority |
|---|---|---|---|
| Anatomy | Very High (200 marks) | Very Hard | 1st |
| Physiology | Very High (200 marks) | Hard | 2nd |
| Psychology + Sociology | Medium (100 marks combined) | Moderate | 3rd |
| Biochemistry | Moderate (100 marks) | Moderate-Hard | 4th |
| Day | Morning 4-6 AM | Evening |
|---|---|---|
| Mon | Anatomy - new topic (1 region/system) | 6:30-9 PM: Physiology - new topic |
| Tue | Anatomy - revise Monday's topic | NO EVENING (skip completely, rest) |
| Wed | Physiology - revise Tuesday's morning topic | 6:30-9 PM: Biochemistry - new chapter |
| Thu | Psychology/Sociology - 1 chapter reading | NO EVENING (rest/walk/light activity) |
| Fri | Anatomy - new topic (continue region) | 6:30-9 PM: Physiology - new topic |
| Sat | Biochemistry - revise + make short notes | 6:30-9 PM: Anatomy - diagrams + labels |
| Sun | Light reading (any subject feeling weak) | 8-9 PM: Weekly review - what did I cover? |
| Day | Morning 4-6 AM | Evening |
|---|---|---|
| Mon | Anatomy - new topic (thorax/abdomen) | 6:30-9 PM: Write 3 short answers Anatomy |
| Tue | Physiology - new topic | NO EVENING |
| Wed | Biochemistry - new chapter | 6:30-9 PM: Write 2 long answers Physiology |
| Thu | Psychology/Sociology - continue chapters | NO EVENING |
| Fri | Anatomy - new topic (head/neck/CNS) | 6:30-9 PM: Physiology - write + diagrams |
| Sat | Mock questions + self-test (any subject) | 6:30-9 PM: Biochemistry + Psych/Soc writing |
| Sun | Weak area revision | 8-9 PM: Plan next week's topics |
| Day | Morning 4-6 AM | Evening |
|---|---|---|
| Mon | Anatomy - revise 2-3 important topics | 6:30-9 PM: Write full past paper answers (Anatomy) |
| Tue | Physiology - rapid revision notes | NO EVENING |
| Wed | Biochemistry rapid revision | 6:30-9 PM: Physiology past paper writing |
| Thu | Psychology/Sociology - revise all chapters | NO EVENING |
| Fri | Anatomy + Physiology diagrams | 6:30-9 PM: Mixed subject practice questions |
| Sat | Full mock test - any one subject (timed 3 hrs) | 6:30-9 PM: Review mock answers, find gaps |
| Sun | Rest - gentle reading only | 8-9 PM: Plan final week targets |
| Day | Morning 4-6 AM | Evening |
|---|---|---|
| Oct 21-22 | Anatomy full revision (summary notes only) | 2.5 hrs: Physiology full revision |
| Oct 23-24 | Biochemistry + Psych/Soc combined revision | 2.5 hrs: All diagrams review |
| Oct 25-26 | High-yield topics only (past paper patterns) | 2.5 hrs: Write 5 answers timed |
| Oct 27 | Light reading - do NOT start new topics | Rest evening - no study |
| Oct 28 | 1 hr reading per subject - revision only | Rest |
| Oct 29 | Final formula/definitions review | Sleep by 9:30 PM |
| Oct 30 | Exam eve - stop studying by 6 PM | Rest, gut-friendly food, sleep by 10 PM |
| Oct 31 | Exam day | - |
4:00 AM - Wake up
4:00-4:20 - Bathroom time, warm water/herbal tea, sit quietly (do NOT rush)
4:20-5:20 - Study Block 1 (new reading / diagram drawing / flashcards)
5:20-5:30 - Break (walk 5 min, light stretch)
5:30-6:00 - Study Block 2 (revise what you just read, make short notes)
6:00 AM - Done. Normal morning routine.
6:30 PM - Light snack if hungry (not a heavy meal - avoid IBS triggers)
6:30-7:30 - Study Block 1 (active study - writing answers, solving MCQs)
7:30-7:40 - Break (walk, water, no phone doom-scrolling)
7:40-8:40 - Study Block 2 (continue writing / diagrams / practice)
8:40-9:00 - 20 min review: what did I cover today? Write 3 key points.
9:00 PM - STOP. No study after 9 PM.
Create a detailed pdf
ls -la /tmp/workspace/ 2>/dev/null || echo "workspace does not exist yet"
mkdir -p /tmp/workspace/bpt-study-plan
~/bpt-study-plan/generate_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 cm, mm
from reportlab.platypus import (
SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle,
HRFlowable, PageBreak, KeepTogether
)
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY
from reportlab.platypus import Flowable
OUTPUT = "/tmp/workspace/bpt-study-plan/BPT_Study_Plan.pdf"
# ── Colour palette ──────────────────────────────────────────────
NAVY = colors.HexColor("#1B3A6B")
TEAL = colors.HexColor("#0D7377")
AMBER = colors.HexColor("#F4A300")
SOFT_BG = colors.HexColor("#F0F4FA")
LIGHT_GREEN = colors.HexColor("#E8F5E9")
LIGHT_RED = colors.HexColor("#FFEBEE")
LIGHT_AMBER = colors.HexColor("#FFF8E1")
WHITE = colors.white
DARK_TEXT = colors.HexColor("#1A1A2E")
GREY = colors.HexColor("#757575")
# ── Styles ───────────────────────────────────────────────────────
styles = getSampleStyleSheet()
def make_style(name, parent="Normal", **kwargs):
s = ParagraphStyle(name, parent=styles[parent], **kwargs)
return s
cover_title = make_style("CoverTitle",
fontSize=28, leading=34, textColor=WHITE,
alignment=TA_CENTER, fontName="Helvetica-Bold")
cover_sub = make_style("CoverSub",
fontSize=13, leading=18, textColor=colors.HexColor("#D0E8FF"),
alignment=TA_CENTER, fontName="Helvetica")
cover_note = make_style("CoverNote",
fontSize=10, leading=14, textColor=colors.HexColor("#FFD180"),
alignment=TA_CENTER, fontName="Helvetica-Oblique")
h1 = make_style("H1",
fontSize=16, leading=20, textColor=WHITE,
fontName="Helvetica-Bold", alignment=TA_LEFT,
spaceBefore=4, spaceAfter=4)
h2 = make_style("H2",
fontSize=13, leading=17, textColor=NAVY,
fontName="Helvetica-Bold", spaceBefore=10, spaceAfter=4)
h3 = make_style("H3",
fontSize=11, leading=14, textColor=TEAL,
fontName="Helvetica-Bold", spaceBefore=6, spaceAfter=2)
body = make_style("Body",
fontSize=9.5, leading=14, textColor=DARK_TEXT,
fontName="Helvetica", alignment=TA_JUSTIFY, spaceAfter=4)
body_b = make_style("BodyBold",
fontSize=9.5, leading=14, textColor=DARK_TEXT,
fontName="Helvetica-Bold", spaceAfter=2)
bullet = make_style("Bullet",
fontSize=9.5, leading=13, textColor=DARK_TEXT,
fontName="Helvetica", leftIndent=14, spaceAfter=2,
bulletText="•")
caution = make_style("Caution",
fontSize=9.5, leading=13, textColor=colors.HexColor("#B71C1C"),
fontName="Helvetica-Oblique", leftIndent=10, spaceAfter=2)
note = make_style("Note",
fontSize=9, leading=12, textColor=colors.HexColor("#4A4A4A"),
fontName="Helvetica-Oblique", leftIndent=8, spaceAfter=3)
# ── Helper classes ───────────────────────────────────────────────
class ColorBox(Flowable):
"""A filled rounded rectangle used as a section header band."""
def __init__(self, text, style, bg=NAVY, w=None, pad_h=8, pad_v=5, radius=4):
super().__init__()
self.text = text
self.style = style
self.bg = bg
self._w = w
self.pad_h = pad_h
self.pad_v = pad_v
self.radius = radius
def wrap(self, aW, aH):
self.width = self._w or aW
self.height = self.style.fontSize + self.pad_v * 2 + 4
return self.width, self.height
def draw(self):
c = self.canv
c.setFillColor(self.bg)
c.roundRect(0, 0, self.width, self.height, self.radius, fill=1, stroke=0)
c.setFillColor(WHITE)
c.setFont(self.style.fontName, self.style.fontSize)
c.drawString(self.pad_h, self.pad_v + 2, self.text)
class CoverBanner(Flowable):
"""Full-width cover gradient-style banner."""
def __init__(self, w, h):
super().__init__()
self.width = w
self.height = h
def wrap(self, aW, aH):
return self.width, self.height
def draw(self):
c = self.canv
c.setFillColor(NAVY)
c.rect(0, 0, self.width, self.height, fill=1, stroke=0)
# decorative accent strip
c.setFillColor(TEAL)
c.rect(0, self.height - 6, self.width, 6, fill=1, stroke=0)
c.setFillColor(AMBER)
c.rect(0, 0, self.width, 5, fill=1, stroke=0)
# ── Table helpers ────────────────────────────────────────────────
def hdr_cell(text):
return Paragraph(f"<b>{text}</b>", make_style(
"TH", fontSize=9, textColor=WHITE,
fontName="Helvetica-Bold", alignment=TA_CENTER))
def cell(text, align=TA_LEFT, bold=False):
fn = "Helvetica-Bold" if bold else "Helvetica"
return Paragraph(text, make_style(
"TD", fontSize=9, textColor=DARK_TEXT,
fontName=fn, alignment=align, leading=12))
def base_table_style(header_bg=NAVY):
return TableStyle([
("BACKGROUND", (0,0), (-1,0), header_bg),
("TEXTCOLOR", (0,0), (-1,0), WHITE),
("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"),
("FONTSIZE", (0,0), (-1,-1), 9),
("ROWBACKGROUNDS", (0,1), (-1,-1), [WHITE, SOFT_BG]),
("GRID", (0,0), (-1,-1), 0.4, colors.HexColor("#CCCCCC")),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING",(0,0),(-1,-1), 5),
("LEFTPADDING", (0,0), (-1,-1), 6),
("RIGHTPADDING",(0,0), (-1,-1), 6),
])
# ── Document setup ───────────────────────────────────────────────
doc = SimpleDocTemplate(
OUTPUT, pagesize=A4,
leftMargin=1.8*cm, rightMargin=1.8*cm,
topMargin=1.8*cm, bottomMargin=1.8*cm,
title="BPT 1st Year Study Plan - IBS-Aware",
author="Orris AI Study Planner"
)
W = A4[0] - 3.6*cm # usable page width
story = []
# ══════════════════════════════════════════════════════════════════
# COVER PAGE
# ══════════════════════════════════════════════════════════════════
story.append(CoverBanner(W, 8*cm))
story.append(Spacer(1, -8*cm)) # overlap text over banner
cover_items = [
Spacer(1, 1.2*cm),
Paragraph("BPT 1st Year", make_style("CT1", fontSize=14, textColor=colors.HexColor("#90CAF9"),
alignment=TA_CENTER, fontName="Helvetica")),
Spacer(1, 0.2*cm),
Paragraph("Complete Study Plan", make_style("CT2", fontSize=30, textColor=WHITE,
alignment=TA_CENTER, fontName="Helvetica-Bold", leading=36)),
Spacer(1, 0.15*cm),
Paragraph("Anatomy · Physiology · Biochemistry · Psychology · Sociology",
make_style("CT3", fontSize=11, textColor=colors.HexColor("#B3E5FC"),
alignment=TA_CENTER, fontName="Helvetica")),
Spacer(1, 0.4*cm),
Paragraph("Aug 5 – Oct 31, 2026 | IBS-Aware & Stress-Safe",
make_style("CT4", fontSize=10, textColor=AMBER,
alignment=TA_CENTER, fontName="Helvetica-Bold")),
Spacer(1, 0.5*cm),
HRFlowable(width=W*0.5, thickness=1, color=AMBER, hAlign="CENTER"),
Spacer(1, 0.3*cm),
Paragraph("Study windows: 4:00–6:00 AM | 6:30–9:00 PM (Mon/Wed/Fri/Sat)",
make_style("CT5", fontSize=9, textColor=colors.HexColor("#CFD8DC"),
alignment=TA_CENTER, fontName="Helvetica-Oblique")),
Spacer(1, 0.1*cm),
Paragraph("Tue/Thu evenings off · Sun 8–9 PM only · IBS flare buffers built in",
make_style("CT6", fontSize=9, textColor=colors.HexColor("#CFD8DC"),
alignment=TA_CENTER, fontName="Helvetica-Oblique")),
]
for item in cover_items:
story.append(item)
story.append(Spacer(1, 1.5*cm))
# Info box on cover
info_data = [
[hdr_cell("Metric"), hdr_cell("Value")],
[cell("Total Study Weeks"), cell("13 weeks (Aug 5 – Oct 31)")],
[cell("Available Hours/Week"), cell("~25 hours")],
[cell("Total Study Hours"), cell("~325 hours")],
[cell("Morning Slot"), cell("4:00 AM – 6:00 AM (daily)")],
[cell("Evening Slot"), cell("6:30 PM – 9:00 PM (Mon/Wed/Fri/Sat)")],
[cell("Rest Evenings"), cell("Tue, Thu (full off) | Sun 1 hr (8–9 PM)")],
[cell("IBS Strategy"), cell("Stress-safe pacing, built-in buffer days")],
]
info_table = Table(info_data, colWidths=[W*0.42, W*0.58])
info_table.setStyle(base_table_style(TEAL))
story.append(info_table)
story.append(PageBreak())
# ══════════════════════════════════════════════════════════════════
# SECTION 1 — IBS RULES
# ══════════════════════════════════════════════════════════════════
story.append(ColorBox("SECTION 1 · IBS Management Rules (Non-Negotiable)", h1, bg=colors.HexColor("#B71C1C")))
story.append(Spacer(1, 0.3*cm))
story.append(Paragraph(
"Since stress unpredictably triggers your IBS, the following rules protect both your health and your study performance. "
"These are not optional — breaking them is more likely to cost you study time than gain it.",
body))
story.append(Spacer(1, 0.2*cm))
ibs_rules = [
("Never rush to sit at your desk after waking",
"Give yourself 15–20 min after 4 AM for bathroom, warm water, and quiet sitting before opening any book."),
("No new hard topics on high-stress/flare days",
"If your gut is bad, use that session only for passive reading or flashcard review — never first-time learning."),
("Miss a session? It is already accounted for",
"Every week has 1–2 built-in buffer slots. Missing a session does not break this plan."),
("Keep water at your desk at all times",
"Dehydration worsens both IBS and brain fog. Sip water throughout every session."),
("Morning = lighter cognitive work",
"Gut motility peaks in the morning. Use 4–6 AM for reading, diagrams, and flashcards — not heavy writing."),
("Evening = harder active work",
"Use 6:30–9 PM for writing answers, MCQs, and timed practice when your gut is usually calmer."),
("Sunday 8–9 PM = weekly review ONLY",
"Never introduce new content on Sunday evenings. This is review and planning time only."),
("Sleep is sacred — never skip it to study",
"4 AM is only viable if you sleep by 10–10:30 PM. Sleep deprivation is a major IBS and stress trigger."),
("No heavy meals before study sessions",
"Eat light, gut-friendly meals. Avoid excess caffeine — it is a strong IBS trigger and raises anxiety."),
("Stop studying by 9 PM — always",
"Late-night study raises cortisol, disrupts sleep, and worsens next-day IBS. Hard stop at 9 PM."),
]
for rule, detail in ibs_rules:
story.append(KeepTogether([
Paragraph(f"<b>{rule}</b>", body_b),
Paragraph(detail, note),
Spacer(1, 0.15*cm),
]))
# IBS flare protocol box
story.append(Spacer(1, 0.2*cm))
story.append(ColorBox(" What to do during an IBS flare", h1,
bg=colors.HexColor("#E65100"), w=W*0.7))
story.append(Spacer(1, 0.15*cm))
flare_actions = [
"Skip new topic — do light revision or flashcard-only session",
"Walk gently for 10–15 min before sitting again",
"Reschedule the missed topic to the next day's buffer slot",
"In October: cut evening session to 1 hour only (6:30–7:30 PM)",
"Remind yourself: you have covered the content — revision is consolidation, not panic",
]
for a in flare_actions:
story.append(Paragraph(a, bullet))
story.append(PageBreak())
# ══════════════════════════════════════════════════════════════════
# SECTION 2 — WEEKLY SCHEDULE OVERVIEW
# ══════════════════════════════════════════════════════════════════
story.append(ColorBox("SECTION 2 · Weekly Study Hours Overview", h1, bg=NAVY))
story.append(Spacer(1, 0.3*cm))
hours_data = [
[hdr_cell("Day"), hdr_cell("Morning 4–6 AM"), hdr_cell("Evening"), hdr_cell("Daily Total")],
[cell("Monday"), cell("2 hrs"), cell("6:30–9:00 PM (2.5 hrs)"), cell("4.5 hrs", bold=True)],
[cell("Tuesday"), cell("2 hrs"), cell("OFF — rest/light activity"), cell("2 hrs")],
[cell("Wednesday"), cell("2 hrs"), cell("6:30–9:00 PM (2.5 hrs)"), cell("4.5 hrs", bold=True)],
[cell("Thursday"), cell("2 hrs"), cell("OFF — rest/light activity"), cell("2 hrs")],
[cell("Friday"), cell("2 hrs"), cell("6:30–9:00 PM (2.5 hrs)"), cell("4.5 hrs", bold=True)],
[cell("Saturday"), cell("2 hrs"), cell("6:30–9:00 PM (2.5 hrs)"), cell("4.5 hrs", bold=True)],
[cell("Sunday"), cell("2 hrs"), cell("8:00–9:00 PM (1 hr review)"), cell("3 hrs")],
[cell("WEEKLY TOTAL", bold=True), cell("14 hrs", bold=True),
cell("11 hrs", bold=True), cell("~25 hrs", bold=True)],
]
hours_table = Table(hours_data, colWidths=[W*0.18, W*0.22, W*0.38, W*0.22])
hours_table.setStyle(base_table_style(NAVY))
hours_table.setStyle(TableStyle([
*base_table_style(NAVY).getCommands(),
("BACKGROUND", (0,8), (-1,8), AMBER),
("TEXTCOLOR", (0,8), (-1,8), DARK_TEXT),
("FONTNAME", (0,8), (-1,8), "Helvetica-Bold"),
]))
story.append(hours_table)
story.append(Spacer(1, 0.4*cm))
story.append(Paragraph("Subject Priority & Marks", h2))
subj_data = [
[hdr_cell("Subject"), hdr_cell("Marks"), hdr_cell("Difficulty"), hdr_cell("Priority"), hdr_cell("% Time Allocation")],
[cell("Human Anatomy"), cell("200", TA_CENTER), cell("Very Hard"), cell("1st", bold=True), cell("35%", TA_CENTER)],
[cell("Human Physiology"), cell("200", TA_CENTER), cell("Hard"), cell("2nd", bold=True), cell("30%", TA_CENTER)],
[cell("Psychology + Sociology"),cell("100", TA_CENTER), cell("Moderate"), cell("3rd", bold=True), cell("20%", TA_CENTER)],
[cell("Biochemistry"), cell("100", TA_CENTER), cell("Moderate-Hard"),cell("4th", bold=True), cell("15%", TA_CENTER)],
]
subj_table = Table(subj_data, colWidths=[W*0.30, W*0.12, W*0.18, W*0.12, W*0.28])
subj_table.setStyle(base_table_style(TEAL))
story.append(subj_table)
story.append(PageBreak())
# ══════════════════════════════════════════════════════════════════
# SECTION 3 — DAILY ROUTINE
# ══════════════════════════════════════════════════════════════════
story.append(ColorBox("SECTION 3 · Daily Routine Structure (IBS-Safe)", h1, bg=TEAL))
story.append(Spacer(1, 0.3*cm))
story.append(Paragraph("Morning Slot — 4:00 AM to 6:00 AM", h2))
morning = [
("4:00 AM", "Wake up"),
("4:00–4:20 AM", "Bathroom time, warm water / herbal ginger tea, sit quietly — DO NOT rush to desk"),
("4:20–5:20 AM", "Study Block 1 — new reading, diagram drawing, flashcard review"),
("5:20–5:30 AM", "Break — 5 min walk, stretch, water sip, no screen"),
("5:30–6:00 AM", "Study Block 2 — revise what you just studied, write 3 key bullet points"),
("6:00 AM", "Done. Begin normal morning routine."),
]
morn_data = [[hdr_cell("Time"), hdr_cell("Activity")]] + \
[[cell(t), cell(a)] for t, a in morning]
morn_table = Table(morn_data, colWidths=[W*0.28, W*0.72])
morn_table.setStyle(base_table_style(colors.HexColor("#1565C0")))
story.append(morn_table)
story.append(Spacer(1, 0.3*cm))
story.append(Paragraph("Evening Slot — 6:30 PM to 9:00 PM (Mon, Wed, Fri, Sat)", h2))
evening = [
("6:30 PM", "Light snack if hungry (NOT a heavy meal — avoid IBS triggers)"),
("6:30–7:30 PM", "Study Block 1 — active work: writing answers, solving MCQs, making notes"),
("7:30–7:40 PM", "Break — short walk, water, no social media doom-scrolling"),
("7:40–8:40 PM", "Study Block 2 — continue writing / diagrams / timed practice"),
("8:40–9:00 PM", "20-min review — what did I cover today? Write 3 key points in notebook"),
("9:00 PM", "STOP. No studying after 9 PM. Wind down for sleep."),
]
eve_data = [[hdr_cell("Time"), hdr_cell("Activity")]] + \
[[cell(t), cell(a)] for t, a in evening]
eve_table = Table(eve_data, colWidths=[W*0.28, W*0.72])
eve_table.setStyle(base_table_style(colors.HexColor("#1B5E20")))
story.append(eve_table)
story.append(Spacer(1, 0.3*cm))
story.append(Paragraph("Sunday Evening — 8:00 PM to 9:00 PM (Weekly Review)", h2))
story.append(Paragraph(
"Answer these 4 questions in your notebook every Sunday. This 1-hour session keeps the entire plan on track:",
body))
sunday_qs = [
"What topics did I cover this week? (list them)",
"What did I miss? (reschedule to next week's buffer slot)",
"Which subject feels weakest? (allocate 10–15% more time next week)",
"How was my gut this week? (track patterns — do certain days/foods cause flares?)",
]
for q in sunday_qs:
story.append(Paragraph(q, bullet))
story.append(PageBreak())
# ══════════════════════════════════════════════════════════════════
# SECTION 4 — PHASE-BY-PHASE PLAN
# ══════════════════════════════════════════════════════════════════
story.append(ColorBox("SECTION 4 · Phase-by-Phase Study Plan", h1, bg=NAVY))
story.append(Spacer(1, 0.3*cm))
phases = [
{
"title": "PHASE 1 — Foundation (Aug 5 – Aug 30) · 4 Weeks",
"goal": "Cover all subjects from zero. Light but consistent daily progress. No skipping ahead.",
"bg": colors.HexColor("#0D47A1"),
"schedule": [
["Mon", "Anatomy — new topic (1 region)", "6:30–9 PM: Physiology — new topic"],
["Tue", "Anatomy — revise Monday's topic", "NO EVENING — rest completely"],
["Wed", "Physiology — revise Tuesday morning topic", "6:30–9 PM: Biochemistry — new chapter"],
["Thu", "Psychology / Sociology — 1 chapter reading", "NO EVENING — rest / gentle walk"],
["Fri", "Anatomy — continue region / new topic", "6:30–9 PM: Physiology — new topic"],
["Sat", "Biochemistry — revise + make short notes", "6:30–9 PM: Anatomy diagrams + labels"],
["Sun", "Light reading (weakest subject)", "8–9 PM: Weekly review (4 questions)"],
],
"topics": {
"Anatomy": [
"Week 1: General Anatomy — terms, regions, body cavities, bone structure",
"Week 2: Upper limb — bones, muscles, joints, nerves",
"Week 3: Lower limb — bones, muscles, joints, nerves",
"Week 4: Spine and vertebral column",
],
"Physiology": [
"Week 1: Cell physiology, body fluids, homeostasis",
"Week 2: Blood — components, haemostasis, blood groups",
"Week 3: Cardiovascular system basics (heart, cardiac cycle)",
"Week 4: Respiratory system basics",
],
"Biochemistry": [
"Week 1–2: Carbohydrate metabolism — glycolysis, TCA cycle basics",
"Week 3–4: Protein structure and enzymes",
],
"Psych/Soc": [
"Week 1: Introduction to Psychology, schools of thought",
"Week 2–3: Sensation, perception, learning",
"Week 4: Memory + Introduction to Sociology",
],
}
},
{
"title": "PHASE 2 — Build-Up (Sep 1 – Sep 28) · 4 Weeks",
"goal": "Complete remaining syllabus. Start writing answers, not just reading. Build exam stamina.",
"bg": colors.HexColor("#1B5E20"),
"schedule": [
["Mon", "Anatomy — new topic (thorax/abdomen)", "6:30–9 PM: Write 3 short answers (Anatomy)"],
["Tue", "Physiology — new topic", "NO EVENING"],
["Wed", "Biochemistry — new chapter", "6:30–9 PM: Write 2 long answers (Physiology)"],
["Thu", "Psychology/Sociology — continue chapters", "NO EVENING"],
["Fri", "Anatomy — new topic (head/neck/CNS)", "6:30–9 PM: Physiology write + diagrams"],
["Sat", "Mock questions + self-test (any subject)", "6:30–9 PM: Biochemistry + Psych/Soc writing"],
["Sun", "Weak area revision", "8–9 PM: Plan next week's topics"],
],
"topics": {
"Anatomy": [
"Week 5: Thorax — thoracic cage, lungs, heart anatomy, mediastinum",
"Week 6: Abdomen — organs, peritoneum, abdominal wall",
"Week 7: Head and neck — skull, cranial nerves overview",
"Week 8: Neuroanatomy — brain regions, spinal cord basics",
],
"Physiology": [
"Week 5: Nerve and muscle physiology, neuromuscular junction",
"Week 6: Digestive system physiology",
"Week 7: Renal system and fluid balance",
"Week 8: Endocrine system, nervous system overview",
],
"Biochemistry": [
"Week 5–6: Lipid metabolism and vitamins",
"Week 7–8: Nucleic acids and clinical biochemistry basics",
],
"Psych/Soc": [
"Week 5–6: Motivation, emotion, personality",
"Week 7–8: Sociology — society, health and illness, community",
],
}
},
{
"title": "PHASE 3 — Revision + Past Papers (Oct 1 – Oct 20) · 3 Weeks",
"goal": "STOP reading new content. Only revise, write, and practice questions under time pressure.",
"bg": colors.HexColor("#4A148C"),
"schedule": [
["Mon", "Anatomy — revise 2–3 important topics", "6:30–9 PM: Full past paper answers (Anatomy)"],
["Tue", "Physiology — rapid revision notes", "NO EVENING"],
["Wed", "Biochemistry rapid revision", "6:30–9 PM: Physiology past paper writing"],
["Thu", "Psychology/Sociology — revise all chapters", "NO EVENING"],
["Fri", "Anatomy + Physiology diagrams", "6:30–9 PM: Mixed subject practice questions"],
["Sat", "Full mock test — 1 subject, timed 3 hrs", "6:30–9 PM: Review mock, find gaps"],
["Sun", "Rest — gentle reading only", "8–9 PM: Plan final week targets"],
],
"topics": {
"Key Tasks": [
"Make 1-page summary sheets for every topic",
"Memorise all major diagrams: brachial plexus, cardiac cycle, nephron, Krebs cycle",
"Practice writing answers under timed conditions",
"Focus: definitions, classifications, and applied anatomy (high exam frequency)",
"Attempt at least 2 full mock papers per subject before Oct 20",
],
}
},
]
for phase in phases:
story.append(ColorBox(f" {phase['title']}", h1, bg=phase["bg"]))
story.append(Spacer(1, 0.15*cm))
story.append(Paragraph(f"<b>Goal:</b> {phase['goal']}", body))
story.append(Spacer(1, 0.15*cm))
# Weekly schedule table
story.append(Paragraph("Weekly Schedule Template", h3))
sched_data = [[hdr_cell("Day"), hdr_cell("Morning 4–6 AM"), hdr_cell("Evening")]] + \
[[cell(row[0], bold=True), cell(row[1]), cell(row[2])] for row in phase["schedule"]]
sched_table = Table(sched_data, colWidths=[W*0.12, W*0.42, W*0.46])
sched_table.setStyle(base_table_style(phase["bg"]))
story.append(sched_table)
story.append(Spacer(1, 0.2*cm))
# Topics by subject
story.append(Paragraph("Topics to Cover", h3))
for subj, topics in phase["topics"].items():
story.append(Paragraph(f"<b>{subj}</b>", body_b))
for t in topics:
story.append(Paragraph(t, bullet))
story.append(Spacer(1, 0.1*cm))
story.append(Spacer(1, 0.3*cm))
story.append(PageBreak())
# ══════════════════════════════════════════════════════════════════
# SECTION 5 — PHASE 4 FINAL 10 DAYS
# ══════════════════════════════════════════════════════════════════
story.append(ColorBox("SECTION 5 · Phase 4 — Final 10 Days (Oct 21–31)", h1, bg=colors.HexColor("#B71C1C")))
story.append(Spacer(1, 0.3*cm))
story.append(Paragraph(
"Consolidate — do NOT cram new topics. Protect your gut and sleep at all costs.",
body))
story.append(Spacer(1, 0.2*cm))
final_data = [
[hdr_cell("Dates"), hdr_cell("Morning 4–6 AM"), hdr_cell("Evening")],
[cell("Oct 21–22"), cell("Anatomy full revision (summary notes only)"), cell("Physiology full revision")],
[cell("Oct 23–24"), cell("Biochemistry + Psych/Soc combined revision"), cell("All diagrams review")],
[cell("Oct 25–26"), cell("High-yield topics (past paper patterns)"), cell("Write 5 answers timed")],
[cell("Oct 27"), cell("Light reading — DO NOT start new topics"), cell("REST evening — no study")],
[cell("Oct 28"), cell("1 hr reading per subject — revision only"), cell("REST")],
[cell("Oct 29"), cell("Final formulas and definitions review"), cell("Sleep by 9:30 PM")],
[cell("Oct 30", bold=True), cell("EXAM EVE — stop all study by 6 PM", bold=True),
cell("Gut-friendly meal, light walk, sleep by 10 PM", bold=True)],
[cell("Oct 31", bold=True), cell("EXAM DAY", bold=True), cell("—")],
]
final_table = Table(final_data, colWidths=[W*0.20, W*0.42, W*0.38])
final_table.setStyle(base_table_style(colors.HexColor("#B71C1C")))
final_table.setStyle(TableStyle([
*base_table_style(colors.HexColor("#B71C1C")).getCommands(),
("BACKGROUND", (0,7), (-1,7), LIGHT_AMBER),
("BACKGROUND", (0,8), (-1,8), colors.HexColor("#FFCDD2")),
("FONTNAME", (0,7), (-1,8), "Helvetica-Bold"),
]))
story.append(final_table)
story.append(PageBreak())
# ══════════════════════════════════════════════════════════════════
# SECTION 6 — SUBJECT STUDY METHODS
# ══════════════════════════════════════════════════════════════════
story.append(ColorBox("SECTION 6 · Subject-Specific Study Methods", h1, bg=NAVY))
story.append(Spacer(1, 0.3*cm))
subjects_detail = [
{
"name": "Human Anatomy (Highest Priority — 200 Marks)",
"bg": colors.HexColor("#1565C0"),
"methods": [
"Draw diagrams daily — do NOT just read, DRAW and label everything",
"Use a body atlas or colored diagram book alongside your textbook",
"Make region-wise notes: each anatomical region = 1 A4 page summary",
"Applied anatomy questions are very common in exams — practice them specifically",
"Focus areas: brachial plexus, lumbosacral plexus, joints, nerve supply of muscles",
"Learn surface anatomy for practical examination questions",
"Memorise origin, insertion, and nerve supply of major muscles in upper and lower limb",
],
"high_yield": [
"Brachial plexus (draw it 10+ times)", "Lumbosacral plexus", "Shoulder and hip joint anatomy",
"Carpal tunnel", "Femoral triangle", "Heart anatomy and blood supply",
"Cranial nerves overview", "Spinal cord cross-section",
]
},
{
"name": "Human Physiology (2nd Priority — 200 Marks)",
"bg": colors.HexColor("#1B5E20"),
"methods": [
"Understand mechanisms — do NOT memorise blindly",
"Draw graphs for every system: cardiac cycle, action potential, spirometry curves",
"Learn in systems — CVS, RS, Renal, Endocrine, Nervous System etc.",
"Focus on regulation mechanisms: how does the body maintain homeostasis?",
"Practice writing out mechanisms step-by-step (common exam question format)",
"Make flowcharts for complex processes (e.g. clotting cascade, renin-angiotensin)",
],
"high_yield": [
"Cardiac cycle with pressure-volume curve", "Action potential (nerve and muscle)",
"Spirometry values and lung volumes", "Regulation of blood pressure",
"Renal regulation of fluid balance", "Neuromuscular junction mechanism",
"Blood clotting cascade", "Endocrine feedback loops",
]
},
{
"name": "Biochemistry (4th Priority — 100 Marks)",
"bg": colors.HexColor("#E65100"),
"methods": [
"Focus on metabolic pathways with diagrams — glycolysis, TCA, beta-oxidation",
"Learn enzyme names, cofactors, and what each enzyme does",
"Clinical applications are commonly asked — connect biochemistry to disease",
"Use mnemonics for Krebs cycle intermediates and vitamin functions",
"Make a 'pathway map' poster and stick it where you study",
],
"high_yield": [
"Glycolysis pathway (complete)", "TCA / Krebs cycle", "Electron transport chain",
"Enzyme kinetics (Km, Vmax)", "Vitamins and their deficiency diseases",
"Protein synthesis overview", "Clinical biochemistry: liver function, diabetes markers",
]
},
{
"name": "Psychology + Sociology (3rd Priority — 100 Marks combined)",
"bg": colors.HexColor("#4A148C"),
"methods": [
"Read standard textbook (Munn's Psychology or Morgan & King)",
"Make definition lists — most marks come from definitions and short answers",
"Learn major theories with theorist names (Freud, Piaget, Maslow, etc.)",
"Sociology: focus on concepts — health, illness, society, community medicine links",
"Do NOT over-invest time here — 20% of your study time is sufficient",
"Use past paper questions to identify the most repeated topics",
],
"high_yield": [
"Definition of psychology and its branches", "Classical and operant conditioning",
"Memory types and theories", "Maslow's hierarchy of needs",
"Personality theories", "Stress and health",
"Sociology: social determinants of health", "Community and society concepts",
]
},
]
for subj in subjects_detail:
story.append(KeepTogether([
ColorBox(f" {subj['name']}", make_style("SH", fontSize=11, fontName="Helvetica-Bold"),
bg=subj["bg"]),
Spacer(1, 0.15*cm),
]))
story.append(Paragraph("How to Study:", h3))
for m in subj["methods"]:
story.append(Paragraph(m, bullet))
story.append(Spacer(1, 0.1*cm))
story.append(Paragraph("High-Yield Topics (focus on these first):", h3))
hy_text = " · ".join(subj["high_yield"])
story.append(Paragraph(hy_text, note))
story.append(Spacer(1, 0.3*cm))
story.append(PageBreak())
# ══════════════════════════════════════════════════════════════════
# SECTION 7 — DIET & GUT CARE
# ══════════════════════════════════════════════════════════════════
story.append(ColorBox("SECTION 7 · Diet and Gut Care During Study Season", h1, bg=TEAL))
story.append(Spacer(1, 0.3*cm))
story.append(Paragraph("Foods and Habits That Help IBS", h2))
helps = [
"Warm water or ginger tea first thing in the morning — helps gut motility gently",
"Small, frequent meals — large meals worsen post-meal urgency",
"Cooked vegetables over raw (easier to digest during high-stress periods)",
"White rice, banana, boiled potatoes — gentle on the gut",
"Stay consistently hydrated throughout the day, not just during study",
"Regular meal times — irregular eating patterns worsen IBS unpredictability",
]
for h in helps:
story.append(Paragraph(h, bullet))
story.append(Spacer(1, 0.2*cm))
story.append(Paragraph("Foods and Habits to Avoid", h2))
avoids = [
"Excess coffee or tea — caffeine is a strong IBS trigger and raises anxiety before exams",
"Heavy, fried, or greasy meals before study sessions",
"Skipping meals — low blood sugar = poor focus and increased gut sensitivity",
"Carbonated drinks and artificial sweeteners — can worsen bloating and cramps",
"Eating while anxious or rushing — eat sitting down, slowly, without distractions",
"Alcohol (even socially) — disrupts gut microbiome and sleep quality",
]
for a in avoids:
story.append(Paragraph(a, caution))
story.append(Spacer(1, 0.2*cm))
story.append(Paragraph("Stress-Gut Connection: Understanding Your IBS", h2))
story.append(Paragraph(
"IBS is strongly linked to the gut-brain axis. When you are stressed, cortisol levels rise and "
"directly affect gut motility — causing either urgency, cramping, or constipation depending on your "
"IBS subtype. This means exam stress does not just feel bad, it physically worsens your symptoms. "
"The study plan is built around minimising this cycle by keeping a predictable, low-pressure routine "
"where you are always slightly ahead of schedule rather than scrambling to catch up.", body))
story.append(Spacer(1, 0.3*cm))
story.append(Paragraph("Daily Stress-Management Practices (5 min each, non-negotiable)", h2))
stress_mgmt = [
"Morning: 4–5 min of slow diaphragmatic breathing after waking — activates the parasympathetic system",
"Study breaks: 5 min walk (not screen time) — physical movement resets gut and focus",
"Before evening study: 3 deep slow breaths before opening books — signals safety to your gut",
"Before sleep: progressive muscle relaxation or light stretching — lowers cortisol for better sleep",
"Weekly: one activity you genuinely enjoy that has nothing to do with studying",
]
for s in stress_mgmt:
story.append(Paragraph(s, bullet))
story.append(PageBreak())
# ══════════════════════════════════════════════════════════════════
# SECTION 8 — WEEKLY TRACKING TEMPLATE
# ══════════════════════════════════════════════════════════════════
story.append(ColorBox("SECTION 8 · Weekly Tracking System", h1, bg=NAVY))
story.append(Spacer(1, 0.3*cm))
story.append(Paragraph(
"Use this template every Sunday 8–9 PM. Print multiple copies or copy into a notebook. "
"Tracking prevents panic by showing you that you ARE making progress, even when it does not feel like it.",
body))
story.append(Spacer(1, 0.3*cm))
# 13-week overview table
story.append(Paragraph("13-Week Progress Tracker", h2))
tracker_data = [
[hdr_cell("Week"), hdr_cell("Dates"), hdr_cell("Phase"), hdr_cell("Main Focus"), hdr_cell("Status")],
[cell("1"), cell("Aug 5–10"), cell("Foundation"), cell("Anatomy: General, Upper Limb | Physiology: Cells, Blood"), cell("[ ]")],
[cell("2"), cell("Aug 11–17"), cell("Foundation"), cell("Anatomy: Lower Limb | Physiology: CVS | Biochem: Carbs"), cell("[ ]")],
[cell("3"), cell("Aug 18–24"), cell("Foundation"), cell("Anatomy: Spine | Physiology: RS | Psych: Intro"), cell("[ ]")],
[cell("4"), cell("Aug 25–30"), cell("Foundation"), cell("Anatomy review | Physiology review | Psych: Perception"), cell("[ ]")],
[cell("5"), cell("Sep 1–7"), cell("Build-Up"), cell("Anatomy: Thorax | Physiology: Nerve/Muscle | Biochem: Lipids"), cell("[ ]")],
[cell("6"), cell("Sep 8–14"), cell("Build-Up"), cell("Anatomy: Abdomen | Physiology: Digestion | Psych: Motivation"), cell("[ ]")],
[cell("7"), cell("Sep 15–21"), cell("Build-Up"), cell("Anatomy: Head/Neck | Physiology: Renal | Biochem: Nucleic acids"), cell("[ ]")],
[cell("8"), cell("Sep 22–28"), cell("Build-Up"), cell("Anatomy: Neuroanatomy | Physiology: Endocrine | Sociology"), cell("[ ]")],
[cell("9"), cell("Oct 1–6"), cell("Revision"), cell("Anatomy full revision | Start writing practice answers"), cell("[ ]")],
[cell("10"), cell("Oct 7–13"), cell("Revision"), cell("Physiology + Biochem revision | Mock papers"), cell("[ ]")],
[cell("11"), cell("Oct 14–20"), cell("Revision"), cell("All subjects revision | Timed mock exams"), cell("[ ]")],
[cell("12"), cell("Oct 21–26"), cell("Final"), cell("Summary notes only | High-yield topics"), cell("[ ]")],
[cell("13"), cell("Oct 27–31"), cell("Final"), cell("Light review | Rest | Exam"), cell("[ ]")],
]
tracker_table = Table(tracker_data, colWidths=[W*0.07, W*0.15, W*0.14, W*0.55, W*0.09])
tracker_table.setStyle(base_table_style(NAVY))
story.append(tracker_table)
story.append(Spacer(1, 0.4*cm))
story.append(Paragraph("Sunday Review Questions (Answer in Notebook)", h2))
review_q = [
"1. What topics did I cover this week? (list all of them)",
"2. What did I miss or skip? (reschedule to buffer slot next week)",
"3. Which subject feels weakest? (add 10–15% more time next week)",
"4. How was my gut / stress level this week? (1–10 scale, note patterns)",
]
for q in review_q:
story.append(Paragraph(q, body_b))
story.append(Spacer(1, 0.05*cm))
story.append(PageBreak())
# ══════════════════════════════════════════════════════════════════
# SECTION 9 — MOTIVATIONAL SUMMARY
# ══════════════════════════════════════════════════════════════════
story.append(ColorBox("SECTION 9 · Why This Plan Will Work For You", h1, bg=TEAL))
story.append(Spacer(1, 0.3*cm))
points = [
("You have enough time",
"325 study hours over 13 weeks is more than sufficient for BPT 1st year if used consistently. "
"Most students cram in the last 2 weeks. You are starting now."),
("IBS flare days are pre-accounted for",
"Missing 1–2 sessions per week is already factored into this plan. A missed session is not a crisis — "
"it is a scheduled buffer being used as intended."),
("Tue/Thu evenings off is an advantage",
"These forced rest days give your gut and nervous system recovery time that most students do not allow themselves. "
"You will enter each Wednesday and Friday study session calmer and more focused."),
("No all-nighters, ever",
"All-nighters spike cortisol, wreck the next day's gut, and reduce memory consolidation. "
"This plan gives you more sleep and better retention than those who cram."),
("Revision starts early",
"Phase 3 revision begins October 1st. You will not be reading new content in October "
"while others are still discovering topics they never covered."),
("Stress worsens IBS — calm consistency heals it",
"This plan is deliberately paced so you are always slightly ahead, never catching up. "
"That psychological buffer is as important for your gut as it is for your grades."),
("Start tomorrow",
"August 6th (Thursday) morning at 4:20 AM. Open your Anatomy textbook to Chapter 1: General Anatomy. "
"Read for 60 minutes. Draw 2 diagrams. Write 3 key points. You have begun."),
]
for title, detail in points:
story.append(KeepTogether([
Paragraph(f"<b>{title}</b>", body_b),
Paragraph(detail, body),
Spacer(1, 0.15*cm),
]))
story.append(Spacer(1, 0.4*cm))
story.append(HRFlowable(width=W, thickness=2, color=AMBER))
story.append(Spacer(1, 0.2*cm))
story.append(Paragraph(
"You are not studying despite having IBS. You are studying with a plan that works around it.",
make_style("Final", fontSize=12, fontName="Helvetica-Bold", textColor=NAVY,
alignment=TA_CENTER, leading=16)))
story.append(Spacer(1, 0.1*cm))
story.append(Paragraph(
"Calm. Consistent. Forward.",
make_style("Final2", fontSize=10, fontName="Helvetica-Oblique", textColor=TEAL,
alignment=TA_CENTER)))
# ── Build ────────────────────────────────────────────────────────
doc.build(story)
print(f"PDF saved to: {OUTPUT}")
cd /tmp/workspace/bpt-study-plan && python generate_pdf.py 2>&1
ls -lh /tmp/workspace/bpt-study-plan/BPT_Study_Plan.pdf
BPT Study Plan
PDF Document · PDF
| Section | Content |
|---|---|
| Cover Page | Summary stats, time slots, subject overview |
| Section 1 | 10 IBS non-negotiable rules + flare protocol |
| Section 2 | Weekly hours table + subject priority/marks |
| Section 3 | Daily routine (morning + evening + Sunday templates) |
| Section 4 | Phase 1, 2 & 3 — full week-by-week schedules with topics |
| Section 5 | Final 10 days (Oct 21–31) day-by-day plan |
| Section 6 | Subject-specific study methods + high-yield topics |
| Section 7 | Diet, gut care, and stress-gut connection |
| Section 8 | 13-week progress tracker + Sunday review questions |
| Section 9 | Why this plan works — motivational summary |
This is not realistic
How can I complete whole volume in 1 day
What is your current syllabus coverage — what % have you already studied?