⚠️ Note: This project is a proof of concept developed for assessment purposes.
It is not intended for production use.
- Clone the repository
git clone https://github.com/luismgsantos/acme-donation-platform.git- Install PHP dependencies
composer install # This is necessary to later have ./vendor/bin/sail to run `./vendor/bin/sail up -d`NOTE: You can kind of skip this and just run
docker compose up -dand then you have to install php dependencies, build the assets and run the migrations on your own withphp artisan migrate.
- Install and build frontend assets
npm install
npm run build- PHP 8.4 / Laravel 12
- SQLite
- Sanctum for API auth
- Pest for testing
- PHPStan (level 8)
- Dockerized with Laravel Sail
| Path | Description |
|---|---|
app/Models/ |
Eloquent models |
app/Http/Controllers/Api/V1/ |
Versioned API controllers |
app/Http/Controllers/Api/ |
API controllers |
app/Http/Resources/V1/ |
Versioned API resources (CampaignResource, DonationResource) |
app/Notifications/ |
Notifications like DonationMade |
routes/api.php |
Main API routes entry point (calls versioned route groups) |
routes/auth.php |
Central auth routes (used across versions) |
routes/api/auth.php |
API Auth |
routes/api/v1/campaigns.php |
V1 Routes for Campaigns |
tests/Feature/ |
Pest feature tests for API endpoints |
tests/Unit/ |
Pest unit tests for API endpoints |
Full project overview here
- Authenticated users can create donation campaigns
- Authenticated users can donate
- Notifications for both donors and campaign creators (stored in database)
- Pest tests for core features
- Dockerized dev environment with SQLite
- API is versioned under
/api/v1/ - Authentication is handled via Sanctum (see
routes/auth.php) - Use php artisan tinker for quick testing or poking the database
- Factories and seeders help build fake data fast
./vendor/bin/sail testOr directly via Pest:
./vendor/bin/sail pest./vendor/bin/sail up -d./vendor/bin/sail artisan migrateOpen http://localhost:8000 in your browser.
You can also use sail shell or sail artisan for interacting with the container.
Luís Santos
GitHub: @luismgsantos
Email: luismgspro@gmail.com