Skip to content

chore: landing page#24

Merged
aritra1999 merged 20 commits intomainfrom
chore/landing-and-docs
Feb 13, 2026
Merged

chore: landing page#24
aritra1999 merged 20 commits intomainfrom
chore/landing-and-docs

Conversation

@aritra1999
Copy link
Copy Markdown
Owner

Pivoting from a sveltekit application to a smile html approach.

aritra1999 and others added 19 commits February 7, 2026 15:12
Ignore .agents/ directory used by development tools to prevent
committing temporary agent files and state.
Add a modern SvelteKit-based marketing site featuring:

- Hero section with animated background and GitHub stars display
- Feature showcase with numbered list layout
- Interactive documentation tabs (Getting Started, File Format, Variables,
  JSON Viewer, Keyboard Shortcuts)
- Bug report and feature request links
- Glassmorphic floating navbar with minimal logo
- Smooth scroll indicator
- Mobile-responsive design
- shadcn-svelte UI components with custom brutalist styling

The site uses:
- SvelteKit with TypeScript and Svelte 5 runes
- Tailwind CSS v4 for styling
- @sveltejs/adapter-static for GitHub Pages deployment
- Space Grotesk font family for consistent typography
- Lowercase text treatment and refined minimalist aesthetic

All documentation content is embedded in the landing page for easy
discovery and quick reference.
Add automated deployment workflow that builds and deploys the marketing
site to GitHub Pages on every push to main branch.

The workflow:
- Builds the SvelteKit site with static adapter
- Configures base path for GitHub Pages subdirectory
- Uses GitHub Pages artifact upload/deploy actions
- Runs on Node.js 20 with npm caching for faster builds

Deployment will be available at https://aritra1999.github.io/httpyum/
once GitHub Pages is enabled in repository settings.
Move CSS and markup from +page.svelte into dedicated component files
for better organization and maintainability. Each section (Navbar, Hero,
Features, Documentation, Contribute, Footer) is now self-contained with
its own styles.

Changes:
- Create Navbar.svelte with navigation bar styles
- Create Hero.svelte with hero section and animated background
- Create Features.svelte with feature list grid layout
- Create Documentation.svelte with tabs and code blocks
- Create Contribute.svelte with bug report section
- Create Footer.svelte with footer links
- Reduce +page.svelte from ~1360 lines to ~150 lines
- Keep all state management and API calls in +page.svelte
- Preserve all existing functionality and responsive behavior

Benefits:
- Improved code organization and maintainability
- Better separation of concerns
- Easier to locate and modify specific sections
- Styles colocated with their components
Convert all component styles from CSS modules to Tailwind utility classes
for better maintainability and consistency. This reduces the overall CSS
footprint by ~92% while maintaining identical visual appearance.

Changes:
- Replace ~1,270 lines of raw CSS with Tailwind utility classes
- Convert Navbar, Hero, Features, Documentation, Contribute, Footer components
- Retain only essential CSS: button styling and @Keyframes animations
- Use Tailwind responsive modifiers (max-md:, max-[480px]:) for breakpoints
- Keep custom brutalist button styles in Hero component
- Preserve all animations (moveBoxes, bounce, fadeIn)

Benefits:
- Improved maintainability with utility-first approach
- Consistent design tokens from Tailwind config
- Better visibility of styles in markup
- Automatic purging of unused styles in production
- Clearer responsive design patterns
Replace black background with light gray to prevent jarring visual
transition while the demo image loads. The border is now clearly
visible against a neutral background instead of appearing to merge
with a black box.
Replace npm ci with fresh npm install to properly handle Rollup's
optional dependencies. This fixes the MODULE_NOT_FOUND error for
@rollup/rollup-linux-x64-gnu on GitHub Actions runners.

The issue occurs due to npm's handling of optional dependencies
when using npm ci with cached node_modules.
Add prerender configuration and fix base path handling for GitHub Pages
deployment. This resolves the build errors in the CI/CD pipeline.

Changes:
- Add +layout.js with prerender export to enable static generation
- Import and use base path from $app/paths in Navbar component
- Ensures all internal links respect the configured base path

Fixes:
- 'Could not resolve entry module' error
- '404 / does not begin with base' error during prerendering
SvelteKit requires running 'svelte-kit sync' to generate internal
configuration files (.svelte-kit directory) before the build process.
Without this step, Vite cannot resolve the project structure and fails
with 'Could not resolve entry module index.html' error.

Changes:
- Add explicit 'Prepare SvelteKit' step in deploy workflow
- Remove error suppression (|| echo '') from prepare script to ensure
  proper failure visibility in CI

