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.
- 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.
-
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
Ensure you have the following installed:
-
Clone the Repository
git clone https://github.com/YOUR_GITHUB/ChurchLink.git cd ChurchLink
-
Install Dependencies
yarn install
or
npm install
- 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
- Run the Web Frontend (React)
cd frontend/web
yarn start
- Run the Mobile App (Flutter)
cd frontend/app
flutter run
- Run the CMS
cd cms
yarn develop
- Run the Backend (If applicable in the future)
cd backend
yarn dev
- Access the Application β’ Web App: http://localhost:3000 β’ CMS Admin: http://localhost:1337/admin β’ Mobile App: (Run on emulator or physical device)
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
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.
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.
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.
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
Below is a comprehensive overview of the planned MongoDB Database integration
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
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.
We welcome contributions from the community! If youβd like to contribute:
- Fork the repository and create a new branch.
- Make your changes and ensure the project runs successfully.
- Submit a pull request for review.
This project is licensed under the MIT License β see the LICENSE file for details.