Project for SheHub built with React + Vite.
- React 19
- Vite
- Tailwind CSS v4
- React Router
- Jotai
- i18next + react-i18next
- Firebase
- GA4 Tracking
- Lucide-react
Make sure you have the following installed:
- Node.js ≥ 16.8.0
- npm ≥ 9.x
git clone https://github.com/Tinunsky/shehub-teaser-v1.git
cd shehub-teaser-v1
npm install
Environment configuration is managed through .env
files.
- Copy
.env.example
to.env
:
cp .env.example .env
- Fill in your Firebase credentials:
VITE_FIREBASE_API_KEY=YOUR_API_KEY
VITE_FIREBASE_AUTH_DOMAIN=YOUR_PROJECT.firebaseapp.com
VITE_FIREBASE_PROJECT_ID=YOUR_PROJECT_ID
VITE_FIREBASE_STORAGE_BUCKET=YOUR_PROJECT.appspot.com
VITE_FIREBASE_MESSAGING_SENDER_ID=YOUR_SENDER_ID
VITE_FIREBASE_APP_ID=YOUR_APP_ID
VITE_FIREBASE_MEASUREMENT_ID=YOUR_MEASUREMENT_ID
These are loaded in the firebase.js
file using import.meta.env
.
The project supports es
, en
and ca
using i18next
.
Language settings are:
- Automatically detected via
localStorage
and browser language - Saved persistently using
localStorage.setItem('shehub-lang', lang)
- Managed in
i18n.js
Language selector is a floating button in the header (LanguageSelector.jsx
) with Tailwind responsive styles and a dropdown.
npm run dev
Visit http://localhost:5173 in your browser.
npm run build
To preview production build:
npm run preview
shehub-teaser-v1/
├── public/
├── src/
│ ├── assets/
│ ├── components/
│ ├── hooks/
│ ├── locales/
│ ├── pages/
│ ├── styles/
│ └── main.jsx
├── .env
├── .env.example
├── index.html
├── tailwind.config.js
├── vite.config.js
└── README.md
This project includes integrated tracking for user interaction using Google Analytics 4.
Event Name | Category | Label | Description |
---|---|---|---|
join_waitlist_click |
Button |
button-form / button-banner |
Triggered when a user clicks on a CTA to join the waitlist. |
form_submitted |
Form |
waitlist-form |
Triggered after a successful form submission. |
click_footer_link |
Footer |
Instagram / LinkedIn |
Triggered when social links in the footer are clicked. |
To ensure GA4 works correctly:
- Add your GA4 Measurement ID in
index.html
or a script loader. - Make sure the global
gtag
function is available before events are triggered. - Events are sent manually using:
gtag("event", "event_name", {
event_category: "Category",
event_label: "Label",
value: 1
});
You can find these event calls in:
Button.jsx
→ CTA trackingFormInputs.jsx
→ Form submissionFooter.jsx
→ Social media links
Made with 💜 by the SheHub team.