{"id":29864960,"url":"https://github.com/logimos/catalyst","last_synced_at":"2025-10-26T05:05:20.276Z","repository":{"id":305415785,"uuid":"1022823053","full_name":"logimos/catalyst","owner":"logimos","description":"🚀 Catalyst is an interactive, modular Phoenix project generator that sets up a complete development environment with everything you need for modern web development.","archived":false,"fork":false,"pushed_at":"2025-07-19T23:01:26.000Z","size":39,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-07-30T09:33:43.649Z","etag":null,"topics":["elixir","geenrator","phoenix"],"latest_commit_sha":null,"homepage":"","language":"Elixir","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/logimos.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-07-19T22:59:01.000Z","updated_at":"2025-07-19T23:03:43.000Z","dependencies_parsed_at":"2025-07-20T01:43:45.498Z","dependency_job_id":"569e18ea-8672-4362-aff4-83e36a0b3e4c","html_url":"https://github.com/logimos/catalyst","commit_stats":null,"previous_names":["logimos/catalyst"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/logimos/catalyst","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/logimos%2Fcatalyst","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/logimos%2Fcatalyst/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/logimos%2Fcatalyst/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/logimos%2Fcatalyst/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/logimos","download_url":"https://codeload.github.com/logimos/catalyst/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/logimos%2Fcatalyst/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278165677,"owners_count":25940956,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-03T02:00:06.070Z","response_time":53,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["elixir","geenrator","phoenix"],"created_at":"2025-07-30T09:09:18.029Z","updated_at":"2025-10-03T12:53:00.449Z","avatar_url":"https://github.com/logimos.png","language":"Elixir","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Catalyst - Modular Phoenix Project Generator\n\n🚀 **Catalyst** is an interactive, modular Phoenix project generator that sets up a complete development environment with everything you need for modern web development.\n\n## Features\n\n### Core Phoenix Setup\n- ✅ Interactive project creation\n- ✅ Database selection (Postgres, MySQL, SQLite)\n- ✅ Tailwind CSS integration (built-in with Phoenix)\n- ✅ Modern development environment\n\n### Optional Modules\n- 🔧 **Oban** - Background job processing with database schema and sample workers\n- 🔐 **Authentication** - User registration and login with phx_gen_auth\n- ⚡ **LiveView** - Real-time interactive examples and components\n- 🛡️ **Bodyguard** - Authorization policies integrated with authentication\n- 🎯 **Absinthe** - GraphQL API with schema and resolvers\n- 📁 **Waffle** - File uploads with uploader and controller\n- 🌐 **HTTPoison** - HTTP client for external API requests\n- 📧 **Swoosh** - Email functionality with mailer and templates\n- 🧪 **ExMachina** - Test factories for reliable test data\n- ✅ **Credo** - Code quality analysis and linting\n- 🔍 **Dialyxir** - Static analysis and type checking\n- ⚡ **Alpine.js** - Lightweight JavaScript framework for interactivity\n- 🐳 **Docker** - Containerized development and deployment\n\n## Installation\n\n```bash\n# Clone the repository\ngit clone https://github.com/your-username/catalyst.git\ncd catalyst\n\n# Install dependencies\nmix deps.get\n\n# Build the project\nmix compile\n```\n\n## Usage\n\n### Create a New Phoenix Project\n\n```bash\n# Run the interactive setup\nmix catalyst.new\n```\n\nThe setup will guide you through:\n\n1. **Project Configuration**\n   - Project name (with validation)\n   - Database choice (Postgres/MySQL/SQLite)\n\n2. **Module Selection**\n   - Choose which modules to include\n   - Each module adds specific functionality\n\n3. **Automatic Setup**\n   - Creates Phoenix project with your choices\n   - Installs and configures selected modules\n   - Generates comprehensive documentation\n\n### Example Workflow\n\n```bash\n$ mix catalyst.new\n🚀 Welcome to Catalyst - Modular Phoenix Setup!\nProject name? my_awesome_app\nDatabase [1] Postgres (default), [2] MySQL, [3] SQLite: 1\nInclude Oban (background jobs)? [Yn] y\nInclude Authentication (phx_gen_auth)? [Yn] y\nInclude LiveView with examples? [Yn] y\nInclude Bodyguard (authorization)? [Yn] y\nInclude Absinthe (GraphQL)? [Yn] y\nInclude Waffle (file uploads)? [Yn] y\nInclude HTTPoison (HTTP requests)? [Yn] y\nInclude Swoosh (email)? [Yn] y\nInclude ExMachina (test factories)? [Yn] y\nInclude Credo (code quality)? [Yn] y\nInclude Dialyxir (static analysis)? [Yn] y\nInclude Alpine.js? [Yn] y\nInclude Docker support? [Yn] n\n\n✅ Phoenix project created successfully!\n✅ Oban setup completed!\n✅ Auth setup completed!\n✅ LiveView setup completed!\n✅ Bodyguard setup completed!\n✅ Absinthe setup completed!\n✅ Waffle setup completed!\n✅ HTTPoison setup completed!\n✅ Swoosh setup completed!\n✅ ExMachina setup completed!\n✅ Credo setup completed!\n✅ Dialyxir setup completed!\n✅ Alpine setup completed!\n\n🎉 Catalyst setup is complete! Navigate to your project with:\n  cd my_awesome_app\n  mix setup\n```\n\n## Module Documentation\n\nEach module includes comprehensive documentation in `docs/catalyst/`:\n\n- 📖 **Oban** - Background job processing guide\n- 🔐 **Authentication** - User auth setup and usage\n- ⚡ **LiveView** - Real-time interactive components\n- 🛡️ **Bodyguard** - Authorization policies and helpers\n- 🎯 **Absinthe** - GraphQL API development\n- 📁 **Waffle** - File upload handling\n- 🌐 **HTTPoison** - HTTP client usage\n- 📧 **Swoosh** - Email functionality\n- 🧪 **ExMachina** - Test factory patterns\n- ✅ **Credo** - Code quality guidelines\n- 🔍 **Dialyxir** - Static analysis setup\n- ⚡ **Alpine.js** - Interactive components and directives\n- 🐳 **Docker** - Containerization and deployment\n\n## Module Details\n\n### Oban (Background Jobs)\n- Reliable background job processing with database schema\n- Sample EmailWorker, ExampleWorker, and NotificationWorker templates\n- Multiple queue configuration (default, emails, critical)\n- Job scheduling and monitoring capabilities\n- Automatic retry and error handling\n\n### Authentication\n- User registration and login with phx_gen_auth\n- Password reset functionality\n- Session management\n- Route protection helpers\n\n### LiveView\n- Real-time interactive components\n- Multiple example implementations\n- Event handling and state management\n- Smooth transitions and animations\n\n### Bodyguard\n- Authorization policies and helpers\n- Integration with authentication\n- Policy-based access control\n- Plugs and helpers for controllers\n\n### Absinthe (GraphQL)\n- Complete GraphQL API setup\n- Schema definitions and resolvers\n- Query and mutation examples\n- Router integration\n\n### Waffle (File Uploads)\n- File upload handling with uploader\n- Controller and template integration\n- Route configuration\n- Upload validation and processing\n\n### HTTPoison (HTTP Requests)\n- HTTP client for external API calls\n- GET, POST, PUT, DELETE, PATCH methods\n- JSON encoding/decoding\n- Error handling and response processing\n\n### Swoosh (Email)\n- Email functionality with mailer\n- Welcome, password reset, and notification emails\n- HTML and text email templates\n- Background job integration\n\n### ExMachina (Test Factories)\n- Test factories for reliable test data\n- User, post, comment, category, and tag factories\n- Factory helpers and custom traits\n- Build and insert functions\n\n### Credo (Code Quality)\n- Comprehensive code quality analysis\n- Consistency, design, and readability checks\n- Refactoring opportunities\n- Warning detection\n\n### Dialyxir (Static Analysis)\n- Static type analysis and checking\n- Dead code detection\n- Race condition detection\n- Specification checking\n\n### Alpine.js\n- Lightweight JavaScript framework\n- Reactive components\n- Event handling\n- Smooth transitions\n\n### Docker\n- Multi-stage production builds\n- Development environment with database\n- Containerized deployment\n- Environment configuration\n\n## Development\n\n### Project Structure\n\n```\nlib/\n├── catalyst/\n│   ├── modules/\n│   │   ├── oban/\n│   │   ├── auth/\n│   │   ├── liveview/\n│   │   ├── bodyguard/\n│   │   ├── absinthe/\n│   │   ├── waffle/\n│   │   ├── httpoison/\n│   │   ├── swoosh/\n│   │   ├── ex_machina/\n│   │   ├── credo/\n│   │   ├── dialyxir/\n│   │   ├── alpine/\n│   │   └── docker/\n│   └── utils.ex\n├── mix/\n│   └── tasks/\n│       └── catalyst.new.ex\n└── catalyst.ex\n```\n\n### Adding New Modules\n\n1. Create a new module directory in `lib/catalyst/modules/`\n2. Implement the `setup/1` function using the Utils module\n3. Add comprehensive documentation\n4. Update the module list in `catalyst.new.ex`\n\n### Module Template\n\n```elixir\ndefmodule Catalyst.Modules.YourModule do\n  @moduledoc \"\"\"\n  Description of what this module does.\n  \"\"\"\n\n  import Catalyst.Modules.Utils, only: [\n    create_file_from_template: 3,\n    inject_dependency: 2,\n    create_documentation: 3\n  ]\n\n  def setup(project_path) do\n    inject_dependency(project_path, {:your_dep, \"~\u003e 1.0\"})\n    create_your_files(project_path)\n    create_documentation(project_path)\n    System.cmd(\"mix\", [\"deps.get\"], cd: project_path)\n    :ok\n  rescue\n    e -\u003e {:error, Exception.message(e)}\n  end\nend\n```\n\n## Best Practices\n\n### Module Development\n- Use the Utils module for consistency\n- Provide comprehensive documentation\n- Include real-world examples\n- Handle errors gracefully\n- Test all functionality\n\n### Code Quality\n- Run Credo for code quality checks\n- Use Dialyxir for static analysis\n- Follow Elixir best practices\n- Write comprehensive tests\n\n### Testing\n- Use ExMachina factories for test data\n- Write integration tests\n- Test error scenarios\n- Maintain test coverage\n\n## Contributing\n\n1. Fork the repository\n2. Create a feature branch\n3. Add your module or improvement\n4. Add tests and documentation\n5. Submit a pull request\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## Acknowledgments\n\n- Phoenix Framework team for the excellent web framework\n- Oban team for reliable background job processing\n- Alpine.js team for lightweight JavaScript framework\n- All the Elixir community for amazing tools and libraries\n\n---\n\n**Catalyst** - Building better Phoenix applications, one module at a time. 🚀\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flogimos%2Fcatalyst","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flogimos%2Fcatalyst","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flogimos%2Fcatalyst/lists"}