A web application for the field ministry.
Pain points of traditional printed territory slips
- Use of paper that will be discarded once territory is completed. ๐๏ธ (Total paper used per service yr = 4 pieces (average paper use per territory) X no. of territories in the congregation)
- Preparation of printed territory slips (Designing, Printing & Cutting). โ๏ธ ๐จ๏ธ ๐ฆ
- Territory servants have to eyeball all returned slips for new updates. ๐ ๐
- Risk of slips going missing. No one knows where is it ๐คทโโ๏ธ
- Risk of slips being returned in bad & unreadable conditions.
- High dependence on the conductor to show up for the ministry. No show โก๏ธ No slips โก๏ธ No HH ministry.
Advantages of Ministry Mapper
- Digital Technology. Slips are stored online rather than on paper. No more use of papers ๐ณ and undesirable handwritings ๐๏ธ. Nether will they go missing or be damaged for some reason.
- Near-zero management effort. Significant reduction of workload on the territory servants as records stored in the cloud. No more updating, printing & cutting on the servants part.
- Real-time collaboration. Territory records are displayed in real-time (Similar to live traffic/booking apps). This enables territory to be covered efficiently and effectively. For example, a slip can be covered by different publishers (letter writers and HH preachers together) in real-time as overlapping never (or almost never) occurs.
- High Availability. Slips are managed and distributed digitally. Zero to little disruption of the HH ministry as a result of sickness, travel delay or any unforeseen occurrences that may befall the conductor.
Disadvantages of Ministry Mapper
- Initial migration work of the territory data. Territory servants will have to take some time to enter their entire territory details into the system.
- Internet dependency. Requires publishers to use their internet capable phones/tablets to use. System may not be applicable for countries where internet access is not readily available.
- Slight learning curve. Elderly and non tech-savvy publishers may have to overcome the challenge of transiting from paper/pen to the use of a computing device to update territory records.
Configuration is done using a seperate administration module.
- Create account
- Configure user roles
- Configure congregation
- Access url, https://your_domain/congregation_code to begin administering.
-
Firebase Database setup
- Create Google account and setup firebase realtime database
- Implement security rules to prevent unwanted deletions and access.
-
Firebase Appcheck setup (Recommend to setup once app domain is active)
- Register domain in Google Recaptcha enterprise.
- Copy public key to environment variable,
VITE_FIREBASE_RECAPTCHA_ENTERPRISE_SITE_KEY
. - Copy secret key to Firebase appcheck
- Enforce
- Build package
- For local developement, generate a token from Appcheck and copy key to environment variable,
VITE_FIREBASE_APPCHECK_DEBUG_TOKEN
.
-
Firebase Functions. Refer to documentation for deployment.
-
Rollbar setup
- Create Rollbar account
- Create a React project
- Go to setting and retrieve client keys DSN.
- Copy access token to environment variable,
VITE_ROLLBAR_ACCESS_TOKEN
when building for production.
-
Local deployment
- Setup .env with the following environment variables and their values.
- VITE_FIREBASE_API_KEY=key_from_firebase_account
- VITE_FIREBASE_AUTH_DOMAIN=domain_from_firebase_account
- VITE_FIREBASE_DB_URL=url_from_firebase_account
- VITE_FIREBASE_PROJECT_ID=id_from_firebase_account
- VITE_FIREBASE_BUCKET=bucket_from_firebase_account
- VITE_FIREBASE_SENDER_ID=sender_id_from_firebase_account
- VITE_FIREBASE_APP_ID=app_id_from_firebase_account
- VITE_FIREBASE_APPCHECK_DEBUG_TOKEN=token generated from appcheck
- Restart shell and run
npm start
- Setup .env with the following environment variables and their values.
-
Production deployment
- Run
npm run build
- Copy build package into a cloud CDN provider of your choice.
- When deploying, ensure the following environment variables are configured.
- VITE_FIREBASE_API_KEY=key_from_firebase_account
- VITE_FIREBASE_AUTH_DOMAIN=domain_from_firebase_account
- VITE_FIREBASE_DB_URL=url_from_firebase_account
- VITE_FIREBASE_PROJECT_ID=id_from_firebase_account
- VITE_FIREBASE_BUCKET=bucket_from_firebase_account
- VITE_FIREBASE_SENDER_ID=sender_id_from_firebase_account
- VITE_FIREBASE_APP_ID=app_id_from_firebase_account
- VITE_SENTRY_LOGGING_DSN=DSN from Sentry account
- Run
- Bootstrap - CSS Framework
- Vite - Build tool
- ReactJs - Javascript UI Framework
- Typescript - Javascript typed implementation library
- Rollbar - App error tracking and monitoring
- Firebase Real-time database - Cloud based database with real time synchronization across all clients.
- Firebase Authentication - Cloud based authentication service.
- Firebase Appcheck - Protects your app from abuse by attesting that incoming traffic and blocking traffic without valid credentials.
- Firebase Functions - Cloud based backend job scheduler
- MailerSend - Email delivery service