├── src ├── node_modules │ ├── components │ │ ├── List.svelte │ │ ├── Box.svelte │ │ ├── ClearTagsButton.svelte │ │ ├── Tag.svelte │ │ ├── TwoColumns.svelte │ │ ├── Resource.svelte │ │ ├── Event.svelte │ │ └── Head.svelte │ ├── resources │ │ ├── helpers.js │ │ └── transformResourceData.js │ └── location │ │ └── queryParams.js ├── client.js ├── routes │ ├── _error.svelte │ ├── recipes.svelte │ ├── data │ │ └── [ssgData].json.js │ ├── _layout.svelte │ └── index.svelte └── template.html ├── .gitignore ├── whos-using-sveltekit ├── WhosUsingSvelteKit.js ├── README.md └── WhosUsingSvelteKit.svelte ├── static ├── favicon.png ├── images │ ├── og_image_code.jpg │ ├── og_image_events.jpg │ ├── og_image_index.jpg │ ├── og_image_recipes.jpg │ ├── og_image_resources.jpg │ ├── og_image_showcase.jpg │ ├── sapper-mstile-150.png │ ├── uploads │ │ └── v3--1280x720.jpg │ ├── sapper-apple-touch-icon.png │ ├── sapper-android-chrome-192.png │ └── sapper-android-chrome-512.png ├── fonts │ ├── roboto │ │ ├── roboto-latin-400.woff2 │ │ ├── roboto-latin-500.woff2 │ │ ├── roboto-latin-400italic.woff2 │ │ └── roboto-latin-500italic.woff2 │ ├── overpass │ │ ├── overpass-latin-100.woff2 │ │ ├── overpass-latin-300.woff2 │ │ ├── overpass-latin-400.woff2 │ │ ├── overpass-latin-600.woff2 │ │ └── overpass-latin-700.woff2 │ └── fira-mono │ │ └── fira-mono-latin-400.woff2 ├── icons │ ├── download.svg │ ├── dropdown.svg │ ├── chevron.svg │ ├── check.svg │ ├── arrow-right.svg │ ├── link.svg │ ├── save.svg │ ├── edit.svg │ ├── fork.svg │ ├── collapse.svg │ ├── expand.svg │ ├── flip.svg │ └── loading.svg ├── manifest.json ├── admin │ ├── index.html │ └── config.yml ├── svelte-logotype.svg ├── svelte-logo-mask.svg ├── sapper-logotype.svg ├── svelte-logo.svg ├── sapper-logo.svg ├── sapper-logo-outline.svg ├── svelte-logo-outline.svg ├── prism.css ├── svelte-logo-horizontal.svg ├── svelte-logo-vertical.svg ├── sapper-logo-horizontal.svg └── sapper-logo-vertical.svg ├── whos-using-svelte ├── organisations │ ├── pr.png │ ├── ergon.png │ ├── ethi.png │ ├── gap.png │ ├── luigi.png │ ├── noppo.png │ ├── ofof.png │ ├── alogus.png │ ├── bekchy.png │ ├── dextra.png │ ├── factry.png │ ├── jacoux.png │ ├── jingmnt.png │ ├── jolojo.png │ ├── mustlab.png │ ├── onbench.png │ ├── softmus.png │ ├── sucuri.png │ ├── 1password.png │ ├── TurgenSec.png │ ├── alextomas.png │ ├── blockvigil.png │ ├── cloudedots.png │ ├── dbnomics.jpg │ ├── dbnomics.webp │ ├── devjobs-at.png │ ├── enablerr.png │ ├── entriwise.png │ ├── healthtree.png │ ├── mentorcv.png │ ├── parthpatel.jpg │ ├── phonerefer.png │ ├── sel_home.png │ ├── smartnews.png │ ├── steembeem.png │ ├── techtacion.png │ ├── fibre-tiger.png │ ├── from-now-on.png │ ├── gearid-logo.png │ ├── cliniciannexus.png │ ├── red-label-logo.png │ ├── tradie-training.png │ ├── ct-logo-text-black.png │ ├── swissdev-javascript-jobs.png │ ├── buydotstar.svg │ ├── frontend_bastards.svg │ ├── elderguide.svg │ ├── ibm.svg │ ├── paperform.svg │ ├── socialist-party.svg │ ├── deck.svg │ ├── beyonk.svg │ ├── dhtmlx_logo.svg │ ├── cdon.svg │ ├── philips.svg │ ├── aedge.svg │ ├── entur.svg │ ├── advnz.svg │ ├── zeoagency.svg │ ├── nesta.svg │ ├── oberonspace.svg │ ├── rakuten.svg │ ├── koj.svg │ ├── emakina-cee.svg │ ├── gojek.svg │ ├── stone.svg │ ├── gieson.svg │ ├── anoram.svg │ ├── laybuy.svg │ ├── filestar.svg │ ├── bluehive.svg │ ├── drywa.svg │ ├── filevine.svg │ ├── rewe-digital-logo.svg │ ├── budibase.svg │ ├── panascais.svg │ ├── thunderdome.svg │ ├── phellowseven.svg │ ├── 9kawin.svg │ ├── tproger.svg │ ├── zevvle.svg │ ├── mailru.svg │ ├── metrovias.svg │ ├── pankod.svg │ ├── sqltribe.svg │ ├── pure_interactive.svg │ ├── alaskaairlines.svg │ ├── grainger.svg │ ├── datawrapper.svg │ ├── jdlt.svg │ ├── in1.svg │ ├── itslearning.svg │ ├── razorpay.svg │ ├── convincely.svg │ ├── omniawrite.svg │ ├── appditto.svg │ └── ogma.svg ├── README.md └── WhosUsingSvelte.svelte ├── data └── old-events │ └── README.md ├── README.md ├── .editorconfig ├── .github ├── ISSUE_TEMPLATE │ └── new-svelte-community-event.md └── workflows │ └── daily.yml ├── netlify.toml ├── package.json ├── scripts ├── sortRepositories.js ├── updateNpmStats.js ├── updateGithubStats.js └── updateGitlabStats.js ├── LICENSE └── ssg.config.js /src/node_modules/components/List.svelte: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /node_modules 2 | __sapper__ 3 | .backup 4 | .netlify 5 | .env -------------------------------------------------------------------------------- /whos-using-sveltekit/WhosUsingSvelteKit.js: -------------------------------------------------------------------------------- 1 | export const companies = [ 2 | 3 | ] -------------------------------------------------------------------------------- /static/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/static/favicon.png -------------------------------------------------------------------------------- /static/images/og_image_code.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/static/images/og_image_code.jpg -------------------------------------------------------------------------------- /static/images/og_image_events.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/static/images/og_image_events.jpg -------------------------------------------------------------------------------- /static/images/og_image_index.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/static/images/og_image_index.jpg -------------------------------------------------------------------------------- /static/images/og_image_recipes.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/static/images/og_image_recipes.jpg -------------------------------------------------------------------------------- /static/images/og_image_resources.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/static/images/og_image_resources.jpg -------------------------------------------------------------------------------- /static/images/og_image_showcase.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/static/images/og_image_showcase.jpg -------------------------------------------------------------------------------- /static/images/sapper-mstile-150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/static/images/sapper-mstile-150.png -------------------------------------------------------------------------------- /static/images/uploads/v3--1280x720.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/static/images/uploads/v3--1280x720.jpg -------------------------------------------------------------------------------- /whos-using-svelte/organisations/pr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/whos-using-svelte/organisations/pr.png -------------------------------------------------------------------------------- /static/images/sapper-apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/static/images/sapper-apple-touch-icon.png -------------------------------------------------------------------------------- /whos-using-svelte/organisations/ergon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/whos-using-svelte/organisations/ergon.png -------------------------------------------------------------------------------- /whos-using-svelte/organisations/ethi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/whos-using-svelte/organisations/ethi.png -------------------------------------------------------------------------------- /whos-using-svelte/organisations/gap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/whos-using-svelte/organisations/gap.png -------------------------------------------------------------------------------- /whos-using-svelte/organisations/luigi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/whos-using-svelte/organisations/luigi.png -------------------------------------------------------------------------------- /whos-using-svelte/organisations/noppo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/whos-using-svelte/organisations/noppo.png -------------------------------------------------------------------------------- /whos-using-svelte/organisations/ofof.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/whos-using-svelte/organisations/ofof.png -------------------------------------------------------------------------------- /static/fonts/roboto/roboto-latin-400.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/static/fonts/roboto/roboto-latin-400.woff2 -------------------------------------------------------------------------------- /static/fonts/roboto/roboto-latin-500.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/static/fonts/roboto/roboto-latin-500.woff2 -------------------------------------------------------------------------------- /static/images/sapper-android-chrome-192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/static/images/sapper-android-chrome-192.png -------------------------------------------------------------------------------- /static/images/sapper-android-chrome-512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/static/images/sapper-android-chrome-512.png -------------------------------------------------------------------------------- /whos-using-svelte/organisations/alogus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/whos-using-svelte/organisations/alogus.png -------------------------------------------------------------------------------- /whos-using-svelte/organisations/bekchy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/whos-using-svelte/organisations/bekchy.png -------------------------------------------------------------------------------- /whos-using-svelte/organisations/dextra.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/whos-using-svelte/organisations/dextra.png -------------------------------------------------------------------------------- /whos-using-svelte/organisations/factry.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/whos-using-svelte/organisations/factry.png -------------------------------------------------------------------------------- /whos-using-svelte/organisations/jacoux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/whos-using-svelte/organisations/jacoux.png -------------------------------------------------------------------------------- /whos-using-svelte/organisations/jingmnt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/whos-using-svelte/organisations/jingmnt.png -------------------------------------------------------------------------------- /whos-using-svelte/organisations/jolojo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/whos-using-svelte/organisations/jolojo.png -------------------------------------------------------------------------------- /whos-using-svelte/organisations/mustlab.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/whos-using-svelte/organisations/mustlab.png -------------------------------------------------------------------------------- /whos-using-svelte/organisations/onbench.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/whos-using-svelte/organisations/onbench.png -------------------------------------------------------------------------------- /whos-using-svelte/organisations/softmus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/whos-using-svelte/organisations/softmus.png -------------------------------------------------------------------------------- /whos-using-svelte/organisations/sucuri.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/whos-using-svelte/organisations/sucuri.png -------------------------------------------------------------------------------- /static/fonts/overpass/overpass-latin-100.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/static/fonts/overpass/overpass-latin-100.woff2 -------------------------------------------------------------------------------- /static/fonts/overpass/overpass-latin-300.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/static/fonts/overpass/overpass-latin-300.woff2 -------------------------------------------------------------------------------- /static/fonts/overpass/overpass-latin-400.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/static/fonts/overpass/overpass-latin-400.woff2 -------------------------------------------------------------------------------- /static/fonts/overpass/overpass-latin-600.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/static/fonts/overpass/overpass-latin-600.woff2 -------------------------------------------------------------------------------- /static/fonts/overpass/overpass-latin-700.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/static/fonts/overpass/overpass-latin-700.woff2 -------------------------------------------------------------------------------- /whos-using-svelte/organisations/1password.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/whos-using-svelte/organisations/1password.png -------------------------------------------------------------------------------- /whos-using-svelte/organisations/TurgenSec.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/whos-using-svelte/organisations/TurgenSec.png -------------------------------------------------------------------------------- /whos-using-svelte/organisations/alextomas.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/whos-using-svelte/organisations/alextomas.png -------------------------------------------------------------------------------- /whos-using-svelte/organisations/blockvigil.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/whos-using-svelte/organisations/blockvigil.png -------------------------------------------------------------------------------- /whos-using-svelte/organisations/cloudedots.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/whos-using-svelte/organisations/cloudedots.png -------------------------------------------------------------------------------- /whos-using-svelte/organisations/dbnomics.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/whos-using-svelte/organisations/dbnomics.jpg -------------------------------------------------------------------------------- /whos-using-svelte/organisations/dbnomics.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/whos-using-svelte/organisations/dbnomics.webp -------------------------------------------------------------------------------- /whos-using-svelte/organisations/devjobs-at.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/whos-using-svelte/organisations/devjobs-at.png -------------------------------------------------------------------------------- /whos-using-svelte/organisations/enablerr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/whos-using-svelte/organisations/enablerr.png -------------------------------------------------------------------------------- /whos-using-svelte/organisations/entriwise.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/whos-using-svelte/organisations/entriwise.png -------------------------------------------------------------------------------- /whos-using-svelte/organisations/healthtree.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/whos-using-svelte/organisations/healthtree.png -------------------------------------------------------------------------------- /whos-using-svelte/organisations/mentorcv.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/whos-using-svelte/organisations/mentorcv.png -------------------------------------------------------------------------------- /whos-using-svelte/organisations/parthpatel.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/whos-using-svelte/organisations/parthpatel.jpg -------------------------------------------------------------------------------- /whos-using-svelte/organisations/phonerefer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/whos-using-svelte/organisations/phonerefer.png -------------------------------------------------------------------------------- /whos-using-svelte/organisations/sel_home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/whos-using-svelte/organisations/sel_home.png -------------------------------------------------------------------------------- /whos-using-svelte/organisations/smartnews.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/whos-using-svelte/organisations/smartnews.png -------------------------------------------------------------------------------- /whos-using-svelte/organisations/steembeem.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/whos-using-svelte/organisations/steembeem.png -------------------------------------------------------------------------------- /whos-using-svelte/organisations/techtacion.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/whos-using-svelte/organisations/techtacion.png -------------------------------------------------------------------------------- /static/fonts/fira-mono/fira-mono-latin-400.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/static/fonts/fira-mono/fira-mono-latin-400.woff2 -------------------------------------------------------------------------------- /static/fonts/roboto/roboto-latin-400italic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/static/fonts/roboto/roboto-latin-400italic.woff2 -------------------------------------------------------------------------------- /static/fonts/roboto/roboto-latin-500italic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/static/fonts/roboto/roboto-latin-500italic.woff2 -------------------------------------------------------------------------------- /whos-using-svelte/organisations/fibre-tiger.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/whos-using-svelte/organisations/fibre-tiger.png -------------------------------------------------------------------------------- /whos-using-svelte/organisations/from-now-on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/whos-using-svelte/organisations/from-now-on.png -------------------------------------------------------------------------------- /whos-using-svelte/organisations/gearid-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/whos-using-svelte/organisations/gearid-logo.png -------------------------------------------------------------------------------- /whos-using-svelte/organisations/cliniciannexus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/whos-using-svelte/organisations/cliniciannexus.png -------------------------------------------------------------------------------- /whos-using-svelte/organisations/red-label-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/whos-using-svelte/organisations/red-label-logo.png -------------------------------------------------------------------------------- /whos-using-svelte/organisations/tradie-training.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/whos-using-svelte/organisations/tradie-training.png -------------------------------------------------------------------------------- /data/old-events/README.md: -------------------------------------------------------------------------------- 1 | this events.json is no longer used 2 | 3 | holding off on deleting for now in case we still need some info 4 | 5 | use events.yml instead -------------------------------------------------------------------------------- /whos-using-svelte/organisations/ct-logo-text-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/whos-using-svelte/organisations/ct-logo-text-black.png -------------------------------------------------------------------------------- /whos-using-svelte/organisations/swissdev-javascript-jobs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sveltejs/community-legacy/HEAD/whos-using-svelte/organisations/swissdev-javascript-jobs.png -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Svelte community 2 | 3 | ## New Home 4 | 5 | This repository is no longer utilized. Please see [sveltesociety.dev](https://sveltesociety.dev/) for all things related to the Svelte community 6 | -------------------------------------------------------------------------------- /whos-using-svelte/organisations/buydotstar.svg: -------------------------------------------------------------------------------- 1 | buy.* -------------------------------------------------------------------------------- /static/icons/download.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /static/icons/dropdown.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /static/icons/chevron.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /static/icons/check.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | end_of_line = lf 5 | insert_final_newline = true 6 | indent_style = tab 7 | indent_size = 2 8 | charset = utf-8 9 | trim_trailing_whitespace = true 10 | 11 | [{package.json}] 12 | indent_style = space 13 | indent_size = 2 -------------------------------------------------------------------------------- /src/client.js: -------------------------------------------------------------------------------- 1 | // this file was scaffolded with `ssg eject`. 2 | // Feel free to modify as you would Sapper boilerplate 3 | import * as sapper from '@sapper/app' 4 | import '@sveltejs/site-kit/base.css' 5 | 6 | sapper.start({ 7 | target: document.querySelector('#sapper'), 8 | }) 9 | -------------------------------------------------------------------------------- /static/icons/arrow-right.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /static/icons/link.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /static/icons/save.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/node_modules/components/Box.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 13 | 14 |
15 | 16 |
17 | -------------------------------------------------------------------------------- /static/icons/edit.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /static/icons/fork.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /static/icons/collapse.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /static/icons/expand.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /static/icons/flip.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /static/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "background_color": "#ffffff", 3 | "theme_color": "#159794", 4 | "name": "Sapper", 5 | "short_name": "Sapper", 6 | "display": "minimal-ui", 7 | "start_url": "/", 8 | "icons": [ 9 | { 10 | "src": "images/sapper-android-chrome-192.png", 11 | "sizes": "192x192", 12 | "type": "image/png" 13 | }, 14 | { 15 | "src": "images/sapper-android-chrome-512.png", 16 | "sizes": "512x512", 17 | "type": "image/png" 18 | } 19 | ] 20 | } 21 | -------------------------------------------------------------------------------- /src/routes/_error.svelte: -------------------------------------------------------------------------------- 1 | 5 | 6 | 16 | 17 |
18 |

