rubenvanerk/shrimp-heroes
๐ฆ Shrimp Heroes
A web application empowering activists to take peaceful action against shrimp cruelty at Aldi stores.
Introduction
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.
Prerequisites
Before you begin, ensure you have the following installed:
- PHP 8.2 or higher
- Composer (latest version recommended)
- Node.js 18+ and npm
- Git
Getting Started
1. Clone the Repository
git clone <repository-url>
cd shrimp-heroes2. Run Setup
composer setupThis command will automatically:
- Install all dependencies
- Copy
.env.exampleto.env - Generate application key
- Run database migrations
- Install npm dependencies
- Build frontend assets
3. Configure API Keys
Add your OpenRouter API key to the .env file:
OPENROUTER_API_KEY=your_api_key_here
You can get an API key from OpenRouter.
4. Start Development Server
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.
Optional Setup Steps
Import ALDI Store Data
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.csvSeed the Database
To populate the database with sample data for development:
php artisan db:seedDevelopment
Running Tests
php artisan testCode Formatting
vendor/bin/pintBuilding for Production
npm run build