Borrissol deploys to Netlify via git push auto-deploy. Every merge toDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/constanza101/borrissol/llms.txt
Use this file to discover all available pages before exploring further.
main triggers a production build; the result is published at borrissol.com. The site is a hybrid: all public-facing pages are statically prerendered at build time (zero Netlify Function invocations for ordinary visitors), while the Keystatic admin routes at /keystatic use SSR via a Netlify Function. This architecture keeps operating costs low while still supporting a dynamic CMS.
Build configuration
The entire Netlify build is controlled bynetlify.toml at the repository root.
netlify.toml
| Setting | Value | Reason |
|---|---|---|
command | npm run build | Runs astro build, which prebuilds all static pages and bundles the SSR functions. |
publish | dist | The directory Astro writes its output to; Netlify deploys its contents. |
NODE_VERSION | 22.12.0 | Pinned to match the engines field in package.json (>=22.12.0). Astro 6 requires Node 22+. Netlify defaults to an older LTS without this pin. |
@astrojs/netlify adapter
The netlify() adapter (package @astrojs/netlify ^7.0.12) is declared in astro.config.mjs. It handles two responsibilities:
- Static output — All pages that do not require server-side rendering are emitted as pre-built HTML/CSS/JS into
dist/. These are served directly from Netlify’s global CDN with no function invocation. - SSR functions — The Keystatic admin routes (
/keystatic/*) require a live server to authenticate requests and call the GitHub API. The adapter wraps these in a single Netlify Function automatically.
Public visitors never invoke an SSR function. The homepage, workshop pages, gallery, blog listing, and individual blog posts are all statically prerendered. Only Belén (the workshop owner) accessing
/keystatic in production triggers function compute.Bot-trap redirects
netlify.toml contains a block of [[redirects]] rules that return HTTP 404 at the Netlify edge layer for paths that only automated scanners and bots probe. Because these rules fire before any Astro code runs, a matched request never reaches the SSR function — saving both compute time and credits.
netlify.toml
Why these rules matter
Without them, every WordPress scanner probe that hits the site would invoke the Astro SSR function (1–3 seconds of compute per request) before returning a 404. On a shared hosting plan with a credit budget, continuous bot traffic can exhaust the monthly allowance within hours of a traffic spike. The edge-layer 404 approach costs essentially nothing.Netlify credit model
Netlify’s paid plans are denominated in “credits” that cover both build compute and bandwidth. The table below shows the three relevant tiers.| Plan | Credits/month | ~Deploys/month | ~Bandwidth |
|---|---|---|---|
| Free | 300 | ~20 | ~15 GB |
| Personal ($9/mo) ← current | 1,000 | ~65 | ~50 GB |
| Pro ($20/mo) | 3,000 | ~200 | ~150 GB |
- 1 production deploy ≈ 15 credits (build time + CDN invalidation)
- 1 GB of bandwidth served ≈ 20 credits
- Netlify Function invocations (SSR) consume credits from the same pool, charged by compute time
Cost control rules
Following these practices keeps the site comfortably within the Personal plan budget. Batch changes. Never push one commit per small fix. Accumulate related changes and push them together. One push = one deploy = ~15 credits. Use[skip ci] in the commit message for documentation, comment, or README-only changes that do not affect the built site. Netlify skips the build entirely when it sees [skip ci].
Keystatic keystatic/* branches do not trigger deploy previews. Deploy previews are disabled for these branches to avoid burning 15 credits on every draft save by the content author.
Public visitors load static pages. No SSR function is invoked by ordinary site traffic. Only the /keystatic admin routes consume function compute, and only when the site owner is actively using the CMS.
Monitor the Netlify dashboard. Check Team → Usage regularly. If bandwidth spikes (e.g. a blog post goes viral), investigate the source before the monthly credit pool is exhausted.
Deployment workflow
Verify the build locally
Before pushing, run a full production build locally to catch any errors:Astro will output the built site to
dist/. Optionally preview it with:Push to main
npm run build, and deploys the dist/ directory to the CDN. The process typically takes 60–120 seconds.Check deploy status
Open the Netlify dashboard and navigate to the Deploys tab for the Borrissol site. Confirm the deploy status shows Published. If it shows Failed, click the deploy entry to read the build log.
Deploy previews
Deploy previews are currently disabled for all branches to conserve credits. If you need to preview a feature branch before merging:Enable temporarily
In the Netlify dashboard go to Site configuration → Build & deploy → Deploy contexts. Set Deploy previews to Any pull request.
Open the PR
Push your branch and open a Pull Request on GitHub. Netlify will post a preview URL in the PR comments.
Deploy previews for
keystatic/* branches should never be re-enabled. Keystatic creates one branch per entry save; enabling previews for those branches would cost ~15 credits per auto-save.