{status}

19 | 20 |

{error.message}

21 | 22 | {#if process.env.NODE_ENV === 'development'} 23 |
{error.stack}
24 | {/if} 25 |
26 | -------------------------------------------------------------------------------- /static/admin/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Content Manager 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/new-svelte-community-event.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: New Svelte Community Event 3 | about: Publicize a new Meetup or Conference 4 | title: "[Event] New Meetup or Conference" 5 | labels: Event 6 | assignees: sw-yx 7 | 8 | --- 9 | 10 | Hi! I am organizing a new Svelte Meetup. Here are the details: 11 | 12 | City: 13 | Country: 14 | Description: 15 | Event Name: 16 | Organizer contact: 17 | Twitter: 18 | Type: Meetup 19 | Url: 20 | Other relevant details: 21 | -------------------------------------------------------------------------------- /whos-using-svelte/organisations/frontend_bastards.svg: -------------------------------------------------------------------------------- 1 | Frontend Bastards -------------------------------------------------------------------------------- /static/icons/loading.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /netlify.toml: -------------------------------------------------------------------------------- 1 | # this file was scaffolded with `ssg eject`. 2 | # Feel free to modify as you would Sapper boilerplate 3 | 4 | [build] 5 | command = "ssg export" 6 | publish = "__sapper__/export" 7 | # functions = "functions" # optional folder for Netlify functions 8 | 9 | [dev] # https://github.com/netlify/netlify-dev-plugin#project-detection 10 | command = "yarn ssg dev" # Command to start your dev server 11 | port = 3000 # Port that the dev server will be listening on 12 | publish = "static" # Folder with the static content for _redirect file 13 | -------------------------------------------------------------------------------- /src/routes/recipes.svelte: -------------------------------------------------------------------------------- 1 | 9 | 10 | 13 | 14 | 19 | 20 | 23 | 24 |
25 |

TODO: do Recipes page

26 |
27 | -------------------------------------------------------------------------------- /whos-using-svelte/organisations/elderguide.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Slice 1 5 | Created with Sketch. 6 | 7 | 8 | Elder Guide 9 | 10 | 11 | -------------------------------------------------------------------------------- /src/node_modules/components/ClearTagsButton.svelte: -------------------------------------------------------------------------------- 1 | 5 | 6 | 24 | 25 | clear()}>{text} 26 | -------------------------------------------------------------------------------- /whos-using-svelte/organisations/ibm.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/node_modules/components/Tag.svelte: -------------------------------------------------------------------------------- 1 | 6 | 7 | 28 | 29 | toggle(name)}>{name} 30 | -------------------------------------------------------------------------------- /whos-using-svelte/README.md: -------------------------------------------------------------------------------- 1 | ## Add your company logo 2 | 3 | * Fork this repo, and clone your fork 4 | * Create a branch called e.g. `add-myorganisation-logo` 5 | * Make changes to `WhosUsingSvelte.js` file 6 | * Add the logo to the `organisations` directory (preferably SVG) 7 | * Add a new entry 8 | * Create a pull request. Thanks! 9 | 10 | ### JSON format 11 | `href`, `src`, `alt` are required. 12 | 13 | `style` and `picture` are optional. 14 | ```javascript 15 | { 16 | href: "https://your-company.com", 17 | src: "organisations/yourCompanyLogo.svg", 18 | alt: "Your Company logo", 19 | // optional 20 | style: "optional styling", 21 | picture: [ 22 | { 23 | type: "image/webp", 24 | srcset: "organisations/yourCompanyLogo.webp" 25 | }, 26 | ... 27 | ] 28 | } 29 | ``` -------------------------------------------------------------------------------- /src/node_modules/components/TwoColumns.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 33 | 34 |
35 |
36 | 37 |
38 |
39 | 40 |
41 |
-------------------------------------------------------------------------------- /whos-using-sveltekit/README.md: -------------------------------------------------------------------------------- 1 | ## Add your company logo 2 | 3 | * Fork this repo, and clone your fork 4 | * Create a branch called e.g. `add-myorganisation-logo` 5 | * Make changes to `WhosUsingSvelteKit.js` file 6 | * Add the logo to the `organisations` directory (preferably SVG) 7 | * Add a new entry 8 | * Create a pull request. Thanks! 9 | 10 | ### JSON format 11 | `href`, `src`, `alt` are required. 12 | 13 | `style` and `picture` are optional. 14 | ```javascript 15 | { 16 | href: "https://your-company.com", 17 | src: "organisations/yourCompanyLogo.svg", 18 | alt: "Your Company logo", 19 | // optional 20 | style: "optional styling", 21 | picture: [ 22 | { 23 | type: "image/webp", 24 | srcset: "organisations/yourCompanyLogo.webp" 25 | }, 26 | ... 27 | ] 28 | } 29 | ``` -------------------------------------------------------------------------------- /.github/workflows/daily.yml: -------------------------------------------------------------------------------- 1 | # https://github.com/sw-yx/gh-action-data-scraping 2 | on: 3 | schedule: 4 | - cron: '0 8 * * *' # every day at 8am 5 | name: (Daily Cronjob) Update GitHub Stats For all Code repos 6 | jobs: 7 | build: 8 | runs-on: ubuntu-latest 9 | steps: 10 | - uses: actions/checkout@master 11 | - name: Build 12 | run: npm install 13 | - name: Sort 14 | run: npm run sort-repositories 15 | - name: Scrape 16 | run: npm run githubGetAllData 17 | env: 18 | GH_CLIENT_ID: ${{ secrets.GH_CLIENT_ID }} # get this from a github oauth app you set up 19 | GH_CLIENT_SECRET: ${{ secrets.GH_CLIENT_SECRET }} 20 | - uses: mikeal/publish-to-github-action@master 21 | env: 22 | GITHUB_TOKEN: ${{ secrets.SWYX_TOKEN_FOR_COMMITING }} # we used to use GITHUB_TOKEN, but it had permissions issues 23 | -------------------------------------------------------------------------------- /src/routes/data/[ssgData].json.js: -------------------------------------------------------------------------------- 1 | // this file was scaffolded with `ssg eject`. 2 | // Feel free to modify as you would Sapper boilerplate 3 | const { getDataSlice, getIndex } = require('ssg/readConfig') 4 | 5 | export async function get(req, res) { 6 | const { ssgData } = req.params 7 | const splitSlug = ssgData.split('___ssg___') 8 | const key = splitSlug[0] 9 | const uid = splitSlug[1] 10 | const mainIndex = getIndex() 11 | let data 12 | // console.log('getting', key, uid) 13 | if (uid === 'index') { 14 | data = mainIndex[key] 15 | } else { 16 | data = await getDataSlice(key, uid) 17 | } 18 | if (typeof data !== 'undefined') { 19 | res.writeHead(200, { 'Content-Type': 'application/json' }) 20 | res.end(JSON.stringify(data)) 21 | } else { 22 | res.writeHead(404, { 'Content-Type': 'application/json' }) 23 | res.end(JSON.stringify({ message: `Not found` })) 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "community", 3 | "version": "1.0.0", 4 | "main": "index.js", 5 | "repository": "https://github.com/sveltejs/community.git", 6 | "author": "sw-yx ", 7 | "license": "MIT", 8 | "dependencies": { 9 | "@ssgjs/source-yaml": "^0.0.5", 10 | "@sveltejs/site-kit": "^1.1.4", 11 | "dotenv": "^8.1.0", 12 | "fuse.js": "^3.4.5", 13 | "js-yaml": "^3.13.1", 14 | "node-fetch": "^2.6.1", 15 | "ssg": "^0.0.62", 16 | "yaml": "^1.7.1" 17 | }, 18 | "scripts": { 19 | "start": "ssg dev", 20 | "build": "ssg export", 21 | "sort-repositories": "node scripts/sortRepositories.js", 22 | "update-github-stats": "node scripts/updateGithubStats.js", 23 | "update-gitlab-stats": "node scripts/updateGitlabStats.js", 24 | "update-npm-stats": "node scripts/updateNpmStats.js", 25 | "githubGetAllData": "npm run update-npm-stats && npm run update-github-stats && npm run update-gitlab-stats" 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/node_modules/resources/helpers.js: -------------------------------------------------------------------------------- 1 | // For now, this returns resources with any tag overlap. 2 | // `tags` is a `Set` 3 | export const filterResourcesByTags = (resources, tags) => { 4 | if (!tags || !tags.size) return resources; 5 | return resources.filter(resource => { 6 | for (const tag of resource.tags) { 7 | if (tags.has(tag)) return true; 8 | } 9 | return false; 10 | }); 11 | }; 12 | 13 | // https://stackoverflow.com/a/3177838 14 | export function timeSince(date) { 15 | var seconds = Math.floor((new Date() - date) / 1000); 16 | var interval = Math.floor(seconds / 31536000); 17 | if (interval > 1) { 18 | return interval + " years"; 19 | } 20 | interval = Math.floor(seconds / 2592000); 21 | if (interval > 1) { 22 | return interval + " months"; 23 | } 24 | interval = Math.floor(seconds / 86400); 25 | if (interval > 1) { 26 | return interval + " days"; 27 | } 28 | interval = Math.floor(seconds / 3600); 29 | if (interval > 24) { 30 | return "yesterday"; 31 | } 32 | return "today"; 33 | } -------------------------------------------------------------------------------- /scripts/sortRepositories.js: -------------------------------------------------------------------------------- 1 | // Used to sort repositories 2 | require("dotenv").config(); 3 | const fs = require("fs"); 4 | const yaml = require("js-yaml"); 5 | 6 | // edit this to update files 7 | const pathToFileToUpdate = "data/code.yml"; 8 | // end edit this 9 | 10 | async function sortRepositories() { 11 | try { 12 | const resources = yaml.safeLoad( 13 | fs.readFileSync(pathToFileToUpdate, "utf8") 14 | ); 15 | 16 | const sortedResources = await Promise.all( 17 | resources.resources.sort(function (a, b) { 18 | a = a.url.toLowerCase(); 19 | b = b.url.toLowerCase(); 20 | 21 | return a < b ? -1 : a > b ? 1 : 0; 22 | }) 23 | ); 24 | 25 | const finishedYaml = { 26 | ...resources, 27 | resources: sortedResources, 28 | }; 29 | 30 | fs.writeFile(pathToFileToUpdate, yaml.safeDump(finishedYaml), (err) => { 31 | if (err) { 32 | console.log(err); 33 | } 34 | }); 35 | } catch (e) { 36 | console.log(e); 37 | } 38 | } 39 | 40 | sortRepositories(); 41 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright © 2021 Svelte 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /whos-using-svelte/organisations/paperform.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /whos-using-svelte/organisations/socialist-party.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /whos-using-svelte/organisations/deck.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /ssg.config.js: -------------------------------------------------------------------------------- 1 | const fs = require('fs'); 2 | const path = require('path'); 3 | const yaml = require('@ssgjs/source-yaml').default; 4 | 5 | exports.plugins = { 6 | yamlFiles: yaml({ dirPath: 'data' }) 7 | }; 8 | 9 | let eventsData = null; 10 | 11 | exports.createIndex = async (mainIndex = {}) => { 12 | // do expensive initial fetches and cache them in .ssg/data.json 13 | // console.log({ mainIndex: Object.keys(mainIndex.data) }) 14 | mainIndex.events = mainIndex.yamlFiles['data-events-yml'].data.EventsList; 15 | mainIndex.resources = mainIndex.yamlFiles['data-resources-yml'].data; 16 | mainIndex.code = mainIndex.yamlFiles['data-code-yml'].data; 17 | mainIndex.showcase = mainIndex.yamlFiles['data-showcase-yml'].data; 18 | return mainIndex; 19 | }; 20 | 21 | // optional. called repeatedly, can be expensive 22 | exports.getDataSlice = async (key, uid) => { 23 | // we dont really use the key here 24 | if (key === 'events') { 25 | // uid == the event's ID 26 | return eventsData[uid]; 27 | } else { 28 | throw new Error('invalid key ' + key); 29 | } 30 | }; 31 | 32 | // optional lifecycle hook 33 | exports.postExport = async mainIndex => { 34 | // eg for RSS 35 | // console.log('postExport', mainIndex) 36 | }; 37 | -------------------------------------------------------------------------------- /whos-using-svelte/organisations/beyonk.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /whos-using-svelte/organisations/dhtmlx_logo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /whos-using-svelte/organisations/cdon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /whos-using-svelte/organisations/philips.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /static/svelte-logotype.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /whos-using-svelte/organisations/aedge.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /whos-using-svelte/organisations/entur.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/routes/_layout.svelte: -------------------------------------------------------------------------------- 1 | 9 | 10 | 27 | 28 | 29 | 30 | 31 | 48 | 49 |
50 | 51 |
52 | -------------------------------------------------------------------------------- /whos-using-svelte/organisations/advnz.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /static/svelte-logo-mask.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 16 | 17 | -------------------------------------------------------------------------------- /src/template.html: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | %sapper.base% 11 | 20 | 21 | 24 | %sapper.styles% 25 | 26 | 27 | 28 | 30 | %sapper.head% 31 | 32 | 33 | 35 |
%sapper.html%
36 | 37 | 40 | %sapper.scripts% 41 | 42 | 43 | -------------------------------------------------------------------------------- /static/sapper-logotype.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 8 | 9 | 12 | 14 | 16 | 18 | 19 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /whos-using-svelte/organisations/zeoagency.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 9 | 10 | 11 | 14 | 17 | 19 | 20 | 21 | 25 | 26 | -------------------------------------------------------------------------------- /whos-using-svelte/organisations/nesta.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /static/svelte-logo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 9 | 12 | 20 | 21 | -------------------------------------------------------------------------------- /static/sapper-logo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 9 | 12 | 21 | 22 | -------------------------------------------------------------------------------- /static/sapper-logo-outline.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 8 | 11 | 20 | 21 | -------------------------------------------------------------------------------- /static/svelte-logo-outline.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 8 | 11 | 20 | 21 | -------------------------------------------------------------------------------- /whos-using-svelte/organisations/oberonspace.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 7 | 8 | Created by potrace 1.15, written by Peter Selinger 2001-2017 9 | 10 | 12 | 16 | 22 | 27 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /whos-using-svelte/organisations/rakuten.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 25 | -------------------------------------------------------------------------------- /src/node_modules/resources/transformResourceData.js: -------------------------------------------------------------------------------- 1 | // Converts the raw resources data into an expanded form. 2 | // This is expected to be run client-side or by build scripts, 3 | // so the raw untransformed data is what's sent over the wire. 4 | // This keeps the definition concise, the transferred data small, 5 | // and the programming usage simple and consistent. (for example, it sorts tags) 6 | export const transformResourceData = data => { 7 | const resources = data.resources.map(transformResource); 8 | return { 9 | ...data, 10 | resources, 11 | tags: extractTags(resources), 12 | }; 13 | }; 14 | 15 | const transformResource = resource => { 16 | const {name} = resource; 17 | // A resource name in `backticks` signals it's the NPM package name. 18 | const isNpmPackage = name[0] === '`' && name[name.length - 1] === '`'; 19 | const finalName = isNpmPackage ? name.slice(1, -1) : name; 20 | const result = { 21 | ...resource, 22 | name: finalName, 23 | isGitHubRepo: isGitHubRepo(resource), 24 | isNpmPackage, 25 | tags: transformTags(resource), 26 | }; 27 | return result; 28 | }; 29 | 30 | const OFFICIAL_TAG = 'official'; 31 | 32 | const transformTags = resource => { 33 | const tags = new Set(resource.tags); 34 | if (isOfficial(resource)) { // infer if the 'official' tag should be added 35 | tags.add(OFFICIAL_TAG); 36 | } 37 | return Array.from(tags).sort((a, b) => 38 | a === OFFICIAL_TAG ? -1 : b === OFFICIAL_TAG ? 1 : a > b ? 1 : -1, 39 | ); 40 | }; 41 | 42 | const OFFICIAL_URL_MATCHER = /^(https?:\/\/github.com\/sveltejs\/|https?:\/\/(.+\.)*svelte.dev)/; 43 | const isOfficial = resource => OFFICIAL_URL_MATCHER.test(resource.url); 44 | 45 | const GITHUB_URL_MATCHER = /^https?:\/\/github.com\// 46 | const isGitHubRepo = resource => GITHUB_URL_MATCHER.test(resource.url); 47 | 48 | const extractTags = resources => { 49 | const tags = new Set(); 50 | resources.forEach(r => r.tags && r.tags.forEach(t => tags.add(t))); 51 | return Array.from(tags); 52 | }; 53 | -------------------------------------------------------------------------------- /scripts/updateNpmStats.js: -------------------------------------------------------------------------------- 1 | // Fetches and updates the number of monthly npm downloads on each resource. 2 | // api docs: https://github.com/npm/registry/blob/master/docs/download-counts.md 3 | 4 | const fs = require('fs'); 5 | const yaml = require('js-yaml'); 6 | const fetch = require('node-fetch'); 7 | 8 | const filePath = 'data/code.yml'; 9 | const period = 'point/last-month'; 10 | const extractNpmPackage = (resource) => { 11 | const matches = resource.name.match(/^`(.+)`$/); 12 | return matches && matches[1]; 13 | }; 14 | 15 | async function updateDownloads() { 16 | const data = yaml.safeLoad(fs.readFileSync(filePath, 'utf8')); 17 | 18 | const updatedResources = []; 19 | for (const resource of data.resources) { 20 | const npmPackage = extractNpmPackage(resource); 21 | if (!npmPackage) { 22 | updatedResources.push(resource); 23 | continue; 24 | } 25 | 26 | let result = await fetch( 27 | `https://api.npmjs.org/downloads/${period}/${npmPackage}` 28 | ); 29 | result = await result.json(); 30 | 31 | if (result.error) { 32 | if (result.error.includes('not found')) { 33 | console.error( 34 | `npm package "${npmPackage}" not found.` + 35 | ' If the resource is not supposed to be an npm package,' + 36 | ' remove the backticks from its name.' 37 | ); 38 | } else { 39 | throw Error(`npm error: ${JSON.stringify(result)}`); 40 | } 41 | } 42 | 43 | updatedResources.push({ 44 | ...resource, 45 | downloads: result.downloads 46 | }); 47 | console.log(`updated ${npmPackage}`); 48 | } 49 | 50 | const finishedYaml = { 51 | ...data, 52 | resources: updatedResources 53 | }; 54 | 55 | fs.writeFile(filePath, yaml.safeDump(finishedYaml), (err) => { 56 | if (err) { 57 | console.log(err); 58 | } 59 | }); 60 | } 61 | 62 | updateDownloads() 63 | .then(() => console.log('done!')) 64 | .catch((err) => console.error(err)); 65 | -------------------------------------------------------------------------------- /scripts/updateGithubStats.js: -------------------------------------------------------------------------------- 1 | // Used to fetch and update number of stars on each resource. 2 | require('dotenv').config(); 3 | const fs = require('fs'); 4 | const yaml = require('js-yaml'); 5 | const fetch = require('node-fetch'); 6 | 7 | // edit this to update files 8 | const pathToFileToUpdate = 'data/code.yml'; 9 | // end edit this 10 | 11 | function hasGitHubUrl(url) { 12 | return url.includes('github.com'); 13 | } 14 | 15 | async function getStars() { 16 | try { 17 | const resources = yaml.safeLoad( 18 | fs.readFileSync(pathToFileToUpdate, 'utf8') 19 | ); 20 | 21 | const updatedResources = await Promise.all( 22 | resources.resources.map(async (res) => { 23 | if (hasGitHubUrl(res.url)) { 24 | const url = res.url; 25 | const [org, repo] = url.split('/').splice(-2); 26 | 27 | let result = await fetch( 28 | `https://api.github.com/repos/${org}/${repo}?client_id=${process.env.GH_CLIENT_ID}&client_secret=${process.env.GH_CLIENT_SECRET}` 29 | ); 30 | 31 | result = await result.json(); 32 | 33 | if (result.message == 'Not Found') { 34 | return res; 35 | } 36 | if (result.watchers === undefined) { 37 | throw new Error( 38 | 'note to developer - watchers is undefined, you are likely exceeding API rate limit' 39 | ); 40 | } 41 | return { 42 | ...res, 43 | stars: result.watchers, 44 | last_updated: result.updated_at 45 | }; 46 | } else { 47 | return res; 48 | } 49 | }) 50 | ); 51 | 52 | const finishedYaml = { 53 | ...resources, 54 | resources: updatedResources 55 | }; 56 | fs.writeFile(pathToFileToUpdate, yaml.safeDump(finishedYaml), (err) => { 57 | if (err) { 58 | console.log(err); 59 | } 60 | }); 61 | } catch (e) { 62 | console.log(e); 63 | } 64 | } 65 | 66 | getStars(); 67 | -------------------------------------------------------------------------------- /src/routes/index.svelte: -------------------------------------------------------------------------------- 1 | 6 | 7 | 21 | 22 | 27 | 28 | 29 | 30 |

