Demo: https://novicell-nuxt3-boilerplate.netlify.app
Look at the nuxt 3 documentation to learn more.
- Nuxt 3
- TypeScript
- Vite
- PostCSS
The project is built with Nuxt3, it uses Pinia as state management and Histoire as design system. Furthermore the https://vueuse.org/core/ is installed, so please use the composables from here instead of building everything from scratch.
Make sure that your IDE is ready: https://v3.nuxtjs.org/getting-started/quick-start
Create a .env
file by copying the .env.example
file
cp .env.example .env
Make sure to install the dependencies:
npm i
Start the development server on http://localhost:3000
npm run dev
Build the application for production:
npm run build
Locally preview production build:
npm run preview
# Linters
$ npm run eslint // Run ESLint
$ npm run eslint:fix // Run ESLint and fix fixable issues
$ npm run stylelint // Run Stylelint
$ npm run stylelint:fix // Run Stylelint and fix fixable issues
$ npm run lint // Run all linters
$ npm run lint:fix // Run all linters fix fixable issues
# Histoire
$ npm story:dev // Run Histoire
$ npm story:build // Build Histoire
$ npm story:preview // Preview Histoire
The application is setup to run on Docker when deploying it to production. To run a production build on local make sure to first have Docker Desktop installed
After that run the docker-compose command in root dir
docker-compose up --build
The site will when be available on http://localhost:3001
This project uses Nuxt Image Edge for rendering images using a custom provider for supporting Image Sharp wrapped in a base component.
<BaseImage
src="https://cdn.novicell.com/media/media/gmla14tz/saelger-samtale-jan-overgaard-kenneth-mansgaard-anders-thorup-nilsson-adam-peter-nielsen.jpg"
:modifiers="{ mode: 'crop'}"
height="500"
sizes="xl:100vw"
/>
For more information, please read the docs: https://v1.image.nuxtjs.org/components/nuxt-img
We use Nuxt Icons for loading in icons which inlines the SVG code at build time.
<NuxtIcon name="novicell" />
Most of the websites we build only has a single language, which means that it's not necessary to use a big i18n library. We therefore built a custom i18n module that simply loads translations from a YAML file located at locales/da.yaml
. We mocked the same syntax as other i18n plugins which means that it should be easy to switch it out with an official library if needed.
Translations
ErrorMessages:
Generic: An error occurred
Rendering
<p>{{ $t('ErrorMessages.Generic') }}</p>