We love to hear ideas from our users! It’s what makes this platform so great and versatile. If you have an idea to contribute, please take a few moments to share it with us!
The project welcomes, and depends on, contributions from developers and users in the open source community. Contributions can be made in several ways. A few examples are:
- Code patches via pull requests
- Documentation improvements
- Bug reports and patch reviews
First Steps
- Read this whole page “top to bottom.”
- Make sure you have a GitHub account.
- Introduce yourself in the developer chat at Discord.
- Take a look at the Open Issues page. We’ve made it easy for beginners with the good first issue label — these are issues that should be relatively easy to fix.
- Have fun!
Setting Up Your Development Environment
Quick Start (Recommended)
🚀 GitHub Codespaces (Easiest):
- Click “Code” → “Codespaces” → “Create codespace on [branch]”
- Wait 2-3 minutes for automatic setup
- Open
http://localhostand login withadmin/changeme
🐳 VS Code Dev Containers:
- Install the “Dev Containers” extension in VS Code
- Open this repo in VS Code
- Click “Reopen in Container” when prompted
- Wait for setup to complete
🔧 DDEV (Local Docker-based):
- Install DDEV and Docker
- Clone the repo and run:
git clone https://github.com/ChurchCRM/CRM.git churchcrm cd churchcrm ddev start ddev setup-churchcrm - Open https://churchcrm.ddev.site and log in with
admin/changeme
See DDEV Setup below for full details and troubleshooting.
Manual Setup
If you prefer manual setup or the automatic options don’t work:
Install Prerequisites:
- Git (or GitHub Desktop)
- Node.js version 20+
- Docker
- PHP 8.4+ with extensions:
bcmath,curl,gd,gettext,iconv,mbstring,mysqli,pdo_mysql,sodium,zip,zliband the core extensions required by Composer:fileinfo,filter,session,PDO - Composer (PHP dependency manager)
Clone and Setup:
git clone https://github.com/your-username/ChurchCRM.git cd ChurchCRM ./scripts/setup-dev-environment.shAccess the Website:
- ChurchCRM: http://localhost/ (
admin/changeme) - MailHog: http://localhost:8025 (email testing)
- Adminer: http://localhost:8088 (database admin)
- ChurchCRM: http://localhost/ (
Troubleshooting
Common Issues:
- Port 80 conflicts: Stop other web servers or change Docker port mapping
- Docker build fails: Ensure Docker has 4GB+ memory allocated
- Services not starting: Run
npm run docker:dev:logsto check logs - Tests failing locally: Use
npm run docker:test:rebuildfor clean test environment - Missing PHP extensions: Use Docker containers - don’t build locally
- Database schema outdated: Run
npm run docker:test:restart:dbto refresh
DDEV Setup
DDEV is a Docker-based local development environment that gives you PHP, MariaDB, Node.js, HTTPS, and email testing with a single command.
Prerequisites
- Docker Desktop
- DDEV v1.22+
Quick Start
git clone https://github.com/ChurchCRM/CRM.git churchcrm
cd churchcrm
ddev start
ddev setup-churchcrm
ddev launch
Login: admin / changeme
Service URLs
| Service | URL |
|---|---|
| ChurchCRM | https://churchcrm.ddev.site |
| Mailpit | https://churchcrm.ddev.site:8025 |
| MySQL | ddev mysql |
Daily Workflow
ddev start # Start services
ddev stop # Stop services
ddev ssh # Shell access
ddev logs # View logs
Troubleshooting
| Problem | Solution |
|---|---|
ddev start fails | Ensure Docker is running: docker info |
| Config.php not created | Run ddev exec cp /var/www/html/.ddev/Config.ddev.php /var/www/html/src/Include/Config.php |
| Database empty | Re-import: ddev import-db --file=cypress/data/seed.sql |
Full DDEV docs: https://ddev.readthedocs.io
Development Standards
User Interface
ChurchCRM uses AdminLTE framework for the user interface. Follow these guidelines:
- Be familiar with AdminLTE
- Keep UI changes aligned with AdminLTE design principles
- Create modular, organized CSS files for custom styles
- Ensure responsive design across all screen sizes
Slim MVC Architecture
For new APIs and pages, follow the Slim MVC (Model-View-Controller) architecture.
Testing with Cypress
Use Cypress for end-to-end testing:
npm run test # Run all tests
npm run test:ui # Interactive testing
Test structure:
- API tests:
cypress/e2e/api/private/[feature]/[endpoint].spec.js - UI tests:
cypress/e2e/ui/[feature]/
Development Workflow
Branching:
git checkout -b feature-nameCode Standards:
- Follow existing coding standards
- Adhere to the style guide in
.github/copilot-instructions.md - Use descriptive commit messages
Testing:
- Write tests for your changes using Cypress
- Update documentation as needed
Pull Request Process:
git pull origin master git rebase master git push origin feature-name
Coding Standards
ChurchCRM maintains strict code quality standards:
- ✅ Database: Propel ORM mandatory (no raw SQL)
- ✅ HTML5: Bootstrap 4.6.2 CSS only
- ✅ Services: Business logic in Service classes
- ✅ PHP 8.4+: Explicit nullable types
- ✅ i18n: Wrap UI text with
gettext()ori18next.t()
For complete standards, see .github/copilot-instructions.md
Code of Conduct
Please adhere to the Code of Conduct in all interactions.
Thank you for your contribution!