Events

31 |

Svelte meetups and other community events

32 | 33 | learn more 34 |
35 | 36 | 37 |

Tools & Resources

38 |

39 | Editor Tools and Places to learn more about Svelte e.g. newsletters, 40 | blogs, podcasts 41 |

42 | 43 | learn more 44 |
45 | 46 | 47 |

Code

48 |

Code you can use: Boilerplates, Libraries and Components

49 | 50 | learn more 51 |
52 | 53 | 54 |

Site Showcase

55 |

56 | Showcase of sites and other demos built with Svelte (closed and open 57 | source) 58 |

59 | 60 | learn more 61 |
62 | 63 |

Recipes

64 |

Svelte-y recipes for common usecases

65 | 66 | learn more 67 |
68 | 69 |
70 | -------------------------------------------------------------------------------- /whos-using-svelte/organisations/koj.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /whos-using-svelte/organisations/emakina-cee.svg: -------------------------------------------------------------------------------- 1 | emakina-logo-hrz160x36_white -------------------------------------------------------------------------------- /whos-using-svelte/organisations/gojek.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /whos-using-svelte/organisations/stone.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/node_modules/location/queryParams.js: -------------------------------------------------------------------------------- 1 | import {writable} from 'svelte/store'; 2 | 3 | /* 4 | Creates a custom store for managing a set of strings synced to `location.search`. 5 | The code currently only works syncing with a single array value - 6 | multiple query params are not supported yet. 7 | See the TODOs below for more. 8 | */ 9 | export const createQueryParamSet = ( 10 | paramName, 11 | initialItems = extractQueryParamArray(paramName), 12 | ) => { 13 | const {subscribe, set, update} = writable(new Set(initialItems)); 14 | 15 | subscribe(items => { 16 | updateUrl(paramName, items); 17 | }); 18 | 19 | return { 20 | subscribe, 21 | set, 22 | update, 23 | add: item => { 24 | update(items => { 25 | items.add(item); 26 | return items; 27 | }); 28 | }, 29 | remove: item => { 30 | update(items => { 31 | items.delete(item); 32 | return items; 33 | }); 34 | }, 35 | toggle: item => { 36 | update(items => { 37 | if (items.has(item)) { 38 | items.delete(item); 39 | } else { 40 | items.add(item); 41 | } 42 | return items; 43 | }); 44 | }, 45 | clear: () => { 46 | update(items => { 47 | items.clear(); 48 | return items; 49 | }); 50 | }, 51 | }; 52 | }; 53 | 54 | // TODO take params as an arg so it doesn't clobber other params 55 | const updateUrl = (paramName, items) => { 56 | if (typeof window === 'undefined') return; // TODO make this work on the server 57 | 58 | const params = new URLSearchParams(); // TODO see note above - clobbers other params! 59 | items.forEach(item => params.append(paramName, item)); 60 | const paramStr = params.toString(); 61 | const url = paramStr 62 | ? `${window.location.pathname}?${paramStr}` 63 | : window.location.pathname; 64 | window.history.replaceState({}, '', decodeURIComponent(url)); 65 | }; 66 | 67 | const extractQueryParamArray = paramName => { 68 | if (typeof window === 'undefined') return []; // TODO make this work on the server 69 | 70 | const urlParams = new URLSearchParams(window.location.search); 71 | return urlParams.has(paramName) ? urlParams.getAll(paramName) : []; 72 | }; 73 | -------------------------------------------------------------------------------- /src/node_modules/components/Resource.svelte: -------------------------------------------------------------------------------- 1 | 17 | 18 | 46 | 47 |

