Static web app for the Amantes de la Vigo Uruguay 🇺🇾 community.
Built with React + TypeScript + Vite. Hosted on GitHub Pages. No backend.
- Node.js 18+
- npm 9+
# 1. Clone the repo
git clone https://github.com/fedeazzato/vigo-uy.git
cd vigo-uy
# 2. Install dependencies
npm install
# 3. Start dev server
npm run dev
# → Opens http://localhost:5173/vigo-uy/npm run deployThis builds the app and pushes it to the gh-pages branch automatically.
On first deploy, go to GitHub → Settings → Pages → Source and select the gh-pages branch.
The app will be live at: https://fedeazzato.github.io/vigo-uy/
vigo-uy/
├── index.html
├── vite.config.ts
├── tsconfig.json
├── package.json
└── src/
├── main.tsx # Entry point with HashRouter
├── App.tsx # App routes
├── types.ts # Shared TypeScript interfaces
├── index.css # Global design system
├── data/ # ← Edit these files to update content
│ ├── charging.json # Home and public charging
│ ├── routes.json # Routes and stops
│ ├── costs.json # Costs and comparisons
│ ├── accessories.json
│ └── tech-faq.json # Technology and FAQ
├── components/
│ ├── Layout.tsx # Sidebar + mobile nav
│ └── UI.tsx # Reusable UI components
└── pages/
├── ChargingPage.tsx
├── RoutesPage.tsx
├── CostsPage.tsx
├── AccessoriesPage.tsx
├── TechPage.tsx
└── FaqPage.tsx
All content lives in JSON files under src/data/.
No React code changes needed to add tips, questions, or new routes.
Open src/data/charging.json → homeCharging.tips → append:
{ "bold": "New tip:", "text": "Tip description." }Open src/data/routes.json → routes array → append:
{
"id": "new-route",
"title": "Montevideo → Destination",
"distance": "~X km",
"difficulty": "Fácil",
"stops": [
{ "name": "Montevideo", "type": "origin" },
{ "name": "Stop", "type": "charge", "note": "Description." },
{ "name": "Destination", "type": "destination" }
],
"tips": ["Tip 1.", "Tip 2."]
}Stop types: origin, destination, charge, warning
Open src/data/tech-faq.json → faq array → append:
{ "q": "¿La pregunta?", "a": "La respuesta completa." }npm run type-check| Technology | Purpose |
|---|---|
| React 18 | UI |
| TypeScript 5 | Type safety |
| Vite 5 | Build tool |
| React Router 6 | Navigation (HashRouter for GH Pages) |
| CSS Modules | Scoped styles |
| gh-pages | Automated deploy |
| JSON | Content data source |