Skip to content

Add wizard for docker-compose creation - #324

Merged
ildyria merged 8 commits into
masterfrom
wizard
Aug 4, 2026
Merged

Add wizard for docker-compose creation#324
ildyria merged 8 commits into
masterfrom
wizard

Conversation

@ildyria

@ildyria ildyria commented Aug 2, 2026

Copy link
Copy Markdown
Member

Summary by CodeRabbit

  • New Features
    • Added a Docker Compose Wizard to configure Lychee deployments, generate files and secrets, validate settings, and download or copy results.
    • Added support for databases, OAuth providers, optional services, workers, Traefik, Docker secrets, and offline template fallback.
    • Homepage statistics now update dynamically for downloads, stars, forks, and Docker pulls.
    • Added optional disclaimers to statistics and a Docker Compose Wizard navigation link.
  • Documentation
    • Added comprehensive example environment settings and Docker Compose deployment configuration.
  • Style
    • Added an extra-small text size option and updated Tailwind configuration.

@coderabbitai

coderabbitai Bot commented Aug 2, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Warning

Review limit reached

@ildyria, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 47 minutes

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 992c54af-398f-414e-a0c7-ffa54e2d1455

📥 Commits

Reviewing files that changed from the base of the PR and between 9973401 and 024ad06.

⛔ Files ignored due to path filters (1)
  • package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (20)
  • package.json
  • src/content/docs/docs/features/facial-recognition.md
  • src/data/wizard/docker-compose.yaml
  • src/data/wizard/env.example
  • src/pages/wizard.astro
  • src/utils/repoStats.ts
  • src/utils/wizard/answers.ts
  • src/utils/wizard/composeEdit.ts
  • src/utils/wizard/dbCompose.ts
  • src/utils/wizard/dockerSecrets.ts
  • src/utils/wizard/envFileCompose.ts
  • src/utils/wizard/generator.ts
  • src/utils/wizard/geoDecodingCompose.ts
  • src/utils/wizard/nsfwCompose.ts
  • src/utils/wizard/oauthProviders.ts
  • src/utils/wizard/templates.ts
  • src/utils/wizard/traefikCompose.ts
  • src/utils/wizard/validate.ts
  • src/utils/wizard/volumesCompose.ts
  • src/utils/wizard/workerCompose.ts
📝 Walkthrough

Walkthrough

The change adds an eight-step Docker Compose Wizard with template generation, service configuration, secret handling, validation, previews, and downloads. It also adds dynamic repository statistics and updates site navigation, statistics, styling, dependencies, and cache exclusions.

Changes

Docker Compose Wizard

