Personalized monthly mood forecasts powered by real astronomical calculations
Demo ยท Documentation ยท Report Bug ยท Request Feature
- ๐ญ Real Astronomical Data - Calculations based on actual planetary positions using
astronomy-engine - ๐ง Explainable AI - Transparent mood scoring model showing exactly why certain days have specific patterns
- ๐ 5 Mood Dimensions - Track energy, focus, romance, stress, and social vitality
- ๐ Lunation Tracking - New Moons, Full Moons, and eclipses with detailed impacts
- โฟ Accessible - WCAG AA compliant with keyboard navigation and screen reader support
- ๐ Privacy First - Row-level security, encrypted data, GDPR compliant
- ๐ฑ Responsive - Beautiful UI that works on all devices
- โก Fast - Server-side rendering with smart caching
- Node.js 18+
- npm or pnpm
- Supabase account (free tier)
- Vercel account (optional, for deployment)
# Clone the repository
git clone https://github.com/CreatingValueFirst/astro-mood.git
cd astro-mood
# Install dependencies
cd apps/web
npm install
# Set up environment variables
cp .env.example .env.local
# Edit .env.local with your Supabase credentials
# Run development server
npm run devVisit http://localhost:3000
Create apps/web/.env.local:
NEXT_PUBLIC_SUPABASE_URL=your_supabase_project_url
NEXT_PUBLIC_SUPABASE_ANON_KEY=your_supabase_anon_keyGet these from your Supabase project settings.
astro-mood/
โโโ apps/
โ โโโ web/ # Next.js web application
โ โโโ src/
โ โ โโโ app/ # App Router pages
โ โ โ โโโ (auth)/ # Authentication pages
โ โ โ โโโ dashboard/ # Protected dashboard
โ โ โ โโโ onboarding/ # User onboarding
โ โ โโโ components/ # React components
โ โ โ โโโ ui/ # shadcn/ui components
โ โ โโโ lib/ # Utilities
โ โ โ โโโ supabase/ # Supabase clients
โ โ โโโ middleware.ts # Auth middleware
โ โโโ package.json
โโโ packages/
โ โโโ astro-core/ # Astrology calculation engine
โ โ โโโ src/
โ โ โ โโโ calculations/ # Planetary positions, aspects
โ โ โ โโโ interpretations/# Mood scoring model
โ โ โ โโโ types.ts # TypeScript definitions
โ โ โโโ package.json
โ โโโ shared-types/ # Shared TypeScript types
โโโ supabase/
โ โโโ migrations/ # Database migrations
โ โโโ functions/ # Edge Functions
โโโ docs/ # Documentation
โโโ README.md
AstroMood uses Supabase (PostgreSQL) with the following tables:
birth_profiles- User birth data for chart calculationsnatal_charts- Cached natal chart computationsmonthly_forecasts- Cached monthly mood forecastsephemeris_cache- Shared planetary position data
All tables are protected with Row Level Security (RLS) policies.
The core calculation engine (packages/astro-core) provides:
- Real-time planetary positions for all 10 celestial bodies
- Retrograde detection using velocity analysis
- Sign ingress (planet entering new zodiac sign) finder
- Lunation calculator (New/Full Moons)
Deterministic algorithm that converts astronomical transits into quantifiable mood impacts:
MoodScore = {
overall: 0-100,
energy: 0-100,
focus: 0-100,
romance: 0-100,
stress: 0-100, // Higher = more stress
social: 0-100
}Factors considered:
- Planet influence weights (Sun: 1.0, Moon: 0.9, etc.)
- Sign compatibility modifiers
- Aspect multipliers (conjunction, trine, square, opposition)
- Transit-to-natal relationships
- Special events (Mercury retrograde, eclipses)
import { calculatePlanetaryPositions, calculateDailyMood } from '@astro-mood/astro-core';
// Get current planetary positions
const positions = calculatePlanetaryPositions(new Date());
// Calculate mood for a Capricorn
const mood = calculateDailyMood(
new Date(),
'Capricorn',
[
{ planet: 'Mars', sign: 'Leo', aspectType: 'Trine' },
{ planet: 'Venus', sign: 'Pisces' }
]
);
console.log(mood);
// { overall: 72, energy: 80, focus: 65, romance: 85, stress: 35, social: 70 }Built with shadcn/ui and Tailwind CSS:
- ๐ญ Cosmic gradient theme (purple/pink/indigo)
- ๐ Dark mode optimized
- ๐ฑ Fully responsive
- โฟ Accessible (WCAG AA)
- โก Optimized performance
- Supabase Auth - Email/password authentication
- Row Level Security - Users can only access their own data
- Session Management - Automatic token refresh via middleware
- Protected Routes - Middleware-based route protection
- HTTPS Only - Secure communication in production
- Click the button above
- Connect your GitHub account
- Configure environment variables
- Deploy!
Manual Deployment:
# Install Vercel CLI
npm i -g vercel
# Deploy
cd apps/web
vercelSee DEPLOYMENT.md for detailed instructions.
After deployment, add your Vercel URL to Supabase:
- Go to Supabase Auth Settings
- Add to Redirect URLs:
https://your-app.vercel.app/** - Update Site URL:
https://your-app.vercel.app
# Run tests
npm test
# Run tests with coverage
npm run test:coverage
# Type check
npm run type-check
# Lint
npm run lintContributions are welcome! Please read our Contributing Guide first.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- astronomy-engine - Precise astronomical calculations
- Supabase - Backend infrastructure
- shadcn/ui - Beautiful UI components
- Vercel - Deployment platform
- Astro.com - Reference for validation
- GitHub: @CreatingValueFirst
- Project: astro-mood
- Issues: Bug Reports & Feature Requests
- Core astrology calculation engine
- User authentication
- Birth profile management
- Basic dashboard
- Monthly forecast generation API
- Calendar view with daily breakdown
- Insights page with natal chart
- Transit notifications
- Synastry/compatibility reports
- Mobile app (React Native)
- AI-enhanced content generation
- Premium subscription tiers
Made with โ๏ธ by AstroMood