numerology/year-ahead.ts
rpriven fd6e171586
Add comprehensive numerology calculator with 10 specialized tools
- Core calculations (Life Path, Expression, Soul Urge, Birthday)
- Advanced numbers (Maturity, Personality, Hidden Passion, Karmic Lessons)
- Timing cycles and optimal days finder
- Compatibility analysis and name optimizer
- Telos integration for personal development
- Professional PDF report generation
- Profile management system
- Security fix: Add .claude/ to .gitignore

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-01 14:00:15 -06:00

342 lines
13 KiB
TypeScript
Executable file

#!/usr/bin/env bun
/**
* Year-Ahead Calendar
*
* Shows Personal Month cycles for an entire year, giving you a strategic
* overview of the energy themes for each month ahead.
*
* Usage:
* bun year-ahead.ts --birthdate "5/13/1982" --year 2025
* bun year-ahead.ts --birthdate "5/13/1982" --name "John Doe"
*/
import { calculateCycles } from './cycles';
import { personalMonth, personalYear as personalYearMeanings } from './cycle-meanings';
import { loadProfile } from './profile-manager';
// Parse command line arguments
const args = process.argv.slice(2);
let birthdate = '';
let year: number = new Date().getFullYear();
let name = '';
let profileId = '';
for (let i = 0; i < args.length; i++) {
if ((args[i] === '--profile' || args[i] === '-p') && args[i + 1]) {
profileId = args[i + 1];
i++;
} else if ((args[i] === '--birthdate' || args[i] === '-b') && args[i + 1]) {
birthdate = args[i + 1];
i++;
} else if ((args[i] === '--year' || args[i] === '-y') && args[i + 1]) {
year = parseInt(args[i + 1]);
i++;
} else if ((args[i] === '--name' || args[i] === '-n') && args[i + 1]) {
name = args[i + 1];
i++;
} else if (args[i] === '--help' || args[i] === '-h') {
console.log(`
Year-Ahead Calendar
Shows Personal Month cycles for the entire year ahead, giving you a
strategic overview of energy themes and planning opportunities.
USAGE:
bun year-ahead.ts --profile <id> [OPTIONS]
bun year-ahead.ts --birthdate "mm/dd/yyyy" [OPTIONS]
OPTIONS:
-p, --profile ID Use saved profile
-b, --birthdate DATE Your birthdate (mm/dd/yyyy) [required if no profile]
-y, --year NUMBER Year to preview [default: current year]
-n, --name NAME Your name [optional - for personalized output]
-h, --help Show this help message
EXAMPLES:
# With profile
bun year-ahead.ts --profile rob
bun year-ahead.ts --profile rob -y 2026
# With birthdate
bun year-ahead.ts -b "5/13/1982"
bun year-ahead.ts -b "5/13/1982" -y 2026
bun year-ahead.ts -b "5/13/1982" -n "John Doe" -y 2025
PERSONAL MONTH MEANINGS:
1 - New beginnings, fresh starts, independence
2 - Cooperation, relationships, patience
3 - Creativity, communication, self-expression
4 - Hard work, structure, foundation building
5 - Change, freedom, adventure, variety
6 - Responsibility, service, family, home
7 - Reflection, study, spirituality, rest
8 - Achievement, ambition, financial focus
9 - Completion, endings, release, preparation
11 - Inspiration, intuition, spiritual awakening
22 - Master building, manifesting visions
33 - Master teaching, compassionate service
STRATEGIC PLANNING:
Use this calendar to:
- Plan major projects around supportive month cycles
- Schedule launches during Personal Month 1 or 8
- Block creative work for Month 3
- Reserve Month 7 for planning and strategy
- Complete and release during Month 9
`);
process.exit(0);
}
}
// Load profile if specified
if (profileId) {
const profile = loadProfile(profileId);
if (!profile) {
console.error(`Error: Profile '${profileId}' not found`);
console.error('List profiles with: bun profile.ts list');
process.exit(1);
}
name = profile.name;
birthdate = profile.birthdate;
}
if (!birthdate) {
console.error('Error: --birthdate is required (or use --profile)');
console.error('Try: bun year-ahead.ts --help');
process.exit(1);
}
interface MonthInfo {
month: number;
monthName: string;
personalMonth: number;
personalYear: number;
universalMonth: number;
universalYear: number;
theme: string;
focus: string[];
bestFor: string[];
avoid: string[];
}
// Month names
const monthNames = [
'January', 'February', 'March', 'April', 'May', 'June',
'July', 'August', 'September', 'October', 'November', 'December'
];
// Simplified month guidance
const monthGuidance: Record<number, { theme: string; focus: string[]; bestFor: string[]; avoid: string[] }> = {
1: {
theme: 'New Beginnings',
focus: ['Fresh starts', 'Independence', 'Initiative'],
bestFor: ['Launching projects', 'Starting new ventures', 'Bold decisions', 'Leadership actions'],
avoid: ['Waiting for others', 'Being passive', 'Following only']
},
2: {
theme: 'Cooperation',
focus: ['Partnerships', 'Patience', 'Details'],
bestFor: ['Building relationships', 'Collaborative work', 'Diplomacy', 'Refinement'],
avoid: ['Solo ventures', 'Rushing', 'Impatience']
},
3: {
theme: 'Creative Expression',
focus: ['Communication', 'Creativity', 'Social connection'],
bestFor: ['Content creation', 'Public speaking', 'Networking', 'Creative projects'],
avoid: ['Heavy analytical work', 'Isolation', 'Overthinking']
},
4: {
theme: 'Foundation Building',
focus: ['Hard work', 'Organization', 'Structure'],
bestFor: ['System building', 'Planning', 'Infrastructure', 'Financial organization'],
avoid: ['Starting completely new things', 'Taking shortcuts', 'Scattered efforts']
},
5: {
theme: 'Change & Freedom',
focus: ['Variety', 'Adventure', 'Adaptation'],
bestFor: ['Marketing', 'Trying new approaches', 'Travel', 'Experimentation'],
avoid: ['Rigid routines', 'Being stuck', 'Resisting change']
},
6: {
theme: 'Service & Responsibility',
focus: ['Teaching', 'Helping', 'Family'],
bestFor: ['Client service', 'Teaching', 'Community work', 'Home projects'],
avoid: ['Selfish pursuits', 'Avoiding responsibility', 'Neglecting others']
},
7: {
theme: 'Introspection',
focus: ['Study', 'Spirituality', 'Analysis'],
bestFor: ['Deep study', 'Research', 'Strategy', 'Rest and rejuvenation'],
avoid: ['Major public launches', 'Excessive socializing', 'Surface-level work']
},
8: {
theme: 'Achievement',
focus: ['Power', 'Business', 'Success'],
bestFor: ['Business deals', 'Financial decisions', 'Scaling', 'Major launches'],
avoid: ['Spiritual retreats', 'Passive waiting', 'Small thinking']
},
9: {
theme: 'Completion',
focus: ['Release', 'Endings', 'Letting go'],
bestFor: ['Completing projects', 'Publishing', 'Clearing space', 'Endings'],
avoid: ['Starting new ventures', 'Beginning fresh', 'Major initiations']
},
11: {
theme: 'Inspiration',
focus: ['Intuition', 'Illumination', 'Spiritual leadership'],
bestFor: ['Inspiring others', 'Visionary work', 'Spiritual teaching', 'Master guidance'],
avoid: ['Ignoring intuition', 'Playing small', 'Logical-only thinking']
},
22: {
theme: 'Master Building',
focus: ['Manifestation', 'Large-scale vision', 'Legacy work'],
bestFor: ['Building legacies', 'Large projects', 'Visionary implementation', 'Ambitious launches'],
avoid: ['Small projects', 'Short-term thinking', 'Doubting vision']
},
33: {
theme: 'Master Teaching',
focus: ['Healing', 'Compassionate service', 'Education'],
bestFor: ['Master teaching', 'Healing work', 'Educational initiatives', 'High-level service'],
avoid: ['Selfish profit focus', 'Burnout', 'Boundary violations']
}
};
// Calculate all months
function getYearAhead(birthdate: string, year: number): MonthInfo[] {
const months: MonthInfo[] = [];
for (let month = 1; month <= 12; month++) {
const dateStr = `${month}/15/${year}`; // Use middle of month
const cycles = calculateCycles(birthdate, dateStr);
const guidance = monthGuidance[cycles.personal.month] || monthGuidance[1];
months.push({
month,
monthName: monthNames[month - 1],
personalMonth: cycles.personal.month,
personalYear: cycles.personal.year,
universalMonth: cycles.universal.month,
universalYear: cycles.universal.year,
theme: guidance.theme,
focus: guidance.focus,
bestFor: guidance.bestFor,
avoid: guidance.avoid
});
}
return months;
}
// Main execution
console.log(`\n═══════════════════════════════════════════════════════════════`);
console.log(`📅 YOUR YEAR AHEAD: ${year}`);
if (name) console.log(` ${name}`);
console.log(`═══════════════════════════════════════════════════════════════\n`);
const months = getYearAhead(birthdate, year);
const personalYear = months[0].personalYear;
const pyNum = months[0].personalYear;
const pyMeaning = personalYearMeanings[pyNum];
console.log(`🌟 Personal Year ${pyNum}: ${pyMeaning?.keywords.join(', ') || 'Growth & Evolution'}\n`);
// Year overview
if (pyMeaning) {
console.log(`YEAR ${year} OVERVIEW:\n`);
console.log(`Theme: ${pyMeaning.theme}\n`);
}
console.log(`═══════════════════════════════════════════════════════════════`);
console.log(`MONTHLY BREAKDOWN`);
console.log(`═══════════════════════════════════════════════════════════════\n`);
// Display each month
months.forEach((month, index) => {
const isCurrentMonth = new Date().getMonth() === month.month - 1 && new Date().getFullYear() === year;
const marker = isCurrentMonth ? '▶️ ' : ' ';
console.log(`${marker}${month.monthName.toUpperCase()} - Personal Month ${month.personalMonth}`);
console.log(` ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━`);
console.log(` 🎯 THEME: ${month.theme}`);
console.log(` 📍 FOCUS: ${month.focus.join(' • ')}`);
console.log(` ✅ BEST FOR: ${month.bestFor[0]}`);
if (index < months.length - 1) {
console.log('');
}
});
console.log(`\n═══════════════════════════════════════════════════════════════`);
console.log(`STRATEGIC PLANNING GUIDE`);
console.log(`═══════════════════════════════════════════════════════════════\n`);
// Group months by theme for strategic planning
const monthsByNumber: Record<number, string[]> = {};
months.forEach(m => {
if (!monthsByNumber[m.personalMonth]) {
monthsByNumber[m.personalMonth] = [];
}
monthsByNumber[m.personalMonth].push(m.monthName);
});
console.log(`KEY PLANNING OPPORTUNITIES:\n`);
// Highlight strategic months
if (monthsByNumber[1]) {
console.log(`🚀 LAUNCH MONTHS (Personal Month 1):`);
console.log(` ${monthsByNumber[1].join(', ')}`);
console.log(` → Best for: New projects, bold initiatives, fresh starts\n`);
}
if (monthsByNumber[3]) {
console.log(`🎨 CREATIVE MONTHS (Personal Month 3):`);
console.log(` ${monthsByNumber[3].join(', ')}`);
console.log(` → Best for: Content creation, communication, networking\n`);
}
if (monthsByNumber[7]) {
console.log(`🧘 REFLECTION MONTHS (Personal Month 7):`);
console.log(` ${monthsByNumber[7].join(', ')}`);
console.log(` → Best for: Strategy, deep study, rest and planning\n`);
}
if (monthsByNumber[8]) {
console.log(`💼 BUSINESS MONTHS (Personal Month 8):`);
console.log(` ${monthsByNumber[8].join(', ')}`);
console.log(` → Best for: Major deals, scaling, financial decisions\n`);
}
if (monthsByNumber[9]) {
console.log(`🏁 COMPLETION MONTHS (Personal Month 9):`);
console.log(` ${monthsByNumber[9].join(', ')}`);
console.log(` → Best for: Finishing projects, releasing, wrapping up\n`);
}
// Master numbers
[11, 22, 33].forEach(num => {
if (monthsByNumber[num]) {
const names = { 11: 'INSPIRATION', 22: 'MASTER BUILDING', 33: 'MASTER TEACHING' };
console.log(`${names[num as 11 | 22 | 33]} MONTHS (Personal Month ${num}):`);
console.log(` ${monthsByNumber[num].join(', ')}`);
console.log(` → Special high-vibration months with amplified potential\n`);
}
});
console.log(`═══════════════════════════════════════════════════════════════`);
console.log(`💡 HOW TO USE THIS CALENDAR`);
console.log(`═══════════════════════════════════════════════════════════════\n`);
console.log(`1. ALIGN MAJOR PROJECTS with supportive month cycles`);
console.log(`2. SCHEDULE LAUNCHES during Month 1 or Month 8`);
console.log(`3. BLOCK CREATIVE TIME during Month 3`);
console.log(`4. RESERVE Month 7 for strategic planning and rest`);
console.log(`5. COMPLETE & RELEASE during Month 9\n`);
console.log(`💫 Use this overview for annual planning, then drill down with:`);
console.log(` • telos-week.ts for weekly planning`);
console.log(` • optimal-days.ts to find specific optimal days`);
console.log(` • cycles.ts for daily cycle guidance\n`);
console.log(`✨ Align your actions with natural cycles for maximum effectiveness\n`);