Thank you for your interest in this project! This is a personal learning journey, but contributions, suggestions, and feedback are welcome.
-
Fork the repository
-
Clone your fork
git clone https://github.com/YOUR_USERNAME/elixir-phoenix.git cd elixir-phoenix -
Install dependencies
make setup
-
Run tests
make test
- Check existing issues and PRs
- Open an issue to discuss significant changes
- Follow the phase structure outlined in
docs/roadmap.md
-
Create a feature branch
git checkout -b feature/your-feature-name
-
Make your changes
- Follow the existing code style
- Add tests for new functionality
- Update documentation as needed
-
Run quality checks
make check # Format check make credo # Linting make dialyzer # Type checking make test # Tests
-
Commit your changes
git commit -m "feat: add feature description"Follow Conventional Commits:
feat:New featurefix:Bug fixdocs:Documentation changestest:Test additions/changesrefactor:Code refactoringchore:Maintenance tasks
-
Push to your fork
git push origin feature/your-feature-name
-
Open a Pull Request
- Use a clear, descriptive title
- Reference any related issues
- Describe your changes and why they're needed
- Follow the Elixir Style Guide
- Run
mix formatbefore committing - Keep functions small and focused
- Prefer pattern matching over conditionals
- Use descriptive variable and function names
- Add
@moduledocto all modules - Add
@docto all public functions - Include examples in docstrings
- Update relevant docs in
docs/when changing behavior
- Write tests for all new functionality
- Aim for >80% coverage
- Use descriptive test names
- Follow Arrange-Act-Assert pattern
- Write clear, concise commit messages
- One logical change per commit
- Reference issues:
fixes #123orrelates to #456
Before submitting a PR, ensure:
- Code follows project style (
make checkpasses) - All tests pass (
make testpasses) - New code has tests
- Documentation is updated
- Credo analysis passes (
make credopasses) - Dialyzer passes (
make dialyzerpasses) - Commit messages follow conventions
- PR description clearly explains changes
- Implementing phase-specific labs apps
- Adding additional exercises
- Improving existing implementations
- Building out the Pulse product incrementally
- Adding features across phases
- Integration improvements
- Improving phase reading notes
- Adding more examples
- Creating tutorials
- Fixing typos and clarity issues
- Improving CI/CD
- Adding automation
- Better developer experience
- Expanding design checklists
- Creating more templates
- Runbook improvements
- Open an issue for bugs or feature requests
- Start a discussion for questions or ideas
- Check existing documentation first
- Be respectful and inclusive
- Welcome beginners and all skill levels
- Focus on constructive feedback
- Assume good intentions
- Harassment or discrimination
- Trolling or insulting comments
- Publishing others' private information
- Spam or off-topic discussions
By contributing, you agree that your contributions will be licensed under the same MIT License that covers this project.
All contributors will be acknowledged in the project README. Significant contributions may be highlighted in phase completion notes.
Your contributions help make this learning journey better for everyone. Whether it's a typo fix, a new feature, or thoughtful feedback—thank you for taking the time to contribute!