A full-stack NGO operations and content management platform built with Laravel and Filament. X-Charity brings public storytelling, fundraising records, programme delivery, volunteer coordination, compliance, internal operations, and email engagement into one administration system.
The project adapts a charity website into a database-driven CMS while retaining its public-facing visual identity. Demo data is focused on realistic Nigerian NGO workflows and uses fictional people and records.
- CMS-managed public pages, navigation, reusable page sections, blog posts, events, causes, gallery items, testimonials, sponsors, and team profiles
- Fundraising operations for donors, donations, causes, and campaign progress
- Programme delivery through NGO projects, milestones, beneficiaries, staff assignments, and impact dashboards
- Volunteer intake and contact-message management from the public website
- Newsletter lists, tags, subscribers, campaigns, queued delivery, scheduling, unsubscribe handling, and open/click tracking
- Operations tooling for internal tasks, procurement requests, assets, and compliance documents
- Secure Filament admin panel with resource-based CRUD workflows and dashboard widgets
- Database-backed queues, cache, and sessions with SQLite as the zero-configuration local default
- Seeded portfolio demo content, automated feature tests, and a production-readiness checklist
| Layer | Technology |
|---|---|
| Backend | PHP 8.2+, Laravel 12 |
| Admin | Filament 4, Livewire (via Filament) |
| Public UI | Blade, Bootstrap theme, JavaScript/jQuery components |
| Asset pipeline | Vite 7, Tailwind CSS 4 |
| Database | SQLite by default; MySQL/PostgreSQL compatible |
| Async work | Laravel database queue and task scheduler |
| Testing | PHPUnit 11, Laravel feature and unit tests |
| Area | Modules |
|---|---|
| Content | CMS pages, page sections, navigation, blog, events, gallery, testimonials, sponsors |
| Fundraising | Causes, donors, donations, campaign progress |
| Programmes | Projects, milestones, beneficiaries, staff, volunteers |
| Communications | Contacts, subscribers, lists, tags, campaigns, recipients, tracking |
| Operations | Tasks, procurement, assets, compliance documents, settings |
| Reporting | Impact, operations-queue, and communications dashboard widgets |
- PHP 8.2 or newer with the extensions required by Laravel
- Composer 2
- Node.js 22+ and npm
- SQLite, MySQL, or PostgreSQL
git clone https://github.com/seunoseya44-tech/x-charity-ngo-management-system.git
cd x-charity-ngo-management-system
composer install
npm ci
cp .env.example .env
php artisan key:generateCreate the default SQLite database:
touch database/database.sqlite
php artisan migrate --seed
php artisan storage:link
npm run buildOn Windows PowerShell, use Copy-Item .env.example .env and New-Item database/database.sqlite -ItemType File -Force in place of cp and touch.
Start the application:
php artisan serveThe public site is available at http://127.0.0.1:8000; the admin panel is at http://127.0.0.1:8000/admin.
Run these in separate terminals when testing queued or scheduled campaigns:
php artisan queue:work
php artisan schedule:workThe included .env.example uses SQLite and safe local mail logging. To use MySQL, update only your local .env:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=x_charity
DB_USERNAME=root
DB_PASSWORD=Never commit .env, production credentials, database snapshots, or generated keys. The repository ignore rules exclude these files.
Running php artisan migrate --seed creates a local demonstration administrator:
Email: admin@xngo.test
Password: Password123!
These credentials are intentionally public and are for local portfolio evaluation only. Change or remove the seeded account before any deployment.
app/
Filament/Resources/ Admin CRUD modules
Filament/Widgets/ Impact and operations dashboards
Http/Controllers/ Public website and newsletter flows
Jobs/ Queued campaign delivery
Models/ NGO, CMS, and communications domain models
Services/ Campaign audience and delivery logic
database/
migrations/ Application schema
seeders/ Fictional Nigeria-focused demo data
docs/ Production notes and media inventory
public/theme/ Preserved public-site theme assets
resources/views/ Blade templates and reusable partials
routes/ Web routes and scheduled commands
tests/ Feature and unit tests
Portfolio screenshots are stored in docs/screenshots. Recommended additional showcase views are:
- Filament impact dashboard
- Projects, donations, and beneficiaries tables
- Newsletter campaign composer and delivery analytics
- Mobile public-site navigation
php artisan test
./vendor/bin/pint --test
npm run buildGitHub Actions runs the Laravel tests and production asset build on pushes and pull requests to main.
Review docs/production-readiness.md before deployment. At minimum:
- replace the demo administrator and all fictional organisation data;
- set
APP_ENV=production,APP_DEBUG=false, and a productionAPP_URL; - configure a production database, mail provider, queue worker, scheduler, backups, and HTTPS;
- review uploaded-file validation, data-retention obligations, and access policies;
- run
php artisan optimizeafter environment configuration is complete.
- Integrate a Nigerian payment provider such as Paystack or Flutterwave
- Add role-based permissions and approval workflows
- Add donor receipts, exports, and richer financial reporting
- Expand automated coverage for every public form and critical admin action
- Add object-storage support and an image optimisation pipeline
- Publish a short product walkthrough and hosted demonstration environment
This project is open-source software licensed under the MIT License.
Built and maintained by seunoseya44-tech.
For portfolio or project enquiries, use the contact details published on the developer's GitHub profile.
