A complete digital platform for managing charitable activities and connecting donors, beneficiaries, volunteers, and charity administrators in one system.
Charity is an API-first charitable management platform built with Laravel. It supports the complete charity workflow, from account registration and profile completion to campaigns, donations, sponsorships, aid applications, notifications, reporting, and digital receipts.
The platform is designed to:
The public deployment URL will be added here after the production environment is published.
https://your-demo-url.comhttps://your-demo-url.com/apihttp://127.0.0.1:8000Replace the placeholder image paths below with screenshots from the deployed application. Keeping screenshots inside docs/screenshots/ makes them easy to maintain and version with the project.
The following flow demonstrates the main platform capabilities:
For security reasons, real credentials should not be stored in this repository. Add temporary demo accounts to your deployment documentation or hosting platform instead:
| Account | Password | |
|---|---|---|
| Donor | demo-donor@example.com | Use-a-secure-demo-password |
| Beneficiary | demo-beneficiary@example.com | Use-a-secure-demo-password |
| Volunteer | demo-volunteer@example.com | Use-a-secure-demo-password |
| Administrator | demo-admin@example.com | Use-a-secure-demo-password |
The application supports several user types and administrative roles:
| Role | Main Responsibilities |
|---|---|
| Donor | Browse campaigns, donate, view donation history and receipts, and manage sponsorships |
| Beneficiary | Complete a profile, submit aid applications, and manage visits |
| Volunteer | Browse tasks, request assignments, check in, and receive evaluations and certificates |
| Administrator | Manage users, campaigns, donations, beneficiaries, volunteers, and tasks |
| Manager / Accountant / Viewer | Specialized administrative access based on operational permissions |
Install the following before running the project:
8.2 or newer with the gd, pdo_mysql, and zip extensions.git clone https://github.com/ThaerGhaderi/Project-Charity.git
cd Project-Charity
composer install
npm install
cp .env.example .env
php artisan key:generate
On Windows PowerShell:
Copy-Item .env.example .env
php artisan key:generate
Create a database named project_charity, or choose another database name and update the DB_* values in .env:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=project_charity
DB_USERNAME=root
DB_PASSWORD=
Run the migrations:
php artisan migrate
To load local development data:
php artisan db:seed
Do not run
migrate:fresh --seedagainst a database containing important data. It drops all tables before recreating them.
php artisan storage:link
npm run build
Start the HTTP server:
php artisan serve
Open http://127.0.0.1:8000 in your browser.
During development, you can run the application server, queue listener, log viewer, and Vite together:
composer run dev
Keep all credentials in .env and never commit them to GitHub.
STRIPE_KEY=
STRIPE_SECRET=
STRIPE_WEBHOOK_SECRET=
STRIPE_CURRENCY=usd
Configure your Stripe webhook to point to:
POST /api/stripe/webhook
GOOGLE_CLIENT_ID=
GOOGLE_CLIENT_SECRET=
GOOGLE_REDIRECT_URI=
FACEBOOK_CLIENT_ID=
FACEBOOK_CLIENT_SECRET=
FACEBOOK_REDIRECT_URI=
Firebase requires a service-account configuration referenced by the Firebase settings. Pusher requires application credentials and a cluster:
PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
PUSHER_APP_CLUSTER=
Review the files in config/ for additional variables related to email, PayerURL, Firebase, broadcasting, and cloud storage.
| Command | Description |
|---|---|
composer run setup | Install dependencies, create the environment, run migrations, and build frontend assets |
composer run dev | Run the complete local development environment |
php artisan migrate | Apply database migrations |
php artisan db:seed | Load development seed data |
php artisan route:list | Display all registered application routes |
php artisan config:clear | Clear cached configuration |
npm run dev | Run Vite in development/watch mode |
npm run build | Build frontend assets for production |
composer test | Run the PHPUnit test suite through Laravel |
API routes are defined in routes/api.php. Laravel automatically applies the /api prefix.
| Group | Example Endpoints |
|---|---|
| Authentication | /api/auth/register, /api/auth/login, /api/auth/verify-otp |
| Beneficiaries | /api/beneficiary/profile, /api/beneficiary/aid-applications |
| Donors | /api/donor/campaigns, /api/donor/donations |
| Sponsorships | /api/sponsorships, /api/sponsorships/{id}/payments |
| Notifications | /api/notifications |
| Conversations | /api/chat/conversations |
| Reports | /api/reports/general, /api/reports/donations |
| Administration | Campaign, beneficiary, volunteer, task, and donation management endpoints |
Protected endpoints use Laravel Sanctum. Include the token returned after login in subsequent requests:
Authorization: Bearer <token>
Accept: application/json
To view the complete list of endpoints, HTTP methods, and middleware:
php artisan route:list --path=api
app/
├── Http/Controllers/ # Web and API request handling
├── Http/Requests/ # Request validation
├── Models/ # Eloquent models and relationships
├── Services/ # Business services and integrations
├── Events/ # Broadcast and real-time events
└── Exports/ # Data export classes
database/
├── migrations/ # Database schema migrations
├── factories/ # Test and development factories
└── seeders/ # Development seed data
routes/
├── api.php # REST API routes
├── web.php # Web and payment result routes
└── console.php # Artisan command routes
resources/
├── views/ # Blade templates, payment pages, and receipts
├── css/ # Tailwind styles
└── js/ # Vite and Axios entry points
config/ # Laravel and integration configuration
tests/ # Unit and feature tests
The project uses PHPUnit. The phpunit.xml configuration uses an in-memory SQLite database for tests:
php artisan test
Or:
composer test
Before opening a pull request, run the tests and frontend build, and verify that the migrations work on a clean database:
php artisan test
npm run build
.env, Stripe, Firebase, OAuth, SMTP, or other service credentials.APP_DEBUG=false in production.APP_URL, FRONTEND_URL, and CORS settings for the deployment environment.Contributions are welcome:
feature/recurring-donations.php artisan test and npm run build.This project is licensed under the MIT License, according to the current package configuration. Add an official LICENSE file to the repository before publishing the public release if one does not already exist.
Built to help create a greater charitable impact.
A complete digital platform for managing charitable activities and connecting donors, beneficiaries, volunteers, and charity administrators in one system.
Charity is an API-first charitable management platform built with Laravel. It supports the complete charity workflow, from account registration and profile completion to campaigns, donations, sponsorships, aid applications, notifications, reporting, and digital receipts.
The platform is designed to:
The public deployment URL will be added here after the production environment is published.
https://your-demo-url.comhttps://your-demo-url.com/apihttp://127.0.0.1:8000Replace the placeholder image paths below with screenshots from the deployed application. Keeping screenshots inside docs/screenshots/ makes them easy to maintain and version with the project.
The following flow demonstrates the main platform capabilities:
For security reasons, real credentials should not be stored in this repository. Add temporary demo accounts to your deployment documentation or hosting platform instead:
| Account | Password | |
|---|---|---|
| Donor | demo-donor@example.com | Use-a-secure-demo-password |
| Beneficiary | demo-beneficiary@example.com | Use-a-secure-demo-password |
| Volunteer | demo-volunteer@example.com | Use-a-secure-demo-password |
| Administrator | demo-admin@example.com | Use-a-secure-demo-password |
The application supports several user types and administrative roles:
| Role | Main Responsibilities |
|---|---|
| Donor | Browse campaigns, donate, view donation history and receipts, and manage sponsorships |
| Beneficiary | Complete a profile, submit aid applications, and manage visits |
| Volunteer | Browse tasks, request assignments, check in, and receive evaluations and certificates |
| Administrator | Manage users, campaigns, donations, beneficiaries, volunteers, and tasks |
| Manager / Accountant / Viewer | Specialized administrative access based on operational permissions |
Install the following before running the project:
8.2 or newer with the gd, pdo_mysql, and zip extensions.git clone https://github.com/ThaerGhaderi/Project-Charity.git
cd Project-Charity
composer install
npm install
cp .env.example .env
php artisan key:generate
On Windows PowerShell:
Copy-Item .env.example .env
php artisan key:generate
Create a database named project_charity, or choose another database name and update the DB_* values in .env:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=project_charity
DB_USERNAME=root
DB_PASSWORD=
Run the migrations:
php artisan migrate
To load local development data:
php artisan db:seed
Do not run
migrate:fresh --seedagainst a database containing important data. It drops all tables before recreating them.
php artisan storage:link
npm run build
Start the HTTP server:
php artisan serve
Open http://127.0.0.1:8000 in your browser.
During development, you can run the application server, queue listener, log viewer, and Vite together:
composer run dev
Keep all credentials in .env and never commit them to GitHub.
STRIPE_KEY=
STRIPE_SECRET=
STRIPE_WEBHOOK_SECRET=
STRIPE_CURRENCY=usd
Configure your Stripe webhook to point to:
POST /api/stripe/webhook
GOOGLE_CLIENT_ID=
GOOGLE_CLIENT_SECRET=
GOOGLE_REDIRECT_URI=
FACEBOOK_CLIENT_ID=
FACEBOOK_CLIENT_SECRET=
FACEBOOK_REDIRECT_URI=
Firebase requires a service-account configuration referenced by the Firebase settings. Pusher requires application credentials and a cluster:
PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
PUSHER_APP_CLUSTER=
Review the files in config/ for additional variables related to email, PayerURL, Firebase, broadcasting, and cloud storage.
| Command | Description |
|---|---|
composer run setup | Install dependencies, create the environment, run migrations, and build frontend assets |
composer run dev | Run the complete local development environment |
php artisan migrate | Apply database migrations |
php artisan db:seed | Load development seed data |
php artisan route:list | Display all registered application routes |
php artisan config:clear | Clear cached configuration |
npm run dev | Run Vite in development/watch mode |
npm run build | Build frontend assets for production |
composer test | Run the PHPUnit test suite through Laravel |
API routes are defined in routes/api.php. Laravel automatically applies the /api prefix.
| Group | Example Endpoints |
|---|---|
| Authentication | /api/auth/register, /api/auth/login, /api/auth/verify-otp |
| Beneficiaries | /api/beneficiary/profile, /api/beneficiary/aid-applications |
| Donors | /api/donor/campaigns, /api/donor/donations |
| Sponsorships | /api/sponsorships, /api/sponsorships/{id}/payments |
| Notifications | /api/notifications |
| Conversations | /api/chat/conversations |
| Reports | /api/reports/general, /api/reports/donations |
| Administration | Campaign, beneficiary, volunteer, task, and donation management endpoints |
Protected endpoints use Laravel Sanctum. Include the token returned after login in subsequent requests:
Authorization: Bearer <token>
Accept: application/json
To view the complete list of endpoints, HTTP methods, and middleware:
php artisan route:list --path=api
app/
├── Http/Controllers/ # Web and API request handling
├── Http/Requests/ # Request validation
├── Models/ # Eloquent models and relationships
├── Services/ # Business services and integrations
├── Events/ # Broadcast and real-time events
└── Exports/ # Data export classes
database/
├── migrations/ # Database schema migrations
├── factories/ # Test and development factories
└── seeders/ # Development seed data
routes/
├── api.php # REST API routes
├── web.php # Web and payment result routes
└── console.php # Artisan command routes
resources/
├── views/ # Blade templates, payment pages, and receipts
├── css/ # Tailwind styles
└── js/ # Vite and Axios entry points
config/ # Laravel and integration configuration
tests/ # Unit and feature tests
The project uses PHPUnit. The phpunit.xml configuration uses an in-memory SQLite database for tests:
php artisan test
Or:
composer test
Before opening a pull request, run the tests and frontend build, and verify that the migrations work on a clean database:
php artisan test
npm run build
.env, Stripe, Firebase, OAuth, SMTP, or other service credentials.APP_DEBUG=false in production.APP_URL, FRONTEND_URL, and CORS settings for the deployment environment.Contributions are welcome:
feature/recurring-donations.php artisan test and npm run build.This project is licensed under the MIT License, according to the current package configuration. Add an official LICENSE file to the repository before publishing the public release if one does not already exist.
Built to help create a greater charitable impact.