This is a draft of a checklist for locally developed apps.
- Has a
README.md
: Make a README - Has a LICENSE: Choose a license
- CHANGELOG.md
- CONTRIBUTING.md
- Has a
docs/
folder or similar- Documentation should include something about roles and persmissions
-
.gitignore
should be present
- Note the tools needs in some dependencies file (
Gemfile
,package.json
,requirements.txt
, etc) - There should be automated test cases
- The tool needs to have an awareness of different environments, e.g.
development
,test
,staging
,production
.- This should be controlled by a default variable for the language/stack like
NODE_ENV
,RAILS_ENV
, etc.
- This should be controlled by a default variable for the language/stack like
- The app should have a
.github/
folder with a CI script- Should be able to run unit tests
- Shuld run full integration tests
- Tests should use a headless browser for some tests
- Tests should be able to run with an internet connection
- Scripts should go in a local
bin/
directory, e.g.bin/setup
, etc. - Local environments should require minimal secrets to boot the app
- Complicated installations should maybe have a
Dockerfile
- Consider a local
.vscode/
configuration
- CI should run through GitHub Actions
- Tools must have a CI Suite and should report code coverage
- The README should include badges
- Tools should use a code linter (eslint, rubocop, pep8 / pylance, etc)
- Automatic security vuln scanning (CodeQL, snyk, brakeman, etc)
- axe accessibility auditing should run in Dev and CI
- Front end UI should default to Bootstrap unless there is good reason to deviate
- GitHub Issues / Project boards should be configured
- The tool must be able to read environment variables
- Document how are secrets shared/accessed?
- Document URLs, SSL certs needed, etc.
- the app should have a staging server which does not send out live emails
- UC Berkeley SPAs (Special Purpose Accounts) should be used for shared ownership where possible
- Tools should use Sentry for error reporting.
This repo should ideally serve as a template for CI scripts, axe configurations, notes about tools, etc.
We should eventually publish this publicly.