The next small thing in web development, powered by Svelte

Related tags

Boilerplates sapper
Overview

sapper

The next small thing in web development, powered by Svelte.

What is Sapper?

Sapper is a framework for building high-performance universal web apps. Read the guide or the introductory blog post to learn more.

SvelteKit

Sapper's successor, SvelteKit, is currently in development. Please see the FAQ for more details.

Get started

Clone the starter project template with degit... When cloning you have to choose between rollup or webpack:

npx degit "sveltejs/sapper-template#rollup" my-app
# or: npx degit "sveltejs/sapper-template#webpack" my-app

...then install dependencies and start the dev server...

cd my-app
npm install
npm run dev

...and navigate to localhost:3000. To build and run in production mode:

npm run build
npm start

Development

Pull requests are encouraged and always welcome. Pick an issue and help us out!

To install and work on Sapper locally:

git clone https://github.com/sveltejs/sapper.git
cd sapper
npm install
npm run dev

Linking to a Live Project

You can make changes locally to Sapper and test it against a local Sapper project. For a quick project that takes almost no setup, use the default sapper-template project. Instruction on setup are found in that project repository.

To link Sapper to your project, from the root of your local Sapper git checkout:

cd sapper
npm link

Then, to link from sapper-template (or any other given project):

cd sapper-template
npm link sapper

You should be good to test changes locally.

Running Tests

npm run test

License

MIT

