Bursa Binelui is a civic-tech platform that connects NGOs with donors and volunteers. Organizations register, publish projects, and collect donations. Donors give to approved projects, and volunteers offer their time to organizations and projects.
The app is PHP 8.2 and Laravel 10 on the backend, with Vue 3, Inertia.js, and Tailwind CSS on the frontend. Filament v2 is the admin panel.
Contributing | Built with | Development | Deployment | Feedback | License | About Code for Romania
This project is built by amazing volunteers and you can be one of them! Here's a list of ways in which you can contribute to this project. If you want to make any change to this repository, please make a fork first.
Help us out by testing this project in the staging environment. If you see something that doesn't quite work the way you expect it to, open an Issue. Make sure to describe what you expect to happen and what is actually happening in detail.
If you would like to suggest new functionality, open an Issue and mark it as a [Feature request]. Please be specific about why you think this functionality will be of use. If you can, please include some visual description of what you would like the UI to look like, if you are suggesting new UI elements.
- Languages: PHP 8.2, JavaScript
- Backend: Laravel 10, Filament v2
- Frontend: Vue 3, Inertia.js, Tailwind CSS
- Package managers: Composer, npm
- Database: MySQL or MariaDB
- PHP 8.2 or newer, with the
pdo_mysql,mbstring,gd,intl,zip, andexifextensions - Composer
- Node.js 20 and npm. The repo pins the version in
.nvmrc, sonvm useselects it. - MySQL or MariaDB
- Laravel Herd is optional. The built-in PHP server works too.
- Copy the environment file:
cp .env.example .env-
Create a database named
bursa_binelui. -
Point
.envat your local MySQL server..env.exampleuses the hostnamemariadb, which is only reachable from a container. On the host machine, set:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=bursa_binelui
DB_USERNAME=your_user
DB_PASSWORD=your_passwordCache and queues already use CACHE_DRIVER=file and QUEUE_CONNECTION=sync, so a local Redis server is not required.
- Install PHP dependencies:
composer install- Install JavaScript dependencies:
npm install- Generate the application key:
php artisan key:generate- Migrate and seed:
php artisan migrate:fresh --seedSeeding creates a large set of organizations and articles, so it can take a while. If it fails on a Faker date, run the same command again.
- Link the public storage disk:
php artisan storage:link- Turn off Content Security Policy for local development by adding this to
.env:
CSP_ENABLED=falseCSP is enabled by default. Keep that setting for local development only.
- Set
APP_URLto the URL you will open in the browser:
- Laravel Herd:
APP_URL=https://bursabinelui.test - Built-in PHP server:
APP_URL=http://127.0.0.1:8000
Start the Vite dev server:
npm run devThen serve PHP with one of these options.
Laravel Herd. Link this project in Herd, select PHP 8.2, and enable HTTPS. Open https://bursabinelui.test.
Built-in PHP server. In a second terminal:
php artisan serveOpen http://127.0.0.1:8000.
php artisan migrate:fresh --seed creates these users. The password for both is password.
| Role | |
|---|---|
superadmin@example.com |
Super admin. Signs in at /admin. |
supermanager@example.com |
Super manager |
GOOGLE_MAPS_API_KEY enables the county map. Mail, S3, EuPlatesc, Mailchimp, and Sentry can stay empty while you work locally.
npm run dev is enough for day-to-day work. npm run build compiles the client and SSR assets used by the production image. That image starts server rendering with php artisan inertia:start-ssr.
php artisan testFeature tests use RefreshDatabase and run against the database configured in .env. phpunit.xml keeps the MySQL connection. Point DB_* at a separate database before you run the suite, so the refresh does not wipe your development data.
Production runs from the Dockerfile. The image installs PHP dependencies, builds the Vite client and SSR bundles, and serves the app with nginx and PHP-FPM, plus a queue worker, cron, and the Inertia SSR process. Process configuration lives in docker/.
Local installation is described in Development.
- Request a new feature on GitHub.
- Vote for popular feature requests.
- File a bug in GitHub Issues.
- Email us with other feedback contact@code4.ro
This project is licensed under the MPL 2.0 License - see the LICENSE file for details
Started in 2016, Code for Romania is a civic tech NGO, official member of the Code for All network. We have a community of around 2.000 volunteers (developers, ux/ui, communications, data scientists, graphic designers, devops, it security and more) who work pro-bono for developing digital solutions to solve social problems. #techforsocialgood. If you want to learn more details about our projects visit our site or if you want to talk to one of our staff members, please e-mail us at contact@code4.ro.
Last, but not least, we rely on donations to ensure the infrastructure, logistics and management of our community that is widely spread across 11 timezones, coding for social change to make Romania and the world a better place. If you want to support us, you can do it here.