You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
npx degit https://github.com/sw-yx/swyxkit
export GH_TOKEN=your_gh_token_here # Can be skipped if just trying out this repo casually
npm install
npm run start # Launches site locally at http://localhost:5173/ and histoire at http://localhost:6006/
You should be able to deploy this project straight to Netlify as is, just like this project is. This project recently switched to use sveltejs/adapter-auto (Oct 2022: currently pinned to v72 because of a Netlify issue), so you should also be able to deploy to Vercel and Cloudflare, but this is not regularly tested (please report/help fix issues if you find them)!
However, to have new posts show up, you will need to personalize the siteConfig (see next step) - take note of APPROVED_POSTERS_GH_USERNAME in particular (this is an allowlist of people who can post to the blog by opening a GitHub issue, otherwise any rando can blog and that's not good).
# These are just untested, suggested commands, use your discretion to hook it up or deploy wherever
git init
git add .
git commit -m "initial commit"
gh repo create # Make a new public GitHub repo and name it whatever
git push origin master
ntl init # Use the Netlify cli to deploy, assuming you already installed it and logged in. You can also use `ntl deploy`
Step 1: Personalization Configuration
As you become ready to seriously adopt this, remember to configure /lib/siteConfig.js - just some hardcoded vars I want you to remember to configure.
exportconstSITE_URL='https://swyxkit.netlify.app';exportconstAPPROVED_POSTERS_GH_USERNAME=['sw-yx'];// IMPORTANT: change this to at least your GitHub username, or add others if you wantexportconstGH_USER_REPO='sw-yx/swyxkit';// Used for pulling GitHub issues and offering commentsexportconstREPO_URL='https://github.com/'+GH_USER_REPO;exportconstSITE_TITLE='SwyxKit';exportconstSITE_DESCRIPTION="swyx's default SvelteKit + Tailwind starter";exportconstDEFAULT_OG_IMAGE='https://user-images.githubusercontent.com/6764957/147861359-3ad9438f-41d1-47c8-aa05-95c7d18497f0.png';exportconstMY_TWITTER_HANDLE='swyx';exportconstMY_YOUTUBE='https://youtube.com/swyxTV';exportconstPOST_CATEGORIES=['Blog'];// Other categories you can consider adding: Talks, Tutorials, Snippets, Podcasts, Notes...exportconstGH_PUBLISHED_TAGS=['Published'];// List of allowed issue labels, only the issues having at least one of these labels will show on the blog.
Of course, you should then go page by page (there aren't that many) and customize some of the other hardcoded items, for example:
The Newsletter component needs to be wired up to a newsletter service (I like Buttondown, TinyLetter, and Revue)
(If migrating content from previous blog) setup Netlify redirects at /static/_redirects
This blog uses GitHub as a CMS - if you are doing any serious development at all, you should give the GH_TOKEN env variable to raise rate limit from 60 to 5000.
Open a new GitHub issue on your new repo, write some title and markdown in the body, add a Published tag (or any one of the label set in GH_PUBLISHED_TAGS), and then save.
You should see it refetched in local dev or in the deployed site pretty quickly. You can configure SvelteKit to build each blog page up front, or on demand. Up to you to trade off speed and flexibility.
If your Published post (any post with one of the labels set in GH_PUBLISHED_TAGS) doesn't show up, you may have forgotten to set APPROVED_POSTERS_GH_USERNAME to your GitHub username in siteConfig.
If all of this is annoying feel free to rip out the GitHub Issues CMS wiring and do your own content pipeline, I'm not your boss. MDSveX is already set up in this repo if you prefer not having a disconnected content toolchain from your codebase (which is fine, I just like having it in a different place for a better editing experience). See also my blogpost on the benefits of using GitHub Issues as CMS.
Optimizations to try after you are done deploying
Customize your JSON+LD for FAQ pages, organization, or products. There is a schema for blogposts, but it is so dead simple that SwyxKit does not include it.
SwyxKit
A lightly opinionated starter for SvelteKit blogs:
Feel free to rip out these opinions as you see fit of course.
Live Demo
See https://swyxkit.netlify.app/ (see Deploy Logs)
Users in the wild
Key Features and Design Considerations:
/rss.xml
), and Sitemap (atsitemap.xml
) with cachings-maxage
(notmax-age
) to 1 minute to cache (consider making it 1-7 days on older posts)netlify.toml
full
,feature
, andpopout
bleed layout classes on desktop -feature
enabled by default for code samples! (details and code samples here)/myblog
instead of/blog/myblog
- why)GH_TOKEN
)npm run story:dev
to view it on http://localhost:6006/. This is also included in yournpm start
command.This is a partial implementation of https://www.swyx.io/the-surprisingly-high-table-stakes-of-modern-blogs/
Setup
Step 0: Clone project (and deploy)
You should be able to deploy this project straight to Netlify as is, just like this project is. This project recently switched to use
sveltejs/adapter-auto
(Oct 2022: currently pinned to v72 because of a Netlify issue), so you should also be able to deploy to Vercel and Cloudflare, but this is not regularly tested (please report/help fix issues if you find them)!However, to have new posts show up, you will need to personalize the
siteConfig
(see next step) - take note ofAPPROVED_POSTERS_GH_USERNAME
in particular (this is an allowlist of people who can post to the blog by opening a GitHub issue, otherwise any rando can blog and that's not good).Step 1: Personalization Configuration
As you become ready to seriously adopt this, remember to configure
/lib/siteConfig.js
- just some hardcoded vars I want you to remember to configure.Of course, you should then go page by page (there aren't that many) and customize some of the other hardcoded items, for example:
Newsletter
component needs to be wired up to a newsletter service (I like Buttondown, TinyLetter, and Revue)Cache-Control
policy and SvelteKitmaxage
/static
)/static/_redirects
This blog uses GitHub as a CMS - if you are doing any serious development at all, you should give the
GH_TOKEN
env variable to raise rate limit from 60 to 5000.https://docs.github.com/en/rest/overview/resources-in-the-rest-api#rate-limiting
When deploying, don't forget to set it in Netlify: https://app.netlify.com/sites/YOUR_SITE/settings/deploys#environment
Step 2: Make your first post
Open a new GitHub issue on your new repo, write some title and markdown in the body, add a
Published
tag (or any one of the label set inGH_PUBLISHED_TAGS
), and then save.You should see it refetched in local dev or in the deployed site pretty quickly. You can configure SvelteKit to build each blog page up front, or on demand. Up to you to trade off speed and flexibility.
If your
Published
post (any post with one of the labels set inGH_PUBLISHED_TAGS
) doesn't show up, you may have forgotten to setAPPROVED_POSTERS_GH_USERNAME
to your GitHub username insiteConfig
.If all of this is annoying feel free to rip out the GitHub Issues CMS wiring and do your own content pipeline, I'm not your boss. MDSveX is already set up in this repo if you prefer not having a disconnected content toolchain from your codebase (which is fine, I just like having it in a different place for a better editing experience). See also my blogpost on the benefits of using GitHub Issues as CMS.
Optimizations to try after you are done deploying
robots.txt
and hope it works)npx playwright install
and then you can runnpm run test
Further Reading
Acknowledgements
[slug].svelte
has precedence overrss.xml.js
)Todos
hydrate=false
some pages)The text was updated successfully, but these errors were encountered: