Where BBW students come together to form a community.
This is a modern Laravel application built with:
- Laravel 12 - PHP framework
- FilamentPHP 4 - Admin panel
- Tailwind CSS 4 - Styling
- Alpine.js - Interactive components
- SQLite - Database (can be switched to Turso)
- 🎨 Modern, clean design with BBW brand colors
- 🔍 4-part search bar for filtering projects (module-teacher-taskname-username)
- 📝 Contribution request form with Discord notifications
- 👨💼 Admin panel for managing users and contribution requests
- 🔄 GitHub repository integration with 1-hour caching
- 📱 Responsive design
- PHP 8.2 or higher
- Composer
- Node.js & npm
- SQLite (or PostgreSQL/MySQL for production)
-
Clone the repository
git clone <repository-url> cd website/new
-
Install dependencies
composer install npm install
-
Set up environment
cp .env.example .env php artisan key:generate
-
Configure environment variables Edit
.envand set:APP_NAME="BBW Heroes" APP_URL=http://localhost:8000 # GitHub API (optional, for fetching repositories) GITHUB_TOKEN=your_github_personal_access_token GITHUB_ORGANIZATION=bbwheroes # Discord Webhook (optional, for notifications) DISCORD_WEBHOOK_URL=your_discord_webhook_url
-
Create database and run migrations
touch database/database.sqlite php artisan migrate
-
Create admin user
php artisan db:seed --class=AdminUserSeeder
Default credentials:
admin@bbwheroes.ch/password -
Build assets
npm run build
Run the development server:
composer devThis will start:
- Laravel development server on http://localhost:8000
- Vite dev server for hot module replacement
- Queue worker for background jobs
Or run them separately:
php artisan serve
npm run devAccess the admin panel at /admin with admin credentials.
Features:
- Manage users and assign admin roles
- Review contribution requests
- Accept or decline requests
- Send Discord notifications
app/
├── Filament/Resources/ # Admin panel resources
├── Http/Controllers/ # Web controllers
├── Models/ # Eloquent models
└── Services/ # Business logic (GitHub API)
resources/
├── css/ # Tailwind CSS
├── js/ # Alpine.js components
└── views/ # Blade templates
database/
└── migrations/ # Database schema
The application fetches repositories from the bbwheroes GitHub organization. Only repositories matching the 4-part naming format are displayed:
Format: {module}-{teacher}-{taskname}-{username}
Example: 431-ober-linux_cookbook-lorenzhohermuth
Repositories are cached for 1 hour to reduce API calls.
When a contribution request is submitted or processed, a notification is sent to Discord (if webhook URL is configured).
BBW brand colors are defined in resources/css/app.css:
- Primary:
#b3d800(bbw-400) - Variations: bbw-50 through bbw-900
Replace public/bbwheroes.svg with your custom logo.
For production deployment:
- Set
APP_ENV=productionandAPP_DEBUG=false - Use a production database (PostgreSQL, MySQL, or Turso)
- Configure proper cache and session drivers
- Set up queue workers
- Build production assets:
npm run build
MIT License