Simpler.Grants.gov Public Wiki
Grants.govSimpler.Grants.govGitHubDiscourse
  • 👋Welcome
  • GET INVOLVED
    • Why open source?
    • How to contribute code
    • How to file issues
      • Report a bug
      • Request a feature
      • Report a security vulnerability
    • Community guidelines
      • Code of Conduct
      • Reporting and removing content
      • Incident response protocol
    • Community events
      • Fall 2024 Coding Challenge
        • Event Submissions & Winners
      • Spring 2025 Collaborative Coding Challenge
        • Event Submissions & Winners
    • Communication channels
  • Product
    • Roadmap
    • Deliverables
      • 🏁Static site soft launch
      • 🏁Static site public launch
      • 🏁GET Opportunities
      • 🏁Open source onboarding
      • 🏁Co-Design Group planning
    • Decisions
      • ADR Template
      • ADRs
        • Dedicated Forum for Simpler.Grants.gov Community
        • Recording Architecture Decisions
        • Task Runner for the CI / CD Pipeline
        • API Language
        • Use Figma for design prototyping
        • ADR: Chat
        • DB Choices
        • API Framework and Libraries
        • Back-end Code Quality Tools
        • Front-end Language
        • Communications Tooling: Wiki Platform
        • Use Mural for design diagrams and whiteboarding
        • Ticket Tracking
        • Front-end Framework
        • Front-end Code Quality Tools
        • Front-end Testing & Coverage
        • Backend API Type
        • Front-end Testing & Coverage
        • Deployment Strategy
        • Use U.S. Web Design System for components and utility classes
        • FE server rendering
        • Use NPM over Yarn Architectural Decision Records
        • U.S. Web Design System in React
        • Communications Tooling: Video Conferencing
        • Back-end Production Server
        • Communications Tooling: Analytics Platform
        • Commit and Branch Conventions and Release Workflow
        • Cloud Platform to Host the Project
        • Infrastructure as Code Tool
        • Data Replication Strategy & Tool
        • HHS Communications Site
        • Communications Tooling: Email Marketing
        • Communications Tooling: Listserv
        • Use Ethnio for design research
        • Uptime Monitoring
        • Database Migrations
        • 30k ft deliverable reporting strategy
        • Public measurement dashboard architecture
        • Method and technology for "Contact Us" CTA
        • E2E / Integration Testing Framework
        • Logging and Monitoring Platform
        • Dashboard Data Storage
        • Dashboard Data Tool
        • Search Engine
        • Document Storage
        • Document Sharing
        • Internal Wiki ADR
        • Shared Team Calendar Platform
        • Cross-Program Team Health Survey Tool
        • Adding Slack Users to SimplerGrants Slack Workspace
        • Repo organization
        • Internal knowledge management
        • Migrate Existing API Consumers
      • Infra
        • Use markdown architectural decision records
        • CI/CD interface
        • Use custom implementation of GitHub OIDC
        • Manage ECR in prod account module
        • Separate terraform backend configs into separate config files
        • Database module design
        • Provision database users with serverless function
        • Database migration architecture
        • Consolidate infra config from tfvars files into config module
        • Environment use cases
        • Production networking long term state
    • Analytics
      • Open source community metrics
      • API metrics
  • DESIGN & RESEARCH
    • Brand guidelines
      • Logo
      • Colors
      • Grid and composition
      • Typography
      • Iconography
      • Photos and illustrations
    • Content guidelines
      • Voice and tone
    • User research
      • Grants.gov archetypes
  • REFERENCES
    • Glossary
  • How to edit the wiki
Powered by GitBook
On this page
  • Contribution Guidelines
  • A. Code style and standards
  • B. Testing
  • C. Documentation
  • Getting Started
  • 1. Create a Fork
  • 2. Clone the repository
  • 3. Make & Commit changes
  • 4. Push Changes
  • 5. Run code quality checks to verify changes
  • 6. Create a Pull Request
  • 7. Review process
  • Change log

