- 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>
342 lines
13 KiB
TypeScript
Executable file
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`);
|