Make atl time table to study for university exam Spm Biostatistics Clinical cardio Pt cardio Rehab 3am weak up 7am- 1 pm no free time 6pm restart study upto 12 midnight

Asking for Preferences

1 month

Here's your 1-month study timetable, built around your schedule:
  • Wake up: 3:00 AM
  • Busy: 7:00 AM - 1:00 PM (no study)
  • Evening block: 6:00 PM - 12:00 AM
That gives you 2 study windows per day:
  • Morning: 3:00 AM - 6:30 AM (3.5 hrs)
  • Evening: 6:00 PM - 12:00 AM (6 hrs)
  • Total: ~9.5 hrs/day

📅 MONTHLY STUDY TIMETABLE (July 14 - August 13, 2026)

Subject Rotation Plan

5 subjects across 6 days/week (Sunday = light revision + rest):
SubjectAbbrWeekly Sessions
SPM (Social & Preventive Medicine)SPM2x morning + 2x evening
BiostatisticsBIO2x morning + 1x evening
Clinical CardiologyCC1x morning + 2x evening
PT CardiologyPTC1x morning + 2x evening
RehabilitationREHAB1x morning + 1x evening

🗓️ WEEKLY TEMPLATE (Repeat for 4 Weeks)

MONDAY

TimeSession
3:00 - 3:15 AMWake up, freshen, water
3:15 - 6:30 AMSPM - Theory reading + notes
7:00 AM - 1:00 PMCollege / clinic (no study)
6:00 - 7:00 PMQuick review of morning SPM notes
7:00 - 9:00 PMClinical Cardiology - ECG, conditions, cases
9:00 - 9:30 PMBreak + dinner
9:30 - 11:30 PMPT Cardiology - Assessment, protocols
11:30 PM - 12:00 AMWrite 5 key points from each subject

TUESDAY

TimeSession
3:15 - 6:30 AMBiostatistics - Formulas, types of data, tests
6:00 - 8:00 PMSPM - Epidemiology, disease indices
8:00 - 9:00 PMBiostatistics - Practice MCQs / problems
9:00 - 9:30 PMBreak
9:30 - 11:30 PMRehabilitation - Concepts, conditions
11:30 PM - 12:00 AMRevision flashcards

WEDNESDAY

TimeSession
3:15 - 6:30 AMPT Cardiology - Exercise testing, cardiac rehab
6:00 - 8:00 PMClinical Cardiology - Pharmacology, interventions
8:00 - 9:00 PMSPM - MCQ practice
9:00 - 9:30 PMBreak
9:30 - 11:30 PMBiostatistics - Past paper questions
11:30 PM - 12:00 AMQuick recap

THURSDAY

TimeSession
3:15 - 6:30 AMClinical Cardiology - Deep dive (heart failure, IHD)
6:00 - 8:00 PMPT Cardiology - Treatment techniques
8:00 - 9:00 PMRehabilitation - Neurological & ortho rehab
9:00 - 9:30 PMBreak
9:30 - 11:30 PMSPM - Health programs, nutrition
11:30 PM - 12:00 AMMind maps

FRIDAY

TimeSession
3:15 - 6:30 AMRehabilitation - Case-based review
6:00 - 8:00 PMClinical Cardiology - Past papers / MCQs
8:00 - 9:00 PMBiostatistics - Statistical tests (t-test, chi-square)
9:00 - 9:30 PMBreak
9:30 - 11:30 PMPT Cardiology - MCQs + short notes
11:30 PM - 12:00 AMWeekly weak-spot list

SATURDAY

TimeSession
3:15 - 6:30 AMSPM - Full topic revision
6:00 - 8:30 PMMixed revision - All 5 subjects, 30 min each
8:30 - 9:00 PMBreak
9:00 - 11:30 PMMock test (self-made or past papers)
11:30 PM - 12:00 AMMark corrections, note weak areas

SUNDAY

TimeSession
3:15 - 5:30 AMLight reading only (notes, not new topics)
5:30 - 7:00 AMRest / pray / relax
6:00 - 8:00 PMCatch-up on any missed topic from the week
8:00 - 10:00 PMFree / rest / family time
10:00 PM - 12:00 AMNext week planning + sleep prep

📆 4-WEEK PHASE PLAN

WeekFocus
Week 1 (July 14-20)Complete first reading of ALL 5 subjects - cover basics only
Week 2 (July 21-27)Second reading - deeper understanding, add short notes per topic
Week 3 (July 28 - Aug 3)MCQ practice + past papers for all subjects; identify weak topics
Week 4 (Aug 4-13)Intensive revision of weak topics + full mock exams + final notes

⚡ TIPS FOR YOUR SCHEDULE

  • 3 AM wake-up - Sleep by 11:30 PM strictly. Your morning session (3-6:30 AM) is your most productive - use it for hardest topics.
  • Biostatistics - Do problems daily, even 15 min. It's a skill-based subject that fades without practice.
  • SPM - Very content-heavy. Spread it across all 6 days in small chunks.
  • Cardio (Clinical + PT) - Study them on the same day when possible - the overlap in physiology saves time.
  • Rehab - Combine with PT Cardio (cardiac rehab is a shared topic).
  • Keep a "Weak Topics Notebook" - every Saturday, write down what you struggled with that week and target it the next week.

Don't change weekly subject keep it no rotation required everyday must contain all subjects mess priority to rehab

Got it. Every day has ALL 5 subjects, same fixed structure daily (no rotation), and Rehab gets the least time since it's your strongest (least priority). Here's the fixed daily timetable:

🕒 FIXED DAILY TIMETABLE (Every Day, Same Structure)

MORNING BLOCK — 3:00 AM to 6:30 AM (3.5 hrs)

