Skip to content

Latest commit

 

History

History
94 lines (70 loc) · 5.01 KB

CONTRIBUTING.md

File metadata and controls

94 lines (70 loc) · 5.01 KB

Contributing to the Dual Power App

  • If you'd like to be actively involved with the team, you can contact us to join the Basecamp, and we'll get you set up to join calls, chat with us about the vision, ideas, and design, and get access to more documentation and ways to collaborate.
  • Anyone outside the team is welcome to collaborate with us through issues and pull requests.

Tech stack

The Dual Power App is a Next.js app built on Vercel for the API and Fauna & GraphQL for the database. Our usage of Fauna is experimental and will possibly change as we build out more of the application. The app is written in TypeScript.

You can follow along with our open design process.

Working on the Next.js client

  • CSS: You should write very little CSS yourself. Use the pre-baked components in the components directory. For page layouts and tweaks, use Windi. If you find yourself styling a component, consider whether that is a reusable treatement that should instead be a prop on the component itself.
  • Interacting with APIs: Isomorphic Unfetch (it's like axios, but waaay smaller)
  • Interacting with the database: Read /db/queries/README.md for examples

Getting started

  1. Make sure to read BSA's strategy if you're not 100% on what a Dual Power Project is
  2. See what's up in the projects and issues
  3. Set up commit signing

Writing commit messages

This commit, in which I add this section of this document, might look like: docs(contrib): #17 add conventional commits

If I was doing this from a fork, I would instead say: docs(contrib): BSA-US/dual-power-app#17 add conventional commits

Submitting a pull request

  1. Test your work
  2. Bring your work up to date by rebasing it onto this repo's main branch (see below)
  3. Test your work again
  4. Create a pull request
  5. Summarize your changes and mention any relevant issues
  6. Submit your PR

Rebasing

New to rebasing? It can be daunting the first time, but we'll get through this together.

For an explanation of what rebasing means in git, check out this guide

Rebasing when collaborating from a fork

  1. If you're working from a fork of the repository, you will want to add the main BSA repository as a git remote, usually called upstream:
    git remote add upstream https://github.com/BSA-US/dual-power-app.git
    git fetch upstream
  2. Rebase your local branch onto upstream/main
    git checkout my-branch
    git rebase upstream/main
  3. Resolve the merge conflicts, choosing to keep your changes wherever you made them, and for all other conflicts choosing what is on upstream/main
  4. When finished, force-push your newly in-sync branch:
    git push -f origin my-branch
  5. Create a pull request across forks, making note of your changes

Rebasing when collaborating from within this repo

  1. When collaborating directly on this repository instead of a fork, you do not need a separate remote:
    git checkout my-branch
    git rebase main
  2. Resolve the merge conflicts, choosing to keep your changes wherever you made them, and for all other conflicts choosing what is on main
  3. When finished, force-push your newly in-sync branch:
    git push -f origin my-branch
  4. Create a pull request, making note of your changes

But what should I work on?

Great question. Whatever you want!

We have our own internally decided priorities which you can see:

  • summarized in our README and
  • fully broken down in the issues

Are we missing something essential? Create an issue, assign it to yourself, and get going!!