Skip to content

AlphaHasher/ChurchLink

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

81 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ“Œ Overview

ChurchLink is a web and mobile platform designed to help churches manage their content, events, and community interactions. The project includes a web builder that allows church staff to create and update pages, add banners, post announcements, and engage with members through an easy-to-use interface.

So far, most of our work has been done on web and admin tools, but by the completion of CSC-191, a full suite for Admin-Web-Mobile will be completed.

🎯 Features

  • Simple Page Template System – Create and edit church pages using pre-designed templates.
  • Headless CMS Integration – Manage content dynamically without coding.
  • Event Management – Create and promote church events.
  • User Roles & Permissions – Secure access control for admins, editors, and members.
  • Mobile App Support – Native mobile app built with Flutter.
  • Mobile Notifications – Send push notifications for announcements, events, and updates.
  • Bible on Mobile – Access and read the Bible within the app (future integration).
  • Announcements & Banners – Display church updates and messages.
  • Donation & Payment Integration – Support for online giving via PayPal.
  • Multilingual Support – Accessibility for diverse church communities.

πŸ“‹ Admin Interface, Users View

Admin UI

πŸ“‹ Admin Interface, Creating a new Permission Role

Role Creation

πŸ“‹ Admin Interface, Creating a new Event

Event Creation

πŸ”¨ Web Builder, Page View

Web Builder

πŸ”¨ Web Builder, Header Item Creation

Header Creation

πŸŽ₯ Media Library, Strapi Integration

Media Library

πŸ‘€ Login Popup

Login

πŸ’» Web Example

Web Example

πŸ“± Mobile App – Event View

Mobile Event View

πŸ› οΈ Tech Stack

  • Frontend:

    • Flutter (Mobile App via the Dart Language)
    • React (Web App via the TypeScript Language)
  • Backend: FaspAPI (Server via the Python Language)

  • CMS: Strapi

  • Database:

    • MongoDB (Main Database)
    • SQLite (For CMS)
  • Notifications: Firebase Cloud Messaging (FCM)

  • Bible Integration: (To be determined)

  • Authentication: Firebase Auth

  • Payments: PayPal

πŸš€ Installation

Prerequisites

Ensure you have the following installed:

Steps (Just for DEMO README - NOT FINAL RELEASE)

  1. Clone the Repository

    git clone https://github.com/YOUR_GITHUB/ChurchLink.git
    cd ChurchLink
  2. Install Dependencies

yarn install

or

npm install
  1. Set Up Environment Variables Create a .env file in the root directory and add the necessary environment variables:
DATABASE_URL=your_mongodb_url
CMS_DATABASE_URL=your_sqlite_url
FIREBASE_API_KEY=your_firebase_key
PAYPAL_CLIENT_ID=your_paypal_client_id
  1. Run the Web Frontend (React)
cd frontend/web
yarn start
  1. Run the Mobile App (Flutter)
cd frontend/app
flutter run
  1. Run the CMS
cd cms
yarn develop
  1. Run the Backend (If applicable in the future)
cd backend
yarn dev
  1. Access the Application β€’ Web App: http://localhost:3000 β€’ CMS Admin: http://localhost:1337/admin β€’ Mobile App: (Run on emulator or physical device)

πŸ—οΈ Project Structure

ChurchLink/
│── frontend/
β”‚   └── app/            # App frontend (Flutter)
β”‚   └── web/            # Web frontend (React)
│── backend/            # Backend (To be determined)
│── cms/                # Headless CMS (Strapi)
│── docs/               # Documentation files
│── .env                # Environment variables
│── package.json        # Dependencies and scripts
│── README.md           # Project documentation

πŸ”” Mobile Notifications

ChurchLink supports push notifications to keep church members informed about announcements, upcoming events, and other important updates.

  • Uses Firebase Cloud Messaging (FCM) for push notifications.
  • Admins can send notifications from the CMS.
  • Users can opt-in or opt-out of notifications in their settings.

πŸ“– Bible on Mobile (Future Integration)

ChurchLink will support an integrated Bible feature in the future, allowing users to:

  • Read the full Bible within the app.
  • Search for specific verses and chapters.
  • View daily scripture recommendations.

πŸ’³ Donations & Payments

ChurchLink supports online donations through PayPal, allowing churches to accept tithes and offerings digitally.

  • Integrated with PayPal API for secure transactions.
  • Allows one-time or recurring donations.

βš™οΈ Permissions Currently Implemented

ChurchLink supports permissions implemented by the means of user-defined permission roles. Some of these permissions are directly integrated into Strapi, for a seamless transition from ChurchLink provided utilities to Strapi itself. Below is the list of permissions that can be implemented into these roles, that have fully been implemented as working.

  • admin: Allows the user to have complete permissions access. Only able to be granted to default Administrator role. Allows for creation/edit/deletion of roles with permissions_management perm.

  • permissions_management: Allows this user to be able to create/edit/delete/assign roles. Special rule: These users cannot edit roles with the admin or permissions management permissions. These users cannot change permissions they do not already explicitly have permissions for.

  • event_editing: Allows this user to be able to create/edit/delete events. Special rule: This role becomes available now to be used in the "lock" model for Events, at least ONE of these Role Types is necessary to create events, these roles are the ONLY ones that can be assigned to events.

  • event_management: Allows this user to be able to create/edit/delete ALL events regardless if they have the proper "keys" for the event "locks". event_management or admin is required in order to be able to edit the "locks" of pre-existing events. Reasoning why this is restricted to event managers is because if event editors could modify the locks, a massive headache would occur in multi-lock event systems when different users don't have ALL locks. Best to avoid them kicking eachother off, or editing roles they don't have access to.

  • media_management: Allows this user to be able to upload/edit/delete media content in the Strapi Dashboard


πŸ“Š Database Design

Below is a comprehensive overview of the planned MongoDB Database integration

image

image

image

image


⏳ Predicted Timeline

Below is a tentative idea of the kind of timeline that we plan to see for CSC-191 in the completion of this project. Subject to change pending changing conditions of decision making.

Sprint 5 - Completion of Events, including the proper gathering of data for the user and EventPersons, Completing our PayPal Finances integration

Sprint 6 - The Completion of a fully functional Bible Reader, including Reading plans, completing notifications hubs

Sprint 7 - The Completion of Media-Watching such as with the Church's existing content, and watching YouTube livestreams. Completing integration of a simple viewer of pages for Mobile

Spint 8 - PROJECT SHOULD BE DONE, Clean-up of any remaining last things we want to get fixed or implemented


πŸ“– Instructions

According to the guidelines for the README.md deliverable, sections must be laid out for testing, deployment, and developer instructions. While the filling out of this content is a CSC 191 assignment, we will section out these places. However, we would encourage a current reader of this repository to read our wiki for detailed instructions.


πŸ“– Developer Instructions


πŸ“– Testing Instructions


πŸ“– Deployment Instructions


🀝 Contributing

We welcome contributions from the community! If you’d like to contribute:

  1. Fork the repository and create a new branch.
  2. Make your changes and ensure the project runs successfully.
  3. Submit a pull request for review.

πŸ“œ License

This project is licensed under the MIT License – see the LICENSE file for details.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 7