Layer / File(s) Summary
Wizard inputs and bundled templates
src/utils/wizard/answers.ts, src/utils/wizard/oauthProviders.ts, src/data/wizard/*
Adds typed wizard state, OAuth provider metadata, a full Compose template, and a comprehensive environment template.
Compose transformation utilities
src/utils/wizard/composeEdit.ts, src/utils/wizard/*Compose.ts, src/utils/wizard/dockerSecrets.ts, src/utils/wizard/envFileCompose.ts
Adds Compose edits for databases, services, secrets, environment files, NSFW classification, and Traefik.
Answer and template generation
src/utils/wizard/generator.ts, src/utils/wizard/secrets.ts, src/utils/wizard/templates.ts
Generates Compose, environment, secret files, warnings, and metadata from wizard answers.
Interactive wizard interface
src/pages/wizard.astro, src/assets/styles/tailwind.css, package.json
Adds the form, eight-step navigation, dynamic service cards, validation, Prism highlighting, output tabs, previews, copy controls, downloads, and responsive styling.

Site statistics and presentation

Layer / File(s) Summary
Repository statistics retrieval
src/utils/repoStats.ts, .gitignore
Fetches GitHub and Docker Hub statistics, formats counts, caches successful results for 24 hours, and ignores build-time cache data.
Homepage and statistic display
src/components/widgets/Stats.astro, src/types.d.ts, src/pages/index.astro, src/pages/support.astro
Adds optional statistic disclaimers, renders dynamic homepage values, adds the wizard CTA, and changes the support statistic to 380K.
Navigation and presentation support
src/navigation.js
Adds the wizard footer link and updates support, security, and social-link formatting.

Estimated code review effort: 5 (Critical) | ~120 minutes

Poem

I’m a rabbit with Compose in my hat,
Eight little steps make a config like that.
Secrets hop safely, previews glow bright,
Stats gather stars through the cache of the night.
“Copy!” says the wizard—then off we all go!

🚥 Pre-merge checks | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 50.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@socket-security

socket-security Bot commented Aug 2, 2026

Copy link
Copy Markdown

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Addednpm/​@​types/​prismjs@​1.26.61001007381100

View full report

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 10

🧹 Nitpick comments (2)
src/pages/index.astro (1)

87-87: 🚀 Performance & Scalability | 🔵 Trivial | ⚡ Quick win

Use the common image component for the hero image.

Replace the direct astro:assets image with ~/components/common/Image.astro. Set loading="eager" and fetchpriority="high" because this image is above the fold.

As per coding guidelines, use src/components/common/Image.astro for all image handling and use eager, high-priority loading for hero images.

Source: Coding guidelines

src/pages/wizard.astro (1)

1147-1153: 🔒 Security & Privacy | 🔵 Trivial | ⚡ Quick win

Build the warning list with textContent instead of innerHTML.

All current warning strings are internal constants, so there is no injection today. The pattern is still fragile. If a future warning embeds an answer value, such as the application URL or a Traefik network name, that value reaches innerHTML unescaped.

renderInstructions already applies escapeHtml. Apply the same discipline here.

🛡️ Proposed fix
       if (result.warnings.length > 0) {
         warningsBox.classList.remove('hidden');
-        warningsBox.innerHTML = result.warnings.map((w) => `<p>${w}</p>`).join('');
+        warningsBox.replaceChildren(
+          ...result.warnings.map((w) => {
+            const p = document.createElement('p');
+            p.textContent = w;
+            return p;
+          })
+        );
       } else {
         warningsBox.classList.add('hidden');
-        warningsBox.innerHTML = '';
+        warningsBox.replaceChildren();
       }

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 488c0c29-edd6-4998-aa31-73f39685ad3d

📥 Commits

Reviewing files that changed from the base of the PR and between f480a94 and 9973401.

⛔ Files ignored due to path filters (1)
  • package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (27)
  • .gitignore
  • package.json
  • src/assets/styles/tailwind.css
  • src/components/widgets/Stats.astro
  • src/data/wizard/docker-compose.yaml
  • src/data/wizard/env.example
  • src/navigation.js
  • src/pages/index.astro
  • src/pages/support.astro
  • src/pages/wizard.astro
  • src/types.d.ts
  • src/utils/repoStats.ts
  • src/utils/wizard/answers.ts
  • src/utils/wizard/composeEdit.ts
  • src/utils/wizard/dbCompose.ts
  • src/utils/wizard/dockerSecrets.ts
  • src/utils/wizard/envFileCompose.ts
  • src/utils/wizard/generator.ts
  • src/utils/wizard/nsfwService.ts
  • src/utils/wizard/oauthProviders.ts
  • src/utils/wizard/phpMyAdminCompose.ts
  • src/utils/wizard/secrets.ts
  • src/utils/wizard/templates.ts
  • src/utils/wizard/traefikCompose.ts
  • src/utils/wizard/validate.ts
  • src/utils/wizard/workerCompose.ts
  • tailwind.config.cjs
💤 Files with no reviewable changes (1)
  • tailwind.config.cjs

Comment thread src/pages/wizard.astro Outdated
Comment thread src/pages/wizard.astro
Comment thread src/pages/wizard.astro Outdated
Comment thread src/utils/repoStats.ts Outdated
Comment thread src/utils/wizard/composeEdit.ts
Comment thread src/utils/wizard/envFileCompose.ts
Comment thread src/utils/wizard/nsfwService.ts Outdated
Comment thread src/utils/wizard/nsfwService.ts Outdated
Comment thread src/utils/wizard/templates.ts
Comment thread src/utils/wizard/validate.ts
@ildyria
ildyria merged commit d6f0b68 into master Aug 4, 2026
4 checks passed
@ildyria
ildyria deleted the wizard branch August 4, 2026 12:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant