Warning
This app is not ready for production. Large changes should be expected until a 1.0.0 version is released.
⛪ Church
A fully open-source church management app built on the Frappe Framework.
✨ Features
The following features have been implemented in this app (see the 🗺️ Roadmap below for future plans):
Church Persontracking- Define and track
Church Person Relationships- Define
Church Person Relation Types
- Define
- Define & track
Church Person Roles (i.e. board member, deacon, pastor, etc)
- Define and track
Church Familytracking- Track head of household (Set on
Church Personrecord)
- Track head of household (Set on
- Church module desk workspace with guided setup steps
- Event tracking
- Event types, details, basic attendance tracking & reporting
- Collection/donation tracking
- Donation entry with collection totals & split check support
- Bank reconciliation report
📥 Installation
To use this app, you must have a working Frappe environment. The easiest way to get a working Frappe environment is to use Frappe Cloud. For a few dollars per month you can run an instance in the cloud. To self-host an instance on a home pc or server, you can use frappe-manager to quickly setup a local frappe instance. Making a local instance of frappe accessible from outside of your network is currentlyl out of the scope of this project, but with some persistence and some technical expertise, it shouldn't be too difficult.
You can install this app using the bench CLI:
cd $PATH_TO_YOUR_BENCH
bench get-app $URL_OF_THIS_REPO --branch develop
bench install-app church
After the above installation and a WebUI reload, you should see the Church app installed when you view Help > About in the Frappe Desk.
🗺️ Roadmap
Hopefully this roadmap will help avoid too much scope creep and provide a sense of where this project is headed. The items below are listed in order of current priority.
- Collection Improvements
- Make collections submittable(?)
- Add Onboarding Tours
- Add 'Tutorial' button to each doctype form
- Fund Tracking
- Update fund balance after collection submission
- Add standard church website pages:
- About Us
- Home/Welcome
- Missions
- Beliefs/Statement of Faith
- Calendar
- Contact Us
- Add portal for
Church Persons- Show tracked giving
- Show tracked attendance
- Allow updating attendance status(?)
- Ministry tracking
- Auto add spouse to
Church Persons relationships - Event templating/recurrence
- Templating via
Church Event Typedefault values table(?)
- Templating via
🤝 Contributing
Contributions are very welcome! If you plan any large contributions, please let me know first so we can coordinate and make the chances of a merged pull-request more likely.
- Doctype Naming: I've generally been using a single fieldname for the doctype names when the records in the doctype have low chance of clashing. If there is a higher chance of clashing, I've been using multiple fields in the name along with a
{####}auto increment. The number of digits in the auto-increment are just sane values that should never be exceeded. I then specify the Title Field in the View Settings, and check theShow Title in LInk Fieldsoption. This mostly hides the autonumber name from the user and lets the user only see the not-so-confusing name specified in theTitle Field(sometimes I create a custom field to concatenate values - since theTitle Fieldcannot take multiple fields at once afaik.)
Pre-Commit
This app uses pre-commit for code formatting and linting. Please install pre-commit and enable it for this repository:
cd apps/church
pre-commit install
Pre-commit is configured to use the following tools for checking and formatting your code:
- ruff
- eslint
- prettier
- pyupgrade
🔑 License
MIT
