Skip to content

MAPLE makes it easy for anyone to view and submit testimony to the Massachusetts Legislature about the bills that will shape our future.

License

Notifications You must be signed in to change notification settings

codeforboston/maple

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Massachusetts Platform for Legislative Engagement (MAPLE)

A legislative testimony project through Code for Boston!

We are creating a new web platform called MAPLE (the Massachusetts Platform for Legislative Engagement) that makes it easy for residents to submit their testimony to the MA legislature and read the testimony of others. Our goals are to shine a light on the statehouse by 1) providing a public archive of legislative testimony; 2) standardizing and demystifying the testimony process, so that more people can make their voices heard; and 3) creating a space for constituents and legislators to maintain prolonged focus on key issues, and to learn more efficiently about the laws that will shape our lives. Through this, we hope that people can better channel their political energy into productive improvements for our local and state communities.

Essentials

Join the Code for Boston Slack and our #maple-testimony channel. Ask to join the Zenhub project and to be added as a collaborator on Github, and provide your Github username.

Attend a weekly hack night at Code for Boston and join our group.

You can find good first issues here.

Check out the Contributing docs for how to contribute to the project, and the wiki for project documentation.

Links

Live Sites

  • Development site, for testing and development. Feel free to play with the site!
  • Production site, for public use and real testimony. Please only use this site to submit real testimony, not for testing.
  • Version 1 site, for posterity

Getting Started

  1. Fork a copy of the main repo to your GitHub account.

  2. Clone your fork:

git clone https://github.com/YOUR_GITHUB_NAME/maple.git
  1. Add the main repo to your remotes:
cd maple
git remote add upstream https://github.com/codeforboston/maple.git
git fetch upstream

Now, whenever new code is merged you can pull in changes to your local repository:

git checkout main
git pull upstream main
  1. Now you're ready to work on a feature! See the Contributing page for more info, and refer to the wiki for more documentation.

Developing Locally

  1. Make sure that you have node and yarn installed. You can download Node directly here or use a tool like nvm. To install yarn, run npm i -g yarn after installing node.
  2. Install dependencies with yarn install.
  3. If you are developing backend features involving firebase or typesense, install Docker and Docker Compose V2.
  4. Run a command and start developing:
  • yarn dev: Start the Next.js development server. Use this if you're working on frontend features. View the app in your browser at localhost:3000. Make some changes to components/ and pages/. The site will automatically update. Your local site will share the same backend as the live development site.
  • yarn storybook: Start the Storybook development server. Use this if you're working on UI components. View your storybook at localhost:6006. It will update as you make changes to the stories in stories/.
  • yarn dev:up: Run the full application locally using Docker Compose. Use this if you're working on full-stack or backend features in functions/. You can access the emulator UI at http://localhost:3010.
  • yarn dev:up:detach: Run the application, and keep it running once you stop this command.
  • yarn dev:down: Stop the application.
  • yarn dev:update: Update the application images. Run this whenever dependencies in package.json change.

Install the Redux DevTools and React DevTools browser extensions if you're developing frontend

Contributing Backend Features to Dev/Prod:

  • If you are developing backend features involving only Next.js API routes and need to deploy them to the Dev site, download Google application credentials for the dev project (you will need to be added as an editor of the project). Then, run export GOOGLE_APPLICATION_CREDENTIALS=path-to-credentials.json before running yarn dev. This is necessary to authenticate the Firebase Admin SDK. The same would apply to production.

Testing

MAPLE uses Jest for unit and integration testing, and Playwright for e2e testing.

Environment Setup for Testing.

To set up your environment for testing, make sure you have a .env file configured with the necessary variables. You can create it by copying the provided .env.example template:

cp .env.example .env

This file includes placeholders for key environment variables, which you should customize as needed:

