Pizza Pipeline est une plateforme de journalisation audio alimentée par l'IA qui aide les utilisateurs à suivre leur parcours émotionnel grâce à des enregistrements vocaux naturels et une analyse intelligente.
🏥 Important: Pizza Pipeline n'est PAS un outil médical. C'est un compagnon de bien-être personnel conçu pour compléter, et non remplacer, les soins de santé mentale professionnels.
- 🎤 Audio Recording: MediaRecorder (WebM/Opus) → ffmpeg (WAV 16kHz mono)
- ☁️ Cloud Storage: Google Cloud Storage with automatic backup
- 📊 Weekly Reports: AI-powered emotional analysis with HTML/PDF export
- 🌦️ Mental Weather: Emotion tracking using weather metaphors instead of clinical scores
- 🔐 Privacy First: Your data, your control - delete anytime
- 📱 Responsive Design: Works seamlessly on desktop and mobile
- Non-Medical: Pizza Pipeline is a personal wellness tool, not a diagnostic instrument
- Data Ownership: Full user control - your recordings are never used to train AI models
- Weather Metaphor: Emotional states represented as weather (☀️ sunny to 🌩️ stormy) instead of cold clinical scores
Frontend
- React 18 + TypeScript
- Material-UI (MUI) v7 for design
- Vite for fast development
- Zustand for state management
- React Router v6 for navigation
Backend
- FastAPI (Python 3.11)
- Google Cloud Platform (Cloud Run, Cloud Storage, Speech-to-Text)
- Gemini 2.0 Flash for emotion analysis
- Eventarc for automatic pipeline triggers
- Node.js 18+
- Python 3.11+
- Docker & Docker Compose
- GCP account with configured Cloud Storage bucket
Option 1: Automatic Script
./dev-setup.shOption 2: Manual Setup
# web/.env
cp web/.env.sample web/.env
# Edit VITE_BACKEND_URL=http://localhost:8000
# api/.env
cp api/.env.sample api/.env
# Edit GCP_BUCKET=your-bucket-name
# Edit GOOGLE_APPLICATION_CREDENTIALS=/path/to/service-account.jsoncd web
npm install
npm run dev # → http://localhost:3000cd api
python -m venv venv
source venv/bin/activate # Linux/Mac
pip install -r requirements.txt
uvicorn app.main:app --reload --port 8000 # → http://localhost:8000# Build and launch complete stack
docker-compose up --build
# Web: http://localhost:3000
# API: http://localhost:8000
# Swagger: http://localhost:8000/docs- Create a GCS bucket
- Generate a service account JSON key
- Set
GCP_BUCKETandGOOGLE_APPLICATION_CREDENTIALSinapi/.env
web/ # React 18 + TypeScript + Vite
├── src/
│ ├── components/ # Banner, Navbar, ChatWindow, etc.
│ ├── routes/ # Dashboard, Recorder, History, Report, Mental Weather
│ ├── store/ # Zustand (state management)
│ ├── api/ # HTTP client
│ ├── theme/ # MUI theme customization
│ └── types/ # TypeScript interfaces
api/ # FastAPI + ffmpeg
├── app/
│ ├── main.py # API routes
│ ├── storage.py # GCS operations
│ └── audio.py # ffmpeg audio processing
Overview of your emotional journey with weekly weather summary and key metrics.
Voice recording interface with real-time audio capture and instant upload.
Chronological list of all sessions with emotion scores and detailed transcriptions.
Weekly summaries with AI-generated insights, highlights, and exportable HTML/PDF reports.
Visual timeline showing emotional progression across weeks using weather metaphors.
- Recording: Start/Stop → local audio preview
- Upload: WebM → server → GCS (.webm + .wav 16kHz)
- History: Display local + server sessions list
- Reports: Weekly summaries → downloadable HTML export
- Mental Weather: 4-week emotional progression visualization
- Delete: Session removal via API
- CORS: http://localhost:3000 → http://localhost:8000
- Docker:
docker-compose up→ everything works - Health: GET /healthz →
{ok: true} - ffmpeg: WebM → WAV 16kHz mono conversion
- GCS: Storage with structure
pz-audio-raw-build-unicorn25par-4813/<YYYY-WXX>/session_*/
- Responsive: mobile/desktop compatibility
- Banner: non-medical disclaimer displayed
- Navigation: React Router v6 working
- State: Zustand local cache functional
- Theme: MUI custom theme applied correctly
CORS Errors
- Verify
VITE_BACKEND_URLin web/.env - Check API CORS configuration
GCS Errors
- Verify service account credentials
- Check bucket permissions and existence
ffmpeg Errors
- Ensure ffmpeg is installed in API container
- Check audio file format compatibility
Audio Recording Issues
- Test with different browsers (Chrome recommended)
- Verify microphone permissions
- Check MediaRecorder browser support
- Backend Pipeline: GCPU-hackathon-vertex - ML pipeline with Gemini 2.0
- Documentation: See
DEMO_GUIDE.mdfor complete presentation script
This project was developed for the Google Cloud Platform University Hackathon 2025.
- Google Cloud Platform for infrastructure
- Gemini 2.0 Flash for AI-powered emotion analysis
- Material-UI team for the design system
Made with ❤️ for mental wellness