A web application empowering activists to take peaceful action against shrimp cruelty at Aldi stores.
Shrimp Heroes helps coordinate and track peaceful protest actions at Aldi stores across Europe. Users can flip shrimp packages upside down to protest cruel farming practices (like eye-cutting and suffocation without stunning), report their actions with photo verification, and see the collective impact of the movement. Every package flipped helps approximately 34 shrimp per year in expectation.
Before you begin, ensure you have the following installed:
- PHP 8.2 or higher
- Composer (latest version recommended)
- Node.js 18+ and npm
- Git
git clone <repository-url>
cd shrimp-heroescomposer setupThis command will automatically:
- Install all dependencies
- Copy
.env.exampleto.env - Generate application key
- Run database migrations
- Install npm dependencies
- Build frontend assets
Add your OpenRouter API key to the .env file:
OPENROUTER_API_KEY=your_api_key_here
You can get an API key from OpenRouter.
composer run devThis will start the development environment with hot module replacement and the queue worker.
The application will be available at the URL shown in your terminal (typically http://localhost:8000).
Note: The queue worker processes action verifications asynchronously. When users submit actions with photos, the VerifyActionJob will analyze the images using AI to verify legitimacy, extract EXIF data, and check location/timestamp accuracy.
The official ALDI store location data is available as a CSV file:
After downloading the CSV file, place it in resources/data/stores.csv and import it:
php artisan stores:import resources/data/stores.csvThe CSV file should have the following columns:
place_id(required)nameaddresscitycountrylat(latitude)lon(longitude)
You can specify a different file path:
php artisan stores:import path/to/your/stores.csvTo populate the database with sample data for development:
php artisan db:seedphp artisan testvendor/bin/pintnpm run build