P2H has been working with clients from the Middle East for a long time, including working on projects of significant social importance. At this time, we will tell you about a platform for collecting charitable donations developed by our team.
Just think about it, only a few years ago, most believers made donations directly to the mosque, which was an integral part of local culture. However, the pandemic changed the world, pushing many aspects of life towards digitization.
In this article, we want to explain how the donation collection platform works, highlighting its features, and showcasing how the P2H team contributes to ensuring the smooth and efficient operation of this service, especially in high-demand periods, such as the sacred month of Ramadan. This content may be of interest to those planning to develop donation collection services or charitable organization websites, etc.
About the donation platform:
The platform, which is being developed by the company, uses a monolithic architecture. This is a software model that consists of a single service. Here’s a bit more about the technology stack used in this project:
Monolithic architecture
Back end: Ruby on Rails
Front end: Vue.js, React Native
Mobile: React Native
Background processing: Sidekiq
Global cache: Redis
Infrastructure: PostgreSQL, ArgoCD, Heimdall, Oracle Cloud, Docker, Kubernetes
Monitoring, observation, and tracking: Thanos, Airbrake, Sentry
One of the most challenging aspects of working on the project is managing payments and avoiding overpayments. For our team, this became a real challenge, as we had to ensure fundraising without any overpayments. How does it work?
Let’s imagine that we need to collect 1000 USD for the charity project, but we allowed an overpayment of 10 USD. This occurred because the last person to contribute to the project made a donation that is slightly exceeding the remaining amount needed for the closure. The question is: what should be done with the overpaid amount?
Therefore, according to the client’s requirements, we cannot allow overpayments, and our goal was to find out how to regulate this process. Such decisions require thorough examination and discussion with the client to ensure the best approach to payment management in charitable projects and to ensure the smooth operation of the platform. Possible solutions to this problem were as follows:
- Refunding the person who made the last contribution.
- Refunding the difference between the donated amount and the required amount.
- Blocking such payments.
- Creating a mechanism that blocks payments to the fundraiser during the time one of the donors is making a payment.
Interesting features of the service
For users:
- Donations History
On the platform, a user’s donation history is not only recorded but also utilized to generate recommendations. Each donor has the opportunity to explore similar donation projects, aiding them in discovering projects aligning with their interests and previous contributions.
- Donation as a gift
The platform also allows users to make donations on behalf of another person, as a birthday gift, for example, or for other occasions. This is convenient when someone says, “I don’t need anything, just donate the planned budget to charity.” The donation process itself becomes more personal. Instead of taking screenshots of receipts and crafting personal greetings for a special occasion, the user can simply choose the “Donate as a Gift” option and enter the name and phone number of their friend or acquaintance. This enables making a donation on behalf of that person, who will later receive an SMS with a link to a greeting card and thanks for their generosity.
- Marketplace of donations
The platform also features a “cart” functionality, where users can add various projects and pay for them all together, similar to shopping in an online store.
- Donation Statistics
Users can easily review their donation statistics, including information about the monetary amounts and types of projects they have contributed to. There is also an option to view statistics on the most popular charities, active projects, and the history of completed fundraisers.
- From Online to Offline
The simplified invoicing system allows even people without credit cards to donate in cash at a bank, ensuring flexibility and accessibility in the donation process.
- Recurring Payments Feature
The platform also offers the option to set up recurring payments, allowing for regular (daily, weekly, monthly, or yearly) transfers of funds to charitable organizations and projects.
- Share Donation on Social Media
The platform allows users to easily share information about their participation in fundraising on social media, increasing awareness and support for charitable projects.
For Contributors:
- Charity Organization Ratings
The platform provides users with information about the ratings of charitable organizations (gold, silver, bronze status, or no status) based on their activity and successful projects. This helps users choose reliable organizations for donations. Additionally, the order in which these organizations are listed, on the general charity organizations page, changes based on this rating.
- Project Reports
Charitable organizations that were fundraising through the platform can include their project reports, providing information about how the collected funds are being used and the results achieved through donations. Additionally, users have access to a visual progress bar for each project, showing how much money has been raised and how much is left to raise.
The sacred month of Ramadan: peak demand
This service gains special attention during the sacred month of Ramadan (March-April), when Muslims consider it their duty to make donations. The platform experiences a load increase of more than 100 times, with the transaction volume reaching a record high. Therefore, the most important task for the team during the period of Ramadan is to handle the system overload and to ensure seamless platform operation for the clients.
To address the issue of platform overload, the team utilizes Redis, which is a fast, open-source, in-memory data storage with a “key-value” data structure. Redis is excellent for organizing high-performance, in-memory cache, reducing access latency, increasing throughput, and alleviating the load on the relational database. Redis can provide access to frequently requested data, allowing for easy scalability and handling increased server-level loads.
Being with a client 24/7
The last 4 days of Ramadan are typically the “hottest.” This period sees the highest number of transactions. Business activity in the East nearly stops during this time, so the responsibility for the platform’s operation largely falls on the team.
Despite the team continuing to work on the platform throughout the month, during this period, there is a rule of deployment freeze. On days of peak platform demand, the team works in shifts of 8 hours to be in touch with the client 24/7 and respond quickly to potential queries. The response time, during this period, for a request should be no more than 30 minutes, and all other scrum-processes of the team are almost entirely paused on these days.