85

/ 100

GradeB

Well engineered. The main gaps are test coverage and a contributing guide.

Top 22% of 5,156 graded repos

Self-hosted JMAP webmail for Stalwart Mail Server. Mail, calendar, contacts, and files in one client.

TypeScript1,373Other15d ago

Top fixes

Highest-impact changes first, ranked by point weight

7 to address
  1. 1
    Tests18pt

    Set scripts.test in package.json to your actual test command, e.g. "vitest" or "jest".

  2. 2
    README12pt

    Add CI/build status badges from shields.io or your CI provider to signal project health.

  3. 3
    Reproducibility6pt

    Add .github/dependabot.yml with at least one package-ecosystem entry, or a renovate.json, so dependencies are updated automatically.

  4. 4
    Contributing guide5pt

    Add setup instructions, code style notes, and how to run tests.

Working through the fixes? Let every push regrade itself.

The free GitHub App rescans this repo on every push and posts the grade as a commit check, so the score climbs without coming back to rescan by hand.

Install the GitHub App

Scorecard

Every check, grouped by category and sorted worst-first

Documentation

93

Contributing guide5pt78

Contributing guide is too short for full depth credit (−6 pts). 400+ words earns the full +12 pts.

→ Add setup instructions, code style notes, and how to run tests.

README12pt90

README is present.

Install and run instructions9pt100

README documents how to install the project.

License6pt100

Licensed under Other.

Engineering

74

Tests18pt35

Test files detected (app/(main)/admin/__tests__).

Reproducibility6pt80

Lockfile present (package-lock.json). Installs are reproducible.

CI/CD14pt100

CI is configured (.github/workflows/tests.yml).

Linting and formatting5pt100

Linter or formatter configured (eslint.config.mjs).

Issue and PR templates6pt100

Issue or PR templates present.

Project health

100

Dependency manifest6pt100

Dependency manifest found (package.json).

Repository metadata5pt100

Repository has a description.

Activity5pt100

Actively maintained (pushed within the last month).

Housekeeping3pt100

.gitignore present.

Repository health signals

Activity, community, and responsiveness at scan time

Activity

  • 749 / 1443
    Commits (30d / 90d)
  • 244
    Forks
  • 60
    Releaseslatest 7mo ago

Community

  • 87% - Good
    Community health
  • 1 bus factorlow
    author own >50% of commits
  • 1,373
    Watchers

Responsiveness

  • 6h
    Median issue response
  • 2h
    Median PR merge time
  • 126
    Open issues
Repository files42 root entries
  • .github
    Good: CI is configured (.github/workflows/tests.yml).
    Good: Issue or PR templates present.
  • .husky
  • app
    Good: Test files detected (app/(main)/admin/__tests__).
  • components
  • contexts
  • deploy
  • hooks
  • i18n
  • integration
  • lib
  • locales
  • public
  • screenshots
  • scripts
  • stores
  • .dockerignore
  • .env.dev.example
  • .env.example
  • .gitattributes
  • .gitignore
    Good: .gitignore present.
  • CHANGELOG.md
  • CONTRIBUTING.md
    Issue: Contributing guide is too short for full depth credit (−6 pts). 400+ words earns the full +12 pts.Fix: Add setup instructions, code style notes, and how to run tests.
    Good: Contributing guide includes setup/install instructions.
    Issue: Contributing guide lacks a code style section (−8 pts).Fix: Describe your linting/formatting rules and how to run them.
    Issue: Contributing guide lacks a testing section (−8 pts).Fix: Show contributors how to run the test suite (e.g. npm test, pytest, cargo test).
    Good: Contributing guide describes the PR/review workflow.
    Good: Contributing guide includes code examples.
  • docker-compose.yml
  • Dockerfile
    Good: Environment pinned via Dockerfile.
  • Dockerfile.lite
  • eslint.config.mjs
    Good: Linter or formatter configured (eslint.config.mjs).
  • instrumentation.node.ts
  • instrumentation.ts
  • LICENSE
    Good: Licensed under Other.
  • next.config.ts
  • NOTICE
  • package-lock.json
    Good: Lockfile present (package-lock.json). Installs are reproducible.
  • package.json
    Good: Dependency manifest found (package.json).
  • playwright.integration.config.ts
  • postcss.config.mjs
  • proxy.ts
  • README.md
    Good: README is present.
    Good: README is well structured with multiple sections.
    Good: README includes screenshots or visuals. Great for first impressions.
    Good: README has code examples.
    Good: README links to a live demo or deployed app.
    Issue: No status badges in the README (−10 pts).Fix: Add CI/build status badges from shields.io or your CI provider to signal project health.
    Good: README documents how to install the project.
    Good: README documents how to run the project.
  • setup.sh
  • tsconfig.json
  • VERSION
  • vitest.config.ts
  • vitest.setup.ts
RepoGrade badge preview

Add this badge to your README

It updates automatically each time the repo is re-graded.

[![RepoGrade](https://www.repo-grade.com/api/badge/bulwarkmail/webmail)](https://www.repo-grade.com/report/bulwarkmail/webmail)

More graded TypeScript repos