TimeSubjectDuration
3:00 - 3:15 AMWake up, freshen up, water15 min
3:15 - 4:15 AMSPM60 min
4:15 - 5:15 AMBiostatistics60 min
5:15 - 6:00 AMClinical Cardiology45 min
6:00 - 6:30 AMPT Cardiology30 min
(Rehab is moved to evening - gets dedicated focused time there)

BUSY — 7:00 AM to 1:00 PM

No study.

EVENING BLOCK — 6:00 PM to 12:00 AM (6 hrs)

TimeSubjectDuration
6:00 - 6:15 PMSettle in, review morning notes (quick scan)15 min
6:15 - 7:30 PMClinical Cardiology (continue / MCQs / cases)75 min
7:30 - 8:30 PMPT Cardiology (continue / practice questions)60 min
8:30 - 9:15 PMBiostatistics (problems / past papers)45 min
9:15 - 9:45 PMBreak + Dinner30 min
9:45 - 10:30 PMSPM (MCQs / revision / new section)45 min
10:30 - 11:30 PMRehab (least priority - concepts + notes)60 min
11:30 - 12:00 AMDaily recap - write 3 key points per subject30 min

⏱️ DAILY TIME PER SUBJECT

SubjectMorningEveningTotal/Day
SPM60 min45 min1 hr 45 min
Biostatistics60 min45 min1 hr 45 min
Clinical Cardiology45 min75 min2 hrs
PT Cardiology30 min60 min1 hr 30 min
Rehab60 min1 hr
Total Study3 hrs 15 min5 hrs 45 min9 hrs

📆 4-WEEK CONTENT PROGRESSION (Same timetable, different content each week)

WeekWhat to study in each session
Week 1First reading - cover basics, definitions, core concepts of every subject
Week 2Deeper reading - mechanisms, clinical applications, add short notes
Week 3MCQ practice + past paper questions for all subjects daily
Week 4Revision only - weak topics, mock tests, final notes, quick recalls

💡 KEY RULES

  • Do NOT skip a subject - all 5 every single day, no exceptions
  • Rehab last every night - it's your strongest, so it goes at end when energy is lower
  • Cardio (Clinical + PT) gets the most evening time - these are heavy applied subjects
  • Biostatistics - solve at least 5 problems/questions during the evening session, not just reading
  • SPM morning slot is your best focus time - use it for memorization-heavy content
  • 12:00 AM hard stop - protect your 3 AM wake-up. Sleep immediately after recap

Will it be ideal

Honest answer - it has strengths but also real risks. Here's a straight assessment:

✅ WHAT WORKS WELL

  • 9 hours/day for 1 month is more than enough total study time for 5 subjects
  • Morning 3-6:30 AM is scientifically your sharpest focus window - good placement for SPM and Biostatistics
  • All subjects daily prevents the "I forgot what I studied 5 days ago" problem
  • Rehab last makes sense - use peak energy for harder subjects

⚠️ THE REAL CONCERNS

1. Sleep is the biggest risk

  • Sleep at 12:00 AM, wake at 3:00 AM = only 3 hours of sleep
  • Your brain consolidates memory during sleep - with 3 hrs, what you study at night may not stick by morning
  • After 2-3 weeks of this, concentration crashes hard - many students burn out by week 3

2. The 1:00 PM - 6:00 PM gap

  • You have 5 hours free in the afternoon with no study planned
  • Even 1-2 hrs of light revision here could replace some of the late-night pressure

3. Studying all 5 subjects daily can feel scattered

  • Switching between SPM, Biostatistics, Cardiology, and Rehab every hour means less deep focus per topic
  • Some students find this tiring compared to spending longer on fewer subjects per day

🔧 THE ONE CHANGE THAT WOULD MAKE IT IDEAL

Shift the evening block earlier and sleep earlier:
Instead ofDo this
Study 6 PM - 12 AM, sleep 12 AM, wake 3 AM (3 hrs sleep)Study 6 PM - 10:30 PM, sleep 10:30 PM, wake 3 AM (4.5 hrs sleep)
That extra 1.5 hrs of sleep makes a massive difference in memory retention and energy. You lose 1.5 hrs of study but gain far better absorption of everything you studied.
Or alternatively - use 1-2 hrs of the afternoon gap (say 2:00 PM - 4:00 PM) for light review, then end evening at 11 PM instead of midnight.

🟢 BOTTOM LINE

FactorRating
Subject coverage✅ Excellent
Total study hours✅ Very good
Morning timing✅ Great
Sleep duration❌ Dangerous (3 hrs only)
Sustainability for 1 month⚠️ Risky past week 2
It will work short-term but is hard to maintain for a full month. The timetable is solid - just protect your sleep better or it will backfire closer to the exam.

Adjust evening block to end earlier for better sleep

Here's the adjusted timetable ending at 10:30 PM, giving you 4.5 hours of sleep (10:30 PM - 3:00 AM) - much more sustainable for a full month.

🕒 REVISED FIXED DAILY TIMETABLE

MORNING BLOCK — 3:00 AM to 6:30 AM (3.5 hrs)

TimeSubjectDuration
3:00 - 3:15 AMWake up, freshen up, water15 min
3:15 - 4:15 AMSPM60 min
4:15 - 5:15 AMBiostatistics60 min
5:15 - 6:00 AMClinical Cardiology45 min
6:00 - 6:30 AMPT Cardiology30 min

BUSY — 7:00 AM to 1:00 PM

No study.

AFTERNOON MINI-BLOCK — 1:30 PM to 3:30 PM (2 hrs) (NEW)

You have a free afternoon - use just 2 hrs here to reduce evening pressure.
TimeSubjectDuration
1:30 - 2:00 PMLunch + rest30 min
2:00 - 2:45 PMSPM (review morning notes / new section)45 min
2:45 - 3:30 PMBiostatistics (problem solving)45 min
3:30 - 6:00 PMRest / nap / personal time-

