Contributing
Flyva is created and maintained by the Owls Department team. We welcome issues, ideas, and pull requests - but please keep in mind that we want to keep the project lean and purposeful, so we can't guarantee that every suggestion will be merged or implemented.
Local development
Prerequisites
- Node.js 20+
- pnpm (enabled via corepack)
Setup
- Clone the repository
git clone git@github.com:owlsdepartment/flyva.git
cd flyva- Enable corepack and install dependencies
corepack enable
pnpm installProject structure
The repo is a pnpm monorepo with three packages and two playgrounds:
packages/shared— framework-agnostic core logicpackages/nuxt— Nuxt modulepackages/next— Next.js integrationplayground/nuxt— Nuxt app for testingplayground/next— Next.js app for testing
Running the playground
# Nuxt playground
pnpm dev:nuxt
# Next.js playground
pnpm dev:nextUse the playgrounds to test your changes against a real app.
End-to-end tests (Playwright)
@playwright/test lives in packages/next and packages/nuxt, not the repo root. After pnpm install, download browsers once (shared cache for both packages):
pnpm playwright:installIf you prefer the long form: pnpm --filter @flyva/next exec playwright install (either package works). Then pnpm test / pnpm test:e2e can launch Chromium.
Commits
Commits must follow the Conventional Commits specification. A commit message linter will reject non-conforming messages.
git commit -m "feat(nuxt): add custom transition resolver"
git commit -m "fix(shared): handle missing transition key gracefully"Pull requests
Work on a separate branch forked from main. New changes land exclusively through reviewed pull requests.
Before pushing, the pre-push hook will run linters automatically. You can also run them manually:
pnpm lintSupport us
Flyva is currently fully sponsored and maintained by Owls Department. If you would like to sponsor the project, invite us to an event, or feature us in a publication, please reach out at opensource@owlsdepartment.com.