48 | 49 | {#if resource.isNpmPackage} 50 | {resource.name} 51 | {:else}{resource.name}{/if} 52 | 53 | 54 |

55 | {#if resource.description} 56 |

{resource.description}

57 | {/if} 58 |
59 | {#each resource.tags as tag} 60 | 61 | {/each} 62 | {#if resource.isNpmPackage} 63 | 64 | 65 | npm 66 | 67 | 68 | {/if} 69 |
70 | {#if resource.stars || resource.last_updated} 71 | 79 | {/if} 80 | -------------------------------------------------------------------------------- /scripts/updateGitlabStats.js: -------------------------------------------------------------------------------- 1 | // Used to fetch and update number of stars on each resource. 2 | require('dotenv').config(); 3 | const fs = require('fs'); 4 | const yaml = require('js-yaml'); 5 | const fetch = require('node-fetch'); 6 | 7 | // edit this to update files 8 | const pathToFileToUpdate = 'data/code.yml'; 9 | // end edit this 10 | 11 | function hasGitLabUrl(url) { 12 | return url.includes('gitlab.com'); 13 | } 14 | 15 | const query = /* GraphQL */ ` 16 | query PROJECT_QUERY($fullPath: ID!) { 17 | project(fullPath: $fullPath) { 18 | starCount 19 | lastActivityAt 20 | } 21 | } 22 | ` 23 | async function getStars() { 24 | try { 25 | const resources = yaml.safeLoad( 26 | fs.readFileSync(pathToFileToUpdate, 'utf8') 27 | ); 28 | 29 | const updatedResources = await Promise.all( 30 | resources.resources.map(async (res) => { 31 | if (hasGitLabUrl(res.url)) { 32 | const url = res.url; 33 | const [org, repo] = url.split('/').splice(-2); 34 | const variables = { fullPath: `${org}/${repo}` } 35 | 36 | let result = await fetch(`https://gitlab.com/api/graphql`, { 37 | method: 'post', 38 | body: JSON.stringify({ query, variables }), 39 | headers: { 'Content-Type': 'application/json' } 40 | }); 41 | 42 | result = await result.json(); 43 | 44 | if (result.errors) { 45 | throw new Error(`Failed to update ${fullPath}`, errors) 46 | } 47 | 48 | const { data: { project } } = result; 49 | 50 | if (!project) { // not found 51 | return res; 52 | } 53 | return { 54 | ...res, 55 | stars: project.starCount, 56 | last_updated: project.lastActivityAt 57 | }; 58 | } else { 59 | return res; 60 | } 61 | }) 62 | ); 63 | 64 | const finishedYaml = { 65 | ...resources, 66 | resources: updatedResources 67 | }; 68 | fs.writeFile(pathToFileToUpdate, yaml.safeDump(finishedYaml), (err) => { 69 | if (err) { 70 | console.log(err); 71 | } 72 | }); 73 | } catch (e) { 74 | console.log(e); 75 | } 76 | } 77 | 78 | getStars(); 79 | -------------------------------------------------------------------------------- /whos-using-svelte/organisations/gieson.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /whos-using-sveltekit/WhosUsingSvelteKit.svelte: -------------------------------------------------------------------------------- 1 | 18 | 19 |
20 | {#each sortedCompanies as { href, src, alt, style, picture, span }, index} 21 | {#if index < limitCompanies} 22 | 23 | {#if picture} 24 | 25 | {#each picture as { type, srcset }} 26 | 27 | {/each} 28 | 29 | 30 | {:else} 31 | 32 | {#if span} 33 | {span} 34 | {/if} 35 | {/if} 36 | 37 | {/if} 38 | {/each} 39 | 42 | 48 | + your company? 49 | 50 |
51 | 52 | 85 | -------------------------------------------------------------------------------- /whos-using-svelte/organisations/anoram.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /whos-using-svelte/WhosUsingSvelte.svelte: -------------------------------------------------------------------------------- 1 | 24 | 25 | 60 | 61 |
62 | {#each sortedCompanies as {href, src, alt, style, picture, span}, index} 63 | {#if index < limitCompanies} 64 | 69 | {#if picture} 70 | 71 | {#each picture as {type, srcset}} 72 | 73 | {/each} 74 | 75 | 76 | {:else} 77 | 78 | {#if span} 79 | {span} 80 | {/if} 81 | {/if} 82 | 83 | {/if} 84 | {/each} 85 | 90 | 95 | + your company? 96 | 97 |
98 | -------------------------------------------------------------------------------- /whos-using-svelte/organisations/laybuy.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /src/node_modules/components/Event.svelte: -------------------------------------------------------------------------------- 1 | 5 | 6 | 96 | 97 |
98 |
99 | {#each events as event } 100 |
101 |
102 | 103 |

{event.name}

104 |
105 |
{JSON.stringify(event, null, 2)}
106 |
107 |
108 | {/each} 109 |
110 |
-------------------------------------------------------------------------------- /whos-using-svelte/organisations/filestar.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /whos-using-svelte/organisations/bluehive.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /whos-using-svelte/organisations/drywa.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /static/admin/config.yml: -------------------------------------------------------------------------------- 1 | ## netlify cms config 2 | ## the rest of this is in admin/index.html 3 | backend: 4 | name: git-gateway 5 | branch: master 6 | accept_roles: # accepts all users if left out 7 | - admin 8 | - editor 9 | 10 | publish_mode: editorial_workflow 11 | media_folder: "static/images/uploads" # Media files will be stored in the repo under images/uploads 12 | public_folder: "/images/uploads" 13 | 14 | collections: 15 | - name: Events 16 | label: Events # Used in the UI 17 | files: 18 | - name: EventsFile 19 | label: EventsFile 20 | file: data/events.yml 21 | fields: 22 | - label: Events 23 | name: EventsList 24 | widget: list 25 | fields: 26 | - {label: Event Name, name: eventName, widget: string} 27 | - {label: URL, name: url, widget: string, hint: "Where people can sign up or learn more or contact Organizers e.g. https://foo.bar.com", required: false} 28 | - {label: Country, name: country, widget: string, hint: "Something someone might search, e.g. USA, UK, Sweden, Singapore, Remote"} 29 | - {label: City, name: city, widget: string, hint: "Something someone might search, e.g. NYC, London, Stockholm, Singapore, Remote"} 30 | - label: Type 31 | name: type 32 | widget: select 33 | options: 34 | - {label: "Recurring Meetup", value: "Meetup"} 35 | - {label: "One-off Event", value: "One-off"} 36 | - {label: "Workshop", value: "Workshop"} 37 | - {label: "Conference", value: "Conference"} 38 | - {label: "Misc Event", value: "Misc"} 39 | - {label: Twitter Handle, name: twitter, widget: string, required: false, hint: "Leave off the twitter.com e.g. @SvelteSociety"} 40 | - {label: Specific Date - if applicable, name: date, default: "", widget: datetime, required: false, hint: "We may sort events by date in future. Right now it isn't really enforced, it's up to you to manage if it makes sense."} 41 | - {label: Organizer Contact, name: organizer, widget: text, hint: "your name, email, twitter, any way for people to get in touch", required: false } 42 | - {label: Cover Image", required: false, name: thumbnail, widget: image } 43 | - {label: Short Description, name: desc, widget: string, required: false} 44 | - {label: Full Description, name: description, widget: markdown, required: false, hint: "remember you can use markdown"} -------------------------------------------------------------------------------- /static/prism.css: -------------------------------------------------------------------------------- 1 | /* 2 | ----------------------------------------------- 3 | syntax-highlighting [prism] 4 | ----------------------------------------------- 5 | */ 6 | 7 | /* colors --------------------------------- */ 8 | pre[class*='language-'] { 9 | --background: var(--back-light); 10 | --base: hsl(45, 7%, 45%); 11 | --comment: hsl(210, 25%, 60%); 12 | --keyword: hsl(204, 58%, 45%); 13 | --function: hsl(19, 67%, 45%); 14 | --string: hsl(41, 37%, 45%); 15 | --number: hsl(102, 27%, 50%); 16 | --tags: var(--function); 17 | --important: var(--string); 18 | } 19 | 20 | /* type-base ------------------------------ */ 21 | code[class*='language-'], 22 | pre[class*='language-'] { 23 | background: none; 24 | text-align: left; 25 | white-space: pre; 26 | word-spacing: normal; 27 | word-break: normal; 28 | word-wrap: normal; 29 | font: 300 var(--code-fs)/1.7 var(--font-mono); 30 | color: var(--base); 31 | tab-size: 2; 32 | -moz-tab-size: 2; 33 | -webkit-hyphens: none; 34 | hyphens: none; 35 | } 36 | 37 | /* code-blocks ---------------------------- */ 38 | pre[class*='language-'] { 39 | overflow: auto; 40 | padding: 1.5rem 2rem; 41 | margin: .8rem 0 2.4rem; 42 | /* max-width: var(--code-w); */ 43 | border-radius: var(--border-r); 44 | box-shadow: 1px 1px 1px rgba(68, 68, 68, .12) inset; 45 | } 46 | 47 | :not(pre) > code[class*='language-'], 48 | pre[class*='language-'] { 49 | background: var(--background); 50 | } 51 | 52 | /* tokens --------------------------------- */ 53 | .token.comment, 54 | .token.prolog, 55 | .token.doctype, 56 | .token.cdata { color: var(--comment) } 57 | 58 | .token.punctuation { color: var(--base) } 59 | 60 | .token.property, 61 | .token.tag, 62 | .token.constant, 63 | .token.symbol, 64 | .token.deleted { color: var(--tags) } 65 | 66 | .token.boolean, 67 | .token.number { color: var(--number) } 68 | 69 | .token.selector, 70 | .token.attr-name, 71 | .token.string, 72 | .token.char, 73 | .token.builtin, 74 | .token.inserted { color: var(--string) } 75 | 76 | .token.operator, 77 | .token.entity, 78 | .token.url, 79 | .language-css .token.string, 80 | .style .token.string, 81 | .token.variable { color: var(--base) } 82 | 83 | .token.atrule, 84 | .token.attr-value, 85 | .token.function, 86 | .token.class-name { color: var(--function) } 87 | 88 | .token.keyword { color: var(--keyword) } 89 | 90 | .token.regex, 91 | .token.important { color: var(--important) } 92 | 93 | .token.important, 94 | .token.bold { font-weight: bold } 95 | .token.italic { font-style: italic } 96 | .token.entity { cursor: help } -------------------------------------------------------------------------------- /whos-using-svelte/organisations/filevine.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 8 | 9 | 11 | 12 | 13 | 14 | 15 | 20 | 22 | 25 | 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /whos-using-svelte/organisations/rewe-digital-logo.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /static/svelte-logo-horizontal.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /static/svelte-logo-vertical.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /whos-using-svelte/organisations/budibase.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 9 | 11 | 12 | 14 | 16 | 18 | 20 | 22 | 25 | 28 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /whos-using-svelte/organisations/panascais.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /whos-using-svelte/organisations/thunderdome.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /whos-using-svelte/organisations/phellowseven.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /whos-using-svelte/organisations/9kawin.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 7 | 8 | Created by potrace 1.16, written by Peter Selinger 2001-2019 9 | 10 | 12 | 22 | 24 | 26 | 28 | 32 | 35 | 39 | 43 | 46 | 47 | 48 | -------------------------------------------------------------------------------- /whos-using-svelte/organisations/tproger.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /whos-using-svelte/organisations/zevvle.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /whos-using-svelte/organisations/mailru.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /whos-using-svelte/organisations/metrovias.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /whos-using-svelte/organisations/pankod.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /whos-using-svelte/organisations/sqltribe.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /whos-using-svelte/organisations/pure_interactive.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /static/sapper-logo-horizontal.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 10 | 13 | 21 | 22 | 26 | 28 | 30 | 32 | 33 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /whos-using-svelte/organisations/alaskaairlines.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /static/sapper-logo-vertical.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 10 | 13 | 22 | 23 | 26 | 28 | 30 | 32 | 33 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /src/node_modules/components/Head.svelte: -------------------------------------------------------------------------------- 1 | 58 | 59 | 60 | 61 | {metaData[path].title} 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | -------------------------------------------------------------------------------- /whos-using-svelte/organisations/grainger.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /whos-using-svelte/organisations/datawrapper.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /whos-using-svelte/organisations/jdlt.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /whos-using-svelte/organisations/in1.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /whos-using-svelte/organisations/itslearning.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /whos-using-svelte/organisations/razorpay.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /whos-using-svelte/organisations/convincely.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /whos-using-svelte/organisations/omniawrite.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | OmniaWrite Logo 5 | 6 | 7 | 8 | image/svg+xml 9 | 10 | OmniaWrite Logo 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | OmniaWrite 22 | 23 | 24 | -------------------------------------------------------------------------------- /whos-using-svelte/organisations/appditto.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /whos-using-svelte/organisations/ogma.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | logo-one-color 4 | 5 | 11 | 12 | --------------------------------------------------------------------------------