Website for drone (UAV/BSP) services: precision agriculture, surveying, inspections, photo/video. Target domain: geoscanuav.pl.
Note: the site content (UI) is in Polish - the product targets the Polish market. Code, comments, commits and this README are in English.
- Vite 5 + React 18
- react-router-dom - clean URLs (
/uslugi,/cennik,/uslugi/<service>…; Polish slugs kept for local SEO) - vite-react-ssg - static prerendering (SSG) of every page for SEO and AI crawlers
- Plain CSS (
src/styles.css, design tokens + light/dark)
npm install # install dependencies
npm run dev # dev server (HMR)
npm run build # production build → dist/ (prerenders all routes)
npm run preview # local preview of the build (clean URLs)index.html – shell + base meta + Consent Mode v2
src/
main.jsx – ViteReactSSG entry
routes.jsx – route definitions (incl. per-service pages)
app.jsx – layout (nav, outlet, footer, cookies, reveal, a11y)
site.js – config (domain, NAP, GA id, form endpoint)
seo.jsx – <Seo> + JSON-LD builders
data.jsx – services, applications, pricing, stats
shared.jsx – Arrow, AnchorLink, SubHeader, CTABack
nav.jsx home.jsx services.jsx portfolio.jsx pricing.jsx legal.jsx notfound.jsx
cookies.jsx – cookie banner + Google Analytics (Consent Mode)
svg-motifs.jsx tweaks.jsx styles.css
public/ – robots.txt, sitemap.xml, llms.txt, manifest, og-image, favicons, contact.php, .htaccess
scripts/gen-assets.mjs – og-image + favicon generator from the logo
scripts/gen-logo.mjs – logo export (mark + full, dark/light, SVG + PNG)
The form POSTs JSON to public/contact.php, which sends an e-mail to kontakt@geoscanuav.pl
via PHP mail() (hostido local mail). Includes server-side validation and a honeypot field.
Requires the mailbox to exist on the hosting.
Static build - run npm run build and upload dist/. Hosting: hostido.pl (Apache/PHP).
public/.htaccess handles clean URLs, the 404 page, gzip and cache. See docs/deploy-hosting.md.
- Per-page indexable URL,
<title>, meta description, canonical, Open Graph - JSON-LD: LocalBusiness/ProfessionalService, Service (per service), OfferCatalog, FAQPage, BreadcrumbList
robots.txt(allows AI crawlers),sitemap.xml,llms.txt- Prerendering = full content in static HTML (Google + AI)
The [...] placeholders in src/legal.jsx (company data) and legalName/geo in src/site.js
- after registering the business.