EVENING BLOCK — 6:00 PM to 10:30 PM (4.5 hrs)

TimeSubjectDuration
6:00 - 6:10 PMSettle in, quick scan of all day's notes10 min
6:10 - 7:15 PMClinical Cardiology (cases, MCQs, deep topics)65 min
7:15 - 8:15 PMPT Cardiology (techniques, protocols, questions)60 min
8:15 - 8:45 PMBreak + Dinner30 min
8:45 - 9:30 PMRehab (concepts, notes, weak points)45 min
9:30 - 10:00 PMMixed rapid revision (10 min per subject, all 5)30 min
10:00 - 10:20 PMWrite 3 key points per subject for the day20 min
10:20 - 10:30 PMWind down, no screens10 min
10:30 PMSLEEP-

⏱️ REVISED DAILY TIME PER SUBJECT

SubjectMorningAfternoonEveningTotal/Day
SPM60 min45 min10 min (rapid revision)1 hr 55 min
Biostatistics60 min45 min10 min (rapid revision)1 hr 55 min
Clinical Cardiology45 min-65 min1 hr 50 min
PT Cardiology30 min-60 min1 hr 30 min
Rehab--45 min45 min
Total Study3 hrs 15 min1 hr 30 min4 hrs 10 min~8 hrs 55 min

😴 SLEEP SUMMARY

Old ScheduleNew Schedule
Sleep 12:00 AM - Wake 3:00 AMSleep 10:30 PM - Wake 3:00 AM
3 hrs sleep4.5 hrs sleep

💡 WHY THIS WORKS BETTER

  • 4.5 hrs sleep is still short but manageable long-term with the afternoon rest window (3:30 - 6:00 PM nap if needed)
  • Afternoon block takes pressure off the evening - you're not cramming 6 hrs into one sitting
  • Evening ends at 10:30 PM - your brain winds down properly before sleep
  • All 5 subjects still covered daily - nothing dropped
  • Rehab still last and least time as requested - 45 min is enough for your strongest subject

U can add 2-3 3-4 2 hrs

Got it - adding a 2:00 PM - 4:00 PM study block (2 hrs) to the afternoon. Here's the full updated timetable:

🕒 FINAL FIXED DAILY TIMETABLE

MORNING BLOCK — 3:00 AM to 6:30 AM

TimeSubjectDuration
3:00 - 3:15 AMWake up, freshen up, water15 min
3:15 - 4:15 AMSPM60 min
4:15 - 5:15 AMBiostatistics60 min
5:15 - 6:00 AMClinical Cardiology45 min
6:00 - 6:30 AMPT Cardiology30 min

BUSY — 7:00 AM to 1:00 PM

No study.

LUNCH BREAK — 1:00 PM to 2:00 PM

Eat, rest, recharge.

AFTERNOON BLOCK — 2:00 PM to 4:00 PM (NEW - 2 hrs)

TimeSubjectDuration
2:00 - 2:40 PMSPM (continue / new section / MCQs)40 min
2:40 - 3:20 PMBiostatistics (problem solving / formulas)40 min
3:20 - 4:00 PMClinical Cardiology (review morning notes + extra)40 min

REST / NAP — 4:00 PM to 6:00 PM

Full rest. Sleep if possible - this nap compensates for short night sleep.

EVENING BLOCK — 6:00 PM to 10:30 PM

TimeSubjectDuration
6:00 - 6:10 PMSettle in, scan all notes from the day10 min
6:10 - 7:15 PMPT Cardiology (techniques, protocols, questions)65 min
7:15 - 8:15 PMClinical Cardiology (cases, MCQs, deep topics)60 min
8:15 - 8:45 PMBreak + Dinner30 min
8:45 - 9:30 PMRehab (concepts, notes, weak points)45 min
9:30 - 10:00 PMRapid revision - all 5 subjects, 6 min each30 min
10:00 - 10:20 PMWrite 3 key points per subject20 min
10:20 - 10:30 PMWind down, no screens10 min
10:30 PMSLEEP-

⏱️ FINAL DAILY TIME PER SUBJECT

SubjectMorningAfternoonEveningTotal/Day
SPM60 min40 min6 min1 hr 46 min
Biostatistics60 min40 min6 min1 hr 46 min
Clinical Cardiology45 min40 min60 min2 hrs 25 min
PT Cardiology30 min-65 min1 hr 35 min
Rehab--45 min45 min
Total Study3 hrs 15 min2 hrs4 hrs 10 min~9 hrs 25 min

🕐 FULL DAY AT A GLANCE

TimeActivity
3:00 AMWake up
3:15 - 6:30 AMStudy (Morning block)
6:30 - 7:00 AMFreshen / breakfast
7:00 AM - 1:00 PMCollege / clinic
1:00 - 2:00 PMLunch + rest
2:00 - 4:00 PMStudy (Afternoon block)
4:00 - 6:00 PMNAP / full rest
6:00 - 10:30 PMStudy (Evening block)
10:30 PMSleep

😴 SLEEP QUALITY CHECK

SleepHours
Night sleep (10:30 PM - 3:00 AM)4.5 hrs
Afternoon nap (4:00 - 6:00 PM)Up to 2 hrs
Total possible sleep6.5 hrs
With the nap included, you're hitting close to 6.5 hrs total - that's a healthy, sustainable amount for a full month of exam prep.

I want to increase time period of clinical cardio

Asking for Preferences
Done - taking 30 min from Biostatistics and giving it to Clinical Cardiology. Here's the updated timetable:

🕒 UPDATED FIXED DAILY TIMETABLE

MORNING BLOCK — 3:00 AM to 6:30 AM