TEST_ADMIN_USERNAME: Username for admin testing.
TEST_ADMIN_PASSWORD: Password for admin testing.
APP_API_URL: The base URL for the application API (default is http://localhost:3000).

Running Tests.

Once your environment is set up, you can start running tests with one of the following commands:

  • yarn test:integration [--watch] [-t testNamePattern] [my/feature.test.ts]: Run integration tests in components/ and tests/integration/. These tests run against the full local application -- start it with yarn up. You can use --watch to rerun your tests as you change them and filter by test name and file.
  • yarn test:e2e: Run e2e tests in tests/e2e with the Playwright UI
  • yarn test:e2e:headless: Run e2e tests in tests/e2e headless (no UI)

For more information on our end-to-end testing, go to our e2e test README. For an introduction on how to write e2e tests with Playwright, go to the Playwright docs. An example of an e2e test can be found in tests/e2e/homepage.spec.ts.

Code Formatting and Linting

We use Prettier and ESLint to check files for consistent formatting and catch common programming errors. When you send out a PR, these run as part of the Repo Checks workflow.

You can install pre-commit so that Prettier and ESLint run automatically when you commit. You can also run yarn fix locally to lint and format your code. You'll need to do one of these and commit the changes if the Linting and Formatting parts of the Code Quality check fails on your PR.

If you use VSCode, consider using our project workspace file (open it in VSCode and click the "Open Workspace" button in the editor). It will ask you to install ESLint and Prettier extensions, which will show lint errors in your editor and set up Prettier as the default code formatter. You can format the current file from the command pallete by typing Format Document. You can also set the editor up to format on save: select Open User Settings from the command pallet, search for format on save, and enable it.

Additional Documentation

See the Wiki

Contributors

Thanks to all our contributors!

0lafe
0lafe

πŸ’»
Alex Ball
Alex Ball

πŸ’» πŸ‘€ πŸ§‘β€πŸ«
Anna Steele
Anna Steele

πŸ’Ό πŸ“†
Anthony
Anthony

πŸ’»
Brian Rutledge
Brian Rutledge

πŸ’»
Byron Kent Hinebaugh
Byron Kent Hinebaugh

πŸ’»
Colin MacDonald
Colin MacDonald

πŸ’»
Colton Almaraz
Colton Almaraz

πŸ’»
Dev1nxavier
Dev1nxavier

πŸ’»
Gerlin
Gerlin

πŸ’»
Ikko Eltociear Ashimine
Ikko Eltociear Ashimine

πŸ’»
Jeff Korenstein
Jeff Korenstein

πŸ’»
KY233466
KY233466

πŸ’»
Kep Kaeppeler
Kep Kaeppeler

πŸ’»
Kittipong Deevee
Kittipong Deevee

πŸ’»
Leopoldo Lening Celaya
Leopoldo Lening Celaya

πŸ’»
Luke Rucker
Luke Rucker

πŸ’»
Marcos Banchik
Marcos Banchik

πŸ’»
Mark Trepanier-Cajigas
Mark Trepanier-Cajigas

πŸ’»
Matthew Zagaja
Matthew Zagaja

πŸ’»
Mike Yavorsky
Mike Yavorsky

🎨
Miles Baird
Miles Baird

πŸ’»
Minqi Chai
Minqi Chai

πŸ““
Nathan Sanders
Nathan Sanders

πŸ’» πŸ’Ό πŸ”
Richard Kwon
Richard Kwon

πŸ’»
Riley Grant
Riley Grant

πŸ’»
RobertMrowiec
RobertMrowiec

πŸ’» πŸ‘€
Rodrigo Passos
Rodrigo Passos

πŸ’» πŸ‘€
Scott Solmonson
Scott Solmonson

πŸ’»
Stacey Ali
Stacey Ali

πŸ’»
Tim Blais
Tim Blais

πŸ’»
Tom Magnusson
Tom Magnusson

πŸ’»
Ujwal Kumar
Ujwal Kumar

πŸ’»
Veronica Adler
Veronica Adler

πŸ’»
arutfield
arutfield

πŸ’»
bancona
bancona

πŸ’»
d.ondrich
d.ondrich

πŸ’»
djtanner
djtanner

πŸ’»
jamesvas5307
jamesvas5307

🎨 πŸ§‘β€πŸ« πŸ““
jellyyams
jellyyams

πŸ’»
jkinzer85
jkinzer85

πŸ““
mertbagt
mertbagt

πŸ’»
mmailloux22
mmailloux22

πŸ’»
mvictor55
mvictor55

πŸ’Ό πŸ“† πŸ” πŸ’»
ren0nie0
ren0nie0

πŸ”¬
sammymyi
sammymyi

🎨 πŸ““
sashamaryl
sashamaryl

πŸ’» πŸ§‘β€πŸ« πŸ”¬

This table follows the All Contributors specification and is managed by the @all-contributors bot. You can add yourself or another contributor by commenting on an issue or a pull request.

About

MAPLE makes it easy for anyone to view and submit testimony to the Massachusetts Legislature about the bills that will shape our future.

Resources

License

Code of conduct

Stars

Watchers

Forks

Sponsor this project

Packages

No packages published