Fixes deployment failure in GitHub Actions where the build was looking
for a non-existent index.html entry point.
Replace npm with Bun in the GitHub Actions deployment workflow to match
the local development environment. The project uses bun.lock for
dependency management, so CI should use the same package manager.

Changes:
- Replace setup-node action with setup-bun action
- Change npm install to bun install (removes unnecessary cleanup)
- Update all npm run commands to bun run commands

Benefits:
- Consistency between local and CI environments
- Faster dependency installation and build times
- Uses correct lockfile (bun.lock instead of package-lock.json)
The deployment was failing because vite build ran before SvelteKit
generated its configuration files, resulting in "Could not resolve
entry module 'index.html'" error. Running prepare and build
sequentially in the same command ensures .svelte-kit directory exists
before the build starts.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Resolved conflicts in .github/workflows/deploy.yml by keeping the
combined prepare+build approach from our branch, which is cleaner
and more reliable than the duplicate prepare steps in main.

Merges commits from main:
- bfc9425 chore: fix github pages deployment action (#22)
- cfa134e chore: fix github pages deployment issue (#21)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
…ment

The deployment was failing with Bun due to "Could not resolve entry module"
errors. Switching to npm provides better stability and compatibility:
- npm ci automatically runs prepare script (svelte-kit sync)
- Uses package-lock.json for deterministic builds
- More mature CI/CD support with built-in caching

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Remove SvelteKit landing page in preparation for a simpler static
HTML site. This eliminates the build step and Node.js dependencies.

Removed:
- SvelteKit app structure (src/, static/)
- Package manifests (package.json, bun.lock)
- Build configuration (svelte.config.js, tsconfig.json)
- UI components (shadcn-svelte)
Replace SvelteKit with a single-file HTML landing page using
Tailwind CDN. Zero build step required - just static files.

Features:
- Responsive design with Tailwind CSS
- Installation tabs (brew/go/binary)
- Feature showcase and documentation sections
- Clean neubrutalist aesthetic
Remove build step since the site is now plain HTML. Deploy directly
from site/ instead of site/build/.

Changes:
- Remove Node.js setup and npm install/build steps
- Merge build and deploy into single job
- Deploy site/ directory directly to GitHub Pages
Add comprehensive deployment documentation covering:
- Automatic deployment via conventional commits
- Manual release process for special cases
- Troubleshooting common issues

VERSION file tracks current release (v0.3.0).
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Feb 13, 2026

📝 Walkthrough

Walkthrough

The PR removes the entire SvelteKit-based site implementation and replaces it with a static HTML landing page. All SvelteKit configurations, components, routes, and utilities are deleted. The deployment workflow is simplified by removing build steps. A deployment guide and version file are added.

Changes

Cohort / File(s) Summary
Deployment & Release
.github/workflows/deploy.yml, DEPLOYMENT.md, VERSION
Simplified deploy workflow by removing build steps (Setup Bun, Install, Prepare SvelteKit, Build); changed artifact upload path from site/build/ to site/. Added comprehensive deployment guide documenting CI/CD pipeline, release methods, troubleshooting, and best practices. Added version file with v0.3.0.
Static Landing Page
site/index.html
New 1022-line static HTML landing page replacing SvelteKit site, featuring responsive layout with navbar, hero section, features grid, tabbed documentation, contribute section, and footer. Includes inline JavaScript for tab switching, clipboard functionality, and GitHub star count fetching.
SvelteKit Configuration & Dependencies
site/svelte.config.js, site/tsconfig.json, site/components.json, site/package.json
Deleted SvelteKit configuration, TypeScript setup, ShadCN-Svelte config, and npm package manifest.
SvelteKit App Structure
site/src/app.d.ts, site/src/app.html, site/.gitignore, site/README.md, site/src/lib/index.ts, site/src/lib/utils.ts
Removed SvelteKit app shell, TypeScript declarations, project documentation, and utility functions/types (cn helper, WithElementRef, etc.). Cleaned up .gitignore patterns for build artifacts and dependencies.
Svelte Components
site/src/lib/components/...svelte, site/src/lib/components/ui/...svelte
Deleted all Svelte components: layout components (Navbar, Hero, Features, Documentation, Contribute, Footer), UI component library (Button, Card, Tabs with all subcomponents), and their barrel exports (index.ts files).
Route Structure
site/src/routes/+page.svelte, site/src/routes/+layout.svelte, site/src/routes/+layout.js, site/src/routes/layout.css
Removed all SvelteKit routes, layout configuration, and global styles including theme tokens and CSS custom properties.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

🚥 Pre-merge checks | ✅ 3 | ❌ 1
❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Merge Conflict Detection ⚠️ Warning ❌ Merge conflicts detected (2 files):

⚔️ .github/workflows/deploy.yml (content)
⚔️ site/.gitignore (content)

These conflicts must be resolved before merging into main.
Resolve conflicts locally and push changes to this branch.
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed The title 'chore: landing page' accurately summarizes the main change: replacing the SvelteKit application with a static HTML landing page and updating deployment infrastructure.
Description check ✅ Passed The description 'Pivoting from a sveltekit application to a smile html approach' is related to the changeset, describing the high-level architectural shift from a SvelteKit framework to static HTML.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch chore/landing-and-docs
⚔️ Resolve merge conflicts (beta)
  • Auto-commit resolved conflicts to branch chore/landing-and-docs
  • Create stacked PR with resolved conflicts
  • Post resolved changes as copyable diffs in a comment

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 and usage tips.

Keep simplified static site deployment (no build step needed).
Discard SvelteKit/Bun build configuration from main branch.
@aritra1999 aritra1999 merged commit f6578b4 into main Feb 13, 2026
2 checks passed
Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 5

🤖 Fix all issues with AI agents
In `@DEPLOYMENT.md`:
- Around line 150-153: Under "### Documentation Not Deployed" update the
troubleshooting bullet that currently reads "Verify SvelteKit build succeeds
locally" to reflect the new static HTML site: replace that line with a note like
"Verify static site files exist in /site and can be served locally (e.g., open
/site/index.html or run a simple static server)". Ensure the heading
"Documentation Not Deployed" and the other bullets remain unchanged.
- Around line 40-42: The multi-line git commit example in DEPLOYMENT.md opens a
double-quote on the first line of the commit message but isn't visually paired,
so update the example to make the quoting explicit and unambiguous—either close
the quote on the final line, switch to single quotes around the commit message,
or present the message in a fenced code block; ensure the example around the git
commit (the lines showing git commit -m "feat: change default timeout to 30s ...
BREAKING CHANGE: ...") displays matching quotes or uses an alternative format so
readers clearly see the full commit string.

In `@site/index.html`:
- Around line 966-977: The click handler can call document.getElementById(tabId)
when tabId is undefined or doesn't match any element, causing a null
dereference; update the handler in the tabButtons.forEach callback to validate
btn.dataset.tab (tabId) is truthy and to retrieve the element into a variable
(e.g., const tabEl = document.getElementById(tabId)), then only call
tabEl.classList.add("active") if tabEl is not null (otherwise skip or log a
warning). Ensure you still remove previous active classes on tabButtons and
tabContents as before, but guard the add of the "active" class on the target
element.
- Around line 1001-1017: The fetchStars function should check response.ok before
calling response.json(); modify fetchStars to verify the HTTP status (use
response.ok) and handle non-2xx cases by logging the error (including
response.status and optionally response.statusText or parsed error body) and
returning early so you don't attempt to read data.stargazers_count for error
responses; keep updating DOM only when response.ok is true and
data.stargazers_count is defined, and ensure errors still fall through to the
existing catch block for network exceptions.
- Around line 717-728: The paragraph contains leftover template-escaping text in
the code element (the sequence shown as {{"{{"}}{{"}}"}}) which will render
literally; locate the <p> block containing the inline <code> element that
currently shows the escaped template and replace that escaped sequence with a
plain mustache pair `{{ }}` so the content displays as intended (look for the
code element with classes "font-mono text-[0.875em] bg-white text-[`#333`] py-0.5
px-1.5 rounded-sm border border-[`#e5e5e5`]" within the paragraph that begins
"Define variables with @ and use with").
🧹 Nitpick comments (2)
site/index.html (2)

89-147: .hero-btn and .btn are nearly identical — consider consolidating.

These two CSS blocks share the same font, weight, text-transform, letter-spacing, border, box-shadow, transition, display, alignment, gap, padding, font-size, cursor, and text-decoration. Only the class names differ. A single base class would eliminate this duplication.


74-74: Pin the Lucide version instead of using @latest.

Using @latest on unpkg means any new release (including breaking changes) can silently break your site. Pin to a specific version for reproducibility and to mitigate supply-chain risk.

Proposed fix
-<script src="https://unpkg.com/lucide@latest/dist/umd/lucide.js"></script>
+<script src="https://unpkg.com/lucide@0.563.0/dist/umd/lucide.js"></script>

Comment thread DEPLOYMENT.md
Comment on lines +40 to +42
git commit -m "feat: change default timeout to 30s

BREAKING CHANGE: Default request timeout changed from 10s to 30s"
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Unclosed quote in the multi-line commit example.

The commit message on line 40 opens with a double-quote but is never closed, which could confuse contributors copying this example.

Proposed fix
-git commit -m "feat: change default timeout to 30s
-
-BREAKING CHANGE: Default request timeout changed from 10s to 30s"
+git commit -m 'feat: change default timeout to 30s
+
+BREAKING CHANGE: Default request timeout changed from 10s to 30s'

Note: Alternatively, use single quotes or escape the inner content. The key issue is the opening " on line 40 isn't visually paired for readers — it looks like a missing closing quote even though the " at end of line 42 closes it. Consider clarifying the formatting.

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
git commit -m "feat: change default timeout to 30s
BREAKING CHANGE: Default request timeout changed from 10s to 30s"
git commit -m 'feat: change default timeout to 30s
BREAKING CHANGE: Default request timeout changed from 10s to 30s'
🤖 Prompt for AI Agents
In `@DEPLOYMENT.md` around lines 40 - 42, The multi-line git commit example in
DEPLOYMENT.md opens a double-quote on the first line of the commit message but
isn't visually paired, so update the example to make the quoting explicit and
unambiguous—either close the quote on the final line, switch to single quotes
around the commit message, or present the message in a fenced code block; ensure
the example around the git commit (the lines showing git commit -m "feat: change
default timeout to 30s ... BREAKING CHANGE: ...") displays matching quotes or
uses an alternative format so readers clearly see the full commit string.

Comment thread DEPLOYMENT.md
Comment on lines +150 to +153
### Documentation Not Deployed
- Check if changes exist in `/site` directory
- Verify SvelteKit build succeeds locally
- Review deploy.yml workflow logs
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Stale SvelteKit reference — SvelteKit was removed in this PR.

Line 152 says "Verify SvelteKit build succeeds locally", but this PR replaces SvelteKit with a static HTML page. Update this troubleshooting item accordingly.

Proposed fix
 ### Documentation Not Deployed
 - Check if changes exist in `/site` directory
-- Verify SvelteKit build succeeds locally
+- Verify the static site files are correct
 - Review deploy.yml workflow logs
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
### Documentation Not Deployed
- Check if changes exist in `/site` directory
- Verify SvelteKit build succeeds locally
- Review deploy.yml workflow logs
### Documentation Not Deployed
- Check if changes exist in `/site` directory
- Verify the static site files are correct
- Review deploy.yml workflow logs
🤖 Prompt for AI Agents
In `@DEPLOYMENT.md` around lines 150 - 153, Under "### Documentation Not Deployed"
update the troubleshooting bullet that currently reads "Verify SvelteKit build
succeeds locally" to reflect the new static HTML site: replace that line with a
note like "Verify static site files exist in /site and can be served locally
(e.g., open /site/index.html or run a simple static server)". Ensure the heading
"Documentation Not Deployed" and the other bullets remain unchanged.

Comment thread site/index.html
Comment on lines +717 to +728
<p class="m-0 mb-4 text-[#666] text-[0.9375rem]">
Define variables with
<code
class="font-mono text-[0.875em] bg-white text-[#333] py-0.5 px-1.5 rounded-sm border border-[#e5e5e5]"
>@</code
>
and use with
<code
class="font-mono text-[0.875em] bg-white text-[#333] py-0.5 px-1.5 rounded-sm border border-[#e5e5e5]"
>{{"{{"}}{{"}}"}}</code
>:
</p>
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

Leftover template escaping — will render incorrectly in static HTML.

{{"{{"}}{{"}}"}} is Svelte/template-engine escaping syntax. In a plain HTML file, this renders literally as garbage text. It should just be {{ }}.

Proposed fix
-							>@</code
-						>
-						and use with
-						<code
-							class="font-mono text-[0.875em] bg-white text-[`#333`] py-0.5 px-1.5 rounded-sm border border-[`#e5e5e5`]"
-							>{{"{{"}}{{"}}"}}</code
+							>@</code
+						>
+						and use with
+						<code
+							class="font-mono text-[0.875em] bg-white text-[`#333`] py-0.5 px-1.5 rounded-sm border border-[`#e5e5e5`]"
+							>{{ }}</code
🤖 Prompt for AI Agents
In `@site/index.html` around lines 717 - 728, The paragraph contains leftover
template-escaping text in the code element (the sequence shown as
{{"{{"}}{{"}}"}}) which will render literally; locate the <p> block containing
the inline <code> element that currently shows the escaped template and replace
that escaped sequence with a plain mustache pair `{{ }}` so the content displays
as intended (look for the code element with classes "font-mono text-[0.875em]
bg-white text-[`#333`] py-0.5 px-1.5 rounded-sm border border-[`#e5e5e5`]" within
the paragraph that begins "Define variables with @ and use with").

Comment thread site/index.html
Comment on lines +966 to +977
tabButtons.forEach((btn) => {
btn.addEventListener("click", () => {
const tabId = btn.dataset.tab;

// Update active states
tabButtons.forEach((b) => b.classList.remove("active"));
tabContents.forEach((c) => c.classList.remove("active"));

btn.classList.add("active");
document.getElementById(tabId).classList.add("active");
});
});
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Potential null dereference if tabId doesn't match an element ID.

document.getElementById(tabId) could return null if a data-tab attribute doesn't match any element ID, which would throw a runtime error.

Proposed fix
  btn.classList.add("active");
- document.getElementById(tabId).classList.add("active");
+ document.getElementById(tabId)?.classList.add("active");
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
tabButtons.forEach((btn) => {
btn.addEventListener("click", () => {
const tabId = btn.dataset.tab;
// Update active states
tabButtons.forEach((b) => b.classList.remove("active"));
tabContents.forEach((c) => c.classList.remove("active"));
btn.classList.add("active");
document.getElementById(tabId).classList.add("active");
});
});
tabButtons.forEach((btn) => {
btn.addEventListener("click", () => {
const tabId = btn.dataset.tab;
// Update active states
tabButtons.forEach((b) => b.classList.remove("active"));
tabContents.forEach((c) => c.classList.remove("active"));
btn.classList.add("active");
document.getElementById(tabId)?.classList.add("active");
});
});
🤖 Prompt for AI Agents
In `@site/index.html` around lines 966 - 977, The click handler can call
document.getElementById(tabId) when tabId is undefined or doesn't match any
element, causing a null dereference; update the handler in the
tabButtons.forEach callback to validate btn.dataset.tab (tabId) is truthy and to
retrieve the element into a variable (e.g., const tabEl =
document.getElementById(tabId)), then only call tabEl.classList.add("active") if
tabEl is not null (otherwise skip or log a warning). Ensure you still remove
previous active classes on tabButtons and tabContents as before, but guard the
add of the "active" class on the target element.

Comment thread site/index.html
Comment on lines +1001 to +1017
async function fetchStars() {
try {
const response = await fetch(
"https://api.github.com/repos/aritra1999/httpyum",
);
const data = await response.json();
if (data.stargazers_count !== undefined) {
document.getElementById("star-count").textContent =
data.stargazers_count.toLocaleString();
document
.getElementById("stars-container")
.classList.remove("hidden");
}
} catch (error) {
console.error("Failed to fetch stars:", error);
}
}
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Missing response.ok check before parsing the GitHub API response.

If the API returns a non-2xx status (e.g., rate limiting with 403), response.json() will still succeed but data.stargazers_count may be undefined or the response may contain an error message. The current code silently swallows this. Consider checking response.ok.

Proposed fix
 async function fetchStars() {
     try {
         const response = await fetch(
             "https://api.github.com/repos/aritra1999/httpyum",
         );
+        if (!response.ok) return;
         const data = await response.json();
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
async function fetchStars() {
try {
const response = await fetch(
"https://api.github.com/repos/aritra1999/httpyum",
);
const data = await response.json();
if (data.stargazers_count !== undefined) {
document.getElementById("star-count").textContent =
data.stargazers_count.toLocaleString();
document
.getElementById("stars-container")
.classList.remove("hidden");
}
} catch (error) {
console.error("Failed to fetch stars:", error);
}
}
async function fetchStars() {
try {
const response = await fetch(
"https://api.github.com/repos/aritra1999/httpyum",
);
if (!response.ok) return;
const data = await response.json();
if (data.stargazers_count !== undefined) {
document.getElementById("star-count").textContent =
data.stargazers_count.toLocaleString();
document
.getElementById("stars-container")
.classList.remove("hidden");
}
} catch (error) {
console.error("Failed to fetch stars:", error);
}
}
🤖 Prompt for AI Agents
In `@site/index.html` around lines 1001 - 1017, The fetchStars function should
check response.ok before calling response.json(); modify fetchStars to verify
the HTTP status (use response.ok) and handle non-2xx cases by logging the error
(including response.status and optionally response.statusText or parsed error
body) and returning early so you don't attempt to read data.stargazers_count for
error responses; keep updating DOM only when response.ok is true and
data.stargazers_count is defined, and ensure errors still fall through to the
existing catch block for network exceptions.

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