This is an open project. Contributions are welcome.
- Jzero: MIT licensed — your contributions will be MIT too
- Swiss Ephemeris: Has its own separate license for commercial use — see LICENSING.md
Open an issue with:
- What happened
- What you expected
- How to reproduce it
- Fork the repo
git checkout -b feature/your-feature- Make your changes
- Test:
npm test - Try an example:
node examples/basic-birth-chart.js - Open a pull request
Typos, clearer explanations, more examples — all welcome.
- ES6 modules (
import/export) - Descriptive names:
calculateHousePosition()notcalcH() - JSDoc on all public functions:
/**
* Calculate house cusps
* @param {number} jd - Julian Day (Terrestrial Time)
* @param {number} lat - Geographic latitude (-90 to 90)
* @param {number} lon - Geographic longitude (-180 to 180)
* @param {string} system - House system: 'placidus', 'porphyry', 'whole-sign', 'equal'
* @returns {Object} House cusps and angles
*/- Astronomical calculations should target ±0.1° or better
- Reference Swiss Ephemeris or CSV data — not approximations
- One logical change per PR
- Include tests for new calculations
- Update relevant documentation
- Clear commit messages describing what changed and why
npm test # Run all tests
npm run validate # Tests + lint
node examples/basic-birth-chart.js # Manual checkSee CODE_OF_CONDUCT.md. Short version: be respectful.
- GitHub Discussions for design questions
- GitHub Issues for bugs
By contributing, you agree your code will be licensed under MIT.