A sample frozen yogurt e-commerce website used to demonstrate and learn about the Lytics platform. Each team member can deploy their own instance with a unique GTM container.
- Framework: Vue 3 + Vite
- Styling: Tailwind CSS
- Routing: Vue Router
- State: Pinia
- Node Version: 20.19.0 (managed via Volta)
- Package Manager: Yarn
- Deployment: Google App Engine
- Volta for Node.js version management (or Node 20+)
- Google Cloud SDK (for manual deployment)
yarn installyarn devOpen http://localhost:5173 in your browser.
yarn buildOutput is generated in the dist/ directory.
yarn previewVITE_GTM_ID=GTM-XXXXXXX yarn build
yarn previewUse the GitHub Actions workflow to deploy your own instance:
- Go to Actions tab in GitHub
- Select "Deploy to Google App Engine"
- Click "Run workflow"
- Fill in the inputs:
- Subdomain: Your name (e.g.,
mark,lindsey) - GTM Container ID: Your GTM container (e.g.,
GTM-XXXXXXX) - Branch:
master(or your feature branch)
- Subdomain: Your name (e.g.,
- Click "Run workflow"
Your site will be available at:
http://[subdomain].lyticsdemo.comhttps://[subdomain]-dot-lyticsdemo.uc.r.appspot.com
# Build with your GTM container ID
VITE_GTM_ID=GTM-XXXXXXX yarn build
# Deploy to App Engine with your version name
gcloud app deploy --project=lyticsdemo --version=yourname --no-promote├── src/
│ ├── main.js # Vue app entry point
│ ├── App.vue # Root component
│ ├── router/ # Vue Router configuration
│ ├── stores/ # Pinia stores (cart, auth)
│ ├── components/ # Reusable components
│ ├── views/ # Page components
│ └── data/ # Product and blog data
├── public/
│ ├── images/ # Product and marketing images
│ └── fonts/ # Web fonts
├── .github/
│ └── workflows/ # GitHub Actions deployment workflow
├── index.html # SPA entry point with GTM placeholder
├── vite.config.js # Vite configuration with GTM injection
├── app.yaml # App Engine configuration
└── package.json # Dependencies and scripts
The site uses build-time GTM injection:
index.htmlcontains__GTM_CONTAINER_ID__placeholdersvite.config.jshas a plugin that replaces these with theVITE_GTM_IDenvironment variable during build- The GitHub Actions workflow sets this variable based on your input
In development mode (no GTM ID set), you'll see a console warning and GTM won't load.
| Command | Description |
|---|---|
yarn dev |
Start development server |
yarn build |
Build for production |
yarn preview |
Preview production build locally |
- Create a feature branch from
master - Make your changes
- Test locally with
yarn dev - Push your branch
- Deploy using the GitHub Actions workflow (select your branch)
- Create a pull request when ready
For the GitHub Actions workflow to function, these secrets must be configured:
| Secret | Description |
|---|---|
GCP_PROJECT_ID |
Google Cloud project ID (lyticsdemo) |
GCP_SERVICE_ACCOUNT |
Service account email for deployments |
GCP_WORKLOAD_IDENTITY_PROVIDER |
Workload Identity Federation provider |