0% found this document useful (0 votes)
7 views1 page

Mission Board 2026 Study Tracker PDF

The document outlines a Python script for generating a PDF study tracker titled 'Mission Board 2026', covering the period from November 8, 2025, to January 31, 2026. It includes daily pages with subjects, actual chapter names, motivational quotes, and a checklist for progress tracking. The script utilizes the reportlab library to create a colorful, organized layout for effective study planning.

Uploaded by

Ram Katariya
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
7 views1 page

Mission Board 2026 Study Tracker PDF

The document outlines a Python script for generating a PDF study tracker titled 'Mission Board 2026', covering the period from November 8, 2025, to January 31, 2026. It includes daily pages with subjects, actual chapter names, motivational quotes, and a checklist for progress tracking. The script utilizes the reportlab library to create a colorful, organized layout for effective study planning.

Uploaded by

Ram Katariya
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

""" Mission Board 2026 PDF generator with actual

chapter names Generates a colorful, landscape PDF study


tracker covering 8 Nov 2025 to 31 Jan 2026, day-wise,
with: Cover page with title, subtitle, owner Daily pages
with date, day name, subjects with actual chapter names,
daily quote, and progress checkbox 3-style quote rotation
(motivational, calm, focus) in 1-2-3 sequence Weekly
subject rotation: Mon: Eng+Maths, Tue: Sci+SS, Wed:
Eng+Computer(2), Thu: Math+Sci, Fri: SS+Eng, Sat:
Computer(2)+Revision, Sun: Revision+Catch-up
Computer days allocate 2 chapters Requirements: Python
3.8+ reportlab (install via: pip install reportlab) Usage:
python mission_board_2026.py Output file:
Mission_Board_2026_Ram_Katariya.pdf """ from
[Link] import landscape, A4 from
[Link] import colors from [Link] import
ParagraphStyle, getSampleStyleSheet from
[Link] import SimpleDocTemplate, Table,
TableStyle, Paragraph, Spacer, PageBreak from
[Link] import mm from datetime import
datetime, timedelta import calendar --------------------
CONFIG -------------------- OWNER_NAME = "Ram
Katariya" OUTPUT_FILENAME =
"Mission_Board_2026_Ram_Katariya.pdf" PAGE_SIZE
= landscape(A4) LEFT_MARGIN = RIGHT_MARGIN =
TOP_MARGIN = BOTTOM_MARGIN = 12 * mm
START_DATE = datetime(2025, 11, 8) END_DATE =
datetime(2026, 1, 31) STUDY_HOURS = 4 -----------------
--- SUBJECT CHAPTERS --------------------
SUBJECT_CHAPTERS = { "English": ["A Letter to
God", "Nelson Mandela: Long Walk to Freedom", "Two
Stories about Flying", "From the Diary of Anne Frank",
"The Hundred Dresses", "Glorious Morning", "Animals",
"The Proposal", "First Flight", "The Serpent and the
Rope", "The Fun They Had", "The Necklace", "The Last
Leaf", "The Adventure of Toto", "The Blue Umbrella",
"The Nightingale", "The Little Girl", "The Black
Aeroplane", "The Thief's Story", "The Open Window",
"My Childhood", "A Dog Named Duke", "A Visit to
Cambridge", "The Best Christmas Present", "The Happy
Prince", "The Fox and the Grapes", "The Model
Millionaire"], "Maths": ["Real Numbers", "Polynomials",
"Pair of Linear Equations in Two Variables", "Quadratic
Equations", "Arithmetic Progressions", "Triangles",
"Coordinate Geometry", "Introduction to Trigonometry",
"Some Applications of Trigonometry", "Circles", "Areas
Related to Circles", "Surface Areas and Volumes",
"Statistics", "Probability"], "Science": ["Chemical
Reactions and Equations", "Acids, Bases and Salts",
"Metals and Non-metals", "Carbon and Its Compounds",
"Periodic Classification of Elements", "Life Processes",
"Control and Coordination", "How do Organisms
Reproduce?", "Heredity and Evolution", "Our
Environment", "Natural Resources", "Light Reflection and
Refraction", "Human Eye and the Colourful World"],
"Social Science": ["History: The Rise of Nationalism in
Europe", "History: Nationalism in India", "History: The
Making of a Global World", "Geography: Resources and
Development", "Geography: Water Resources",
"Geography: Agriculture", "Civics: Power Sharing",
"Civics: Federalism", "Civics: Democracy and Diversity",
"Economics: Development", "Economics: Sectors of the
Indian Economy", "Economics: Money and Credit",
"History: Print Culture and the Modern World",
"Geography: Minerals and Energy Resources", "Civics:
Gender, Religion and Caste", "Economics: Globalisation
and the Indian Economy", "History: Novels, Newspapers,
and Politics", "Geography: Manufacturing Industries",
"Civics: Outcomes of Democracy", "Economics:
Consumer Rights", "History: The Industrial Revolution",
"Geography: Transport and Communication",
"Economics: Human Capital Formation"], "Computer":
["Introduction to Computers", "Programming Basics",
"Internet and Web", "MS Office Tools", "HTML Basics",
"Python Programming", "Database Management", "Cyber
Safety", "Networking Basics", "Final Project"],
"Gujarati": [f"Gujarati Chapter {i+1}" for i in range(20)],
"Sanskrit": [f"Sanskrit Chapter {i+1}" for i in range(15)] }
-------------------- QUOTES --------------------
QUOTES_POWER = ["Discipline beats motivation.",
"Winners are made in the days no one is watching.", "Push
yourself — no one else will do it for you.", "Small steps
daily build big results."] QUOTES_GENTLE = ["You are
doing amazing — keep going.", "Rest if you must, but
don’t you quit.", "You are stronger than you think.", "Take
it one step at a time."] QUOTES_MIXED = ["Start where
you are. Use what you have.", "Dream big. Work smart.
Stay consistent.", "Focus + Consistency = Success.",
"Make your future self proud."] Weekly rotation pattern
WEEK_ROTATION = [ "English + Maths", "Science +
Social Science", "English + Computer", "Maths +
Science", "Social Science + English", "Computer +
Revision", "Revision + Catch-up" ] Styles styles =
getSampleStyleSheet() TITLE_STYLE =
ParagraphStyle("TitleStyle", parent=styles["Title"],
alignment=1, textColor=[Link]("#0B57A4"),
fontSize=28) SUBTITLE_STYLE =
ParagraphStyle("SubtitleStyle", parent=styles["Normal"],
alignment=1, textColor=[Link]("#0B57A4"),
fontSize=12, italic=True) HEADER_STYLE =
ParagraphStyle("HeaderStyle",
parent=styles["Heading2"], alignment=0,
textColor=[Link],
backColor=[Link]("#2E86AB"), fontSize=12,
leading=14) CELL_STYLE = ParagraphStyle("CellStyle",
parent=styles["Normal"], fontSize=9, leading=11)
FOOTER_STYLE = ParagraphStyle("FooterStyle",
parent=styles["Normal"], alignment=1, fontSize=9,
textColor=[Link]("#0B7A55")) -------------------
- HELPERS -------------------- def daterange(start_date,
end_date): current = start_date while current <= end_date:
yield current current += timedelta(days=1) def
get_quote_for_day(index): mod = index % 3 if mod == 0:
return QUOTES_POWER[(index // 3) %
len(QUOTES_POWER)] elif mod == 1: return
QUOTES_GENTLE[(index // 3) %
len(QUOTES_GENTLE)] else: return
QUOTES_MIXED[(index // 3) %
len(QUOTES_MIXED)] def subject_for_date(date_obj):
weekday = date_obj.weekday() return
WEEK_ROTATION[weekday] -------------------- BUILD
PDF -------------------- def
build_pdf(filename=OUTPUT_FILENAME): doc =
SimpleDocTemplate(filename, pagesize=PAGE_SIZE,
leftMargin=LEFT_MARGIN,
rightMargin=RIGHT_MARGIN,
topMargin=TOP_MARGIN,

🚀
bottomMargin=BOTTOM_MARGIN) elements = [] #
Cover page [Link](Paragraph(" Mission
Board 2026", TITLE_STYLE))
[Link](Spacer(1, 6))
[Link](Paragraph("Dream big. Stay consistent.
Conquer your board.", SUBTITLE_STYLE))
[Link](Spacer(1, 8))

💫
[Link](Paragraph(f"Created for:
{OWNER_NAME} ", styles["Normal"]))
[Link](Spacer(1, 12))
[Link](Paragraph(f"Duration:
{START_DATE.strftime('%d %b %Y')} →
{END_DATE.strftime('%d %b %Y')}",
styles["Normal"])) [Link](Paragraph(f"Study
hours/day: {STUDY_HOURS} hours", styles["Normal"]))
[Link](PageBreak()) all_dates =
list(daterange(START_DATE, END_DATE)) day_index =
0 chapter_counters = {s: 0 for s in
SUBJECT_CHAPTERS.keys()} current =
START_DATE.replace(day=1) while current <=
END_DATE: year, month = [Link], [Link]

📅
month_name = calendar.month_name[month] + f" {year}"
[Link](Paragraph(f" {month_name}",
styles["Heading2"])) [Link](Spacer(1,6))
table_data = [[Paragraph("Date", HEADER_STYLE),
Paragraph("Day", HEADER_STYLE),
Paragraph("Subjects (Daily Plan)", HEADER_STYLE),
Paragraph("Daily Quote", HEADER_STYLE),
Paragraph("Done (✓)", HEADER_STYLE)]] for day in
range(1, [Link](year, month)[1]+1):
date_obj = datetime(year, month, day) if date_obj <
START_DATE or date_obj > END_DATE: continue
day_name = date_obj.strftime('%A') subj_str =
subject_for_date(date_obj) parts = [] for part in [[Link]()
for p in subj_str.split('+')]: key = None for k in
SUBJECT_CHAPTERS.keys(): if [Link]() in
[Link](): key = k break if key is None:
[Link](part) else: count = chapter_counters[key]
titles = SUBJECT_CHAPTERS[key] if 'Computer' in key:
# 2 chapters if count < len(titles)-1: [Link](f"{key}:
Ch {count+1} – {titles[count]} & Ch {count+2} –
{titles[count+1]}") chapter_counters[key] += 2 elif count
< len(titles): [Link](f"{key}: Ch {count+1} –
{titles[count]}") chapter_counters[key] += 1 else:
[Link](f"{key}: Revision") else: if count <
len(titles): [Link](f"{key}: Ch {count+1} –
{titles[count]}") chapter_counters[key] += 1 else:
[Link](f"{key}: Revision") subjects_text =
Paragraph('
'.join(parts), CELL_STYLE) quote_text =
Paragraph(get_quote_for_day(day_index),
CELL_STYLE)
table_data.append([Paragraph(date_obj.strftime('%d %b
%Y'), CELL_STYLE), Paragraph(day_name,
CELL_STYLE), subjects_text, quote_text, Paragraph('☐',
CELL_STYLE)]) day_index += 1 col_widths = [70, 80,
300, 220, 50] t = Table(table_data, colWidths=col_widths,
repeatRows=1) [Link](TableStyle([('GRID',(0,0),
(-1,-1),0.5,[Link]),('BACKGROUND',(0,0),
(-2,0),[Link]('#2E86AB')),('TEXTCOLOR',
(0,0),(-2,0),[Link]),('ALIGN',(0,0),
(-1,-1),'CENTER'),('VALIGN',(0,0),(-1,-1),'MIDDLE'),
('ROWBACKGROUNDS',(0,1),(-1,-1),
[[Link], [Link]])]))
[Link](t) [Link](Spacer(1,8))
[Link](Paragraph(get_quote_for_day(day_index),
SUBTITLE_STYLE)) [Link](Spacer(1,12))
[Link](PageBreak()) if month==12: current =
[Link](year=year+1, month=1) else: current =

📋
[Link](month=month+1) # Footer checklist
[Link](Paragraph(" Subject Chapter
Checklist", styles['Heading2']))
[Link](Spacer(1,6)) for subj, titles in
SUBJECT_CHAPTERS.items(): boxes = ' '.join(['☐' for _
in range(len(titles))]) [Link](Paragraph(f"{subj}
({len(titles)}): {boxes}", CELL_STYLE))
[Link](Spacer(1,4))
[Link](Spacer(1,12))
💫
[Link](Paragraph(f" Created for:
{OWNER_NAME}", FOOTER_STYLE))
[Link](elements) print(f"PDF generated: {filename}")
if name=='main': build_pdf()

You might also like