Thanks for thinking about contributing! This is a small project run in public — pull requests, issues, and discussion are all welcome.
- Be kind. Trade businesses are real people running real companies. Code with that in mind.
- Small PRs > big PRs. One concern per PR. We'll merge fast if it's tight.
- No "AI slop" PRs. Use AI to help draft code — but read every line yourself before opening the PR.
git clone https://github.com/codewithmuh/hearthline.git
cd hearthline
cp .env.example .env
docker compose up --buildYou should now have:
http://localhost:3000— Next.js dashboardhttp://localhost:8000/admin— Django adminhttp://localhost:8000/api— REST API
Seed demo data:
docker compose exec backend python manage.py seed_demo --wipeEasy wins (good first issue):
- Improve copy / accessibility / mobile responsiveness on the dashboard
- Add more unit tests for
apps/calls/agent/ - Improve the seed data — more realistic transcripts, more variety
- Translate Anna's prompt for non-English markets
Medium:
- Stripe deposit on quote acceptance
- Outbound SMS / WhatsApp via Twilio
- PDF rendering server-side (replacing the browser print path)
- Real Google Calendar integration in
services/scheduling.py
Big (talk to us first):
- Multi-tenant auth + per-business data isolation
- Eval harness for the Anna prompt
- One concern per PR
-
docker compose upstill works - No new env vars without updating
.env.example - No secrets, no API keys, no
.envcommitted - If you touched the dashboard, hit the page in a browser before pushing
- Linked the issue (or opened one if it didn't exist)
- Backend (Python): PEP 8, type hints encouraged, no unused imports
- Frontend (TypeScript): Strict types, no
anyunless commented why, server components by default - CSS: Plain
globals.css— keep new styles co-located with the section they belong to - Comments: Only when the why is non-obvious. The what is the code.
- Accessibility: Every
<img>needs descriptivealttext; every interactive element needs a label; preserve keyboard navigation. PRs that regress a11y will be asked to fix it.
Open an issue with:
- What you expected
- What happened
- Reproduction steps (or a failing test)
docker compose ps+docker compose logs --tail 50if it's a runtime issue
- Issues: github.com/codewithmuh/hearthline/issues
- Discussions: for design + roadmap conversations
- Setup help / consulting: Book a call
By contributing, you agree that your contributions will be licensed under the GNU Affero General Public License v3.0 (AGPL-3.0), and that the project maintainer (Muhammad Rashid) may also offer your contributions under a separate commercial license to fund continued development. See COMMERCIAL.md.