Qwind is a free and open-source template to make your website using Qwik + Tailwind CSS. Ready to start a new project and designed taking into account best practices.
- ✅ Integration with Tailwind CSS supporting Dark mode.
- ✅ Production-ready scores in Lighthouse and PageSpeed Insights reports.
- ✅ Image optimization and Font optimization.
Table of Contents
This project is using Qwik with QwikCity. QwikCity is just a extra set of tools on top of Qwik to make it easier to build a full site, including directory-based routing, layouts, and more.
Inside Qwind template, you'll see the following folders and files:
/
├── adaptors/
| └── static/
| └── vite.config.ts
├── public/
│ ├── favicon.svg
│ ├── manifest.json
│ └── robots.txt
├── src/
│ ├── assets/
│ │ ├── images/
| | └── styles/
| | └── global.css
│ ├── components/
│ │ ├── atoms/
│ │ ├── core/
│ │ ├── icons/
| | └── widgets/
| | ├── Header.astro
| | ├── Footer.astro
| | └── ...
│ ├── content/
│ | ├── blog/
│ | | ├── post-slug-1.md
│ | | ├── post-slug-2.md
│ | | └── ...
│ ├── routes/
│ | ├── blog/
│ | ├── index.astro
| | ├── layout.tsx
| | â””-- service-worker.ts
│ ├── config.mjs
│ ├── entry.dev.tsx
│ ├── entry.preview.tsx
│ ├── entry.ssr.tsx
│ └── root.tsx
├── package.json
└── ...
-
src/routes
: Provides the directory based routing, which can include a hierarchy oflayout.tsx
layout files, and anindex.tsx
file as the page. Additionally,index.ts
files are endpoints. Please see the routing docs for more info. -
src/components
: Recommended directory for components. -
public
: Any static assets, like images, can be placed in the public directory. Please see the Vite public directory for more info.
Seasoned qwik expert? Delete this file. Update
config.mjs
and contents. Have fun!
All commands are run from the root of the project, from a terminal:
Command | Action |
---|---|
npm install |
Installs dependencies |
npm run dev |
Starts local dev server at 127.0.0.1:5173/ |
npm run build |
Build your production site to ./dist/ |
npm run preview |
Preview your build locally, before deploying |
npm run fmt |
Format codes with Prettier |
npm run lint |
Run Eslint |
npm run qwik ... |
Run CLI commands like qwik add , qwik build |
Basic configuration file: ./src/config.mjs
export const SITE = {
name: "Example",
origin: "https://example.com",
basePathname: "/", // Change this if you need to deploy to Github Pages, for example
trailingSlash: true, // Generate permalinks with or without "/" at the end
};
You can create an optimized production build with:
npm run build
Now, your website is ready to be deployed. All generated files are located at
dist
folder, which you can deploy the folder to any hosting service you
prefer.
Clone this repository on own GitHub account and deploy to Netlify:
Clone this repository on own GitHub account and deploy to Vercel:
- Create utilities to generate permalinks tailored to the domain and base pathname.
- Simplify the way to optimize images.
- Create component to make SEO simpler and more intuitive.
- Create configurable blog with categories, tags and authors using MDX.
- Add more frequently used pages (Portfolio, Services, Contact, Docs ...).
- Find or create a library to have more icon sources available.
- Refactor some code that doesn't follow Qwik conventions yet.
- Achieve perfect 100% Google Page Speed score.
- Insert complex javascript example widget on home page to demonstrate Qwik features.
- Create small illustrative admin backend.
If you have any idea, suggestions or find any bugs, feel free to open a discussion, an issue or create a pull request. That would be very useful for all of us and we would be happy to listen and take action.
Initially created by onWidget and maintained by a community of contributors.
Qwind is licensed under the MIT license — see the LICENSE file for details.
This starter site is configured to deploy to Netlify Edge Functions, which means it will be rendered at an edge location near to your users.
The Netlify CLI can be used to preview a production build locally. To do so: First build your site, then to start a local server, run:
- Install Netlify CLI globally
npm i -g netlify-cli
. - Build your site with both ssr and static
npm run build
. - Start a local server with
npm run serve
. In this project,npm run serve
uses thenetlify dev
command to spin up a server that can handle Netlify's Edge Functions locally. - Visit http://localhost:8888/ to check out your site.
Netlify Edge Functions declarations can be configured to run on specific URL patterns. Each edge function declaration associates one site path pattern with one function to execute on requests that match the path. A single request can execute a chain of edge functions from a series of declarations. A single edge function can be associated with multiple paths across various declarations.
This is useful to determine if a page response should be Server-Side Rendered (SSR) or
if the response should use a static-site generated (SSG) index.html
file instead.
By default, the Netlify Edge adaptor will generate a .netlify/edge-middleware/manifest.json
file, which is used by the Netlify deployment to determine which paths should, and should not, use edge functions.
To override the generated manifest, you can add a declaration to the netlify.toml
using the [[edge_functions]]
config. For example:
[[edge_functions]]
path = "/admin"
function = "auth"
You can deploy your site to Netlify either via a Git provider integration or through the Netlify CLI. This starter site includes a netlify.toml
file to configure your build for deployment.
Once your site has been pushed to your Git provider, you can either link it in the Netlify UI or use the CLI. To link your site to a Git provider from the Netlify CLI, run the command:
netlify link
This sets up continuous deployment for your site's repo. Whenever you push new commits to your repo, Netlify starts the build process..
If you wish to deploy from the CLI rather than using Git, you can use the command:
netlify deploy --build
You must use the --build
flag whenever you deploy. This ensures that the Edge Functions that this starter site relies on are generated and available when you deploy your site.
Add --prod
flag to deploy to production.