This project is a React 19 + Vite + TypeScript application using TailwindCSS v4 with an atomic design approach (atoms, molecules, organisms).
It replicates a professional frontend template with animations, i18n support (English, Spanish, Japanese), theme toggle (light/dark), and responsive design.
- ⚛️ React 19 + Vite
- 🌀 TailwindCSS v4 with custom tokens (
--primary,--accent,--surface, etc.) - 🌐 i18n (react-i18next) with English, Spanish, Japanese translations
- 🌙 Theme toggle (light/dark) with persistence
- 🎨 Atomic design system (atoms, molecules, organisms)
- ✨ Reveal animations and hover effects
- 📱 Responsive layout
Make sure you have installed:
- Node.js (version 18 or higher recommended)
- npm, yarn, or pnpm (choose your preferred package manager)
Clone the repository and install dependencies:
git clone <your-repo-url>
cd <your-repo-folder>
npm install
# or
yarn install
# or
pnpm installRun the development server with hot reload:
npm run devThe app will be available at http://localhost:5173.
To create an optimized production build:
npm run buildPreview the production build locally:
npm run previewCheck code with ESLint:
npm run lintsrc/
├── atoms/ # Small reusable UI components (Button, Heading, etc.)
├── molecules/ # Compositions of atoms (Nav, ServiceCard, etc.)
├── organisms/ # Larger sections (Hero, Services, About, Contact, Footer)
├── templates/ # Page templates (HomeTemplate)
├── pages/ # Page-level components (Home)
├── hooks/ # Custom hooks (useReveal, useSectionSpy, etc.)
├── styles/ # Global styles (tokens.css, animations.css)
- English, Spanish, Japanese translations included in
locales/folder. - Use
LangSelectcomponent in the header to switch languages.
- Theme toggle managed by
ThemeToggleatom. - Uses CSS custom properties with light/dark schemes.
- Fork the repository
- Create your feature branch (
git checkout -b feature/YourFeature) - Commit your changes (
git commit -m 'Add some feature') - Push to the branch (
git push origin feature/YourFeature) - Open a Pull Request
This project is open source and available under the MIT License.
- Edit .env.local:
VITE_FIREBASE_API_KEY=... VITE_FIREBASE_AUTH_DOMAIN=... VITE_FIREBASE_PROJECT_ID=kinaltech-dev VITE_FIREBASE_STORAGE_BUCKET=... VITE_FIREBASE_MESSAGING_SENDER_ID=... VITE_FIREBASE_APP_ID=...
VITE_FUNCTIONS_BASE=http://127.0.0.1:5001/kinaltech-dev/us-central1
-
The .env.local is ignored by Git. Only .env.example is versioned.
-
Install the CLI (once) and select the right project locally. npm i -g firebase-tools firebase login firebase use --add
-
Prepare Cloud Functions (TypeScript):
-
From the project root: cd functions npm install npm run build # compiles to functions/lib cd ..
Tip: during development you can keep a watcher running: cd functions && npm run watch
- Start emulators and the web app: Open two terminals at the project root:
A) Firebase Functions Emulator: firebase emulators:start --only functions B) Vite dev server: npm run dev
-
Health check Open in your browser: http://127.0.0.1:5001/kinaltech-dev/us-central1/health
-
Expected:
{ "ok": true, "service": "functions", "env": "emulator" }