TimeSubjectDurationChange
3:00 - 3:15 AMWake up, freshen up, water15 min-
3:15 - 4:15 AMSPM60 minNo change
4:15 - 5:00 AMBiostatistics45 min⬇️ -15 min
5:00 - 6:00 AMClinical Cardiology60 min⬆️ +15 min
6:00 - 6:30 AMPT Cardiology30 minNo change

LUNCH BREAK — 1:00 PM to 2:00 PM

Eat, rest, recharge.

AFTERNOON BLOCK — 2:00 PM to 4:00 PM

TimeSubjectDurationChange
2:00 - 2:25 PMBiostatistics (problem solving)25 min⬇️ -15 min
2:25 - 3:10 PMClinical Cardiology (new section / cases)45 min⬆️ +5 min
3:10 - 3:50 PMSPM (MCQs / revision)40 minNo change
3:50 - 4:00 PMQuick notes recap10 min-

REST / NAP — 4:00 PM to 6:00 PM


EVENING BLOCK — 6:00 PM to 10:30 PM

TimeSubjectDurationChange
6:00 - 6:10 PMSettle in, scan day's notes10 min-
6:10 - 7:25 PMClinical Cardiology (deep topics, ECG, MCQs)75 min⬆️ +10 min
7:25 - 8:15 PMPT Cardiology50 minNo change
8:15 - 8:45 PMBreak + Dinner30 min-
8:45 - 9:30 PMRehab45 minNo change
9:30 - 10:00 PMRapid revision - all 5 subjects30 min-
10:00 - 10:20 PMWrite 3 key points per subject20 min-
10:20 - 10:30 PMWind down10 min-
10:30 PMSLEEP--

⏱️ UPDATED DAILY TIME PER SUBJECT

SubjectMorningAfternoonEveningTotal/DayChange
SPM60 min40 min6 min1 hr 46 minNo change
Biostatistics45 min25 min6 min1 hr 16 min⬇️ -30 min
Clinical Cardiology60 min45 min75 min3 hrs⬆️ +30 min
PT Cardiology30 min-50 min1 hr 20 minNo change
Rehab--45 min45 minNo change
Total Study~9 hrs 7 min-

📌 NOTE ON BIOSTATISTICS

At 1 hr 16 min/day, Biostatistics still gets solid daily coverage. Since it's formula and problem-based, quality focused practice in that time beats passive long reading. Make sure the 25-min afternoon slot is always active problem solving, not just reading notes.

Reduce sleep 1 hr add to spm 5 hrs sleep

To get 5 hrs sleep (3 AM wake-up), sleep time moves to 10:00 PM instead of 10:30 PM — wait, that's less time. Let me calculate correctly:
  • Wake up: 3:00 AM
  • 5 hrs sleep = sleep at 10:00 PM
  • That means evening ends at 10:00 PM (30 min earlier than before)
The extra 1 hr for SPM comes from extending the afternoon block by 1 hr (2:00 PM - 5:00 PM instead of 4:00 PM).

🕒 FINAL UPDATED DAILY TIMETABLE

MORNING BLOCK — 3:00 AM to 6:30 AM

TimeSubjectDuration
3:00 - 3:15 AMWake up, freshen up, water15 min
3:15 - 4:30 AMSPM75 min ⬆️ +15 min
4:30 - 5:15 AMBiostatistics45 min
5:15 - 6:10 AMClinical Cardiology55 min
6:10 - 6:30 AMPT Cardiology20 min

BUSY — 7:00 AM to 1:00 PM


LUNCH BREAK — 1:00 PM to 2:00 PM


AFTERNOON BLOCK — 2:00 PM to 5:00 PM (extended by 1 hr)

TimeSubjectDuration
2:00 - 2:45 PMSPM (new section / MCQs / past papers)45 min ⬆️ +5 min
2:45 - 3:10 PMBiostatistics (problem solving)25 min
3:10 - 4:00 PMClinical Cardiology (cases / revision)50 min ⬆️ +5 min
4:00 - 4:40 PMSPM (continued - extra 1 hr total split here)40 min ⬆️ NEW
4:40 - 5:00 PMQuick recap of all afternoon notes20 min

REST / NAP — 5:00 PM to 6:00 PM (1 hr only now)


EVENING BLOCK — 6:00 PM to 10:00 PM (ends 30 min earlier)

TimeSubjectDuration
6:00 - 6:10 PMSettle in, scan day's notes10 min
6:10 - 7:25 PMClinical Cardiology (deep topics, ECG, MCQs)75 min
7:25 - 8:15 PMPT Cardiology (techniques, protocols)50 min
8:15 - 8:45 PMBreak + Dinner30 min
8:45 - 9:20 PMRehab35 min
9:20 - 9:45 PMRapid revision - all 5 subjects25 min
9:45 - 10:00 PMWrite 3 key points + wind down15 min
10:00 PMSLEEP-

⏱️ FINAL DAILY TIME PER SUBJECT

SubjectMorningAfternoonEveningTotal/DayChange
SPM75 min85 min5 min2 hrs 45 min⬆️ +1 hr
Biostatistics45 min25 min5 min1 hr 15 minNo change
Clinical Cardiology55 min50 min75 min3 hrsNo change
PT Cardiology20 min-50 min1 hr 10 minSlight trim
Rehab--35 min35 minSlight trim
Total Study~9 hrs 25 min-

🕐 FULL DAY AT A GLANCE

TimeActivity
3:00 AMWake up
3:15 - 6:30 AMStudy - Morning block
6:30 - 7:00 AMFreshen / breakfast
7:00 AM - 1:00 PMCollege / clinic
1:00 - 2:00 PMLunch + rest
2:00 - 5:00 PMStudy - Afternoon block
5:00 - 6:00 PMNap / rest
6:00 - 10:00 PMStudy - Evening block
10:00 PMSLEEP
3:00 AMWAKE UP

