dar-alatta / README.md
Dar Al Atta
Dar Al Atta's application and website
Dar Al Atta
A modern, scalable mobile application for streamlining community services, volunteer engagement, and donation processes for the Dar Al Atta charity.
Problem Statement
The current Dar Al Atta platform suffers from service instability, poor scalability, and a fragmented user experience. Key pain points include:
- Frequent service outages (SMS and Thawani integrations).
- Cumbersome and multi-step donation process.
- Manual and inefficient complaint handling.
- Lack of streamlined volunteer engagement tools.
This project aims to address these issues with a new, modern solution that is robust, scalable, and user-centric.
Supporting documents
- Product brief
- Features list
- System design
- Backend document
- Frontend document
- Strapi document
- Features Implementations
- Postman collection
- Building android app
- Building ios app
- Production deployment instructions
Getting started
Make sure to check the Developer Workflow Guide before getting started.
Pre-requisites
- Docker (v24.0.2)
- Docker Compose
- Expo Make sure to choose development build to reflect the real user experience
Project setup
Clone the repository
git clone https://github.com/rihal-om/dar-alatta.git
cd dar-alatta
Running the app locally
-
Make sure to copy
credentials.jsonto./dar-alatta/server/cedentials.json(file exists in vaultwarden) -
Run all the services:
docker compose up -d --build
- Navigate to the client directory:
cd ./client
- Based on your environement run (can be skipped if you don't want to run the app):
pnpm android
# or
pnpm ios
- Populate Strapi
# 1. Copy the exported backup (check the next step to see how to export strapi's data)
# NOTE: if the file is mounted to the container, no need to copy it.
docker compose cp ./config/strapi/init.tar.gz.enc strapi:/opt/app/
# 2. Import the backup (this will erase all strapi's data)
docker compose exec strapi yarn strapi import --force --file init.tar.gz.enc --key dar-alatta
Note the --key dar-alatta part. This is the key that was used to encrypt the backup. Follow the next section to know more.
- Exporting strapi's data (optional):
# 1. Export the file (the resulted file will be named export.tar.gz.enc)
docker compose exec strapi yarn strapi export --file export --key dar-alatta
# 2. Copy the exported backup in case you want to replace the backup we are storing in the repo
docker compose cp strapi:/opt/app/export.tar.gz.enc ./config/strapi/init.tar.gz.enc
- Once the application is running navigate to:
# Backend
http://server:8081
# Strapi (email: test@rihal.om) (password:test123!)
http://localhost:1337
# Website
http://localhost:3000
- The API logs, metrics, and traces are exposed to Grafana using OpenTelemetry. To check the grafana dashboard, navigate to http://localhost:3000
Tech Stack
| Category | Tool | Description |
|---|---|---|
| Frontend | React Native | Mobile UI framework (via Expo) |
| Frontend | Next JS | Website UI framework |
| Backend | Go | Server-side language/framework |
| CMS | Strapi | Headless content management system |
| Database | PostgreSQL | Relational database |
| Containerization | Docker | Container platform |
| CI/CD | EAS Workflows | Mobile app build and deployment tool |
Project Team
| Name | Role | GitHub |
|---|---|---|
| Mohamed Al-Rasbi | Project Lead | @mohdrasbi |
| Miqdad Ali | Backend Developer | @miqdad-ali |
| Omar Alhendi | Lead Frontend Dev | @omar-alhendi |
| Samya Alyaarbi | Frontend Developer | @samiya-alyaaribi |
| Reem Alqarni | Frontend Developer | @ireemalqarni |
| Omar Alsuleimani | Fullstack Developer | @omar-alsuleimani |
Feel free to reach out to any of us for questions, feedback, or collaboration opportunities. We are always open to discussing new ideas and improvements for the project.
Happy coding!