Comments
  • Write app to `src/node_modules/app`?

    Write app to `src/node_modules/app`?

    Summarising an earlier conversation from Discord for posterity, for when Svelte 3 is done and the focus can return to Sapper.

    A lot of people find it a bit weird (where 'weird' means 'ugly', 'hacky-seeming', 'awkward' or whatever) that you need to import the generated Sapper app from ../__sapper__/client.js and so on. It's especially bad if you need to import (say) goto from a deeply nested file — ../../../../../.

    One solution would be to use aliases in the webpack and Rollup configs. This has a couple of drawbacks:

    • it hides important implementation details, making it harder for someone coming to the project to understand where the app is 'coming from'
    • it adds further complexity to the build configs, increasing maintenance burden (e.g. if we were to add support for Parcel etc)

    An alternative idea would be to write the app to node_modules inside the app's src directory — i.e. src/node_modules/app/client.js and so on:

    // src/client.js
    -import * as sapper from '../__sapper__/client.js';
    +import * as app from 'app';
    
    -sapper.start({
    +app.start({
      target: document.querySelector('#sapper')
    });
    
    // src/server.js
    import sirv from 'sirv';
    import polka from 'polka';
    import compression from 'compression';
    -import * as sapper from '../__sapper__/server.js';
    +import * as app from 'app';
    
    const { PORT, NODE_ENV } = process.env;
    const dev = NODE_ENV === 'development';
    
    polka() // You can also use Express
      .use(
        compression({ threshold: 0 }),
        sirv('static', { dev }),
    -    sapper.middleware()
    +    app.middleware()
      )
      .listen(PORT, err => {
        if (err) console.log('error', err);
      });
    

    (You'll note I've imported app instead of app/client.js and app/server.js — I'm wondering if it's possible to have a single module and rely on tree-shaking, or if that would slow down the build too much.)

    To me this feels like all upside:

    • it's very easy to type, and reinforces the idea that 'app' is a singleton that is bespokely generated for you
    • everybody pretty much intuitively understands the node_modules resolution algorithm, so it wouldn't be surprising behaviour
    • it's visible — you can see where your app is coming from, and can read the generated source code in the app folder to understand how everything works (e.g. what the route manifest looks like)
    • node_modules is already gitignored, so it's unobtrusive

    A few people are a bit sceptical of the idea, and have raised points such as:

    • maybe ../../../../__sapper__/client.js isn't so bad
    • it's weird to put generated code in a node_modules directory
    • it's weird to put a node_modules directory in src
    • maybe app is the wrong name (what if I wanted to use https://www.npmjs.com/package/app in my Sapper app?!)
    • dammit Rich, we only just changed it from sapper/runtime.js and ./manifest/client.js. stop breaking our apps you feckless idiot

    It has to be src/node_modules and not node_modules, since npm and yarn are likely to periodically nuke generated code in node_modules. I'd argue that's preferable anyway, for the visibility reason stated above.

    What does everyone think?

    opened by Rich-Harris 57
  • TypeScript support updates (Sapper + Svelte 3)

    TypeScript support updates (Sapper + Svelte 3)

    Hi,

    Just thought I'd share my experience with Sapper + TypeScript.

    I have a monorepo with various "packages", and one of them is a Sapper app that I've mostly converted to TS with the help of some repos and issues from here. Thank you all for your efforts! I plan to share this monorepo boilerplate once it's more presentable than it is now :)

    Only a few things stand out for me, that I'll summarize here for others who may want to adopt it too:

    • the new mjs generated modules into ./src/node_modules/@sapper are impossible to import with TS for the moment, see https://github.com/Microsoft/TypeScript/issues/18442, TLDR: As far as I can tell at the moment it is not certain how Node will proceed with mjs therefore TS is still unsure how to proceed too. Workrounds involve other dependencies that i'd like to avoid.
    • sapper build/dev config expects entry points in .js so you have to keep client.js, server.js and service-worker.js, it would be nice if we could configure this, or sapper accept one or the other.
    • you need to configure rollup/webback to include a typescript plugin, e.g. rollup-plugin-typescript2
    • you can't use <script lang="ts"> on *.svelte components, for the moment, mostly because of point 1 here.

    So far so good, and I'm really enjoying the sapper/svelte world, IMO is much more readable/understandable overall than most other frameworks out there.

    Thanks,

    opened by pnmcosta 55
  • Snowpack (or ESM) for dev mode

    Snowpack (or ESM) for dev mode

    Is your feature request related to a problem? Please describe. Dev mode is slow to load changes. Snowpack has proven to be a great development mode alternative.

    Describe the solution you'd like It would be great to get ESM ~Snowpack v2~ in the dev mode for Sapper.

    Describe alternatives you've considered NA

    How important is this feature to you? Deciding between Sapper or rolling https://github.com/pikapkg/create-snowpack-app with the svelte plugin is hard when the developer experience is so much nicer.

    OOTB features vs DX + hand-rolling is a hard call to make.

    IE:

    • Sapper vs
    • Snowpack + Routify + other

    Additional context NA

    bundling 
    opened by jthegedus 39
  • SPA mode

    SPA mode

    A few people have asked if Sapper has a mode where it doesn't server-render components, but instead just handles the routing and serves a blank page for the client-side app to fill in.

    I don't think it makes sense in many situations, but it could make sense in some. We could have something like this:

    .use(sapper({
      manifest,
      ssr: false
    }))
    

    It would also be useful perhaps to have a hybrid mode that SSRs as much as it can but also creates a blank 200.html page (or whatever) to cover pages that can't be rendered ahead of time (some services like Surge allow you to use 200.html to mean 'any route that doesn't have its own page already).

    proposal 
    opened by Rich-Harris 39
  • Global SASS/SCSS/Less/Stylus support

    Global SASS/SCSS/Less/Stylus support

    I'm trying to convert my Nuxt application to Sapper and I've come across a bit of a roadblock.

    In my Nuxt application, I have a layout file which simply includes bulma's SASS version:

    <style lang="scss">
      @import '~bulma/scss/_all';
    </style>
    

    This is possible, and allows the styles to be used across the application, because Vue doesn't scope styles by default.

    I'll caveat this by saying that I prefer scoped styles by default, but I feel like there needs to be a way to unscope the styles when necessary. Because of the way Sapper/Svelte handles styles, and scopes them, including bulma in a similar way to the above means that Svelte will scope all the styles, and then remove nearly all of them as it sees them as "unused".

    This means I end up with an application with no styles!

    Right now this is a roadblock to my conversion, as I can't see a workaround (other than some horrendous external compilation with gulp or similar and then including the compiled css in my head - which I really want to avoid as it takes from the speed of Sapper's development, as well as adding complexity where it really shouldn't be.

    Any tips? Or is there a feature / capability missing from Sapper here?

    opened by antony 35
  • A good authentication story

    A good authentication story

    Very broad issue title I know. Auth is a little tricky in the context of a universal framework. Currently I will often do this sort of thing:

    // app/client.js
    import * as auth from '../shared/auth.js';
    import { init } from 'sapper/runtime.js';
    import { routes } from './manifest/client.js';
    
    auth.init().then(() => {
      init(document.querySelector('#sapper'), routes);
    });
    
    // shared/auth.js
    export let user;
    
    export function init() {
      return fetch(`/auth/user`, { credentials: 'include' })
        .then(r => r.json())
        .then(data => {
          user = data.user;
        });
    }
    
    // ...
    
    <!-- routes/somepage.html -->
    
    <script>
      import * as auth from '../shared/auth.js';
    
      export default {
        preload({ params, session }) {
          const user = session ? session.user : auth.user;
          if (!user) return this.redirect(302, '/login');
    
          return fetch(...).then(...);
        }
      };
    </script>
    

    This works, but it's not ideal. In particular, it doesn't work well with Store, because (since a single store instance backs every server-rendered page) you can't have a user object in your store, so you have to pass it around as a prop which is tedious (and problematic when it comes to logging out).

    It would be nice to have a good story around this that felt idiomatic, worked on client and server without letting you accidentally do insecure things, and worked well with Store. Open to ideas!

    opened by Rich-Harris 35
  • rollup-plugin-postcss not working

    rollup-plugin-postcss not working

    I can't seem to get postcss to work properly and extract my css like it does in pure svelte. With css extract option on it generates:

    export default undefined;
    export default undefined;
    /* sourceMappingURL=./chunk.e3537e20.css.map */
    

    but with it off, it generates:

    var css = "a.link.svelte-131civd{color:#d3d3d3}";
    export default css;
    import styleInject from 'C:/Users/admin/Code/domainhax/node_modules/style-inject/dist/style-inject.es.js';
    styleInject(css);
    var css = "main.svelte-1joomdn{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto;width:64em}input.svelte-1joomdn{width:100%}#description.svelte-1joomdn>div.svelte-1joomdn{width:50%;padding:0;float:left}header.svelte-1joomdn{text-align:center}p.svelte-1joomdn{margin-top:0}a.svelte-1joomdn{color:#959595}h1.svelte-1joomdn a.svelte-1joomdn{color:#dfdfdf}";
    export default css;
    import styleInject from 'C:/Users/admin/Code/domainhax/node_modules/style-inject/dist/style-inject.es.js';
    styleInject(css);
    /* sourceMappingURL=./chunk.e3537e20.css.map */
    

    In normal svelte when I do import './global.css', it generates a inlined bit of js with it off, and the processed file with it on, and does the same for svelte's generated CSS. I can't figure out what's going wrong, but I would like my css minified and prefixed.

    bundling 
    opened by JoelEllis 34
  • Deploying a site breaks it for users who have the site open in their browsers

    Deploying a site breaks it for users who have the site open in their browsers

    I noticed that deploying a Sapper site changes the hashes of all the bundles, so that any navigation, dynamic importing etc. breaks for any currently active users of that site.

    The experience for the user is that... basically the site just stops working. He/she clicks a link and nothing happens, except for the title changing to 500 and this being printed at the bottom of the page (where it's highly unlikely to get noticed):

    500
    Loading chunk 3 failed. (error: https://sapper.app/client/0502fa20d1df95e93ff7/tag_$tag.3.js)
    

    In the console, we get:

    Failed to load resource: the server responded with a status of 404 (Not Found)
    

    I get why this is happening, but in my opinion it could be handled a bit more gracefully. Imagine if your site has 10 000 active users simultaneously? I guess one could do rolling deployments so that the old instances are sticky until all the users are dropped off, but that's a tad difficult for most of us.

    If it's of any help, GatsbyJS bumped into the same problem here: https://github.com/gatsbyjs/gatsby/issues/4779

    bug help wanted 
    opened by arggh 32
  • Add support for nested routes

    Add support for nested routes

    This one came up in Gitter today and seems worth investigating. It could be really helpful for Sapper to support nested routing, potentially with a special slot, <sapper:child /> or similar.

    Sapper currently handles routes by walking the routes directory and finding the matching path (/settings/profile.html or /settings/profile/index.html for example). In cases where you want a shared Settings layout that changes content, you currently need to create something like a SettingsLayout.html component and use that to wrap content in /settings/profile.html. i.e. The child route needs to know all parent components and include them in it's layout.

    This gets a little tricky with multiple levels of nested routes. Ember, Angular, and React Router have slightly different solutions for nesting routes - worth investigating how they solved it and what makes the most sense for Svelte/Sapper

    opened by tony-sull 29
  • Use dotenv for environment vars?

    Use dotenv for environment vars?

    (Just putting this somewhere so I remember.)

    This is one type of best practice. For example, I use this as a config.js file, which I can then load anywhere.

    const dotenv = require('dotenv-extended')
    const dotenvExpand = require('dotenv-expand')
    const dotenvParseVariables = require('dotenv-parse-variables')
    let config = dotenv.load({ silent: false })
    config = dotenvExpand(config)
    config = dotenvParseVariables(config)
    config.self = true
    module.exports = config
    

    It's the equivalent of doing process.env.WHATEVS, but it helps manage enviro vars both local and in production (such as a PORT).

    proposal 
    opened by arxpoetica 27
  • Project tagline

    Project tagline

    Hi there,

    I’ve stumbled on this interesting project several times. As a total stranger to this project I’d like to comment on the tagline that puts me off: “Military-grade progressive web apps, powered by Svelte”. I don’t think it’s clever or appropriate to use “military-grade” prominently in a JavaScript project description.

    I understand it’s a tongue-in-cheek metaphor for robust, high-quality, well-tested, fault-tolerant etc. and goes well with the project name, a type of soldier. Robust JavaScript is something I advocate for as well. I’m happy to find a project advertising robustness as a main goal. Still, “military-grade” is martial language that is typically used to describe weapons, explosives and related technical equipment that is used to kill people efficiently.

    Unsurprisingly, JavaScript is used by the military-industrial complex as well. Large companies from this sector are releasing and sponsoring open-source JavaScript projects. This fact is often neglected or dismissed by the JavaScript community. “Military-grade” JavaScript is a sad reality instead of innocuous irony. That’s why such a project description (and to a lesser extent, the project name) leaves a bad aftertaste even if the project in itself has nothing to do with the military and surveillance industry.

    Please consider changing the tagline.

    opened by molily 26
  • Bump ansi-regex from 3.0.0 to 3.0.1

    Bump ansi-regex from 3.0.0 to 3.0.1

    Bumps ansi-regex from 3.0.0 to 3.0.1.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump path-parse from 1.0.6 to 1.0.7

    Bump path-parse from 1.0.6 to 1.0.7

    Bumps path-parse from 1.0.6 to 1.0.7.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump node-fetch from 2.6.1 to 2.6.7

    Bump node-fetch from 2.6.1 to 2.6.7

    Bumps node-fetch from 2.6.1 to 2.6.7.

    Release notes

    Sourced from node-fetch's releases.

    v2.6.7

    Security patch release

    Recommended to upgrade, to not leak sensitive cookie and authentication header information to 3th party host while a redirect occurred

    What's Changed

    Full Changelog: https://github.com/node-fetch/node-fetch/compare/v2.6.6...v2.6.7

    v2.6.6

    What's Changed

    Full Changelog: https://github.com/node-fetch/node-fetch/compare/v2.6.5...v2.6.6

    v2.6.2

    fixed main path in package.json

    Commits
    • 1ef4b56 backport of #1449 (#1453)
    • 8fe5c4e 2.x: Specify encoding as an optional peer dependency in package.json (#1310)
    • f56b0c6 fix(URL): prefer built in URL version when available and fallback to whatwg (...
    • b5417ae fix: import whatwg-url in a way compatible with ESM Node (#1303)
    • 18193c5 fix v2.6.3 that did not sending query params (#1301)
    • ace7536 fix: properly encode url with unicode characters (#1291)
    • 152214c Fix(package.json): Corrected main file path in package.json (#1274)
    • See full diff in compare view
    Maintainer changes

    This version was pushed to npm by endless, a new releaser for node-fetch since your current version.


    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • sapper.scripts includes error messages which may involve security issues

    sapper.scripts includes error messages which may involve security issues

    In production mode, we can see error messages following;

    Screen Shot 2022-04-07 at 10 30 18

    How to visible SAPPER error messages from sapper.scripts ? Is it possible ?

    Thanks your advices.

    opened by onuroo 0
  • Bump marked from 0.7.0 to 4.0.10 in /site

    Bump marked from 0.7.0 to 4.0.10 in /site

    Bumps marked from 0.7.0 to 4.0.10.

    Release notes

    Sourced from marked's releases.

    v4.0.10

    4.0.10 (2022-01-13)

    Bug Fixes

    • security: fix redos vulnerabilities (8f80657)

    v4.0.9

    4.0.9 (2022-01-06)

    Bug Fixes

    v4.0.8

    4.0.8 (2021-12-19)

    Bug Fixes

    v4.0.7

    4.0.7 (2021-12-09)

    Bug Fixes

    v4.0.6

    4.0.6 (2021-12-02)

    Bug Fixes

    v4.0.5

    4.0.5 (2021-11-25)

    Bug Fixes

    • table after paragraph without blank line (#2298) (5714212)

    v4.0.4

    4.0.4 (2021-11-19)

    ... (truncated)

    Commits
    • ae01170 chore(release): 4.0.10 [skip ci]
    • fceda57 🗜️ build [skip ci]
    • 8f80657 fix(security): fix redos vulnerabilities
    • c4a3ccd Merge pull request from GHSA-rrrm-qjm4-v8hf
    • d7212a6 chore(deps-dev): Bump jasmine from 4.0.0 to 4.0.1 (#2352)
    • 5a84db5 chore(deps-dev): Bump rollup from 2.62.0 to 2.63.0 (#2350)
    • 2bc67a5 chore(deps-dev): Bump markdown-it from 12.3.0 to 12.3.2 (#2351)
    • 98996b8 chore(deps-dev): Bump @​babel/preset-env from 7.16.5 to 7.16.7 (#2353)
    • ebc2c95 chore(deps-dev): Bump highlight.js from 11.3.1 to 11.4.0 (#2354)
    • e5171a9 chore(release): 4.0.9 [skip ci]
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
Owner
Svelte
Cybernetically enhanced web apps
Svelte
A template repository for Deno, GraphQL, and Svelte projects

Svelte is an innovative approach to frontend software development, the component model, and reactivity features creates simplistic approach to some hard problems. Svelte runs on the front end and is known as a Single Page Application.

hyper 15 Dec 20, 2022
A Svelte template built with newsroom CMS's in mind

A Svelte starter template built with newsroom CMS's in mind. Dynamically create inline graphics based on the placement of figure elements with defined data-chart attributes.

Sawyer Click 15 Dec 30, 2022
⚡️ Set up Next.js Progressive Web App with `npx create-next-pwa`

⚡️ create-next-pwa A cross-platform Node.js based CLI tool that creates Progressive Web App (PWA) with Next.js. You can also integrate tailwind with t

Saad Irfan ⚡️ 66 Nov 20, 2022
Node Express Template (NET.ts) - a small template project which help you to speed up the process of building RESTful API

Node Express Template (NET.ts) - a small template project which help you to speed up the process of building RESTful API

Przemek Nowicki 26 Jan 4, 2023
The official, opinionated, batteries-included toolset for efficient Redux development

Redux Toolkit The official, opinionated, batteries-included toolset for efficient Redux development (Formerly known as "Redux Starter Kit") Installati

Redux 9k Jan 8, 2023
No BS webpack development tool for Shopify themes (online store 2.0)

Shopify Theme Development Tool Development tool for Shopify to create themes for Online Store 2.0. Shopify Theme Development Tool Getting Started Comm

null 6 Oct 14, 2021
Postgres Node.js Express TypeScript application boilerplate with best practices for API development.

Node TypeScript Boilerplate Postgres Developer Ready: A comprehensive template. Works out of the box for most Node.js projects. This project is intend

Chirag Mehta 9 Aug 28, 2022
A boilerplate for REST API Development with Node.js, Express, and MongoDB using TypesScript

node-mongo-boilerplate A simple boilerplate for NODEJS, EXPRESS and MONGODB REST API development . Quick Start Make sure you have node.js v14 + npm v8

Asamoah Michael 5 Oct 16, 2022
Localtunnel module for Nuxt to allow remote/external access to your Nuxt development server.

Nuxt Localtunnel A Nuxt module for automatically running localtunnnel to externally expose your development instance of Nuxt to the outside world. All

null 14 Sep 7, 2022
A full-stack dApp starter built on Ethereum (Solidity) with Next.js (React).

A full stack dApp starter built on Ethereum (Solidity) with Next.js (React) This repo contains boilerplate code for interacting with a simple smart co

Tom Hirst 272 Dec 30, 2022
Next Boilerplate with TypeScript, Redux Toolkit and Styled-Component.. For now

This is a Next.js project bootstrapped with create-next-app. Getting Started First, run the development server: npm run dev # or yarn dev Open http://

Ibrahim Yaacob 2 Feb 17, 2022
A Next + TypeScript Starter. Featuring Styled-Components, ESLint, Prettier, Axe a11y monitoring, Fathom analytics, sitemap generation, and more!

Next + TypeScript Starter A Next + TypeScript Starter by Justin Juno. Featuring Styled-Components, ESLint, Prettier, Axe a11y monitoring, Fathom analy

Justin Juno 11 Dec 13, 2022
Next Boilerplate was created to be a template for starting NextJS projects with pre-configured settings like Linters, Test Setup, Storybook and Commit Hooks.

Next Boilerplate was created to be a template for starting NextJS projects with pre-configured settings like Linters, Test Setup, Storybook and Commit Hooks.

Claudio Orlandi 4 Feb 22, 2022
A highly opinionated and complete starter for Next.js projects ready to production

The aim for this starter is to give you a starting point with everything ready to work and launch to production. Web Vitals with 100% by default. Folder structure ready. Tooling ready. SEO ready. SSR ready.

Fukuro Studio 28 Nov 27, 2022
🚀 A well-structured boilerplate and Starter for Next.js 12+, Tailwind CSS 3, Redux, Redux Thunk, and TypeScript

?? A well-structured boilerplate and Starter for Next.js 12+, Tailwind CSS 3, Redux, Redux Thunk, and TypeScript ⚡️ Made with developer experience first ESLint + Prettier + Lint-Staged + VSCode setup

null 4 Nov 28, 2022
NextJS BoilerPlate for Alpha version(Next.js + Styled Components + Customization + Theme)

This is a Next.js project bootstrapped with create-next-app. Getting Started First, run the development server: npm run dev # or yarn dev Open http://

Super Ninja 8 Oct 24, 2022
A default Next.js project with boilerplate packages and configurations. Includes Tailwind, TypeScript (strict), ESLint, Prettier, and Husky.

Yet another Next.js project template This template includes a set of our favorite dev tools scaffolded into a Next.js project. Tools include: TypeScri

Joey McKenzie 16 Dec 27, 2022
This is a minimal Next-Js boilerplate for TypeScript and Tailwind.

This is a Next.js project bootstrapped with create-next-app. Getting Started First, run the development server: npm run dev # or yarn dev Open http://

Ademola Onasoga 9 Sep 15, 2022
🏝 Zero config islands for your next project

?? Preact Island Starter Bootstraps a Preact Island project with no configuration. Features ?? Multi entry point builds by default. Make all the islan

Marcus Wood 20 Nov 21, 2022