😴 SLEEP CHECK

SleepHours
Night sleep (10:00 PM - 3:00 AM)5 hrs
Afternoon nap (5:00 - 6:00 PM)Up to 1 hr
Total possible~6 hrs
Clean, sustainable, and SPM now gets nearly 2 hrs 45 min daily - the most of any subject, which is appropriate given how content-heavy SPM is.

How is it

Straight honest assessment:

✅ WHAT'S STRONG

  • SPM at 2 hrs 45 min - perfect for a content-heavy subject, well distributed across 3 sessions
  • Clinical Cardiology at 3 hrs - strong coverage, split across morning/afternoon/evening keeps it fresh
  • 5 hrs night sleep + 1 hr nap = 6 hrs total - this is genuinely sustainable for a full month
  • 9.5 hrs study/day - very solid for exam prep
  • All 5 subjects daily - nothing gets forgotten
  • Afternoon block 2-5 PM - smart use of previously wasted free time
  • Evening ends 10 PM - clean hard stop, brain winds down properly before sleep

⚠️ MINOR CONCERNS

IssueImpact
PT Cardiology dropped to 1 hr 10 minSlightly low if it's a heavily weighted exam subject
Rehab trimmed to 35 minFine since it's your strongest, but don't let it fall below 30 min
Morning PT Cardio only 20 minShort for a complex subject - consider swapping with Biostatistics position

🔧 ONE OPTIONAL TWEAK

If PT Cardiology is heavily weighted in your exam, swap its morning slot with Biostatistics:
CurrentSuggested
4:30 - 5:15 AM Biostatistics (45 min)4:30 - 5:15 AM PT Cardiology (45 min)
6:10 - 6:30 AM PT Cardiology (20 min)6:10 - 6:30 AM Biostatistics (20 min)
This gives PT Cardio a longer focused morning slot when your brain is sharp.

🟢 OVERALL VERDICT

FactorRating
Subject coverage✅ Excellent
Time distribution✅ Well balanced
Sleep sustainability✅ Good (6 hrs total)
Study hours✅ Very high (~9.5 hrs)
Structure & consistency✅ Simple to follow daily
Risk of burnout🟡 Low-medium (manageable with the nap)
This is a solid, realistic timetable. The biggest risk is week 3-4 fatigue - protect that 5:00-6:00 PM nap as non-negotiable and you'll stay sharp all month.

Create a printable PDF version of this timetable

Reading File
Running Command

mkdir -p /home/daytona/workspace/timetable && ls /home/daytona/workspace/timetable

Writing File

~/timetable/generate_timetable.py

from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.units import cm
from reportlab.platypus import SimpleDocTemplate, Table, TableStyle, Paragraph, Spacer, HRFlowable
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.enums import TA_CENTER, TA_LEFT
from reportlab.platypus import KeepTogether

doc = SimpleDocTemplate(
    "/home/daytona/workspace/timetable/Study_Timetable.pdf",
    pagesize=A4,
    rightMargin=1.5*cm, leftMargin=1.5*cm,
    topMargin=1.5*cm, bottomMargin=1.5*cm
)

styles = getSampleStyleSheet()

# Custom styles
title_style = ParagraphStyle('Title', fontSize=18, fontName='Helvetica-Bold',
    alignment=TA_CENTER, textColor=colors.HexColor('#1a237e'), spaceAfter=4)
subtitle_style = ParagraphStyle('Subtitle', fontSize=10, fontName='Helvetica',
    alignment=TA_CENTER, textColor=colors.HexColor('#455a64'), spaceAfter=2)
section_style = ParagraphStyle('Section', fontSize=11, fontName='Helvetica-Bold',
    textColor=colors.white, alignment=TA_CENTER)
note_style = ParagraphStyle('Note', fontSize=8.5, fontName='Helvetica',
    textColor=colors.HexColor('#37474f'), spaceAfter=3, leading=12)
label_style = ParagraphStyle('Label', fontSize=9, fontName='Helvetica-Bold',
    textColor=colors.HexColor('#1a237e'))

# Colors
COL_MORNING   = colors.HexColor('#e3f2fd')  # light blue
COL_AFTERNOON = colors.HexColor('#e8f5e9')  # light green
COL_EVENING   = colors.HexColor('#fff3e0')  # light orange
COL_SLEEP     = colors.HexColor('#ede7f6')  # light purple
COL_BUSY      = colors.HexColor('#fce4ec')  # light pink
COL_HDR       = colors.HexColor('#1a237e')  # dark navy
COL_HDR2      = colors.HexColor('#1565c0')  # medium blue
COL_SPM       = colors.HexColor('#bbdefb')
COL_BIO       = colors.HexColor('#c8e6c9')
COL_CC        = colors.HexColor('#ffe0b2')
COL_PTC       = colors.HexColor('#f8bbd0')
COL_REHAB     = colors.HexColor('#e1bee7')

elements = []

# ── TITLE ──────────────────────────────────────────────────────────────────────
elements.append(Paragraph("📚 University Exam Study Timetable", title_style))
elements.append(Paragraph("July 14 – August 13, 2026  •  Fixed Daily Schedule  •  All Subjects Every Day", subtitle_style))
elements.append(HRFlowable(width="100%", thickness=2, color=colors.HexColor('#1a237e'), spaceAfter=6))

