From 5a36dbb9ed98acd5a803b8576b9b713473043e35 Mon Sep 17 00:00:00 2001 From: meichthys Date: Sat, 18 Oct 2025 02:26:01 +0000 Subject: [PATCH 01/25] Add photo to 'Getting Started' Workspace --- .../getting_started/getting_started.json | 11 ++- church/fixtures/custom_html_block.json | 13 +++ church/fixtures/dashboard_chart.json | 84 +++++++++--------- church/hooks.py | 4 + church/public/media/church_photo.jpg | Bin 0 -> 37654 bytes 5 files changed, 67 insertions(+), 45 deletions(-) create mode 100644 church/fixtures/custom_html_block.json create mode 100644 church/public/media/church_photo.jpg diff --git a/church/church_foundations/workspace/getting_started/getting_started.json b/church/church_foundations/workspace/getting_started/getting_started.json index e5168e4..2d966b9 100644 --- a/church/church_foundations/workspace/getting_started/getting_started.json +++ b/church/church_foundations/workspace/getting_started/getting_started.json @@ -1,8 +1,13 @@ { "charts": [], - "content": "[{\"id\":\"qv6aLVY432\",\"type\":\"header\",\"data\":{\"text\":\"\u2139\ufe0fAbout\",\"col\":12}},{\"id\":\"3y9XjWNIDH\",\"type\":\"paragraph\",\"data\":{\"text\":\"`Church` is a completely free and open-source church management application. \\\"Freely you have received; freely give. ~Jesus\\\"\",\"col\":12}},{\"id\":\"LypZM8WJbL\",\"type\":\"header\",\"data\":{\"text\":\"\ud83c\udf1fOverview\",\"col\":12}},{\"id\":\"72BkdyGGxD\",\"type\":\"paragraph\",\"data\":{\"text\":\"Workspaces: Each menu item to the left is called a 'Workspace'.
Custom workspaces can be created by clicking the `+New` button on the bottom right. Shortcuts, cards, graphs, notes, and other pieces of information can be added to your custom workspace. Keep in mind that custom workspaces are only visible to your user.\",\"col\":12}},{\"id\":\"nACFTYcDpg\",\"type\":\"paragraph\",\"data\":{\"text\":\"Navigation: To navigate the system you can use the following:
    \u2b05\ufe0f The sidebar items on the left will take you to a workspace for the given module
    \u2196\ufe0f Clicking on the icon on the top left will take you back to this workspace page.
    \u2197\ufe0f Using the search bar, you can search for different system items (i.e. Church Person, Church Collection, Church Information, etc)
          You can also enter the following patterns in the search:
            `New Church <Document>` - To Create a new document of the specified type (i.e. New Church Person)
            `Church <Document> List` - To show a list of existing documents of the specified type (i.e. Church Person List)\",\"col\":12}},{\"id\":\"NSqchc_eQ4\",\"type\":\"onboarding\",\"data\":{\"onboarding_name\":\"Church\",\"col\":12}},{\"id\":\"CHRf80k2is\",\"type\":\"header\",\"data\":{\"text\":\"\u2753FAQ\",\"col\":12}},{\"id\":\"rUk2y7CBCh\",\"type\":\"paragraph\",\"data\":{\"text\":\"Why is this free? Is there a catch?: There's no catch. The application is free in its entirety. The original developer was saddened to see businesses profiting off of a need for churches to be organized. The global church body should be able to support itself in all areas via the talents and generosity of it's members.

Can I customize the default options?: Yes, most drop-down lists should give you an option to 'Create New <Document>'. Clicking this option will allow you to add an additional option to the drop-down list for future use. In fact, the system is entirely customizable to the Administrator account, to the point where you can create new 'DocTypes', Reports, Workflows, Webpages, etc. If you have ideas for improvements that other churches could use, you can report them to our github
repository.\",\"col\":12}},{\"id\":\"42bOdD9xyC\",\"type\":\"header\",\"data\":{\"text\":\"\ud83c\udd98Support\",\"col\":12}},{\"id\":\"pJyhpxlSjA\",\"type\":\"paragraph\",\"data\":{\"text\":\"If you have issues or suggestions, please report them to the 'Church' Github repository.\",\"col\":12}},{\"id\":\"8fQ8usz33T\",\"type\":\"header\",\"data\":{\"text\":\"\ud83e\udd1dContribute\",\"col\":12}},{\"id\":\"dBcYsyF07e\",\"type\":\"paragraph\",\"data\":{\"text\":\"If you have technical expertise and would like to contribute to the development of this project, please join us on github.
If you would like to support the project financially, don't. Instead, pray for the developers and for the churches using the software.\",\"col\":12}},{\"id\":\"JQvQ237QXM\",\"type\":\"header\",\"data\":{\"text\":\"\ud83d\udce2Credits\",\"col\":12}},{\"id\":\"Fbdz2raOGi\",\"type\":\"paragraph\",\"data\":{\"text\":\"- All the contributors of this project. Thank You!
Frappe Framework - This application is built on top of this great open source software.
- Your IT Administrator - They set this application up for you!\",\"col\":12}}]", + "content": "[{\"id\":\"a0vkPmhn3y\",\"type\":\"custom_block\",\"data\":{\"custom_block_name\":\"Workspace Cover Photo\",\"col\":12}},{\"id\":\"qv6aLVY432\",\"type\":\"header\",\"data\":{\"text\":\"\u2139\ufe0fAbout\",\"col\":12}},{\"id\":\"3y9XjWNIDH\",\"type\":\"paragraph\",\"data\":{\"text\":\"`Church` is a completely free and open-source church management application. \\\"Freely you have received; freely give. ~Jesus\\\"\",\"col\":12}},{\"id\":\"LypZM8WJbL\",\"type\":\"header\",\"data\":{\"text\":\"\ud83c\udf1fOverview\",\"col\":12}},{\"id\":\"72BkdyGGxD\",\"type\":\"paragraph\",\"data\":{\"text\":\"Workspaces: Each menu item to the left is called a 'Workspace'.
Custom workspaces can be created by clicking the `+New` button on the bottom right. Shortcuts, cards, graphs, notes, and other pieces of information can be added to your custom workspace. Keep in mind that custom workspaces are only visible to your user.\",\"col\":12}},{\"id\":\"nACFTYcDpg\",\"type\":\"paragraph\",\"data\":{\"text\":\"Navigation: To navigate the system you can use the following:
    \u2b05\ufe0f The sidebar items on the left will take you to a workspace for the given module
    \u2196\ufe0f Clicking on the icon on the top left will take you back to this workspace page.
    \u2197\ufe0f Using the search bar, you can search for different system items (i.e. Church Person, Church Collection, Church Information, etc)
          You can also enter the following patterns in the search:
            `New Church <Document>` - To Create a new document of the specified type (i.e. New Church Person)
            `Church <Document> List` - To show a list of existing documents of the specified type (i.e. Church Person List)\",\"col\":12}},{\"id\":\"NSqchc_eQ4\",\"type\":\"onboarding\",\"data\":{\"onboarding_name\":\"Church\",\"col\":12}},{\"id\":\"CHRf80k2is\",\"type\":\"header\",\"data\":{\"text\":\"\u2753FAQ\",\"col\":12}},{\"id\":\"rUk2y7CBCh\",\"type\":\"paragraph\",\"data\":{\"text\":\"Why is this free? Is there a catch?: There's no catch. The application is free in its entirety. The original developer was saddened to see businesses profiting off of a need for churches to be organized. The global church body should be able to support itself in all areas via the talents and generosity of it's members.

Can I customize the default options?: Yes, most drop-down lists should give you an option to 'Create New <Document>'. Clicking this option will allow you to add an additional option to the drop-down list for future use. In fact, the system is entirely customizable to the Administrator account, to the point where you can create new 'DocTypes', Reports, Workflows, Webpages, etc. If you have ideas for improvements that other churches could use, you can report them to our github
repository.\",\"col\":12}},{\"id\":\"42bOdD9xyC\",\"type\":\"header\",\"data\":{\"text\":\"\ud83c\udd98Support\",\"col\":12}},{\"id\":\"pJyhpxlSjA\",\"type\":\"paragraph\",\"data\":{\"text\":\"If you have issues or suggestions, please report them to the 'Church' Github repository.\",\"col\":12}},{\"id\":\"8fQ8usz33T\",\"type\":\"header\",\"data\":{\"text\":\"\ud83e\udd1dContribute\",\"col\":12}},{\"id\":\"dBcYsyF07e\",\"type\":\"paragraph\",\"data\":{\"text\":\"If you have technical expertise and would like to contribute to the development of this project, please join us on github.
If you would like to support the project financially, don't. Instead, pray for the developers and for the churches using the software.\",\"col\":12}},{\"id\":\"JQvQ237QXM\",\"type\":\"header\",\"data\":{\"text\":\"\ud83d\udce2Credits\",\"col\":12}},{\"id\":\"Fbdz2raOGi\",\"type\":\"paragraph\",\"data\":{\"text\":\"- All the contributors of this project. Thank You!
Frappe Framework - This application is built on top of this great open source software.
- Your IT Administrator - They set this application up for you!\",\"col\":12}}]", "creation": "2025-08-22 00:39:02.127277", - "custom_blocks": [], + "custom_blocks": [ + { + "custom_block_name": "Workspace Cover Photo", + "label": "Workspace Cover Photo" + } + ], "docstatus": 0, "doctype": "Workspace", "for_user": "", @@ -13,7 +18,7 @@ "is_hidden": 0, "label": "Getting Started", "links": [], - "modified": "2025-10-03 23:11:34.746888", + "modified": "2025-10-17 22:22:48.358253", "modified_by": "Administrator", "module": "Church Foundations", "name": "Getting Started", diff --git a/church/fixtures/custom_html_block.json b/church/fixtures/custom_html_block.json new file mode 100644 index 0000000..6fb1553 --- /dev/null +++ b/church/fixtures/custom_html_block.json @@ -0,0 +1,13 @@ +[ + { + "docstatus": 0, + "doctype": "Custom HTML Block", + "html": "
\n \"Church\n
\n", + "modified": "2025-10-17 22:20:47.199689", + "name": "Church Cover Photo", + "private": 0, + "roles": [], + "script": null, + "style": null + } +] \ No newline at end of file diff --git a/church/fixtures/dashboard_chart.json b/church/fixtures/dashboard_chart.json index 96db9ea..4197dfe 100644 --- a/church/fixtures/dashboard_chart.json +++ b/church/fixtures/dashboard_chart.json @@ -18,7 +18,7 @@ "heatmap_year": null, "is_public": 0, "is_standard": 0, - "last_synced_on": "2025-10-10 23:32:52.886742", + "last_synced_on": "2025-10-17 22:05:17.219362", "modified": "2025-10-10 23:37:28.780115", "module": "Church People", "name": "Church Persons Count", @@ -57,7 +57,7 @@ "heatmap_year": null, "is_public": 1, "is_standard": 0, - "last_synced_on": "2025-10-10 23:32:52.891706", + "last_synced_on": "2025-10-17 22:05:17.261568", "modified": "2025-10-10 23:37:22.231188", "module": "Church People", "name": "Church Members Count (New by Month)", @@ -116,6 +116,45 @@ "x_field": null, "y_axis": [] }, + { + "aggregate_function_based_on": null, + "based_on": "modified", + "chart_name": "Church Prayer Requests (Answered)", + "chart_type": "Count", + "color": "#29CD42", + "currency": "USD", + "custom_options": null, + "docstatus": 0, + "doctype": "Dashboard Chart", + "document_type": "Church Prayer Request", + "dynamic_filters_json": "[]", + "filters_json": "[[\"Church Prayer Request\",\"status\",\"=\",\"Answered\",false]]", + "from_date": null, + "group_by_based_on": null, + "group_by_type": "Count", + "heatmap_year": null, + "is_public": 1, + "is_standard": 0, + "last_synced_on": "2025-10-10 23:13:16.387057", + "modified": "2025-10-10 23:37:35.790654", + "module": "Church Prayers", + "name": "Church Prayer Requests (Answered)", + "number_of_groups": 0, + "parent_document_type": "", + "report_name": null, + "roles": [], + "show_values_over_chart": 1, + "source": "", + "time_interval": "Daily", + "timeseries": 1, + "timespan": "Last Year", + "to_date": null, + "type": "Line", + "use_report_chart": 0, + "value_based_on": "", + "x_field": null, + "y_axis": [] + }, { "aggregate_function_based_on": null, "based_on": null, @@ -163,45 +202,6 @@ } ] }, - { - "aggregate_function_based_on": null, - "based_on": "modified", - "chart_name": "Church Prayer Requests (Answered)", - "chart_type": "Count", - "color": "#29CD42", - "currency": "USD", - "custom_options": null, - "docstatus": 0, - "doctype": "Dashboard Chart", - "document_type": "Church Prayer Request", - "dynamic_filters_json": "[]", - "filters_json": "[[\"Church Prayer Request\",\"status\",\"=\",\"Answered\",false]]", - "from_date": null, - "group_by_based_on": null, - "group_by_type": "Count", - "heatmap_year": null, - "is_public": 1, - "is_standard": 0, - "last_synced_on": "2025-10-10 23:13:16.387057", - "modified": "2025-10-10 23:37:35.790654", - "module": "Church Prayers", - "name": "Church Prayer Requests (Answered)", - "number_of_groups": 0, - "parent_document_type": "", - "report_name": null, - "roles": [], - "show_values_over_chart": 1, - "source": "", - "time_interval": "Daily", - "timeseries": 1, - "timespan": "Last Year", - "to_date": null, - "type": "Line", - "use_report_chart": 0, - "value_based_on": "", - "x_field": null, - "y_axis": [] - }, { "aggregate_function_based_on": null, "based_on": "creation", @@ -221,7 +221,7 @@ "heatmap_year": null, "is_public": 0, "is_standard": 0, - "last_synced_on": "2025-10-10 23:13:38.248896", + "last_synced_on": "2025-10-17 22:04:45.482703", "modified": "2025-10-10 23:36:55.818468", "module": "Church Finances", "name": "Church Collections Sum", diff --git a/church/hooks.py b/church/hooks.py index b11b807..951d54a 100644 --- a/church/hooks.py +++ b/church/hooks.py @@ -172,6 +172,10 @@ fixtures = [ "dt": "Custom DocPerm", "filters": [["role", "like", "Church%"]], }, + { + "dt": "Custom HTML Block", + "filters": [["name", "like", "Church%"]], + }, { "dt": "Dashboard Chart", "filters": [["module", "like", "Church%"]], diff --git a/church/public/media/church_photo.jpg b/church/public/media/church_photo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b74a2601cc174417ee519c60e6a08f290c4ceb25 GIT binary patch literal 37654 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 F{{S9&x>x`J literal 0 HcmV?d00001 From a622c40009b96ac8ed35eccc146806c8a765f2a7 Mon Sep 17 00:00:00 2001 From: meichthys Date: Sat, 18 Oct 2025 02:27:51 +0000 Subject: [PATCH 02/25] rename custom block --- .../workspace/getting_started/getting_started.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/church/church_foundations/workspace/getting_started/getting_started.json b/church/church_foundations/workspace/getting_started/getting_started.json index 2d966b9..51a3912 100644 --- a/church/church_foundations/workspace/getting_started/getting_started.json +++ b/church/church_foundations/workspace/getting_started/getting_started.json @@ -4,7 +4,7 @@ "creation": "2025-08-22 00:39:02.127277", "custom_blocks": [ { - "custom_block_name": "Workspace Cover Photo", + "custom_block_name": "Church Cover Photo", "label": "Workspace Cover Photo" } ], @@ -18,7 +18,7 @@ "is_hidden": 0, "label": "Getting Started", "links": [], - "modified": "2025-10-17 22:22:48.358253", + "modified": "2025-10-17 22:27:35.400181", "modified_by": "Administrator", "module": "Church Foundations", "name": "Getting Started", From 527b3d1041d9dd8c1515e39c3525999569622e3f Mon Sep 17 00:00:00 2001 From: meichthys Date: Sat, 18 Oct 2025 02:44:54 +0000 Subject: [PATCH 03/25] Add missing doctype permissions --- church/fixtures/custom_docperm.json | 268 ++++++++++++++++++++++++++- church/fixtures/dashboard_chart.json | 10 +- 2 files changed, 271 insertions(+), 7 deletions(-) diff --git a/church/fixtures/custom_docperm.json b/church/fixtures/custom_docperm.json index 9ec7f8a..841262e 100644 --- a/church/fixtures/custom_docperm.json +++ b/church/fixtures/custom_docperm.json @@ -15,8 +15,8 @@ "parent": "Church Fund", "permlevel": 0, "print": 0, - "read": 0, - "report": 0, + "read": 1, + "report": 1, "role": "Church User", "select": 0, "share": 0, @@ -1006,5 +1006,269 @@ "share": 0, "submit": 0, "write": 0 + }, + { + "amend": 1, + "cancel": 1, + "create": 1, + "delete": 1, + "docstatus": 0, + "doctype": "Custom DocPerm", + "email": 1, + "export": 1, + "if_owner": 0, + "import": 1, + "modified": "2025-10-17 22:31:12.309572", + "name": "lr3vbolu3j", + "parent": "Church Fund Transfer", + "permlevel": 0, + "print": 1, + "read": 1, + "report": 1, + "role": "Church Manager", + "select": 1, + "share": 1, + "submit": 1, + "write": 1 + }, + { + "amend": 0, + "cancel": 0, + "create": 1, + "delete": 1, + "docstatus": 0, + "doctype": "Custom DocPerm", + "email": 1, + "export": 1, + "if_owner": 0, + "import": 1, + "modified": "2025-10-17 22:32:55.097693", + "name": "mr6mngjc9o", + "parent": "Church Presentation", + "permlevel": 0, + "print": 1, + "read": 1, + "report": 1, + "role": "Church Manager", + "select": 1, + "share": 1, + "submit": 0, + "write": 1 + }, + { + "amend": 0, + "cancel": 0, + "create": 1, + "delete": 1, + "docstatus": 0, + "doctype": "Custom DocPerm", + "email": 1, + "export": 1, + "if_owner": 0, + "import": 1, + "modified": "2025-10-17 22:32:59.543690", + "name": "msjcb9rab6", + "parent": "Church Presentation", + "permlevel": 0, + "print": 1, + "read": 1, + "report": 1, + "role": "Church User", + "select": 1, + "share": 1, + "submit": 0, + "write": 1 + }, + { + "amend": 1, + "cancel": 1, + "create": 1, + "delete": 1, + "docstatus": 0, + "doctype": "Custom DocPerm", + "email": 1, + "export": 1, + "if_owner": 0, + "import": 1, + "modified": "2025-10-17 22:34:51.968262", + "name": "nvnur9ms1p", + "parent": "Church Expense", + "permlevel": 0, + "print": 1, + "read": 1, + "report": 1, + "role": "Church Manager", + "select": 1, + "share": 1, + "submit": 1, + "write": 1 + }, + { + "amend": 0, + "cancel": 0, + "create": 0, + "delete": 0, + "docstatus": 0, + "doctype": "Custom DocPerm", + "email": 0, + "export": 0, + "if_owner": 0, + "import": 0, + "modified": "2025-10-17 22:35:22.244766", + "name": "o97gd5i1oj", + "parent": "Church Expense", + "permlevel": 0, + "print": 0, + "read": 1, + "report": 1, + "role": "Church User", + "select": 0, + "share": 0, + "submit": 0, + "write": 0 + }, + { + "amend": 0, + "cancel": 0, + "create": 1, + "delete": 1, + "docstatus": 0, + "doctype": "Custom DocPerm", + "email": 1, + "export": 1, + "if_owner": 0, + "import": 1, + "modified": "2025-10-17 22:38:50.701260", + "name": "qabj91dpl2", + "parent": "Church Expense Type", + "permlevel": 0, + "print": 1, + "read": 1, + "report": 1, + "role": "Church Manager", + "select": 1, + "share": 1, + "submit": 0, + "write": 1 + }, + { + "amend": 0, + "cancel": 0, + "create": 0, + "delete": 0, + "docstatus": 0, + "doctype": "Custom DocPerm", + "email": 0, + "export": 1, + "if_owner": 0, + "import": 0, + "modified": "2025-10-17 22:38:59.201459", + "name": "qd013fisep", + "parent": "Church Expense Type", + "permlevel": 0, + "print": 0, + "read": 1, + "report": 1, + "role": "Church User", + "select": 0, + "share": 0, + "submit": 0, + "write": 0 + }, + { + "amend": 0, + "cancel": 0, + "create": 1, + "delete": 1, + "docstatus": 0, + "doctype": "Custom DocPerm", + "email": 1, + "export": 1, + "if_owner": 0, + "import": 1, + "modified": "2025-10-17 22:40:50.456395", + "name": "rfoe2lsqf3", + "parent": "Church Song", + "permlevel": 0, + "print": 1, + "read": 1, + "report": 1, + "role": "Church Manager", + "select": 1, + "share": 1, + "submit": 0, + "write": 1 + }, + { + "amend": 0, + "cancel": 0, + "create": 1, + "delete": 1, + "docstatus": 0, + "doctype": "Custom DocPerm", + "email": 1, + "export": 1, + "if_owner": 0, + "import": 1, + "modified": "2025-10-17 22:40:54.163149", + "name": "rgucfj6rl2", + "parent": "Church Song", + "permlevel": 0, + "print": 1, + "read": 1, + "report": 1, + "role": "Church User", + "select": 1, + "share": 1, + "submit": 0, + "write": 1 + }, + { + "amend": 0, + "cancel": 0, + "create": 0, + "delete": 0, + "docstatus": 0, + "doctype": "Custom DocPerm", + "email": 0, + "export": 1, + "if_owner": 1, + "import": 0, + "modified": "2025-10-17 22:42:25.608969", + "name": "sdgfus8erm", + "parent": "Church Prayer", + "permlevel": 0, + "print": 0, + "read": 1, + "report": 0, + "role": "Church User", + "select": 0, + "share": 0, + "submit": 0, + "write": 0 + }, + { + "amend": 0, + "cancel": 0, + "create": 1, + "delete": 1, + "docstatus": 0, + "doctype": "Custom DocPerm", + "email": 1, + "export": 1, + "if_owner": 0, + "import": 1, + "modified": "2025-10-17 22:42:30.096276", + "name": "setuee45j6", + "parent": "Church Prayer", + "permlevel": 0, + "print": 1, + "read": 1, + "report": 1, + "role": "Church Manager", + "select": 1, + "share": 1, + "submit": 0, + "write": 1 } ] \ No newline at end of file diff --git a/church/fixtures/dashboard_chart.json b/church/fixtures/dashboard_chart.json index 4197dfe..1e39940 100644 --- a/church/fixtures/dashboard_chart.json +++ b/church/fixtures/dashboard_chart.json @@ -18,7 +18,7 @@ "heatmap_year": null, "is_public": 0, "is_standard": 0, - "last_synced_on": "2025-10-17 22:05:17.219362", + "last_synced_on": "2025-10-17 22:41:54.579950", "modified": "2025-10-10 23:37:28.780115", "module": "Church People", "name": "Church Persons Count", @@ -57,7 +57,7 @@ "heatmap_year": null, "is_public": 1, "is_standard": 0, - "last_synced_on": "2025-10-17 22:05:17.261568", + "last_synced_on": "2025-10-17 22:41:54.565369", "modified": "2025-10-10 23:37:22.231188", "module": "Church People", "name": "Church Members Count (New by Month)", @@ -96,7 +96,7 @@ "heatmap_year": null, "is_public": 1, "is_standard": 0, - "last_synced_on": "2025-10-10 23:13:16.383988", + "last_synced_on": "2025-10-17 22:43:14.925228", "modified": "2025-10-10 23:37:40.094794", "module": "Church Prayers", "name": "Church Prayer Request Count (Active)", @@ -135,7 +135,7 @@ "heatmap_year": null, "is_public": 1, "is_standard": 0, - "last_synced_on": "2025-10-10 23:13:16.387057", + "last_synced_on": "2025-10-17 22:43:14.934952", "modified": "2025-10-10 23:37:35.790654", "module": "Church Prayers", "name": "Church Prayer Requests (Answered)", @@ -221,7 +221,7 @@ "heatmap_year": null, "is_public": 0, "is_standard": 0, - "last_synced_on": "2025-10-17 22:04:45.482703", + "last_synced_on": "2025-10-17 22:36:37.258293", "modified": "2025-10-10 23:36:55.818468", "module": "Church Finances", "name": "Church Collections Sum", From d54f1151769f8a8935db19144833c6ac3dd8653b Mon Sep 17 00:00:00 2001 From: meichthys Date: Sat, 18 Oct 2025 02:52:37 +0000 Subject: [PATCH 04/25] add freely_given badge --- README.md | 2 + church/public/media/freely_given.svg | 133 +++++++++++++++++++++++++++ 2 files changed, 135 insertions(+) create mode 100644 church/public/media/freely_given.svg diff --git a/README.md b/README.md index 15b2fd8..07c3373 100644 --- a/README.md +++ b/README.md @@ -152,3 +152,5 @@ Pre-commit is configured to use the following tools for checking and formatting # 🔑 License MIT + +![Freely given](church/public/media/freely_given.svg) diff --git a/church/public/media/freely_given.svg b/church/public/media/freely_given.svg new file mode 100644 index 0000000..df00e2b --- /dev/null +++ b/church/public/media/freely_given.svg @@ -0,0 +1,133 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 4fb8b67b371ef152124a494785b2258bcd85e3cb Mon Sep 17 00:00:00 2001 From: meichthys Date: Sat, 18 Oct 2025 02:57:12 +0000 Subject: [PATCH 05/25] Add note for license --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 07c3373..64f308f 100644 --- a/README.md +++ b/README.md @@ -149,8 +149,8 @@ Pre-commit is configured to use the following tools for checking and formatting - prettier - pyupgrade -# 🔑 License +# 🔑 License: MIT -MIT +>You can copy, translate, modify, and distribute this resource, without restriction, and without needing to ask permission. This resource is freely given (Matt 10:8) for the sake of the gospel. -![Freely given](church/public/media/freely_given.svg) +![Freely given](church/public/media/freely_given.svg) \ No newline at end of file From 711d1c43bea41ffa026a451789d05ae4d7d83d16 Mon Sep 17 00:00:00 2001 From: meichthys Date: Sat, 18 Oct 2025 03:23:52 +0000 Subject: [PATCH 06/25] Update readme with matrix chat links. Resolves Setup support system Fixes #43 --- README.md | 21 +++++---------------- 1 file changed, 5 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index 64f308f..2c34fa1 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,5 @@ +![Matrix](https://img.shields.io/matrix/the-church-app%3Amatrix.org?label=Matrix%20Chat) ![GitHub License](https://img.shields.io/github/license/meichthys/church) ![GitHub contributors](https://img.shields.io/github/contributors/meichthys/church) ![GitHub last commit](https://img.shields.io/github/last-commit/meichthys/church) + > [!WARNING] > This app is not ready for production. Large changes should be expected until a 1.0.0 version is released. @@ -117,6 +119,9 @@ Hopefully this roadmap will help avoid too much scope creep and provide a sense - Add 'Tutorial' button to each doctype form - [Email setup](https://github.com/meichthys/church/issues/32) +# 🆘 Support +If you need help setting up the app or configuring it, you can reach out in our [Matrix Chat](https://matrix.to/#/#the-church-app:matrix.org). + # 🤝 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. @@ -133,22 +138,6 @@ Contributions are very welcome! If you plan any large contributions, please let - If necessary, add an onboarding step & form tour to explain specific fields. - If any default records for this doctype should be shipped with the app, add fixtures for them in `hooks.py`. -## Pre-Commit - -This app uses `pre-commit` for code formatting and linting. Please [install pre-commit](https://pre-commit.com/#installation) and enable it for this repository: - -```bash -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 >You can copy, translate, modify, and distribute this resource, without restriction, and without needing to ask permission. This resource is freely given (Matt 10:8) for the sake of the gospel. From c8c6ea68a914ed1fa6a1b75cc6352bea436e3e97 Mon Sep 17 00:00:00 2001 From: meichthys Date: Sat, 18 Oct 2025 03:26:04 +0000 Subject: [PATCH 07/25] add matrix link to getting started workspace --- .../workspace/getting_started/getting_started.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/church/church_foundations/workspace/getting_started/getting_started.json b/church/church_foundations/workspace/getting_started/getting_started.json index 51a3912..03fdf7b 100644 --- a/church/church_foundations/workspace/getting_started/getting_started.json +++ b/church/church_foundations/workspace/getting_started/getting_started.json @@ -1,6 +1,6 @@ { "charts": [], - "content": "[{\"id\":\"a0vkPmhn3y\",\"type\":\"custom_block\",\"data\":{\"custom_block_name\":\"Workspace Cover Photo\",\"col\":12}},{\"id\":\"qv6aLVY432\",\"type\":\"header\",\"data\":{\"text\":\"\u2139\ufe0fAbout\",\"col\":12}},{\"id\":\"3y9XjWNIDH\",\"type\":\"paragraph\",\"data\":{\"text\":\"`Church` is a completely free and open-source church management application. \\\"Freely you have received; freely give. ~Jesus\\\"\",\"col\":12}},{\"id\":\"LypZM8WJbL\",\"type\":\"header\",\"data\":{\"text\":\"\ud83c\udf1fOverview\",\"col\":12}},{\"id\":\"72BkdyGGxD\",\"type\":\"paragraph\",\"data\":{\"text\":\"Workspaces: Each menu item to the left is called a 'Workspace'.
Custom workspaces can be created by clicking the `+New` button on the bottom right. Shortcuts, cards, graphs, notes, and other pieces of information can be added to your custom workspace. Keep in mind that custom workspaces are only visible to your user.\",\"col\":12}},{\"id\":\"nACFTYcDpg\",\"type\":\"paragraph\",\"data\":{\"text\":\"Navigation: To navigate the system you can use the following:
    \u2b05\ufe0f The sidebar items on the left will take you to a workspace for the given module
    \u2196\ufe0f Clicking on the icon on the top left will take you back to this workspace page.
    \u2197\ufe0f Using the search bar, you can search for different system items (i.e. Church Person, Church Collection, Church Information, etc)
          You can also enter the following patterns in the search:
            `New Church <Document>` - To Create a new document of the specified type (i.e. New Church Person)
            `Church <Document> List` - To show a list of existing documents of the specified type (i.e. Church Person List)\",\"col\":12}},{\"id\":\"NSqchc_eQ4\",\"type\":\"onboarding\",\"data\":{\"onboarding_name\":\"Church\",\"col\":12}},{\"id\":\"CHRf80k2is\",\"type\":\"header\",\"data\":{\"text\":\"\u2753FAQ\",\"col\":12}},{\"id\":\"rUk2y7CBCh\",\"type\":\"paragraph\",\"data\":{\"text\":\"Why is this free? Is there a catch?: There's no catch. The application is free in its entirety. The original developer was saddened to see businesses profiting off of a need for churches to be organized. The global church body should be able to support itself in all areas via the talents and generosity of it's members.

Can I customize the default options?: Yes, most drop-down lists should give you an option to 'Create New <Document>'. Clicking this option will allow you to add an additional option to the drop-down list for future use. In fact, the system is entirely customizable to the Administrator account, to the point where you can create new 'DocTypes', Reports, Workflows, Webpages, etc. If you have ideas for improvements that other churches could use, you can report them to our github
repository.\",\"col\":12}},{\"id\":\"42bOdD9xyC\",\"type\":\"header\",\"data\":{\"text\":\"\ud83c\udd98Support\",\"col\":12}},{\"id\":\"pJyhpxlSjA\",\"type\":\"paragraph\",\"data\":{\"text\":\"If you have issues or suggestions, please report them to the 'Church' Github repository.\",\"col\":12}},{\"id\":\"8fQ8usz33T\",\"type\":\"header\",\"data\":{\"text\":\"\ud83e\udd1dContribute\",\"col\":12}},{\"id\":\"dBcYsyF07e\",\"type\":\"paragraph\",\"data\":{\"text\":\"If you have technical expertise and would like to contribute to the development of this project, please join us on github.
If you would like to support the project financially, don't. Instead, pray for the developers and for the churches using the software.\",\"col\":12}},{\"id\":\"JQvQ237QXM\",\"type\":\"header\",\"data\":{\"text\":\"\ud83d\udce2Credits\",\"col\":12}},{\"id\":\"Fbdz2raOGi\",\"type\":\"paragraph\",\"data\":{\"text\":\"- All the contributors of this project. Thank You!
Frappe Framework - This application is built on top of this great open source software.
- Your IT Administrator - They set this application up for you!\",\"col\":12}}]", + "content": "[{\"id\":\"a0vkPmhn3y\",\"type\":\"custom_block\",\"data\":{\"custom_block_name\":\"Workspace Cover Photo\",\"col\":12}},{\"id\":\"qv6aLVY432\",\"type\":\"header\",\"data\":{\"text\":\"\u2139\ufe0fAbout\",\"col\":12}},{\"id\":\"3y9XjWNIDH\",\"type\":\"paragraph\",\"data\":{\"text\":\"`Church` is a completely free and open-source church management application. \\\"Freely you have received; freely give. ~Jesus\\\"\",\"col\":12}},{\"id\":\"LypZM8WJbL\",\"type\":\"header\",\"data\":{\"text\":\"\ud83c\udf1fOverview\",\"col\":12}},{\"id\":\"72BkdyGGxD\",\"type\":\"paragraph\",\"data\":{\"text\":\"Workspaces: Each menu item to the left is called a 'Workspace'.
Custom workspaces can be created by clicking the `+New` button on the bottom right. Shortcuts, cards, graphs, notes, and other pieces of information can be added to your custom workspace. Keep in mind that custom workspaces are only visible to your user.\",\"col\":12}},{\"id\":\"nACFTYcDpg\",\"type\":\"paragraph\",\"data\":{\"text\":\"Navigation: To navigate the system you can use the following:
    \u2b05\ufe0f The sidebar items on the left will take you to a workspace for the given module
    \u2196\ufe0f Clicking on the icon on the top left will take you back to this workspace page.
    \u2197\ufe0f Using the search bar, you can search for different system items (i.e. Church Person, Church Collection, Church Information, etc)
          You can also enter the following patterns in the search:
            `New Church <Document>` - To Create a new document of the specified type (i.e. New Church Person)
            `Church <Document> List` - To show a list of existing documents of the specified type (i.e. Church Person List)\",\"col\":12}},{\"id\":\"NSqchc_eQ4\",\"type\":\"onboarding\",\"data\":{\"onboarding_name\":\"Church\",\"col\":12}},{\"id\":\"CHRf80k2is\",\"type\":\"header\",\"data\":{\"text\":\"\u2753FAQ\",\"col\":12}},{\"id\":\"rUk2y7CBCh\",\"type\":\"paragraph\",\"data\":{\"text\":\"Why is this free? Is there a catch?: There's no catch. The application is free in its entirety. The original developer was saddened to see businesses profiting off of a need for churches to be organized. The global church body should be able to support itself in all areas via the talents and generosity of it's members.

Can I customize the default options?: Yes, most drop-down lists should give you an option to 'Create New <Document>'. Clicking this option will allow you to add an additional option to the drop-down list for future use. In fact, the system is entirely customizable to the Administrator account, to the point where you can create new 'DocTypes', Reports, Workflows, Webpages, etc. If you have ideas for improvements that other churches could use, you can report them to our github
repository.\",\"col\":12}},{\"id\":\"42bOdD9xyC\",\"type\":\"header\",\"data\":{\"text\":\"\ud83c\udd98Support\",\"col\":12}},{\"id\":\"pJyhpxlSjA\",\"type\":\"paragraph\",\"data\":{\"text\":\"If you have issues or suggestions, please report them to the 'Church' GitHub repository.
If you need help, connect with us on our Matrix Chat.\",\"col\":12}},{\"id\":\"8fQ8usz33T\",\"type\":\"header\",\"data\":{\"text\":\"\ud83e\udd1dContribute\",\"col\":12}},{\"id\":\"dBcYsyF07e\",\"type\":\"paragraph\",\"data\":{\"text\":\"If you have technical expertise and would like to contribute to the development of this project, please join us on github.
If you would like to support the project financially, don't. Instead, pray for the developers and for the churches using the software.\",\"col\":12}},{\"id\":\"JQvQ237QXM\",\"type\":\"header\",\"data\":{\"text\":\"\ud83d\udce2Credits\",\"col\":12}},{\"id\":\"Fbdz2raOGi\",\"type\":\"paragraph\",\"data\":{\"text\":\"- All the contributors of this project. Thank You!
Frappe Framework - This application is built on top of this great open source software.
- Your IT Administrator - They set this application up for you!\",\"col\":12}}]", "creation": "2025-08-22 00:39:02.127277", "custom_blocks": [ { @@ -18,7 +18,7 @@ "is_hidden": 0, "label": "Getting Started", "links": [], - "modified": "2025-10-17 22:27:35.400181", + "modified": "2025-10-17 23:25:48.055914", "modified_by": "Administrator", "module": "Church Foundations", "name": "Getting Started", From 575d0933c025f118236ac5ddaf10518a12d3691f Mon Sep 17 00:00:00 2001 From: meichthys Date: Sat, 18 Oct 2025 03:29:05 +0000 Subject: [PATCH 08/25] make matrix and lisence badges linked --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 2c34fa1..a80a35b 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -![Matrix](https://img.shields.io/matrix/the-church-app%3Amatrix.org?label=Matrix%20Chat) ![GitHub License](https://img.shields.io/github/license/meichthys/church) ![GitHub contributors](https://img.shields.io/github/contributors/meichthys/church) ![GitHub last commit](https://img.shields.io/github/last-commit/meichthys/church) +[![Matrix](https://img.shields.io/matrix/the-church-app%3Amatrix.org?label=Matrix%20Chat)](https://matrix.to/#/#the-church-app:matrix.org) [![GitHub License](https://img.shields.io/github/license/meichthys/church)](https://github.com/meichthys/church?tab=readme-ov-file#-license-mit) ![GitHub contributors](https://img.shields.io/github/contributors/meichthys/church) ![GitHub last commit](https://img.shields.io/github/last-commit/meichthys/church) > [!WARNING] > This app is not ready for production. Large changes should be expected until a 1.0.0 version is released. From f727000915ce033259daa795e9f6ef1215552ddc Mon Sep 17 00:00:00 2001 From: meichthys Date: Sat, 18 Oct 2025 03:50:54 +0000 Subject: [PATCH 09/25] remove fund customization --- .../church_finances/custom/church_fund.json | 92 ------------------- 1 file changed, 92 deletions(-) delete mode 100644 church/church_finances/custom/church_fund.json diff --git a/church/church_finances/custom/church_fund.json b/church/church_finances/custom/church_fund.json deleted file mode 100644 index 8745973..0000000 --- a/church/church_finances/custom/church_fund.json +++ /dev/null @@ -1,92 +0,0 @@ -{ - "custom_fields": [], - "custom_perms": [ - { - "_assign": null, - "_comments": null, - "_liked_by": null, - "_user_tags": null, - "amend": 0, - "cancel": 0, - "create": 1, - "creation": "2025-09-30 21:47:23.826602", - "delete": 1, - "docstatus": 0, - "email": 1, - "export": 1, - "idx": 0, - "if_owner": 0, - "import": 1, - "modified": "2025-09-30 21:47:23.826602", - "modified_by": "Administrator", - "name": "kdm4rn17ce", - "owner": "Administrator", - "parent": "Church Fund", - "permlevel": 0, - "print": 1, - "read": 1, - "report": 1, - "role": "Church Manager", - "select": 1, - "share": 1, - "submit": 0, - "write": 1 - }, - { - "_assign": null, - "_comments": null, - "_liked_by": null, - "_user_tags": null, - "amend": 0, - "cancel": 0, - "create": 0, - "creation": "2025-09-26 23:06:43.941404", - "delete": 0, - "docstatus": 0, - "email": 0, - "export": 0, - "idx": 0, - "if_owner": 0, - "import": 0, - "modified": "2025-09-19 00:08:46.427725", - "modified_by": "Administrator", - "name": "q8iho1g2s6", - "owner": "Administrator", - "parent": "Church Fund", - "permlevel": 0, - "print": 0, - "read": 0, - "report": 0, - "role": "Church User", - "select": 0, - "share": 0, - "submit": 0, - "write": 0 - } - ], - "doctype": "Church Fund", - "links": [ - { - "creation": "2025-09-02 01:11:30.383380", - "custom": 0, - "docstatus": 0, - "group": null, - "hidden": 0, - "idx": 1, - "is_child_table": 0, - "link_doctype": "Church Collection", - "link_fieldname": "fund", - "modified": "2025-09-26 23:06:33.331651", - "modified_by": "Administrator", - "name": "jptl8mpt67", - "owner": "Administrator", - "parent": "Church Fund", - "parent_doctype": null, - "parentfield": "links", - "parenttype": "DocType", - "table_fieldname": "donations" - } - ], - "property_setters": [], - "sync_on_migrate": 1 -} \ No newline at end of file From ea3a2b9be5cbd04fd12b9ed3357d56f9fb56db90 Mon Sep 17 00:00:00 2001 From: meichthys Date: Tue, 21 Oct 2025 05:02:11 +0000 Subject: [PATCH 10/25] Updated workspaces to start including manual for each module(workspace). --- .../communications/communications.json | 4 +- .../manual:_communications.json | 69 +++++++++++++++++++ .../workspace/finances/finances.json | 4 +- .../getting_started/getting_started.json | 21 +++--- .../workspace/support/support.json | 29 ++++++++ .../workspace/welcome/welcome.json | 34 +++++++++ .../workspace/ministries/ministries.json | 4 +- .../church_missionary_letters.json | 16 +++-- .../workspace/missions/missions.json | 4 +- .../workspace/people/people.json | 4 +- .../workspace/prayers/prayers.json | 4 +- .../church_study/workspace/study/study.json | 4 +- 12 files changed, 165 insertions(+), 32 deletions(-) create mode 100644 church/church_communications/workspace/manual:_communications/manual:_communications.json create mode 100644 church/church_foundations/workspace/support/support.json create mode 100644 church/church_foundations/workspace/welcome/welcome.json diff --git a/church/church_communications/workspace/communications/communications.json b/church/church_communications/workspace/communications/communications.json index e6ab5c4..f743e0e 100644 --- a/church/church_communications/workspace/communications/communications.json +++ b/church/church_communications/workspace/communications/communications.json @@ -111,7 +111,7 @@ "type": "Link" } ], - "modified": "2025-10-10 23:12:46.824922", + "modified": "2025-10-20 23:30:26.486770", "modified_by": "Administrator", "module": "Church Communications", "name": "Communications", @@ -121,7 +121,7 @@ "public": 1, "quick_lists": [], "roles": [], - "sequence_id": 2.0, + "sequence_id": 4.0, "shortcuts": [], "title": "Communications" } \ No newline at end of file diff --git a/church/church_communications/workspace/manual:_communications/manual:_communications.json b/church/church_communications/workspace/manual:_communications/manual:_communications.json new file mode 100644 index 0000000..b00280c --- /dev/null +++ b/church/church_communications/workspace/manual:_communications/manual:_communications.json @@ -0,0 +1,69 @@ +{ + "charts": [], + "content": "[{\"id\":\"nnvMTG5Sl5\",\"type\":\"paragraph\",\"data\":{\"text\":\"\u2709\ufe0fCommunications Manual\",\"col\":12}},{\"id\":\"B-CtTCmVDX\",\"type\":\"paragraph\",\"data\":{\"text\":\"The communications module contains features related to personal interactions within (and without) the church.\",\"col\":12}},{\"id\":\"w8oEjl0tNc\",\"type\":\"paragraph\",\"data\":{\"text\":\"\ud83d\udcddLetters\",\"col\":12}},{\"id\":\"3Bta1pYT8D\",\"type\":\"paragraph\",\"data\":{\"text\":\"Letters received by the church can be entered in the app for archival or reference purposes.
Example Workflow:
1. Missionary Mike sends a prayer letter that he would like read to the church.
2. The Church Secretary receives the letter, navigates to `Missions > Missionaries > Missionary Mike > Letters to the Church` and adds the letter to the Missionary Mike document making note that the letter should be read to the church.
3. Before the next church service, the Pastor runs the `Missions > Letters` report and filters by 'Share w/ Church` to see which letters need to be read.
4. The letters are added to the `Church Event Schedule` for the next `Church Event` (Service).
5. Missionary Mike's `Missionary` document can be updated with a date to show that the letter was read to the church.\",\"col\":12}}]", + "creation": "2025-10-20 23:16:06.520964", + "custom_blocks": [], + "docstatus": 0, + "doctype": "Workspace", + "for_user": "", + "hide_custom": 0, + "icon": "mail", + "idx": 0, + "indicator_color": "", + "is_hidden": 0, + "label": "Manual: Communications", + "links": [ + { + "hidden": 0, + "is_query_report": 0, + "label": "Letter Reports", + "link_count": 3, + "link_type": "DocType", + "onboard": 0, + "type": "Card Break" + }, + { + "hidden": 0, + "is_query_report": 1, + "label": "Missionary Letters", + "link_count": 0, + "link_to": "Church Missionary Letters", + "link_type": "Report", + "onboard": 0, + "type": "Link" + }, + { + "hidden": 0, + "is_query_report": 1, + "label": "Person Letters", + "link_count": 0, + "link_to": "Church Person Letters", + "link_type": "Report", + "onboard": 0, + "type": "Link" + }, + { + "hidden": 0, + "is_query_report": 1, + "label": "Letters Not Yet Shared With Curch", + "link_count": 0, + "link_to": "Church Letters To Be Shared", + "link_type": "Report", + "onboard": 0, + "type": "Link" + } + ], + "modified": "2025-10-21 01:00:40.456443", + "modified_by": "Administrator", + "module": "Church Communications", + "name": "Manual: Communications", + "number_cards": [], + "owner": "Administrator", + "parent_page": "Communications", + "public": 1, + "quick_lists": [], + "roles": [], + "sequence_id": 5.0, + "shortcuts": [], + "title": "Manual: Communications" +} \ No newline at end of file diff --git a/church/church_finances/workspace/finances/finances.json b/church/church_finances/workspace/finances/finances.json index 8d96a20..bf90e1d 100644 --- a/church/church_finances/workspace/finances/finances.json +++ b/church/church_finances/workspace/finances/finances.json @@ -190,7 +190,7 @@ "type": "Link" } ], - "modified": "2025-10-10 22:24:23.072221", + "modified": "2025-10-20 23:30:26.564552", "modified_by": "Administrator", "module": "Church Finances", "name": "Finances", @@ -200,7 +200,7 @@ "public": 1, "quick_lists": [], "roles": [], - "sequence_id": 3.0, + "sequence_id": 6.0, "shortcuts": [], "title": "Finances" } \ No newline at end of file diff --git a/church/church_foundations/workspace/getting_started/getting_started.json b/church/church_foundations/workspace/getting_started/getting_started.json index 03fdf7b..ed05170 100644 --- a/church/church_foundations/workspace/getting_started/getting_started.json +++ b/church/church_foundations/workspace/getting_started/getting_started.json @@ -1,34 +1,29 @@ { "charts": [], - "content": "[{\"id\":\"a0vkPmhn3y\",\"type\":\"custom_block\",\"data\":{\"custom_block_name\":\"Workspace Cover Photo\",\"col\":12}},{\"id\":\"qv6aLVY432\",\"type\":\"header\",\"data\":{\"text\":\"\u2139\ufe0fAbout\",\"col\":12}},{\"id\":\"3y9XjWNIDH\",\"type\":\"paragraph\",\"data\":{\"text\":\"`Church` is a completely free and open-source church management application. \\\"Freely you have received; freely give. ~Jesus\\\"\",\"col\":12}},{\"id\":\"LypZM8WJbL\",\"type\":\"header\",\"data\":{\"text\":\"\ud83c\udf1fOverview\",\"col\":12}},{\"id\":\"72BkdyGGxD\",\"type\":\"paragraph\",\"data\":{\"text\":\"Workspaces: Each menu item to the left is called a 'Workspace'.
Custom workspaces can be created by clicking the `+New` button on the bottom right. Shortcuts, cards, graphs, notes, and other pieces of information can be added to your custom workspace. Keep in mind that custom workspaces are only visible to your user.\",\"col\":12}},{\"id\":\"nACFTYcDpg\",\"type\":\"paragraph\",\"data\":{\"text\":\"Navigation: To navigate the system you can use the following:
    \u2b05\ufe0f The sidebar items on the left will take you to a workspace for the given module
    \u2196\ufe0f Clicking on the icon on the top left will take you back to this workspace page.
    \u2197\ufe0f Using the search bar, you can search for different system items (i.e. Church Person, Church Collection, Church Information, etc)
          You can also enter the following patterns in the search:
            `New Church <Document>` - To Create a new document of the specified type (i.e. New Church Person)
            `Church <Document> List` - To show a list of existing documents of the specified type (i.e. Church Person List)\",\"col\":12}},{\"id\":\"NSqchc_eQ4\",\"type\":\"onboarding\",\"data\":{\"onboarding_name\":\"Church\",\"col\":12}},{\"id\":\"CHRf80k2is\",\"type\":\"header\",\"data\":{\"text\":\"\u2753FAQ\",\"col\":12}},{\"id\":\"rUk2y7CBCh\",\"type\":\"paragraph\",\"data\":{\"text\":\"Why is this free? Is there a catch?: There's no catch. The application is free in its entirety. The original developer was saddened to see businesses profiting off of a need for churches to be organized. The global church body should be able to support itself in all areas via the talents and generosity of it's members.

Can I customize the default options?: Yes, most drop-down lists should give you an option to 'Create New <Document>'. Clicking this option will allow you to add an additional option to the drop-down list for future use. In fact, the system is entirely customizable to the Administrator account, to the point where you can create new 'DocTypes', Reports, Workflows, Webpages, etc. If you have ideas for improvements that other churches could use, you can report them to our github
repository.\",\"col\":12}},{\"id\":\"42bOdD9xyC\",\"type\":\"header\",\"data\":{\"text\":\"\ud83c\udd98Support\",\"col\":12}},{\"id\":\"pJyhpxlSjA\",\"type\":\"paragraph\",\"data\":{\"text\":\"If you have issues or suggestions, please report them to the 'Church' GitHub repository.
If you need help, connect with us on our Matrix Chat.\",\"col\":12}},{\"id\":\"8fQ8usz33T\",\"type\":\"header\",\"data\":{\"text\":\"\ud83e\udd1dContribute\",\"col\":12}},{\"id\":\"dBcYsyF07e\",\"type\":\"paragraph\",\"data\":{\"text\":\"If you have technical expertise and would like to contribute to the development of this project, please join us on github.
If you would like to support the project financially, don't. Instead, pray for the developers and for the churches using the software.\",\"col\":12}},{\"id\":\"JQvQ237QXM\",\"type\":\"header\",\"data\":{\"text\":\"\ud83d\udce2Credits\",\"col\":12}},{\"id\":\"Fbdz2raOGi\",\"type\":\"paragraph\",\"data\":{\"text\":\"- All the contributors of this project. Thank You!
Frappe Framework - This application is built on top of this great open source software.
- Your IT Administrator - They set this application up for you!\",\"col\":12}}]", - "creation": "2025-08-22 00:39:02.127277", - "custom_blocks": [ - { - "custom_block_name": "Church Cover Photo", - "label": "Workspace Cover Photo" - } - ], + "content": "[{\"id\":\"jBOqYlrUKi\",\"type\":\"header\",\"data\":{\"text\":\"Getting Started\",\"col\":12}},{\"id\":\"G96Ym-p_M3\",\"type\":\"onboarding\",\"data\":{\"onboarding_name\":\"Church\",\"col\":12}},{\"id\":\"-4rZfnKx88\",\"type\":\"paragraph\",\"data\":{\"text\":\"\ud83d\udd20Terminology\",\"col\":12}},{\"id\":\"DbBYvDiV8I\",\"type\":\"paragraph\",\"data\":{\"text\":\"- Workspace: Each menu item to the left is called a 'Workspace'. Workspaces show the Documents, Reports, and other ways you can with in the module.
- Module: A group of related functions in the app (i.e, Donations, Funds, Expenses).
- Document: Data that describes an object (i.e. Song, Fund, Person, etc). Documents are composed of pieces of data called 'Fields'. Documents are created via 'Forms' and can be viewed in a Document 'List' or Document 'Report'.
- Fields: Pieces of data that make up a document (i.e. Name, Age, etc). Fields with a red * are mandatory.
- Form: A way to enter data into the system. A form consists of any number of fields, that (when saved) create a document.
- List
: A view that shows documents in a vertical layout. You can view a list of any type of document by typing `DocumentName List` in the search bar at the top of the page.
- Report: A view that shows documents in an easy-to-filter view. Every column can be filtered individually. Additional filters and groupings can be added to easily retrieve a subset of documents.\",\"col\":12}},{\"id\":\"Yx5-uyqasy\",\"type\":\"paragraph\",\"data\":{\"text\":\"\ud83d\udcccGeneral App Tips\",\"col\":12}},{\"id\":\"oyG93LCEUd\",\"type\":\"paragraph\",\"data\":{\"text\":\"The general layout of the application is the same for most modules & documents. Once you learn how to interact with the system in one module, it will be almost identical in other modules. Some tips that will work across the application are:\",\"col\":12}},{\"id\":\"d9OEtT2hpG\",\"type\":\"paragraph\",\"data\":{\"text\":\"Awesome Bar (keyboard shortcut of `ctrl-g`)
The search bar at the top of the page is called the `Awesome Bar` because it can be used for many purposes:
\u2795 Creating a new document: (i.e. `New Church Person` to add a new church person into the app)
\ud83d\udccbListing all documents of a specific type: (i.e. `Church Person List` to show a list of existing church people)
\ud83d\udcc4Report of a specific document type: (i.e. `Church Person Report` \\nto show a filter-able and group-able report containing church people)
\ud83d\udd0dFind an individual document: (i.e. `Marjorie May` to search for this person. Most documents are searchable this way)\",\"col\":12}},{\"id\":\"MJLiY1t4dT\",\"type\":\"paragraph\",\"data\":{\"text\":\"Navigation
To navigate the system you can use the following:
\u2b05\ufe0f The sidebar items on the left will take you to a workspace for the given module
\u2196\ufe0f Clicking on the icon on the top left will take you back to the default workspace page.
\u2197\ufe0f Using the search bar, you can navigate to almost any page in the app.\",\"col\":12}},{\"id\":\"wDz7rjHAKG\",\"type\":\"paragraph\",\"data\":{\"text\":\"Keyboard Shortcuts
After using the app for a while, keyboard shortcuts can help speed up your workflow significantly. To view a list of keyboard shortcuts, click the `Help > Keyboard Shortcuts` at the top right of the page. Some common shortcuts that may be useful are:
\ud83d\udcbe `ctrl-s` Saves a loaded document/form
\ud83d\udccd`ctrl-j` Locates a specific field in a form
\ud83d\udd0d`ctrl-g` Focuses the AwesomeBar for quick access to almost any action in the app.
\ud83d\udd03`ctrl-shift-r` Reloads the page - Useful if something didn't seem to load correctly.\",\"col\":12}}]", + "creation": "2025-10-20 23:30:01.238945", + "custom_blocks": [], "docstatus": 0, "doctype": "Workspace", "for_user": "", "hide_custom": 0, - "icon": "church", + "icon": "quantity-1", "idx": 0, - "indicator_color": "", + "indicator_color": "green", "is_hidden": 0, "label": "Getting Started", "links": [], - "modified": "2025-10-17 23:25:48.055914", + "modified": "2025-10-21 01:00:49.815012", "modified_by": "Administrator", "module": "Church Foundations", "name": "Getting Started", "number_cards": [], "owner": "Administrator", - "parent_page": "", + "parent_page": "Welcome", "public": 1, "quick_lists": [], "roles": [], - "sequence_id": 1.0, + "sequence_id": 2.0, "shortcuts": [], "title": "Getting Started" } \ No newline at end of file diff --git a/church/church_foundations/workspace/support/support.json b/church/church_foundations/workspace/support/support.json new file mode 100644 index 0000000..5c3405f --- /dev/null +++ b/church/church_foundations/workspace/support/support.json @@ -0,0 +1,29 @@ +{ + "charts": [], + "content": "[{\"id\":\"42bOdD9xyC\",\"type\":\"header\",\"data\":{\"text\":\"\ud83c\udd98Support\",\"col\":12}},{\"id\":\"pJyhpxlSjA\",\"type\":\"paragraph\",\"data\":{\"text\":\"If you have issues or suggestions, please report them to the 'Church' GitHub repository.
If you need help, connect with us on our Matrix Chat\ud83d\udcac.\",\"col\":12}},{\"id\":\"CHRf80k2is\",\"type\":\"header\",\"data\":{\"text\":\"\u2753FAQ\",\"col\":12}},{\"id\":\"rUk2y7CBCh\",\"type\":\"paragraph\",\"data\":{\"text\":\"Why is this free? Is there a catch?: There's no catch. The application is free in its entirety (apart from hosting costs). The original developer was saddened to see businesses profiting off of a need for churches to be organized. The global church body should be able to support itself in all areas via the talents and generosity of it's members.

Can I customize the default drop-down options?: Yes, most drop-down lists should give you an option to 'Create New <Document>'. Clicking this option will allow you to add an additional option to the drop-down list for future use. In fact, the system is entirely customizable to the Administrator account, to the point where you can create new 'DocTypes', Reports, Workflows, Webpages, etc. If you have ideas for improvements that other churches could use, you can report them to our github
repository.\",\"col\":12}}]", + "creation": "2025-10-20 22:50:30.675476", + "custom_blocks": [], + "docstatus": 0, + "doctype": "Workspace", + "for_user": "", + "hide_custom": 0, + "icon": "help", + "idx": 0, + "indicator_color": "green", + "is_hidden": 0, + "label": "Support", + "links": [], + "modified": "2025-10-21 01:00:57.316779", + "modified_by": "Administrator", + "module": "Church Foundations", + "name": "Support", + "number_cards": [], + "owner": "Administrator", + "parent_page": "Welcome", + "public": 1, + "quick_lists": [], + "roles": [], + "sequence_id": 3.0, + "shortcuts": [], + "title": "Support" +} \ No newline at end of file diff --git a/church/church_foundations/workspace/welcome/welcome.json b/church/church_foundations/workspace/welcome/welcome.json new file mode 100644 index 0000000..622ed60 --- /dev/null +++ b/church/church_foundations/workspace/welcome/welcome.json @@ -0,0 +1,34 @@ +{ + "charts": [], + "content": "[{\"id\":\"a0vkPmhn3y\",\"type\":\"custom_block\",\"data\":{\"custom_block_name\":\"Workspace Cover Photo\",\"col\":12}},{\"id\":\"qv6aLVY432\",\"type\":\"header\",\"data\":{\"text\":\"\ud83d\udc4bWelcome\",\"col\":12}},{\"id\":\"3y9XjWNIDH\",\"type\":\"paragraph\",\"data\":{\"text\":\"Thank you for installing the `Church` app. `Church` is a completely free and open-source church management application that we hope will edify your church. We develop the application completely free of charge: \\\"Freely you have received; freely give. ~Jesus\\\"\",\"col\":12}},{\"id\":\"eyx_vzvkgN\",\"type\":\"paragraph\",\"data\":{\"text\":\"\ud83d\udc49To get started using the `Church` app, see the Getting Started page.\",\"col\":12}},{\"id\":\"Kh8eExzLKr\",\"type\":\"header\",\"data\":{\"text\":\"\ud83d\udcd8User Manual\",\"col\":12}},{\"id\":\"RubIh0IucA\",\"type\":\"paragraph\",\"data\":{\"text\":\"Each `Module` in the left hand menu has it's own help pages. If you need more help than what is provided there, see Support.\",\"col\":12}},{\"id\":\"8fQ8usz33T\",\"type\":\"header\",\"data\":{\"text\":\"\ud83e\udd1dContribute\",\"col\":12}},{\"id\":\"dBcYsyF07e\",\"type\":\"paragraph\",\"data\":{\"text\":\"If you have technical expertise and would like to contribute to the development of this project, please join us on github.
If you would like to support the project financially, don't. Instead, pray for the developers and for the churches using the software.\",\"col\":12}},{\"id\":\"JQvQ237QXM\",\"type\":\"header\",\"data\":{\"text\":\"\ud83d\udce2Credits\",\"col\":12}},{\"id\":\"Fbdz2raOGi\",\"type\":\"paragraph\",\"data\":{\"text\":\"- All the contributors of this project. Thank You!
Frappe Framework - This application is built on top of this great open source software.
- Your IT Administrator - They set this application up for you!\",\"col\":12}}]", + "creation": "2025-08-22 00:39:02.127277", + "custom_blocks": [ + { + "custom_block_name": "Church Cover Photo", + "label": "Workspace Cover Photo" + } + ], + "docstatus": 0, + "doctype": "Workspace", + "for_user": "", + "hide_custom": 0, + "icon": "church", + "idx": 0, + "indicator_color": "", + "is_hidden": 0, + "label": "Welcome", + "links": [], + "modified": "2025-10-20 23:37:55.386516", + "modified_by": "Administrator", + "module": "Church Foundations", + "name": "Welcome", + "number_cards": [], + "owner": "Administrator", + "parent_page": "", + "public": 1, + "quick_lists": [], + "roles": [], + "sequence_id": 1.0, + "shortcuts": [], + "title": "Welcome" +} \ No newline at end of file diff --git a/church/church_ministries/workspace/ministries/ministries.json b/church/church_ministries/workspace/ministries/ministries.json index b274313..a354d38 100644 --- a/church/church_ministries/workspace/ministries/ministries.json +++ b/church/church_ministries/workspace/ministries/ministries.json @@ -112,7 +112,7 @@ "type": "Link" } ], - "modified": "2025-10-10 23:03:25.100584", + "modified": "2025-10-20 23:30:26.611769", "modified_by": "Administrator", "module": "Church Ministries", "name": "Ministries", @@ -122,7 +122,7 @@ "public": 1, "quick_lists": [], "roles": [], - "sequence_id": 4.0, + "sequence_id": 7.0, "shortcuts": [], "title": "Ministries" } \ No newline at end of file diff --git a/church/church_missions/report/church_missionary_letters/church_missionary_letters.json b/church/church_missions/report/church_missionary_letters/church_missionary_letters.json index 3ed9e24..6657b2d 100644 --- a/church/church_missions/report/church_missionary_letters/church_missionary_letters.json +++ b/church/church_missions/report/church_missionary_letters/church_missionary_letters.json @@ -16,9 +16,9 @@ "width": 0 }, { - "fieldname": "read_to_church", + "fieldname": "share_with_church", "fieldtype": "Check", - "label": "Read to Church?", + "label": "Share w/ Church?", "width": 0 }, { @@ -39,6 +39,12 @@ "fieldtype": "Data", "label": "Content", "width": 0 + }, + { + "fieldname": "shared_date", + "fieldtype": "Date", + "label": "Shared Date", + "width": 0 } ], "creation": "2025-09-24 00:00:27.738959", @@ -53,19 +59,19 @@ "label": "Church Missionary", "mandatory": 1, "options": "Church Missionary", - "wildcard_filter": 0 + "wildcard_filter": 1 } ], "idx": 0, "is_standard": "Yes", "letterhead": null, - "modified": "2025-09-24 00:01:07.037178", + "modified": "2025-10-21 00:56:06.643688", "modified_by": "Administrator", "module": "Church Missions", "name": "Church Missionary Letters", "owner": "Administrator", "prepared_report": 0, - "query": "SELECT parent, date, read_to_church, is_private, file, content\nFROM `tabChurch Letter`\nWHERE parent = %(missionary)s\nORDER BY parent", + "query": "SELECT parent, date, share_with_church, shared_date, is_private, file, content \nFROM `tabChurch Letter` \nWHERE parent = %(missionary)s \nORDER BY parent", "ref_doctype": "Church Missionary", "report_name": "Church Missionary Letters", "report_type": "Query Report", diff --git a/church/church_missions/workspace/missions/missions.json b/church/church_missions/workspace/missions/missions.json index ca442d8..cd1a47c 100644 --- a/church/church_missions/workspace/missions/missions.json +++ b/church/church_missions/workspace/missions/missions.json @@ -52,7 +52,7 @@ "type": "Link" } ], - "modified": "2025-10-03 23:11:35.018155", + "modified": "2025-10-20 23:30:26.650560", "modified_by": "Administrator", "module": "Church Missions", "name": "Missions", @@ -62,7 +62,7 @@ "public": 1, "quick_lists": [], "roles": [], - "sequence_id": 5.0, + "sequence_id": 8.0, "shortcuts": [], "title": "Missions" } \ No newline at end of file diff --git a/church/church_people/workspace/people/people.json b/church/church_people/workspace/people/people.json index 7d10de2..f557075 100644 --- a/church/church_people/workspace/people/people.json +++ b/church/church_people/workspace/people/people.json @@ -136,7 +136,7 @@ "type": "Link" } ], - "modified": "2025-10-03 23:11:35.091797", + "modified": "2025-10-20 23:30:26.687217", "modified_by": "Administrator", "module": "Church People", "name": "People", @@ -159,7 +159,7 @@ "public": 1, "quick_lists": [], "roles": [], - "sequence_id": 6.0, + "sequence_id": 9.0, "shortcuts": [], "title": "People" } \ No newline at end of file diff --git a/church/church_prayers/workspace/prayers/prayers.json b/church/church_prayers/workspace/prayers/prayers.json index 58d1901..e47b014 100644 --- a/church/church_prayers/workspace/prayers/prayers.json +++ b/church/church_prayers/workspace/prayers/prayers.json @@ -101,7 +101,7 @@ "type": "Link" } ], - "modified": "2025-10-08 23:56:20.099820", + "modified": "2025-10-20 23:30:26.733222", "modified_by": "Administrator", "module": "Church Prayers", "name": "Prayers", @@ -120,7 +120,7 @@ "public": 1, "quick_lists": [], "roles": [], - "sequence_id": 7.0, + "sequence_id": 10.0, "shortcuts": [], "title": "Prayers" } \ No newline at end of file diff --git a/church/church_study/workspace/study/study.json b/church/church_study/workspace/study/study.json index 2ee3ec2..50d21db 100644 --- a/church/church_study/workspace/study/study.json +++ b/church/church_study/workspace/study/study.json @@ -43,7 +43,7 @@ "type": "Link" } ], - "modified": "2025-10-03 23:11:35.273885", + "modified": "2025-10-20 23:30:26.774005", "modified_by": "Administrator", "module": "Church Study", "name": "Study", @@ -53,7 +53,7 @@ "public": 1, "quick_lists": [], "roles": [], - "sequence_id": 8.0, + "sequence_id": 11.0, "shortcuts": [], "title": "Study" } \ No newline at end of file From d8b5ceb68a11a09a33c9e6582008f0fd1bc53086 Mon Sep 17 00:00:00 2001 From: meichthys Date: Thu, 23 Oct 2025 03:16:05 +0000 Subject: [PATCH 11/25] Give Church Manager submit permissions on collections and expenses --- church/fixtures/custom_docperm.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/church/fixtures/custom_docperm.json b/church/fixtures/custom_docperm.json index 841262e..970b376 100644 --- a/church/fixtures/custom_docperm.json +++ b/church/fixtures/custom_docperm.json @@ -288,8 +288,8 @@ "write": 1 }, { - "amend": 0, - "cancel": 0, + "amend": 1, + "cancel": 1, "create": 1, "delete": 1, "docstatus": 0, @@ -308,7 +308,7 @@ "role": "Church Manager", "select": 1, "share": 1, - "submit": 0, + "submit": 1, "write": 1 }, { From 75a0f56eea8ec73561a87ac1f8214d238ae7274f Mon Sep 17 00:00:00 2001 From: meichthys Date: Thu, 23 Oct 2025 03:41:35 +0000 Subject: [PATCH 12/25] Add `Church Foundations` workspace --- .../communications/communications.json | 2 +- .../manual:_communications.json | 2 +- .../workspace/finances/finances.json | 2 +- .../workspace/foundations/foundations.json | 59 +++++++++++++++++++ .../getting_started/getting_started.json | 2 +- .../workspace/support/support.json | 2 +- .../workspace/welcome/welcome.json | 2 +- .../workspace/ministries/ministries.json | 4 +- .../workspace/missions/missions.json | 4 +- .../workspace/people/people.json | 4 +- .../workspace/prayers/prayers.json | 4 +- .../church_study/workspace/study/study.json | 4 +- church/fixtures/dashboard_chart.json | 10 ++-- 13 files changed, 80 insertions(+), 21 deletions(-) create mode 100644 church/church_foundations/workspace/foundations/foundations.json diff --git a/church/church_communications/workspace/communications/communications.json b/church/church_communications/workspace/communications/communications.json index f743e0e..8e6e23c 100644 --- a/church/church_communications/workspace/communications/communications.json +++ b/church/church_communications/workspace/communications/communications.json @@ -111,7 +111,7 @@ "type": "Link" } ], - "modified": "2025-10-20 23:30:26.486770", + "modified": "2025-10-22 23:37:07.761096", "modified_by": "Administrator", "module": "Church Communications", "name": "Communications", diff --git a/church/church_communications/workspace/manual:_communications/manual:_communications.json b/church/church_communications/workspace/manual:_communications/manual:_communications.json index b00280c..325b47d 100644 --- a/church/church_communications/workspace/manual:_communications/manual:_communications.json +++ b/church/church_communications/workspace/manual:_communications/manual:_communications.json @@ -53,7 +53,7 @@ "type": "Link" } ], - "modified": "2025-10-21 01:00:40.456443", + "modified": "2025-10-22 23:37:07.784329", "modified_by": "Administrator", "module": "Church Communications", "name": "Manual: Communications", diff --git a/church/church_finances/workspace/finances/finances.json b/church/church_finances/workspace/finances/finances.json index bf90e1d..a64b3b0 100644 --- a/church/church_finances/workspace/finances/finances.json +++ b/church/church_finances/workspace/finances/finances.json @@ -190,7 +190,7 @@ "type": "Link" } ], - "modified": "2025-10-20 23:30:26.564552", + "modified": "2025-10-22 23:37:07.807603", "modified_by": "Administrator", "module": "Church Finances", "name": "Finances", diff --git a/church/church_foundations/workspace/foundations/foundations.json b/church/church_foundations/workspace/foundations/foundations.json new file mode 100644 index 0000000..ef821b7 --- /dev/null +++ b/church/church_foundations/workspace/foundations/foundations.json @@ -0,0 +1,59 @@ +{ + "charts": [], + "content": "[{\"id\":\"HCz2BW0jKF\",\"type\":\"header\",\"data\":{\"text\":\"Foundations\",\"col\":12}},{\"id\":\"Wy5acT4D_A\",\"type\":\"card\",\"data\":{\"card_name\":\"Documents\",\"col\":4}}]", + "creation": "2025-10-22 23:37:03.770552", + "custom_blocks": [], + "docstatus": 0, + "doctype": "Workspace", + "for_user": "", + "hide_custom": 0, + "icon": "milestone", + "idx": 0, + "indicator_color": "green", + "is_hidden": 0, + "label": "Foundations", + "links": [ + { + "hidden": 0, + "is_query_report": 0, + "label": "Documents", + "link_count": 2, + "link_type": "DocType", + "onboard": 0, + "type": "Card Break" + }, + { + "hidden": 0, + "is_query_report": 0, + "label": "Church Information", + "link_count": 0, + "link_to": "Church Information", + "link_type": "DocType", + "onboard": 0, + "type": "Link" + }, + { + "hidden": 0, + "is_query_report": 0, + "label": "Beliefs", + "link_count": 0, + "link_to": "Church Belief", + "link_type": "DocType", + "onboard": 0, + "type": "Link" + } + ], + "modified": "2025-10-22 23:41:06.161117", + "modified_by": "Administrator", + "module": "Church Foundations", + "name": "Foundations", + "number_cards": [], + "owner": "Administrator", + "parent_page": "", + "public": 1, + "quick_lists": [], + "roles": [], + "sequence_id": 7.0, + "shortcuts": [], + "title": "Foundations" +} \ No newline at end of file diff --git a/church/church_foundations/workspace/getting_started/getting_started.json b/church/church_foundations/workspace/getting_started/getting_started.json index ed05170..2b8d905 100644 --- a/church/church_foundations/workspace/getting_started/getting_started.json +++ b/church/church_foundations/workspace/getting_started/getting_started.json @@ -13,7 +13,7 @@ "is_hidden": 0, "label": "Getting Started", "links": [], - "modified": "2025-10-21 01:00:49.815012", + "modified": "2025-10-22 23:37:07.719950", "modified_by": "Administrator", "module": "Church Foundations", "name": "Getting Started", diff --git a/church/church_foundations/workspace/support/support.json b/church/church_foundations/workspace/support/support.json index 5c3405f..4251c8b 100644 --- a/church/church_foundations/workspace/support/support.json +++ b/church/church_foundations/workspace/support/support.json @@ -13,7 +13,7 @@ "is_hidden": 0, "label": "Support", "links": [], - "modified": "2025-10-21 01:00:57.316779", + "modified": "2025-10-22 23:37:07.742263", "modified_by": "Administrator", "module": "Church Foundations", "name": "Support", diff --git a/church/church_foundations/workspace/welcome/welcome.json b/church/church_foundations/workspace/welcome/welcome.json index 622ed60..5295cf8 100644 --- a/church/church_foundations/workspace/welcome/welcome.json +++ b/church/church_foundations/workspace/welcome/welcome.json @@ -18,7 +18,7 @@ "is_hidden": 0, "label": "Welcome", "links": [], - "modified": "2025-10-20 23:37:55.386516", + "modified": "2025-10-22 23:37:07.674288", "modified_by": "Administrator", "module": "Church Foundations", "name": "Welcome", diff --git a/church/church_ministries/workspace/ministries/ministries.json b/church/church_ministries/workspace/ministries/ministries.json index a354d38..c17aed5 100644 --- a/church/church_ministries/workspace/ministries/ministries.json +++ b/church/church_ministries/workspace/ministries/ministries.json @@ -112,7 +112,7 @@ "type": "Link" } ], - "modified": "2025-10-20 23:30:26.611769", + "modified": "2025-10-22 23:37:07.852171", "modified_by": "Administrator", "module": "Church Ministries", "name": "Ministries", @@ -122,7 +122,7 @@ "public": 1, "quick_lists": [], "roles": [], - "sequence_id": 7.0, + "sequence_id": 8.0, "shortcuts": [], "title": "Ministries" } \ No newline at end of file diff --git a/church/church_missions/workspace/missions/missions.json b/church/church_missions/workspace/missions/missions.json index cd1a47c..7a1a95a 100644 --- a/church/church_missions/workspace/missions/missions.json +++ b/church/church_missions/workspace/missions/missions.json @@ -52,7 +52,7 @@ "type": "Link" } ], - "modified": "2025-10-20 23:30:26.650560", + "modified": "2025-10-22 23:37:07.875258", "modified_by": "Administrator", "module": "Church Missions", "name": "Missions", @@ -62,7 +62,7 @@ "public": 1, "quick_lists": [], "roles": [], - "sequence_id": 8.0, + "sequence_id": 9.0, "shortcuts": [], "title": "Missions" } \ No newline at end of file diff --git a/church/church_people/workspace/people/people.json b/church/church_people/workspace/people/people.json index f557075..49fe886 100644 --- a/church/church_people/workspace/people/people.json +++ b/church/church_people/workspace/people/people.json @@ -136,7 +136,7 @@ "type": "Link" } ], - "modified": "2025-10-20 23:30:26.687217", + "modified": "2025-10-22 23:37:07.895733", "modified_by": "Administrator", "module": "Church People", "name": "People", @@ -159,7 +159,7 @@ "public": 1, "quick_lists": [], "roles": [], - "sequence_id": 9.0, + "sequence_id": 10.0, "shortcuts": [], "title": "People" } \ No newline at end of file diff --git a/church/church_prayers/workspace/prayers/prayers.json b/church/church_prayers/workspace/prayers/prayers.json index e47b014..1b456ab 100644 --- a/church/church_prayers/workspace/prayers/prayers.json +++ b/church/church_prayers/workspace/prayers/prayers.json @@ -101,7 +101,7 @@ "type": "Link" } ], - "modified": "2025-10-20 23:30:26.733222", + "modified": "2025-10-22 23:37:07.921075", "modified_by": "Administrator", "module": "Church Prayers", "name": "Prayers", @@ -120,7 +120,7 @@ "public": 1, "quick_lists": [], "roles": [], - "sequence_id": 10.0, + "sequence_id": 11.0, "shortcuts": [], "title": "Prayers" } \ No newline at end of file diff --git a/church/church_study/workspace/study/study.json b/church/church_study/workspace/study/study.json index 50d21db..9c3b0b0 100644 --- a/church/church_study/workspace/study/study.json +++ b/church/church_study/workspace/study/study.json @@ -43,7 +43,7 @@ "type": "Link" } ], - "modified": "2025-10-20 23:30:26.774005", + "modified": "2025-10-22 23:37:07.943398", "modified_by": "Administrator", "module": "Church Study", "name": "Study", @@ -53,7 +53,7 @@ "public": 1, "quick_lists": [], "roles": [], - "sequence_id": 11.0, + "sequence_id": 12.0, "shortcuts": [], "title": "Study" } \ No newline at end of file diff --git a/church/fixtures/dashboard_chart.json b/church/fixtures/dashboard_chart.json index 1e39940..f5156d1 100644 --- a/church/fixtures/dashboard_chart.json +++ b/church/fixtures/dashboard_chart.json @@ -18,7 +18,7 @@ "heatmap_year": null, "is_public": 0, "is_standard": 0, - "last_synced_on": "2025-10-17 22:41:54.579950", + "last_synced_on": "2025-10-21 00:37:59.248401", "modified": "2025-10-10 23:37:28.780115", "module": "Church People", "name": "Church Persons Count", @@ -57,7 +57,7 @@ "heatmap_year": null, "is_public": 1, "is_standard": 0, - "last_synced_on": "2025-10-17 22:41:54.565369", + "last_synced_on": "2025-10-21 00:37:59.258988", "modified": "2025-10-10 23:37:22.231188", "module": "Church People", "name": "Church Members Count (New by Month)", @@ -96,7 +96,7 @@ "heatmap_year": null, "is_public": 1, "is_standard": 0, - "last_synced_on": "2025-10-17 22:43:14.925228", + "last_synced_on": "2025-10-17 23:34:18.185036", "modified": "2025-10-10 23:37:40.094794", "module": "Church Prayers", "name": "Church Prayer Request Count (Active)", @@ -135,7 +135,7 @@ "heatmap_year": null, "is_public": 1, "is_standard": 0, - "last_synced_on": "2025-10-17 22:43:14.934952", + "last_synced_on": "2025-10-17 23:34:18.180260", "modified": "2025-10-10 23:37:35.790654", "module": "Church Prayers", "name": "Church Prayer Requests (Answered)", @@ -221,7 +221,7 @@ "heatmap_year": null, "is_public": 0, "is_standard": 0, - "last_synced_on": "2025-10-17 22:36:37.258293", + "last_synced_on": "2025-10-22 23:38:34.263159", "modified": "2025-10-10 23:36:55.818468", "module": "Church Finances", "name": "Church Collections Sum", From 38eecdbc71496f960eedbf91d0fbc5302084410b Mon Sep 17 00:00:00 2001 From: meichthys Date: Thu, 23 Oct 2025 03:47:57 +0000 Subject: [PATCH 13/25] Add permissions for Bible Reference doctype --- church/fixtures/custom_docperm.json | 48 +++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/church/fixtures/custom_docperm.json b/church/fixtures/custom_docperm.json index 970b376..b36b840 100644 --- a/church/fixtures/custom_docperm.json +++ b/church/fixtures/custom_docperm.json @@ -1270,5 +1270,53 @@ "share": 1, "submit": 0, "write": 1 + }, + { + "amend": 0, + "cancel": 0, + "create": 1, + "delete": 1, + "docstatus": 0, + "doctype": "Custom DocPerm", + "email": 1, + "export": 1, + "if_owner": 0, + "import": 1, + "modified": "2025-10-22 23:47:05.119182", + "name": "t1s6hknv6m", + "parent": "Church Bible Reference", + "permlevel": 0, + "print": 1, + "read": 1, + "report": 1, + "role": "Church Manager", + "select": 1, + "share": 1, + "submit": 0, + "write": 1 + }, + { + "amend": 0, + "cancel": 0, + "create": 1, + "delete": 1, + "docstatus": 0, + "doctype": "Custom DocPerm", + "email": 1, + "export": 1, + "if_owner": 0, + "import": 1, + "modified": "2025-10-22 23:47:14.095465", + "name": "t4lmu6ribv", + "parent": "Church Bible Reference", + "permlevel": 0, + "print": 1, + "read": 1, + "report": 1, + "role": "Church User", + "select": 1, + "share": 1, + "submit": 0, + "write": 1 } ] \ No newline at end of file From 8f92b1e38b2ce9950af766a33ae1221169c772e4 Mon Sep 17 00:00:00 2001 From: meichthys Date: Thu, 23 Oct 2025 03:55:40 +0000 Subject: [PATCH 14/25] Fix Agency Doctype Naming --- .../church_missionary_agency.json | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/church/church_missions/doctype/church_missionary_agency/church_missionary_agency.json b/church/church_missions/doctype/church_missionary_agency/church_missionary_agency.json index 50bf602..298f075 100644 --- a/church/church_missions/doctype/church_missionary_agency/church_missionary_agency.json +++ b/church/church_missions/doctype/church_missionary_agency/church_missionary_agency.json @@ -7,7 +7,7 @@ "doctype": "DocType", "engine": "InnoDB", "field_order": [ - "name1", + "agency_name", "image_hhbv", "notes", "column_break_qofu", @@ -17,17 +17,6 @@ "website" ], "fields": [ - { - "allow_in_quick_entry": 1, - "fieldname": "name1", - "fieldtype": "Data", - "in_filter": 1, - "in_list_view": 1, - "in_preview": 1, - "in_standard_filter": 1, - "label": "Agency Name", - "reqd": 1 - }, { "allow_in_quick_entry": 1, "fieldname": "mailing_address", @@ -73,6 +62,17 @@ "fieldname": "image_hhbv", "fieldtype": "Attach Image", "label": "Logo" + }, + { + "allow_in_quick_entry": 1, + "fieldname": "agency_name", + "fieldtype": "Data", + "in_filter": 1, + "in_list_view": 1, + "in_preview": 1, + "in_standard_filter": 1, + "label": "Agency Name", + "reqd": 1 } ], "grid_page_length": 50, @@ -83,7 +83,7 @@ "link_fieldname": "agency" } ], - "modified": "2025-10-08 23:23:43.351442", + "modified": "2025-10-22 23:54:43.654970", "modified_by": "Administrator", "module": "Church Missions", "name": "Church Missionary Agency", From 40e1fd84dfc5aba094cd0c7e64800662a7c6b525 Mon Sep 17 00:00:00 2001 From: meichthys Date: Thu, 23 Oct 2025 05:18:30 +0000 Subject: [PATCH 15/25] Add demo instance (Fixes #56) --- README.md | 14 +++++++++++++- church/public/media/demo_button.png | Bin 0 -> 2165 bytes 2 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 church/public/media/demo_button.png diff --git a/README.md b/README.md index a80a35b..dfddd15 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -[![Matrix](https://img.shields.io/matrix/the-church-app%3Amatrix.org?label=Matrix%20Chat)](https://matrix.to/#/#the-church-app:matrix.org) [![GitHub License](https://img.shields.io/github/license/meichthys/church)](https://github.com/meichthys/church?tab=readme-ov-file#-license-mit) ![GitHub contributors](https://img.shields.io/github/contributors/meichthys/church) ![GitHub last commit](https://img.shields.io/github/last-commit/meichthys/church) +[![Matrix](https://img.shields.io/matrix/the-church-app%3Amatrix.org?label=Matrix%20Chat)](https://matrix.to/#/#the-church-app:matrix.org) [![GitHub License](https://img.shields.io/github/license/meichthys/church)](https://github.com/meichthys/church?tab=readme-ov-file#-license-mit) ![GitHub contributors](https://img.shields.io/github/contributors/meichthys/church) ![GitHub last commit](https://img.shields.io/github/last-commit/meichthys/church) [![Static Badge](https://img.shields.io/badge/Demo%20-%20User%3A%20demo%40demo.com%20%7C%20Pass%3A%20Matthew10%3A8b%20-%20black?style=flat)](https://church.meichthys.com) > [!WARNING] > This app is not ready for production. Large changes should be expected until a 1.0.0 version is released. @@ -11,6 +11,18 @@ Prayers | People | Finances :-------------------------:|:-------------------------: |:-----: ![](./screenshots/prayers.png) | ![](./screenshots/people.png) | ![](./screenshots/finances.png) +## 🧪 Demo + +If you would like to test out the current state of the application, you can try our Demo instance. Please keep in mind that this project is under active development and that there will likely be rough edges, bugs, and incomplete features. If you come across any of these, feel free to report them on our [issue tracker](https://github.com/meichthys/church/issues). + +![Demo](../church/church/public/media/demo_button.png) + +> When logging in, use the following credentials: +> ``` +> Username: demo@demo.com +> Password: Matthew10:8b +> ``` + ## ✨ Features The following features have been implemented in this app (see the [🗺️ Roadmap](#🗺️-roadmap) below for future plans): diff --git a/church/public/media/demo_button.png b/church/public/media/demo_button.png new file mode 100644 index 0000000000000000000000000000000000000000..2db3567c9d0a278906e357fac76ac7e877eeb862 GIT binary patch literal 2165 zcmai0`9IWa8~)nY#&8BBoGDvlq>xh?*~h-lnDU{F<+KQ8O?;9VTf>aC$?Kd10cs^7YEWpSp>+?jLe!lm2W0*@K*ZcFwQ5j(6-YA@5llCUAZeB#)C&0sIpL zSPl##+jpIgz6~e?s~eY&40Vm)3`6-(x}d0r*fPATO_5Y^oq|sGY129#rFa%6zGE(? zXP!897qPh)dGAucqvn3>b146em5oieEyW@eMYSo+)Ks3`jWq1-?H$W;U>jZPPvzyo z3KP?485!%$%F0SS3G*gcgUp1O3ZIrqZdnRlWk*D1@BwA`eN5q?mPxC+6p24ZZdL@a z0#7<#duQ^|h;P_gxgWisKhOT!`EfJ@469SSeb_CJd3e#Ka{#PoejQoT@>qZuja&e@ zo;?nN(QPYn`oACpo$DZp*9TqLEt(5`RmPa&l z^g;w(U0t1!u+FY76EibD!-xBr+_yzV0uOdp&2cy>-Q&klD3q3#)~jMa1q8y<)>aIH zFeH=7;wq}DCr_OcqEe~hn~Rc>hSSd`_6miG#!93s6{-Ny^6J&e@_V6Z#mgn7rB<+w z**39^XU}Zf;{QbFro6v)20KL}iJ%-9tV}W4Gp8q0aAhh1Uq7C-C`^A*Qj$oSxtIbM zPq@M8S_#W6E-sed5HMcf*yu`>K#a1wj(AO=oyAb|2M_cwTdHMZ55ImTGzWbtR}_!V zxfFpLjw(ft{^zONOEnUSq|x3vA1qb%sDW@+T~pKDxiMKuK~eGdZwC({;)%3>@(g9V zK7TIuXRwkHMo|E;z-D7TJS3RYh)s{iNV$BYM+rUi%>x5aQ8BUD#-^sG%UQKiOoT!Q zy{1O`N`*8ek()$IJr<9T8yv)5RDf)5ZhH1S)og;NcEon1B9bSVL34r$ ziHWhbc4{qsv1{833Hg|Sn*?R@k^T8%1LjsJ5mT__AwxJS7^G60Z-)2KiA2)dx zbo=@GVzyph(Evp_oc8g_KsqmQ`|jOh?~eqAPq|YWzV+r?Y!H1Yg}^8|I8U?JZ4M0! zOA4+X_gA@aAuGx6&K>s}#-S$d<_qD(jyWD+b88DbkIr>~(bCgnGBPp>479al&U!Rf zjvdy8u#s0$RBu+5J3gDhuyk`fe)(yBzT-F~G4@S;eLYCAYC*&1RuyU4 zf@uHK|ERf{SZY^<qx1QWAduJEUL>d?=1B2~ulwk!%&xSY z9EI9Q^`)hyiuO1iJw5Aj`i^bIp6M@dXX7bdG1{18#Bw4B0GC~Qnx85fM44PS6y3+V}=43A8h-tvH64`PK^Ut)lno8S-?F! zJiPI@*~5s4hyfp6`3x2gv;o6>iI9*GI2>+#69^7_#{~JJ z4iDtguRTg!UiS5!kmTo)Kp4W>`uh6l4Gp=d3I=0(ag%6$XLsVhI{g=nqxU^nFXGp> z=1AU%FKEfQYQNh$*^gNq)hiWLxVT_OcD8kSdAXIPrI2>E9bO(R0Y%^yViYvXFU^{o z(o9<7a$k6NcXwm7DHO_c#fk0hFz*^S(&UPoMIm)qm!uJ-G`hP=7$l}WG3 z$hB`xA0`HUYw$vrZm_%WXfPR>D!u99VSIYpg(Um85k*%jejeB8JUdg1>c|fm{ zUQv!KtgePNG&Fc+<)oX^ojk+C;oy!H?Y=c`pnrV())Xt*$(7Z9x1ZK^-3dh-kayRVfuKK^sw(=Ny*9dp(Q6QR+6sa zn*IIz^)L1JCBU97uC68w`oxXxt^l$vAGd7v(?Ily7QY&BJ*k~v*J6n#{&#vI( zwZ-MJOa6TuWs=*PEXcdf?2RVx*QcYhLPb42v{GzG4+Q3lUIpYHja2Tx+&JQkYiwWF TDTg?N{|La^+yPT%>Ph@BRGk<0 literal 0 HcmV?d00001 From f6bd0486a239bc2728a3c259325e122ee4d2f320 Mon Sep 17 00:00:00 2001 From: meichthys Date: Thu, 23 Oct 2025 05:21:15 +0000 Subject: [PATCH 16/25] remove alt text on demo button --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index dfddd15..768b7d1 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ Prayers | People | Finances If you would like to test out the current state of the application, you can try our Demo instance. Please keep in mind that this project is under active development and that there will likely be rough edges, bugs, and incomplete features. If you come across any of these, feel free to report them on our [issue tracker](https://github.com/meichthys/church/issues). -![Demo](../church/church/public/media/demo_button.png) +![](../church/church/public/media/demo_button.png) > When logging in, use the following credentials: > ``` From c560ea9465aa0563f607da46a5c392c445164ad4 Mon Sep 17 00:00:00 2001 From: meichthys Date: Thu, 23 Oct 2025 05:22:28 +0000 Subject: [PATCH 17/25] fix demo button path --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 768b7d1..d7ed7a7 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ Prayers | People | Finances If you would like to test out the current state of the application, you can try our Demo instance. Please keep in mind that this project is under active development and that there will likely be rough edges, bugs, and incomplete features. If you come across any of these, feel free to report them on our [issue tracker](https://github.com/meichthys/church/issues). -![](../church/church/public/media/demo_button.png) +![](./church/public/media/demo_button.png) > When logging in, use the following credentials: > ``` From 254db062d48cb0bb25279e1d65b8d0e22a6e5f1d Mon Sep 17 00:00:00 2001 From: meichthys Date: Thu, 23 Oct 2025 05:22:52 +0000 Subject: [PATCH 18/25] Add back demo button alt text --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d7ed7a7..bbf6144 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ Prayers | People | Finances If you would like to test out the current state of the application, you can try our Demo instance. Please keep in mind that this project is under active development and that there will likely be rough edges, bugs, and incomplete features. If you come across any of these, feel free to report them on our [issue tracker](https://github.com/meichthys/church/issues). -![](./church/public/media/demo_button.png) +![Demo](./church/public/media/demo_button.png) > When logging in, use the following credentials: > ``` From 483d4bdd2d7f70adbdc047d0d8446a557ea4254d Mon Sep 17 00:00:00 2001 From: meichthys Date: Thu, 23 Oct 2025 05:23:35 +0000 Subject: [PATCH 19/25] add link to demo instance --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index bbf6144..44acaad 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ Prayers | People | Finances If you would like to test out the current state of the application, you can try our Demo instance. Please keep in mind that this project is under active development and that there will likely be rough edges, bugs, and incomplete features. If you come across any of these, feel free to report them on our [issue tracker](https://github.com/meichthys/church/issues). -![Demo](./church/public/media/demo_button.png) +[![Demo](./church/public/media/demo_button.png)](https://church.meichthys.com) > When logging in, use the following credentials: > ``` From 8959a9519f185b3a5e0f36577a6c4b725091f817 Mon Sep 17 00:00:00 2001 From: meichthys Date: Thu, 23 Oct 2025 05:36:15 +0000 Subject: [PATCH 20/25] Add note about demo being wiped each midnight (EST). --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 44acaad..6b273fd 100644 --- a/README.md +++ b/README.md @@ -22,6 +22,7 @@ If you would like to test out the current state of the application, you can try > Username: demo@demo.com > Password: Matthew10:8b > ``` +> ⚠️ The demo instance is reset every Midnight (EST) ## ✨ Features From 5d36683bb957cc6be3070595295cb46afd27cf8e Mon Sep 17 00:00:00 2001 From: meichthys Date: Fri, 24 Oct 2025 04:05:36 +0000 Subject: [PATCH 21/25] add website settings fixture --- church/fixtures/website_settings.json | 49 +++++++++++++++++++++++++++ church/hooks.py | 1 + 2 files changed, 50 insertions(+) create mode 100644 church/fixtures/website_settings.json diff --git a/church/fixtures/website_settings.json b/church/fixtures/website_settings.json new file mode 100644 index 0000000..52794eb --- /dev/null +++ b/church/fixtures/website_settings.json @@ -0,0 +1,49 @@ +[ + { + "address": null, + "app_logo": "/files/church-noto-512.png", + "app_name": "Church", + "auto_account_deletion": 72, + "banner_html": null, + "banner_image": "", + "brand_html": null, + "call_to_action": null, + "call_to_action_url": null, + "copyright": null, + "disable_signup": 1, + "docstatus": 0, + "doctype": "Website Settings", + "enable_google_indexing": 0, + "enable_view_tracking": 0, + "favicon": null, + "footer_items": [], + "footer_logo": null, + "footer_powered": null, + "footer_template": null, + "footer_template_values": null, + "google_analytics_anonymize_ip": 1, + "google_analytics_id": null, + "head_html": null, + "hide_footer_signup": 0, + "hide_login": 0, + "home_page": "app/welcome", + "indexing_authorization_code": null, + "indexing_refresh_token": null, + "modified": "2025-10-24 00:03:04.495034", + "name": "Website Settings", + "navbar_search": 0, + "navbar_template": null, + "navbar_template_values": null, + "robots_txt": null, + "route_redirects": [], + "show_account_deletion_link": 0, + "show_footer_on_login": 0, + "show_language_picker": 0, + "splash_image": "", + "subdomain": null, + "title_prefix": null, + "top_bar_items": [], + "website_theme": "Standard", + "website_theme_image_link": null + } +] \ No newline at end of file diff --git a/church/hooks.py b/church/hooks.py index 951d54a..15ceb99 100644 --- a/church/hooks.py +++ b/church/hooks.py @@ -217,6 +217,7 @@ fixtures = [ ] ], }, + {"dt": "Website Settings"}, ] # Apps # ------------------ From dd0ce6a1e7587e74d1745c7ccdcc042400fda4a9 Mon Sep 17 00:00:00 2001 From: meichthys Date: Fri, 24 Oct 2025 04:11:58 +0000 Subject: [PATCH 22/25] add church_logo.png --- church/public/media/church_logo.png | Bin 0 -> 23614 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 church/public/media/church_logo.png diff --git a/church/public/media/church_logo.png b/church/public/media/church_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..75423668323589d81ec106085ec70547e79a4381 GIT binary patch literal 23614 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 literal 0 HcmV?d00001 From 329ab90ffefdab0f8b251b8d10ba66a132098ee1 Mon Sep 17 00:00:00 2001 From: Sipatha <186062+sipatha@users.noreply.github.com> Date: Sat, 25 Oct 2025 17:44:59 +0200 Subject: [PATCH 23/25] resolves #61 : added app_log_url for the custom application. added development version. unset app_logo in the Website Settings fixture. --- church/fixtures/website_settings.json | 4 ++-- church/hooks.py | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/church/fixtures/website_settings.json b/church/fixtures/website_settings.json index 52794eb..998bc9b 100644 --- a/church/fixtures/website_settings.json +++ b/church/fixtures/website_settings.json @@ -1,7 +1,7 @@ [ { "address": null, - "app_logo": "/files/church-noto-512.png", + "app_logo": "", "app_name": "Church", "auto_account_deletion": 72, "banner_html": null, @@ -46,4 +46,4 @@ "website_theme": "Standard", "website_theme_image_link": null } -] \ No newline at end of file +] diff --git a/church/hooks.py b/church/hooks.py index 15ceb99..1bfb49d 100644 --- a/church/hooks.py +++ b/church/hooks.py @@ -4,6 +4,8 @@ app_publisher = "meichthys" app_description = "A church management app." app_email = "church@meichthys.com" app_license = "mit" +app_logo_url = "/assets/church/media/church_logo.png" +develop_version = "develop" fixtures = [ { From 1ad26a6e68b4c056a63e74c0b19954a6b394bd1c Mon Sep 17 00:00:00 2001 From: meichthys Date: Mon, 27 Oct 2025 03:05:22 +0000 Subject: [PATCH 24/25] Add manual placeholder for all modules --- .../manual:_communications.json | 4 +-- .../manual:_finances/manual:_finances.json | 29 +++++++++++++++++++ .../manual:_foundations.json | 29 +++++++++++++++++++ .../manual:_website/manual:_website.json | 29 +++++++++++++++++++ .../manual:_ministries.json | 29 +++++++++++++++++++ .../manual:_missions/manual:_missions.json | 29 +++++++++++++++++++ .../manual:_people/manual:_people.json | 29 +++++++++++++++++++ .../manual:_prayers/manual:_prayers.json | 29 +++++++++++++++++++ .../manual:_study/manual:_study.json | 29 +++++++++++++++++++ church/fixtures/dashboard_chart.json | 4 +-- church/fixtures/website_settings.json | 8 ++--- 11 files changed, 240 insertions(+), 8 deletions(-) create mode 100644 church/church_finances/workspace/manual:_finances/manual:_finances.json create mode 100644 church/church_foundations/workspace/manual:_foundations/manual:_foundations.json create mode 100644 church/church_foundations/workspace/manual:_website/manual:_website.json create mode 100644 church/church_ministries/workspace/manual:_ministries/manual:_ministries.json create mode 100644 church/church_missions/workspace/manual:_missions/manual:_missions.json create mode 100644 church/church_people/workspace/manual:_people/manual:_people.json create mode 100644 church/church_prayers/workspace/manual:_prayers/manual:_prayers.json create mode 100644 church/church_study/workspace/manual:_study/manual:_study.json diff --git a/church/church_communications/workspace/manual:_communications/manual:_communications.json b/church/church_communications/workspace/manual:_communications/manual:_communications.json index 325b47d..52a32a2 100644 --- a/church/church_communications/workspace/manual:_communications/manual:_communications.json +++ b/church/church_communications/workspace/manual:_communications/manual:_communications.json @@ -7,7 +7,7 @@ "doctype": "Workspace", "for_user": "", "hide_custom": 0, - "icon": "mail", + "icon": "help", "idx": 0, "indicator_color": "", "is_hidden": 0, @@ -53,7 +53,7 @@ "type": "Link" } ], - "modified": "2025-10-22 23:37:07.784329", + "modified": "2025-10-26 22:35:11.826985", "modified_by": "Administrator", "module": "Church Communications", "name": "Manual: Communications", diff --git a/church/church_finances/workspace/manual:_finances/manual:_finances.json b/church/church_finances/workspace/manual:_finances/manual:_finances.json new file mode 100644 index 0000000..757faa3 --- /dev/null +++ b/church/church_finances/workspace/manual:_finances/manual:_finances.json @@ -0,0 +1,29 @@ +{ + "charts": [], + "content": "[{\"id\":\"nnvMTG5Sl5\",\"type\":\"paragraph\",\"data\":{\"text\":\"\ud83e\ude99Finances Manual\",\"col\":12}},{\"id\":\"B-CtTCmVDX\",\"type\":\"paragraph\",\"data\":{\"text\":\"The finances module contains features related to the finances of the church.\",\"col\":12}},{\"id\":\"w8oEjl0tNc\",\"type\":\"paragraph\",\"data\":{\"text\":\"\ud83d\udcb5collections\",\"col\":12}},{\"id\":\"8K2QjgOLSb\",\"type\":\"paragraph\",\"data\":{\"text\":\"\ud83e\udd32Donations\",\"col\":12}},{\"id\":\"vVJ7g0tHHy\",\"type\":\"paragraph\",\"data\":{\"text\":\"\ud83d\udccaFunds\",\"col\":12}},{\"id\":\"1IhzkEsC60\",\"type\":\"paragraph\",\"data\":{\"text\":\"\ud83d\udcb8Expenses\",\"col\":12}}]", + "creation": "2025-10-26 22:28:38.959939", + "custom_blocks": [], + "docstatus": 0, + "doctype": "Workspace", + "for_user": "", + "hide_custom": 0, + "icon": "help", + "idx": 0, + "indicator_color": "", + "is_hidden": 0, + "label": "Manual: Finances", + "links": [], + "modified": "2025-10-26 23:04:39.109753", + "modified_by": "Administrator", + "module": "Church Finances", + "name": "Manual: Finances", + "number_cards": [], + "owner": "Administrator", + "parent_page": "Finances", + "public": 1, + "quick_lists": [], + "roles": [], + "sequence_id": 5.1, + "shortcuts": [], + "title": "Manual: Finances" +} \ No newline at end of file diff --git a/church/church_foundations/workspace/manual:_foundations/manual:_foundations.json b/church/church_foundations/workspace/manual:_foundations/manual:_foundations.json new file mode 100644 index 0000000..1c380d9 --- /dev/null +++ b/church/church_foundations/workspace/manual:_foundations/manual:_foundations.json @@ -0,0 +1,29 @@ +{ + "charts": [], + "content": "[{\"id\":\"nnvMTG5Sl5\",\"type\":\"paragraph\",\"data\":{\"text\":\"\ud83d\udcc3Foundations Manual\",\"col\":12}},{\"id\":\"B-CtTCmVDX\",\"type\":\"paragraph\",\"data\":{\"text\":\"The foundations module contains features related to founding and core beliefs/principles of the church.\",\"col\":12}},{\"id\":\"w8oEjl0tNc\",\"type\":\"paragraph\",\"data\":{\"text\":\"\ud83d\udcd4Beliefs\",\"col\":12}}]", + "creation": "2025-10-26 22:35:59.512658", + "custom_blocks": [], + "docstatus": 0, + "doctype": "Workspace", + "for_user": "", + "hide_custom": 0, + "icon": "help", + "idx": 0, + "indicator_color": "green", + "is_hidden": 0, + "label": "Manual: Foundations", + "links": [], + "modified": "2025-10-26 23:04:45.523604", + "modified_by": "Administrator", + "module": "Church Foundations", + "name": "Manual: Foundations", + "number_cards": [], + "owner": "Administrator", + "parent_page": "Foundations", + "public": 1, + "quick_lists": [], + "roles": [], + "sequence_id": 5.2, + "shortcuts": [], + "title": "Manual: Foundations" +} \ No newline at end of file diff --git a/church/church_foundations/workspace/manual:_website/manual:_website.json b/church/church_foundations/workspace/manual:_website/manual:_website.json new file mode 100644 index 0000000..7af4426 --- /dev/null +++ b/church/church_foundations/workspace/manual:_website/manual:_website.json @@ -0,0 +1,29 @@ +{ + "charts": [], + "content": "[{\"id\":\"nnvMTG5Sl5\",\"type\":\"paragraph\",\"data\":{\"text\":\"\ud83c\udf10Website Manual\",\"col\":12}},{\"id\":\"B-CtTCmVDX\",\"type\":\"paragraph\",\"data\":{\"text\":\"The website module manages and configures a public facing website for the church using data from other modules (i.e. Foundations, Missions, Ministries, etc).\",\"col\":12}}]", + "creation": "2025-10-26 22:57:00.373845", + "custom_blocks": [], + "docstatus": 0, + "doctype": "Workspace", + "for_user": "", + "hide_custom": 0, + "icon": "help", + "idx": 0, + "indicator_color": "green", + "is_hidden": 0, + "label": "Manual: Website", + "links": [], + "modified": "2025-10-26 23:03:50.848415", + "modified_by": "Administrator", + "module": "Church Foundations", + "name": "Manual: Website", + "number_cards": [], + "owner": "Administrator", + "parent_page": "Website", + "public": 1, + "quick_lists": [], + "roles": [], + "sequence_id": 5.7, + "shortcuts": [], + "title": "Manual: Website" +} \ No newline at end of file diff --git a/church/church_ministries/workspace/manual:_ministries/manual:_ministries.json b/church/church_ministries/workspace/manual:_ministries/manual:_ministries.json new file mode 100644 index 0000000..7c5935a --- /dev/null +++ b/church/church_ministries/workspace/manual:_ministries/manual:_ministries.json @@ -0,0 +1,29 @@ +{ + "charts": [], + "content": "[{\"id\":\"nnvMTG5Sl5\",\"type\":\"paragraph\",\"data\":{\"text\":\"\ud83e\udec2Ministries Manual\",\"col\":12}},{\"id\":\"B-CtTCmVDX\",\"type\":\"paragraph\",\"data\":{\"text\":\"The ministries module contains features related to events and specific ministries of the church.\",\"col\":12}},{\"id\":\"w8oEjl0tNc\",\"type\":\"paragraph\",\"data\":{\"text\":\"\ud83d\uddd3\ufe0fEvents\",\"col\":12}}]", + "creation": "2025-10-26 22:42:12.908220", + "custom_blocks": [], + "docstatus": 0, + "doctype": "Workspace", + "for_user": "", + "hide_custom": 0, + "icon": "help", + "idx": 0, + "indicator_color": "green", + "is_hidden": 0, + "label": "Manual: Ministries", + "links": [], + "modified": "2025-10-26 23:04:32.508655", + "modified_by": "Administrator", + "module": "Church Ministries", + "name": "Manual: Ministries", + "number_cards": [], + "owner": "Administrator", + "parent_page": "Ministries", + "public": 1, + "quick_lists": [], + "roles": [], + "sequence_id": 5.3, + "shortcuts": [], + "title": "Manual: Ministries" +} \ No newline at end of file diff --git a/church/church_missions/workspace/manual:_missions/manual:_missions.json b/church/church_missions/workspace/manual:_missions/manual:_missions.json new file mode 100644 index 0000000..5da597d --- /dev/null +++ b/church/church_missions/workspace/manual:_missions/manual:_missions.json @@ -0,0 +1,29 @@ +{ + "charts": [], + "content": "[{\"id\":\"nnvMTG5Sl5\",\"type\":\"paragraph\",\"data\":{\"text\":\"\ud83c\udf0dMissions Manual\",\"col\":12}},{\"id\":\"B-CtTCmVDX\",\"type\":\"paragraph\",\"data\":{\"text\":\"The missions module contains features related to missions outreach of the church.\",\"col\":12}},{\"id\":\"w8oEjl0tNc\",\"type\":\"paragraph\",\"data\":{\"text\":\"\ud83d\udce3Missionaries\",\"col\":12}}]", + "creation": "2025-10-26 22:45:06.329421", + "custom_blocks": [], + "docstatus": 0, + "doctype": "Workspace", + "for_user": "", + "hide_custom": 0, + "icon": "help", + "idx": 0, + "indicator_color": "green", + "is_hidden": 0, + "label": "Manual: Missions", + "links": [], + "modified": "2025-10-26 23:04:24.157199", + "modified_by": "Administrator", + "module": "Church Missions", + "name": "Manual: Missions", + "number_cards": [], + "owner": "Administrator", + "parent_page": "Missions", + "public": 1, + "quick_lists": [], + "roles": [], + "sequence_id": 5.4, + "shortcuts": [], + "title": "Manual: Missions" +} \ No newline at end of file diff --git a/church/church_people/workspace/manual:_people/manual:_people.json b/church/church_people/workspace/manual:_people/manual:_people.json new file mode 100644 index 0000000..be6d4d5 --- /dev/null +++ b/church/church_people/workspace/manual:_people/manual:_people.json @@ -0,0 +1,29 @@ +{ + "charts": [], + "content": "[{\"id\":\"nnvMTG5Sl5\",\"type\":\"paragraph\",\"data\":{\"text\":\"\ud83d\udc65People Manual\",\"col\":12}},{\"id\":\"B-CtTCmVDX\",\"type\":\"paragraph\",\"data\":{\"text\":\"The people module contains features relating to the people of the church (i.e. Members, Families, Leadership. etc).\",\"col\":12}}]", + "creation": "2025-10-26 22:59:15.251142", + "custom_blocks": [], + "docstatus": 0, + "doctype": "Workspace", + "for_user": "", + "hide_custom": 0, + "icon": "help", + "idx": 0, + "indicator_color": "green", + "is_hidden": 0, + "label": "Manual: People", + "links": [], + "modified": "2025-10-26 23:03:23.348295", + "modified_by": "Administrator", + "module": "Church People", + "name": "Manual: People", + "number_cards": [], + "owner": "Administrator", + "parent_page": "People", + "public": 1, + "quick_lists": [], + "roles": [], + "sequence_id": 5.8, + "shortcuts": [], + "title": "Manual: People" +} \ No newline at end of file diff --git a/church/church_prayers/workspace/manual:_prayers/manual:_prayers.json b/church/church_prayers/workspace/manual:_prayers/manual:_prayers.json new file mode 100644 index 0000000..fc56d21 --- /dev/null +++ b/church/church_prayers/workspace/manual:_prayers/manual:_prayers.json @@ -0,0 +1,29 @@ +{ + "charts": [], + "content": "[{\"id\":\"nnvMTG5Sl5\",\"type\":\"paragraph\",\"data\":{\"text\":\"\ud83d\ude4fPrayer Manual\",\"col\":12}},{\"id\":\"B-CtTCmVDX\",\"type\":\"paragraph\",\"data\":{\"text\":\"The prayers module helps gather, track and manage prayers and prayer requests.\",\"col\":12}},{\"id\":\"w8oEjl0tNc\",\"type\":\"paragraph\",\"data\":{\"text\":\"\ud83d\ude47Prayer Request\",\"col\":12}}]", + "creation": "2025-10-26 22:49:28.892131", + "custom_blocks": [], + "docstatus": 0, + "doctype": "Workspace", + "for_user": "", + "hide_custom": 0, + "icon": "help", + "idx": 0, + "indicator_color": "green", + "is_hidden": 0, + "label": "Manual: Prayers", + "links": [], + "modified": "2025-10-26 23:04:14.957334", + "modified_by": "Administrator", + "module": "Church Prayers", + "name": "Manual: Prayers", + "number_cards": [], + "owner": "Administrator", + "parent_page": "Prayers", + "public": 1, + "quick_lists": [], + "roles": [], + "sequence_id": 5.5, + "shortcuts": [], + "title": "Manual: Prayers" +} \ No newline at end of file diff --git a/church/church_study/workspace/manual:_study/manual:_study.json b/church/church_study/workspace/manual:_study/manual:_study.json new file mode 100644 index 0000000..a13245d --- /dev/null +++ b/church/church_study/workspace/manual:_study/manual:_study.json @@ -0,0 +1,29 @@ +{ + "charts": [], + "content": "[{\"id\":\"nnvMTG5Sl5\",\"type\":\"paragraph\",\"data\":{\"text\":\"\ud83d\udcdaStudy Manual\",\"col\":12}},{\"id\":\"B-CtTCmVDX\",\"type\":\"paragraph\",\"data\":{\"text\":\"The study module contains features relating to the study of the Bible, sermons, and other learning material.\",\"col\":12}}]", + "creation": "2025-10-26 22:52:48.833706", + "custom_blocks": [], + "docstatus": 0, + "doctype": "Workspace", + "for_user": "", + "hide_custom": 0, + "icon": "help", + "idx": 0, + "indicator_color": "green", + "is_hidden": 0, + "label": "Manual: Study", + "links": [], + "modified": "2025-10-26 23:04:02.987473", + "modified_by": "Administrator", + "module": "Church Study", + "name": "Manual: Study", + "number_cards": [], + "owner": "Administrator", + "parent_page": "Study", + "public": 1, + "quick_lists": [], + "roles": [], + "sequence_id": 5.6, + "shortcuts": [], + "title": "Manual: Study" +} \ No newline at end of file diff --git a/church/fixtures/dashboard_chart.json b/church/fixtures/dashboard_chart.json index f5156d1..6d7f78c 100644 --- a/church/fixtures/dashboard_chart.json +++ b/church/fixtures/dashboard_chart.json @@ -18,7 +18,7 @@ "heatmap_year": null, "is_public": 0, "is_standard": 0, - "last_synced_on": "2025-10-21 00:37:59.248401", + "last_synced_on": "2025-10-26 23:00:40.949225", "modified": "2025-10-10 23:37:28.780115", "module": "Church People", "name": "Church Persons Count", @@ -57,7 +57,7 @@ "heatmap_year": null, "is_public": 1, "is_standard": 0, - "last_synced_on": "2025-10-21 00:37:59.258988", + "last_synced_on": "2025-10-26 23:00:40.977266", "modified": "2025-10-10 23:37:22.231188", "module": "Church People", "name": "Church Members Count (New by Month)", diff --git a/church/fixtures/website_settings.json b/church/fixtures/website_settings.json index 998bc9b..ba6f01b 100644 --- a/church/fixtures/website_settings.json +++ b/church/fixtures/website_settings.json @@ -1,7 +1,7 @@ [ { "address": null, - "app_logo": "", + "app_logo": "/files/church_logo.png", "app_name": "Church", "auto_account_deletion": 72, "banner_html": null, @@ -26,10 +26,10 @@ "head_html": null, "hide_footer_signup": 0, "hide_login": 0, - "home_page": "app/welcome", + "home_page": "", "indexing_authorization_code": null, "indexing_refresh_token": null, - "modified": "2025-10-24 00:03:04.495034", + "modified": "2025-10-24 00:15:21.027630", "name": "Website Settings", "navbar_search": 0, "navbar_template": null, @@ -46,4 +46,4 @@ "website_theme": "Standard", "website_theme_image_link": null } -] +] \ No newline at end of file From b3c5bb3f0f040a7829cb2a70a51366a0beadef3f Mon Sep 17 00:00:00 2001 From: meichthys Date: Mon, 27 Oct 2025 03:44:14 +0000 Subject: [PATCH 25/25] Fix Church Missionary Letters Report Broken Fixes #55 --- .../church_missionary_letters.json | 30 +++----- .../__init__.py | 0 ...hurch_missionary_letters_not_yet_read.json | 77 +++++++++++++++++++ .../workspace/missions/missions.json | 16 +++- 4 files changed, 100 insertions(+), 23 deletions(-) create mode 100644 church/church_missions/report/church_missionary_letters_not_yet_read/__init__.py create mode 100644 church/church_missions/report/church_missionary_letters_not_yet_read/church_missionary_letters_not_yet_read.json diff --git a/church/church_missions/report/church_missionary_letters/church_missionary_letters.json b/church/church_missions/report/church_missionary_letters/church_missionary_letters.json index 6657b2d..14fbdd8 100644 --- a/church/church_missions/report/church_missionary_letters/church_missionary_letters.json +++ b/church/church_missions/report/church_missionary_letters/church_missionary_letters.json @@ -21,6 +21,12 @@ "label": "Share w/ Church?", "width": 0 }, + { + "fieldname": "shared_date", + "fieldtype": "Date", + "label": "Shared Date", + "width": 0 + }, { "fieldname": "is_private", "fieldtype": "Check", @@ -39,39 +45,23 @@ "fieldtype": "Data", "label": "Content", "width": 0 - }, - { - "fieldname": "shared_date", - "fieldtype": "Date", - "label": "Shared Date", - "width": 0 } ], "creation": "2025-09-24 00:00:27.738959", "disabled": 0, "docstatus": 0, "doctype": "Report", - "filters": [ - { - "default": "", - "fieldname": "missionary", - "fieldtype": "Link", - "label": "Church Missionary", - "mandatory": 1, - "options": "Church Missionary", - "wildcard_filter": 1 - } - ], - "idx": 0, + "filters": [], + "idx": 4, "is_standard": "Yes", "letterhead": null, - "modified": "2025-10-21 00:56:06.643688", + "modified": "2025-10-26 23:42:01.137843", "modified_by": "Administrator", "module": "Church Missions", "name": "Church Missionary Letters", "owner": "Administrator", "prepared_report": 0, - "query": "SELECT parent, date, share_with_church, shared_date, is_private, file, content \nFROM `tabChurch Letter` \nWHERE parent = %(missionary)s \nORDER BY parent", + "query": "SELECT parent, date, share_with_church, shared_date, is_private, file, content \nFROM `tabChurch Letter` \nORDER BY parent", "ref_doctype": "Church Missionary", "report_name": "Church Missionary Letters", "report_type": "Query Report", diff --git a/church/church_missions/report/church_missionary_letters_not_yet_read/__init__.py b/church/church_missions/report/church_missionary_letters_not_yet_read/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/church/church_missions/report/church_missionary_letters_not_yet_read/church_missionary_letters_not_yet_read.json b/church/church_missions/report/church_missionary_letters_not_yet_read/church_missionary_letters_not_yet_read.json new file mode 100644 index 0000000..7695daa --- /dev/null +++ b/church/church_missions/report/church_missionary_letters_not_yet_read/church_missionary_letters_not_yet_read.json @@ -0,0 +1,77 @@ +{ + "add_total_row": 0, + "add_translate_data": 0, + "columns": [ + { + "fieldname": "parent", + "fieldtype": "Link", + "label": "From", + "options": "Church Missionary", + "width": 0 + }, + { + "fieldname": "date", + "fieldtype": "Date", + "label": "Date", + "width": 0 + }, + { + "fieldname": "share_with_church", + "fieldtype": "Check", + "label": "Share w/ Church?", + "width": 0 + }, + { + "fieldname": "shared_date", + "fieldtype": "Date", + "label": "Shared Date", + "width": 0 + }, + { + "fieldname": "is_private", + "fieldtype": "Check", + "label": "Is Private?", + "width": 0 + }, + { + "fieldname": "file", + "fieldtype": "Link", + "label": "File", + "options": "File", + "width": 0 + }, + { + "fieldname": "content", + "fieldtype": "Data", + "label": "Content", + "width": 0 + } + ], + "creation": "2025-10-26 23:40:26.246147", + "disabled": 0, + "docstatus": 0, + "doctype": "Report", + "filters": [], + "idx": 0, + "is_standard": "Yes", + "letterhead": null, + "modified": "2025-10-26 23:40:26.246147", + "modified_by": "Administrator", + "module": "Church Missions", + "name": "Church Missionary Letters Not Yet Read", + "owner": "Administrator", + "prepared_report": 0, + "query": "SELECT parent, date, share_with_church, shared_date, is_private, file, content \nFROM `tabChurch Letter` \nWHERE share_with_church=1 AND shared_date IS NULL\nORDER BY parent", + "ref_doctype": "Church Missionary", + "report_name": "Church Missionary Letters Not Yet Read", + "report_type": "Query Report", + "roles": [ + { + "role": "Church Manager" + }, + { + "role": "Church User" + } + ], + "timeout": 0 +} \ No newline at end of file diff --git a/church/church_missions/workspace/missions/missions.json b/church/church_missions/workspace/missions/missions.json index 7a1a95a..cb6a1ca 100644 --- a/church/church_missions/workspace/missions/missions.json +++ b/church/church_missions/workspace/missions/missions.json @@ -36,7 +36,7 @@ "hidden": 0, "is_query_report": 0, "label": "Missionary Reports", - "link_count": 1, + "link_count": 2, "link_type": "DocType", "onboard": 0, "type": "Card Break" @@ -44,15 +44,25 @@ { "hidden": 0, "is_query_report": 1, - "label": "Letters", + "label": "Missionary Letters", "link_count": 0, "link_to": "Church Missionary Letters", "link_type": "Report", "onboard": 0, "type": "Link" + }, + { + "hidden": 0, + "is_query_report": 1, + "label": "Missionary Letters Not Yet Read", + "link_count": 0, + "link_to": "Church Missionary Letters Not Yet Read", + "link_type": "Report", + "onboard": 0, + "type": "Link" } ], - "modified": "2025-10-22 23:37:07.875258", + "modified": "2025-10-26 23:42:49.866928", "modified_by": "Administrator", "module": "Church Missions", "name": "Missions",