Jazak Allahu Khairan for your interest in contributing. MosqueSteps is a community-driven, open-source project. We welcome contributions of all kinds — code, documentation, content, translations, and mosque data.
- Code of Conduct
- Ways to Contribute
- Reporting Issues
- Contributing Code
- Pull Request Process
- Documentation & Content
- Translations
- Mosque Data (OpenStreetMap)
- Code Style & Architecture
- Commit Convention
- Islamic Content Guidelines
- Testing
- Community & Contact
- License
We are committed to a respectful and inclusive environment. By participating, you agree to:
- Be respectful and constructive in all communication (issues, PRs, discussions).
- Welcome newcomers and help others learn.
- Focus on the project and avoid off-topic or divisive discussions.
- Respect Islamic diversity of thought; we do not promote one school or opinion over another in the app.
Report unacceptable behavior by opening an issue or contacting the maintainers. We reserve the right to remove content or block users who violate these principles.
You don’t need to write code to contribute:
| Contribution | How |
|---|---|
| Report bugs | Open an issue with the Bug Report template |
| Suggest features | Open an issue with the Feature Request template |
| Fix mosque data | Add or edit mosques on OpenStreetMap (see below) |
| Report prayer times | Use the Prayer Time Issue template |
| Fix content | Use the Content Issue template for hadith/blog/guide errors |
| Improve docs | Edit README, CONTRIBUTING, or in-app guides |
| Translate | Add or improve translations (see Translations) |
| Write code | Fix bugs, add features, improve tests (see Contributing Code) |
| Share feedback | Open a discussion or issue with your ideas |
New to open source? Look for issues labeled good first issue or help wanted on GitHub. Small fixes (typos, docs, tests) are a great way to start.
We use GitHub Issues with templates so we get the information we need quickly.
| Template | When to use | Link |
|---|---|---|
| Bug Report | Something isn’t working (app, PWA, browser) | Open bug report |
| Feature Request | New feature or improvement idea | Open feature request |
| Mosque Data | Missing, wrong, or duplicate mosque | Open mosque issue |
| Content Issue | Hadith, translation, blog, or guide error | Open content issue |
| Prayer Times | Wrong prayer times for a location | Open prayer times issue |
- Search existing issues to avoid duplicates.
- Use the right template and fill in as much as you can.
- For bugs: include device, OS, browser, and steps to reproduce.
- For features: describe the problem and your proposed solution.
- Node.js 18+ (recommend LTS)
- npm or bun
- Git
- Fork the repo on GitHub: github.com/codingshot/mosquesteps → Fork.
- Clone your fork locally:
git clone https://github.com/YOUR_USERNAME/mosquesteps.git cd mosquesteps - Add upstream (optional but recommended):
git remote add upstream https://github.com/codingshot/mosquesteps.git
- Install and run the app:
npm install npm run dev
- Create a branch (use a short, descriptive name):
git checkout -b fix/typo-landing # or git checkout -b feat/add-widget-export - Make your changes — follow Code Style and Commit Convention.
- Run tests:
npx vitest run
- Commit with a clear message (see Commit Convention):
git add . git commit -m "fix: correct typo in Hero subheadline"
- Push to your fork:
git push origin fix/typo-landing
- Open a Pull Request on GitHub against the main branch. Fill in the PR template and link any related issue (e.g.
Fixes #123).
git fetch upstream
git checkout main
git merge upstream/main
git push origin mainThen rebase your feature branch on main if needed: git rebase main.
- One logical change per PR — keep PRs focused so they’re easier to review.
- Tests — new features and bug fixes should include or update tests in
src/test/. - No breaking changes without prior discussion in an issue.
- Docs — if behavior or setup changes, update README, CONTRIBUTING, or in-app guides.
- UI changes — add a short description and, if helpful, a screenshot or GIF.
- CI — ensure the test suite passes; maintainers will review and may request changes.
After approval, a maintainer will merge your PR. Thank you for contributing.
- README, CONTRIBUTING, docs — fix typos, clarify steps, add examples.
- In-app guides — edit
src/lib/guides-data.tsto add or change steps. - Blog / SEO content — edit
src/lib/blog-data.ts; follow existing structure and hadith guidelines. - Marketing copy — expand or refine content in
src/marketing/(seesrc/marketing/README.md). - Landing page — copy and structure live in
src/components/landing/andsrc/pages/Index.tsx.
When editing Islamic or hadith-related content, follow Islamic Content Guidelines.
We want MosqueSteps to be usable in multiple languages. Priority languages: Arabic, Turkish, Urdu, Malay, Indonesian, French.
- Where: Translation keys and locale logic live in
src/lib/i18n.tsand related hooks (useLocale, etc.). - How: Add or extend locale objects with translated strings; ensure RTL is considered for Arabic (and other RTL languages if added).
- Scope: Start with landing page and key app strings; full UI translation can be done incrementally.
- Open an issue or PR describing the language and which screens you’re translating.
MosqueSteps does not store mosque data. We use OpenStreetMap (Overpass API). To fix missing or wrong mosques:
- Go to OpenStreetMap and create an account if needed.
- Search for the area and edit the map (add or correct the mosque).
- Tag the place with
amenity=place_of_worshipandreligion=muslim. Add name, address, and location. - Save. Changes usually appear in MosqueSteps after OSM updates (can take a short while).
You can still open a Mosque Data issue if you want us to know about a problem or can’t edit OSM yourself.
- TypeScript — Strict typing; avoid
anywhere possible. - React — Functional components and hooks; no class components.
- Styling — Tailwind CSS with semantic tokens (
text-foreground,bg-primary,border-border, etc.). Do not introduce raw hex/hsl unless necessary. - UI — Prefer existing shadcn/ui components in
src/components/ui/. - File size — Keep components focused; split if a file grows beyond ~200 lines.
- Naming — PascalCase for components; camelCase for functions/variables; kebab-case for file names where applicable.
| Path | Purpose |
|---|---|
src/components/ |
Reusable UI components |
src/components/landing/ |
Landing page sections (Hero, Features, FAQ, etc.) |
src/components/ui/ |
shadcn/ui primitives |
src/pages/ |
Route-level page components (lazy-loaded) |
src/lib/ |
Business logic, utilities, data (prayer-times, walking-history, badges, etc.) |
src/hooks/ |
Custom React hooks |
src/test/ |
Vitest test suites |
src/marketing/ |
Marketing docs and research (see src/marketing/README.md) |
We use Conventional Commits so history and release notes stay clear.
| Prefix | Use for |
|---|---|
feat: |
New feature |
fix: |
Bug fix |
docs: |
Documentation only (README, CONTRIBUTING, comments) |
style: |
Formatting, whitespace, no logic change |
refactor: |
Code restructure, no behavior change |
test: |
Adding or updating tests |
chore: |
Build, tooling, dependencies |
Examples:
feat: add export walks to JSON in Settingsfix: correct leave-by time for Fajr when past midnightdocs: add contribute page and expand CONTRIBUTINGtest: add edge-case tests for invalid blog slug
When contributing hadith references or Islamic educational content:
- Use only authenticated hadiths (Sahih or Hasan grade). Avoid weak or disputed narrations.
- Always include the source (e.g. Sahih Muslim 666, Sunan Abi Dawud 561).
- Link to sunnah.com (or another trusted source) for verification where possible.
- Include Arabic text when available and ensure it is correct.
- Be respectful of different schools of thought; avoid content that disparages any madhhab or group.
- Use ﷺ after mentioning the Prophet (peace and blessings be upon him).
- Use Allah (not “God”) in Islamic contexts in the app and docs.
- Run all tests:
npx vitest run - Watch mode:
npx vitest --watch - Single file:
npx vitest run src/test/landing.test.tsx - Stack: Vitest + React Testing Library
- Location: Tests live in
src/test/. Add tests for new features and bug fixes; update existing tests when behavior changes.
- GitHub Issues — Bugs, features, and questions: github.com/codingshot/mosquesteps/issues
- GitHub Discussions — Ideas and general chat (if enabled): github.com/codingshot/mosquesteps/discussions
- X (Twitter) — @ummahbuild
- LinkedIn — ummah-build
- Website — mosquesteps.com
By contributing, you agree that your contributions will be licensed under the same terms as the project. You retain copyright over your work; the project and its maintainers receive a perpetual license to use, modify, and distribute it as part of MosqueSteps.
Barak Allahu feek for helping make every step to the mosque count.
Built with faith and open-source technology. © 2026 MosqueSteps by ummah.build