# ── SUBJECT LEGEND ─────────────────────────────────────────────────────────────
legend_data = [
    [Paragraph("SUBJECT LEGEND", ParagraphStyle('lh', fontSize=9, fontName='Helvetica-Bold',
        textColor=colors.white, alignment=TA_CENTER)),
     "", "", "", "", ""],
    [
        Paragraph("SPM\n2 hrs 45 min/day", ParagraphStyle('l', fontSize=8, fontName='Helvetica-Bold', alignment=TA_CENTER, textColor=colors.HexColor('#0d47a1'))),
        Paragraph("BIOSTATISTICS\n1 hr 15 min/day", ParagraphStyle('l', fontSize=8, fontName='Helvetica-Bold', alignment=TA_CENTER, textColor=colors.HexColor('#1b5e20'))),
        Paragraph("CLINICAL CARDIO\n3 hrs/day ★", ParagraphStyle('l', fontSize=8, fontName='Helvetica-Bold', alignment=TA_CENTER, textColor=colors.HexColor('#e65100'))),
        Paragraph("PT CARDIOLOGY\n1 hr 10 min/day", ParagraphStyle('l', fontSize=8, fontName='Helvetica-Bold', alignment=TA_CENTER, textColor=colors.HexColor('#880e4f'))),
        Paragraph("REHAB\n35 min/day", ParagraphStyle('l', fontSize=8, fontName='Helvetica-Bold', alignment=TA_CENTER, textColor=colors.HexColor('#4a148c'))),
        Paragraph("TOTAL STUDY\n~9 hrs 25 min", ParagraphStyle('l', fontSize=8, fontName='Helvetica-Bold', alignment=TA_CENTER, textColor=colors.HexColor('#212121'))),
    ]
]
legend_table = Table(legend_data, colWidths=[2.8*cm]*6)
legend_table.setStyle(TableStyle([
    ('SPAN', (0,0), (5,0)),
    ('BACKGROUND', (0,0), (5,0), COL_HDR),
    ('BACKGROUND', (0,1), (0,1), COL_SPM),
    ('BACKGROUND', (1,1), (1,1), COL_BIO),
    ('BACKGROUND', (2,1), (2,1), COL_CC),
    ('BACKGROUND', (3,1), (3,1), COL_PTC),
    ('BACKGROUND', (4,1), (4,1), COL_REHAB),
    ('BACKGROUND', (5,1), (5,1), colors.HexColor('#f5f5f5')),
    ('BOX', (0,0), (-1,-1), 1, COL_HDR),
    ('INNERGRID', (0,0), (-1,-1), 0.5, colors.white),
    ('VALIGN', (0,0), (-1,-1), 'MIDDLE'),
    ('ALIGN', (0,0), (-1,-1), 'CENTER'),
    ('ROWBACKGROUNDS', (0,0), (-1,-1), [None]),
    ('TOPPADDING', (0,0), (-1,-1), 5),
    ('BOTTOMPADDING', (0,0), (-1,-1), 5),
]))
elements.append(legend_table)
elements.append(Spacer(1, 8))

# ── HELPER to build a block table ─────────────────────────────────────────────
def block_table(header, header_color, rows, col_widths):
    cell_style = ParagraphStyle('cell', fontSize=8.5, fontName='Helvetica', leading=11, textColor=colors.HexColor('#212121'))
    bold_style = ParagraphStyle('bold', fontSize=8.5, fontName='Helvetica-Bold', leading=11, textColor=colors.HexColor('#212121'))

    data = [[Paragraph(header, ParagraphStyle('hdr', fontSize=9, fontName='Helvetica-Bold',
        textColor=colors.white, alignment=TA_CENTER)), "", ""]]
    style_cmds = [
        ('SPAN', (0,0), (2,0)),
        ('BACKGROUND', (0,0), (2,0), header_color),
        ('ALIGN', (0,0), (2,0), 'CENTER'),
        ('VALIGN', (0,0), (-1,-1), 'MIDDLE'),
        ('BOX', (0,0), (-1,-1), 1, header_color),
        ('INNERGRID', (0,1), (-1,-1), 0.3, colors.HexColor('#cfd8dc')),
        ('TOPPADDING', (0,0), (-1,-1), 4),
        ('BOTTOMPADDING', (0,0), (-1,-1), 4),
        ('LEFTPADDING', (0,0), (-1,-1), 5),
        ('RIGHTPADDING', (0,0), (-1,-1), 5),
    ]
    for i, (time, subject, dur, bg) in enumerate(rows):
        row_num = i + 1
        data.append([
            Paragraph(time, cell_style),
            Paragraph(subject, bold_style if subject.startswith('**') else cell_style),
            Paragraph(dur, cell_style)
        ])
        if bg:
            style_cmds.append(('BACKGROUND', (0, row_num), (2, row_num), bg))

    t = Table(data, colWidths=col_widths)
    t.setStyle(TableStyle(style_cmds))
    return t

# Column widths for schedule tables
CW = [3.2*cm, 10.0*cm, 3.5*cm]

# ── MORNING BLOCK ──────────────────────────────────────────────────────────────
morning_rows = [
    ("3:00 – 3:15 AM", "Wake up • Freshen up • Water", "15 min", colors.HexColor('#f5f5f5')),
    ("3:15 – 4:30 AM", "SPM  (New section / Theory reading / Memorisation)", "75 min", COL_SPM),
    ("4:30 – 5:15 AM", "Biostatistics  (Formulas / Data types / Statistical tests)", "45 min", COL_BIO),
    ("5:15 – 6:10 AM", "Clinical Cardiology  (ECG / Conditions / Mechanisms)", "55 min", COL_CC),
    ("6:10 – 6:30 AM", "PT Cardiology  (Assessment / Exercise protocols)", "20 min", COL_PTC),
    ("6:30 – 7:00 AM", "Freshen up • Breakfast • College prep", "30 min", colors.HexColor('#f5f5f5')),
]
elements.append(block_table("🌙  MORNING BLOCK  |  3:00 AM – 6:30 AM  (3 hrs 15 min study)", COL_HDR, morning_rows, CW))
elements.append(Spacer(1, 6))

