- How do I install Docudoodle in a Laravel 10+ project?
- Run `composer require genericmilk/docudoodle` to install. Publish the configuration with `php artisan vendor:publish --tag=docudoodle` to set up API keys, output paths, and other settings in `config/docudoodle.php`. No database migrations are required.
- Which AI providers does Docudoodle support, and how do I configure them?
- Docudoodle supports OpenAI, Claude, Gemini, Azure OpenAI, and Ollama (local). Configure your provider in `.env` (e.g., `DOCUDOODLE_PROVIDER=openai`, `OPENAI_API_KEY=your_key`). For Ollama, set `DOCUDOODLE_PROVIDER=ollama` and ensure the service is running locally.
- Can Docudoodle generate documentation for a large legacy codebase without hitting API limits?
- Yes, it caches unchanged files using file hashing to avoid reprocessing. For large codebases, enable caching with `php artisan docudoodle:generate --cache` and set `DOCUDOODLE_CACHE_ENABLED=true` in `.env`. Use token limits (e.g., `DOCUDOODLE_TOKEN_LIMIT=1000`) to control API costs.
- How do I skip directories or files that already have documentation?
- Add directories to skip in `config/docudoodle.php` under `skip_directories` (e.g., `['vendor', 'storage']`). To skip existing docs, set `DOCUDOODLE_SKIP_EXISTING=true` or use the `--skip-existing` flag. Docudoodle ignores files matching extensions in `skip_extensions`.
- Does Docudoodle work with Laravel’s testing environment, and how can I test it safely?
- Yes, it’s safe to test in Laravel’s testing environment. Run `php artisan docudoodle:generate --test` to generate docs for a subset of files (e.g., `app/Http/Controllers/`). Review the output in `storage/docs/` or a custom path before committing. Use `--force-rebuild` to bypass cache for thorough testing.
- Can I customize the AI-generated documentation template or prompts?
- Absolutely. Publish the template with `php artisan vendor:publish --tag=docudoodle:templates` to edit `resources/views/docudoodle/template.md`. Use template variables like `{file_path}` or `{class_name}` to structure output. For advanced use, override the `DocudoodleServiceProvider` bindings.
- How do I integrate Docudoodle output with Jira or Confluence?
- Use the `--jira` or `--confluence` flags with the Artisan command (e.g., `php artisan docudoodle:generate --jira`). Configure Jira credentials in `.env` (`JIRA_EMAIL`, `JIRA_API_TOKEN`) and set the project key in `config/docudoodle.php`. Docs will be posted as wiki pages or comments.
- What Laravel versions does Docudoodle support, and are there breaking changes between versions?
- Docudoodle is tested on Laravel 10–13. Check the [changelog](https://github.com/genericmilk/docudoodle/blob/main/CHANGELOG.md) for version-specific updates. Breaking changes are rare but may affect configuration keys or Artisan flags. Always update dependencies via Composer and test in a staging environment.
- How can I reduce API costs when regenerating documentation frequently?
- Enable caching with `DOCUDOODLE_CACHE_ENABLED=true` to skip unchanged files. Set `DOCUDOODLE_CACHE_EXPIRY` (in minutes) to control how often files are rechecked. For large projects, use `--batch-size=50` to process files in smaller chunks and avoid hitting token limits.
- Are there alternatives to Docudoodle for Laravel, and what makes it unique?
- Alternatives include PhpDocumentor (static analysis) or custom scripts using PHP-Parser + AI APIs. Docudoodle stands out for its Laravel-native integration (Artisan commands, caching, and config), AI provider flexibility (OpenAI, Claude, Ollama), and legacy-code focus (orphan cleanup, skip logic). It’s ideal for teams needing quick, AI-driven docs without manual effort.