First off, thank you for considering contributing to our project! 🎉 We’re excited to have you on board and appreciate the effort you're putting into making our project better. Whether you’re a seasoned developer or a newbie, we believe every contribution counts, and this guide will help you get started.
We put continuous effort into making the contribution process as simple as possible. Please follow the steps below, and if you ever get stuck, don’t hesitate to ask questions – we're here to help!
To get started with open-source contributions and to ensure a structured approach, check out @dargmuesli's Contributing Guidelines.
Whenever switching branches, it makes sense to run pnpm install
while the development server is stopped. This prevents issues with dependencies as they tend to differ between all branches.
Read @dargmuesli's guide on Semantic Versioning to find out how to correctly format pull request, issue and commit titles and how this necessity speeds up our development.
To allow you and other developers to quickly navigate through Vue Single-File Components many pages
and components
in this repository share a common structure in script setup
that's inspired by Vue's Options API.
Such structure should be migrated to use composable
s as explained in this video by Alexander Lichter.
-
import-like and meta elements have to be added first without preceding comments
import
: likeimport { x } from 'y'
definePageMeta
use
: likeconst { x } = useNuxtApp()
-
below, elements that define the data structure of a component require separation by comments
// data
: likeconst x = ref(...)
// api data
: likeconst x = useXMutation()
// computations
: likeconst x = computed(() => y)
// vuelidate
: rules andconst v$ = useVuelidate(rules, form)
// methods
: useconst x = () => ...
instead offunction x() {...}
// lifecycle
: likeonMounted()
,watch()
, ... (in that order)// initialization
: likeinit()
,useHeadDefault()
, ... (in that order)
If you find yourself adding empty lines to a Vue component's template to add structure to it, you should extract the separated parts into individual components.
We use Playwright for end-to-end testing.
If your CI pipeline is failing because of incorrect test snapshots, pnpm build
the application, update the snapshots using pnpm test:e2e:docker:server:node:update
and commit the resulting changes if they match your expectation.
- Follow Tailwind's core concepts
- Use
flex
as spacing strategy, notspace-*
orm-*
(except where this really doesn't make sense)
- Use
const
to define variables, notlet
(except where this really doesn't make sense)
Always do either frontend-only development using pnpm dev
or fullstack development running maevsi/stack
.
You cannot run both at the same time as each development server writes different content to the node_modules
directory.
When switching back from fullstack development to frontend-only development, pnpm
will ask for permission to take back control of the dependency linking.
You can allow that.