# ── BUSY ──────────────────────────────────────────────────────────────────────
busy_data = [[Paragraph("🏥  COLLEGE / CLINIC  |  7:00 AM – 1:00 PM  (No study)", ParagraphStyle('b', fontSize=9,
    fontName='Helvetica-BoldOblique', textColor=colors.HexColor('#b71c1c'), alignment=TA_CENTER))]]
busy_table = Table(busy_data, colWidths=[16.7*cm])
busy_table.setStyle(TableStyle([
    ('BACKGROUND', (0,0), (-1,-1), COL_BUSY),
    ('BOX', (0,0), (-1,-1), 1, colors.HexColor('#ef9a9a')),
    ('TOPPADDING', (0,0), (-1,-1), 5),
    ('BOTTOMPADDING', (0,0), (-1,-1), 5),
]))
elements.append(busy_table)
elements.append(Spacer(1, 6))

# ── LUNCH ─────────────────────────────────────────────────────────────────────
lunch_data = [[Paragraph("🍽  LUNCH + REST  |  1:00 PM – 2:00 PM", ParagraphStyle('b', fontSize=9,
    fontName='Helvetica-Bold', textColor=colors.HexColor('#33691e'), alignment=TA_CENTER))]]
lunch_table = Table(lunch_data, colWidths=[16.7*cm])
lunch_table.setStyle(TableStyle([
    ('BACKGROUND', (0,0), (-1,-1), colors.HexColor('#f1f8e9')),
    ('BOX', (0,0), (-1,-1), 1, colors.HexColor('#aed581')),
    ('TOPPADDING', (0,0), (-1,-1), 5),
    ('BOTTOMPADDING', (0,0), (-1,-1), 5),
]))
elements.append(lunch_table)
elements.append(Spacer(1, 6))

# ── AFTERNOON BLOCK ────────────────────────────────────────────────────────────
afternoon_rows = [
    ("2:00 – 2:45 PM", "SPM  (New section / MCQs / Past paper questions)", "45 min", COL_SPM),
    ("2:45 – 3:10 PM", "Biostatistics  (Problem solving / Past papers)", "25 min", COL_BIO),
    ("3:10 – 4:00 PM", "Clinical Cardiology  (Cases / Revision / Deep topics)", "50 min", COL_CC),
    ("4:00 – 4:40 PM", "SPM  (Continued — Epidemiology / Health programmes)", "40 min", COL_SPM),
    ("4:40 – 5:00 PM", "Quick recap of all afternoon notes", "20 min", colors.HexColor('#f5f5f5')),
]
elements.append(block_table("☀  AFTERNOON BLOCK  |  2:00 PM – 5:00 PM  (2 hrs 40 min study)", colors.HexColor('#2e7d32'), afternoon_rows, CW))
elements.append(Spacer(1, 6))

# ── NAP ───────────────────────────────────────────────────────────────────────
nap_data = [[Paragraph("😴  NAP / REST  |  5:00 PM – 6:00 PM  (Protect this — compensates for short night sleep)", ParagraphStyle('b', fontSize=9,
    fontName='Helvetica-Bold', textColor=colors.HexColor('#4a148c'), alignment=TA_CENTER))]]
nap_table = Table(nap_data, colWidths=[16.7*cm])
nap_table.setStyle(TableStyle([
    ('BACKGROUND', (0,0), (-1,-1), COL_SLEEP),
    ('BOX', (0,0), (-1,-1), 1, colors.HexColor('#ce93d8')),
    ('TOPPADDING', (0,0), (-1,-1), 5),
    ('BOTTOMPADDING', (0,0), (-1,-1), 5),
]))
elements.append(nap_table)
elements.append(Spacer(1, 6))

# ── EVENING BLOCK ──────────────────────────────────────────────────────────────
evening_rows = [
    ("6:00 – 6:10 PM", "Settle in — Scan all notes from the day", "10 min", colors.HexColor('#f5f5f5')),
    ("6:10 – 7:25 PM", "Clinical Cardiology  (Deep topics / ECG / MCQs / Cases)", "75 min", COL_CC),
    ("7:25 – 8:15 PM", "PT Cardiology  (Treatment techniques / Protocols / Questions)", "50 min", COL_PTC),
    ("8:15 – 8:45 PM", "BREAK + DINNER", "30 min", colors.HexColor('#f5f5f5')),
    ("8:45 – 9:20 PM", "Rehab  (Concepts / Notes / Weak points)", "35 min", COL_REHAB),
    ("9:20 – 9:45 PM", "Rapid Revision — All 5 subjects, ~5 min each", "25 min", colors.HexColor('#e0f7fa')),
    ("9:45 – 10:00 PM", "Write 3 key points per subject + Wind down (no screens)", "15 min", colors.HexColor('#f5f5f5')),
]
elements.append(block_table("🌆  EVENING BLOCK  |  6:00 PM – 10:00 PM  (4 hrs study)", colors.HexColor('#e65100'), evening_rows, CW))
elements.append(Spacer(1, 6))

# ── SLEEP ─────────────────────────────────────────────────────────────────────
sleep_data = [[Paragraph("🌛  SLEEP  |  10:00 PM – 3:00 AM  =  5 hrs Night Sleep  +  1 hr Nap  =  6 hrs Total ✅", ParagraphStyle('b', fontSize=9,
    fontName='Helvetica-Bold', textColor=colors.HexColor('#1a237e'), alignment=TA_CENTER))]]
sleep_table = Table(sleep_data, colWidths=[16.7*cm])
sleep_table.setStyle(TableStyle([
    ('BACKGROUND', (0,0), (-1,-1), COL_SLEEP),
    ('BOX', (0,0), (-1,-1), 1.5, colors.HexColor('#7986cb')),
    ('TOPPADDING', (0,0), (-1,-1), 6),
    ('BOTTOMPADDING', (0,0), (-1,-1), 6),
]))
elements.append(sleep_table)
elements.append(Spacer(1, 8))

