Quasar Weather App


This project is a rewrite of Danny Connell's "Quasar V1: Weather App for Mobile, Desktop & Web (Vue JS 2)" application he built for his Udemy course of the same name. This fork pre-includes the Pinegrow Quasar Module and other goodies for Vue Designer.

Demo - https://pg-quasar-weather-app.netlify.app/

Vue Designer

A desktop visual editor for Vue apps supporting Mac, Windows, and Linux by Pinegrow. Take it for a free trial at Vue Designer!

It lets you visually design 🎨 your Vue single file components and boosts your productivity and creativity while building your component-based Vue apps.

It smartly integrates with your ⚡️ Vite based CLI and provides an amazing developer experience with its powerful visual controls and features.

Clean code 😃, No lock-in - You are in control of your projects and development workflow ❤️

Try it now!

1. Clone to local

Create a repo from this template on GitHub.

(or)

If you prefer to do it manually with the cleaner git history

npx giget@latest gh:pinegrow/pg-quasar my-quasar-app #project-name
cd my-quasar-app
npm install #or use pnpm

(or)

If you prefer a blank template (a single empty home page) instead,

npx giget@latest gh:pinegrow/pg-quasar#blank my-quasar-app #project-name
cd my-quasar-app
npm install #or use pnpm

2. Open in Vue Designer

Open your project in Vue Designer and follow the instructions displayed in the Config Panel (that should pop out automatically). Config Panel ⚙️ displays the key packages and the various links to their individual ecosystems and communities.

Usage

  • ACTION REQUIRED: Currently, only SPA & SSR mode are active in this template. To use other modes (desktop, mobile etc), enable them by following the official Quasar documentation.

Start your development server

For Windows build when running Mac - run Windows in a virtual machine and run development process there For iOS (Mac only) - install Xcode before starting development server For Android - install Android Studio, Android File Transfer, setup and launch Android Virtual Device, and then start the development server

npm run dev # Web - SPA
npm run dev:ssr # Web - SSR SPA
npm run dev:electron # Desktop
npm run dev:ios # Mobile - ios
npm run dev:android # Mobile - android

Build

For Windows build when running Mac - uncomment the platform: 'win32' line in quasar.config.js and run npm run build:electron

npm run build # Web - SPA
npm run build:ssr # Web - SSR SPA
npm run build:electron # Desktop
npm run build:ios # Mobile - ios
npm run build:android # Mobile - android

Icons

npm run icons # regenerate icons & splash screens

Analyze

Set build > analyze to true in your config file and run the necessary build command. This will generate and open an HTML report containing bundle size information.

npm run build # use the necessary build command from above build section

Preview

npm run build # build
quasar serve --history #preview build

Lighthouse

npm run unlighthouse # Uses npx unlighthouse from https://unlighthouse.dev/ to run lighthouse on entire site (all pages)

Deploy to Netlify

You can deploy this repo as a site on your own to explore and experiment with, by clicking this button. Deploy to Netlify

Check out the deployment documentation for more information.

Pre-packed

Meta Framework (Vue-based)

  • Quasar - The enterprise-ready cross-platform VueJs framework
    • 👉 Follow the Quasar docs for the amazing list of features.
    • 🚦 Vue-Router for client-side routing. Expressive, configurable, convenient enables snappy navigation.

UI Frameworks

  • Quasar - There’s a component for almost every web development need within Quasar. Each of Quasar’s components is carefully crafted to offer you the best possible experience for your users. Quasar is designed with performance & responsiveness in mind – so the overhead of using Quasar is barely noticeable. This attention to performance and good design is something that gives us special pride. 👉 Note: Quasar's extended spacing utilities are enabled by setting framework.cssAddon: true in quasar config.

Icons

  • UnoCSS Preset Icons - use over 100,000 open-source Iconify icons. Uses the unocss format for icon names, for example, i-mdi-home.

Modules/Plugins

  • Pinegrow Quasar Module - enables you to live-design your Vue single-file components visually in Vue Designer. Also, via Design Panel, enables theme customization (optional) and visual controls for Quasar utilities. Note: This is an addon that's licensed separately to Pinegrow apps (like Vue Designer).
  • VueUse - collection of essential Vue composition utilities.
  • 🍍 Pinia stores for global state management. Its light-weight, type-safe, extensible, modular with vue-devtools support.
  • VeeValidate takes care of value tracking, validation, errors, submissions and more.
  • QImg - The QImg component makes working with images (any picture format) easy and also adds a nice loading effect to it along with many other features (example: the ability to set an aspect ratio).
  • Quasar SEO - The Quasar Meta plugin can dynamically change page title, manage <meta> tags, manage <html> and <body> DOM element attributes, add/remove/change <style> and <script> tags in the head of your document (useful for CDN stylesheets or for json-ld markup, for example), or manage <noscript> tags.

Devtools

  • Vite Devtools - A Vite plugin for Vue that enhances your DX (developer experience) with an amazing set of in-app features. This is an in-app alternative to browser-based/standalone Vue Devtools.
  • Vue Devtools - Official devtools that can be used as a standalone app alongside Vue Designer. It's configured as a boot file (only during development).
    • ACTION REQUIRED: Currently deactivated. In src/boot/devtools.ts, uncomment to activate.

VS Code Extensions

  • [VS Code Extensions](./.vscode/extensions.json & ./.vscode/settings.json)

Coding Style

Typescript

This project allows JS, and strict mode is turned off. Update tsconfig.ts as required.

{
  // https://quasar.dev/quasar-cli-vite/supporting-ts
  "extends": "@quasar/app-vite/tsconfig-preset",
  "compilerOptions": {
    "allowJs": true,
    "strict": false
  }
}

Community