Was this helpful?

Edit on GitHub
  1. GET INVOLVED

How to contribute code

PreviousWhy open source?NextHow to file issues

Last updated 1 month ago

Was this helpful?

GitHub is our primary platform for collaborative software development within the Simpler Grants community. This guide will help you get started and make the most out of your code contribution experience.

Looking for work?

Our development team curates "help wanted" issues for open source developers like you to help out with on .

Contribution Guidelines

A. Code style and standards

  • Follow the established code style and standards.

  • Use clear and description variable names, comments and documentation where necessary.

B. Testing

  • Write tests for your code changes to ensure they function as expected

  • Run exiting tests and ensure they pass before submitting your pull request

C. Documentation

  • Update any relevant documentation in the README files to reflect changes

Getting Started

1. Create a Fork

Create a new fork of the simpler grants.gov repository for your changes. Fork names should conform to the simpler grants naming convention

<github username>/<GitHub Issue #>-simple-ticket-description

For example

btabaska/1234-updating-api-with-new-header

Next, create a feature branch using the following command, replacing feature-branch-name with a name that follows our branch naming schema

git checkout -b feature-branch-name

2. Clone the repository

Clone the forked repository to your local machine using the following command:

git clone https://github.com/<your-github-username>/<repository-name>.git

Instruction on setting up the local development environment can be found in the README of the repository.

3. Make & Commit changes

Make your desired changes to the codebase using your preferred editor. Once you're done, stage and commit your changes:

git add . 
git commit -m "Brief Description of changes"

4. Push Changes

  • Push your changes to your forked repository on GitHub using the following command:

git push origin feature-branch-name

5. Run code quality checks to verify changes

Frontend:

On the frontend of the project we enforce formatting, linting, typescript checks and unit testing before a code change can be accepted.

To run frontend tests:

// run linting to check that lint rules are being met
npm run lint
// run formatting to ensure that document formatting is correct. This will attempt to auto-fix simple issues with formatting
npm run format
// run type checks to ensure that typescript rule requirements are being met
npm run ts:check
// run unit tests to validate that defined component tests are not failing
npm run test 

API

In the API of the project we enforce formatting, linting and unit tests. These all must pass before code changes can be accepted.

To run API tests:

// run linting to check that lint rules are being met
make lint
// run formatting to ensure that document formatting is correct. This will attempt to auto-fix simple issues with formatting
make format
// run unit tests to validate that defined unit tests are not failing
make test

6. Create a Pull Request

a. Navigate to your forked repository on GitHub

b. Click on the Pull Request button

c. Fill out the pull request form

d. Validate that GitHub automated integration testing is not failing. If it is go back and make changes to your code until all tests are passing again.

e. Submit the pull request for review by other developers within the community

Example pull request form:

## Summary
Fixes #(ISSUE)

### Time to review: ___x mins___
## Changes proposed
> // Update with a short description of what you changed

## Context for reviewers
> // Provide context for the PR reviewer

7. Review process

a. Assign reviewers

  • Assign reviewers to your pull request who are knowledgeable about the project and can provide valuable feedback

b. Feedback and iteration

  • Address any feedback or comments from reviewers promptly

  • Make necessary changes and iterate on your code until it meets the projects standard to be accepted

  • Once your pull request has been approved it will be merged into the main branch and deployed as necessary.

Change log

Major updates to the content of this page will be added here.

Date
Update
Notes

2/12/2024

Initial Content

Updated with Initial content

10/3/2024

Updated content

Updated content for hackathon

API Development Instructions

Front End Development Instructions

Need help with your local development environment? Post in the if you're having issues. We can walk you through the process of resolving blockers. We also use a CODEOWNERS file to automatically suggest and add folks knowledgeable about the area of the code you're making changes to.

GitHub
API Development Instructions
Front End Development Instructions
Discourse forum