# ── 4-WEEK PHASE PLAN ─────────────────────────────────────────────────────────
elements.append(HRFlowable(width="100%", thickness=1, color=colors.HexColor('#90a4ae'), spaceAfter=5))
elements.append(Paragraph("4-WEEK CONTENT PROGRESSION  (Same timetable daily — content changes each week)", 
    ParagraphStyle('ph', fontSize=10, fontName='Helvetica-Bold', textColor=colors.HexColor('#1a237e'), spaceAfter=4)))

phase_data = [
    [Paragraph("Week", ParagraphStyle('ph2', fontSize=9, fontName='Helvetica-Bold', textColor=colors.white, alignment=TA_CENTER)),
     Paragraph("Dates", ParagraphStyle('ph2', fontSize=9, fontName='Helvetica-Bold', textColor=colors.white, alignment=TA_CENTER)),
     Paragraph("Focus", ParagraphStyle('ph2', fontSize=9, fontName='Helvetica-Bold', textColor=colors.white, alignment=TA_CENTER))],
    ["Week 1", "July 14 – 20", "First reading — cover basics, definitions, core concepts of all 5 subjects"],
    ["Week 2", "July 21 – 27", "Deeper reading — mechanisms, clinical applications, build short notes per topic"],
    ["Week 3", "July 28 – Aug 3", "MCQ practice + past paper questions for all subjects every day; identify weak spots"],
    ["Week 4", "Aug 4 – 13",  "Intensive revision — weak topics, mock tests, final notes, rapid recall drills"],
]
phase_table = Table(phase_data, colWidths=[2.0*cm, 3.2*cm, 11.5*cm])
phase_table.setStyle(TableStyle([
    ('BACKGROUND', (0,0), (2,0), COL_HDR),
    ('BACKGROUND', (0,1), (0,1), colors.HexColor('#bbdefb')),
    ('BACKGROUND', (0,2), (0,2), colors.HexColor('#c8e6c9')),
    ('BACKGROUND', (0,3), (0,3), colors.HexColor('#ffe0b2')),
    ('BACKGROUND', (0,4), (0,4), colors.HexColor('#f8bbd0')),
    ('BOX', (0,0), (-1,-1), 1, COL_HDR),
    ('INNERGRID', (0,0), (-1,-1), 0.3, colors.HexColor('#cfd8dc')),
    ('FONTNAME', (0,1), (-1,-1), 'Helvetica'),
    ('FONTSIZE', (0,1), (-1,-1), 8.5),
    ('FONTNAME', (0,1), (1,-1), 'Helvetica-Bold'),
    ('VALIGN', (0,0), (-1,-1), 'MIDDLE'),
    ('TOPPADDING', (0,0), (-1,-1), 5),
    ('BOTTOMPADDING', (0,0), (-1,-1), 5),
    ('LEFTPADDING', (0,0), (-1,-1), 6),
]))
elements.append(phase_table)
elements.append(Spacer(1, 8))

# ── KEY RULES ─────────────────────────────────────────────────────────────────
elements.append(HRFlowable(width="100%", thickness=1, color=colors.HexColor('#90a4ae'), spaceAfter=5))
elements.append(Paragraph("KEY RULES", ParagraphStyle('krh', fontSize=10, fontName='Helvetica-Bold', textColor=colors.HexColor('#1a237e'), spaceAfter=4)))

rules = [
    "✅  Do NOT skip any subject — all 5 every single day, no exceptions.",
    "✅  Rehab goes last every evening — strongest subject, used when energy is lower.",
    "✅  Biostatistics: solve at least 5 problems during afternoon slot — active practice, not just reading.",
    "✅  SPM morning slot is peak-focus time — use it for memorisation-heavy content.",
    "✅  Clinical Cardiology + PT Cardiology studied same evening — overlapping physiology saves revision time.",
    "✅  10:00 PM hard stop — protect your 5 hrs night sleep. No screens after 9:45 PM.",
    "✅  5:00–6:00 PM nap is NON-NEGOTIABLE — it compensates for short night sleep and prevents week 3–4 burnout.",
    "✅  Keep a 'Weak Topics Notebook' — every Saturday, list what you struggled with and target it the next week.",
]
for rule in rules:
    elements.append(Paragraph(rule, ParagraphStyle('rule', fontSize=8.5, fontName='Helvetica', leading=13,
        textColor=colors.HexColor('#37474f'), leftIndent=5, spaceAfter=2)))

elements.append(Spacer(1, 8))
elements.append(HRFlowable(width="100%", thickness=1, color=colors.HexColor('#cfd8dc'), spaceAfter=4))
elements.append(Paragraph("Generated by Orris  •  July 14, 2026  •  1-Month Exam Preparation Plan",
    ParagraphStyle('footer', fontSize=7.5, fontName='Helvetica', textColor=colors.HexColor('#90a4ae'), alignment=TA_CENTER)))

doc.build(elements)
print("PDF created successfully.")
Running Command

python /home/daytona/workspace/timetable/generate_timetable.py

Your printable PDF is ready! Download it here:

Study Timetable

PDF Document · PDF

What's included in the PDF:
  • Color-coded blocks for each session (Morning / Afternoon / Evening / Sleep / Busy)
  • Each subject has its own color (SPM blue, Biostatistics green, Clinical Cardio orange, PT Cardio pink, Rehab purple)
  • Subject legend with daily time totals at the top
  • Full 3-block daily schedule with exact times and topic guidance
  • 4-Week content progression plan
  • Key rules section at the bottom
  • Clean A4 format - ready to print and stick on your wall
This is a shared conversation. Sign in to Orris to start your own chat.