Introduction
Author: Nguyen Duc Trung
The OpenEU Frontend is built using Next.js v15 and deployed on Netlify, leveraging a modern React architecture with strict linting, CI hooks, and an ecosystem of powerful libraries for mapping, visualization, UI, and developer experience.
๐ Frameworks & Librariesโ
- Next.js 15 โ React framework with built-in SSR, routing, and API routes.
- NextUI v2 โ Lightweight, accessible component library for consistent UI.
- Tailwind CSS โ Utility-first CSS framework for fast and flexible styling.
- Tailwind Variants โ Adds dynamic variant control for Tailwind.
- TypeScript โ Static typing for better DX and maintainability.
- Framer Motion โ Declarative animation library for React.
- next-themes โ Light/dark theme toggling with persistence.
๐ Mapping & Geospatialโ
- Leaflet โ Lightweight interactive map engine.
- react-leaflet โ React bindings for Leaflet.
- @turf/turf โ Advanced geospatial analysis.
๐ Visualizationโ
- Highcharts โ Rich charting library for interactive data.
- highcharts-react โ React wrapper for Highcharts.
๐ฆ State & Data Managementโ
- TanStack Query (React Query) โ Server-state synchronization and caching.
- zod โ Schema validation and parsing (used for forms and API inputs).
- react-hook-form โ Declarative form handling.
- cookies-next โ Simplified cookie management for SSR/CSR.
๐งฉ Utilities & Developer Experienceโ
- clsx & class-variance-authority โ Conditional class merging.
- uuid โ Generate unique identifiers.
- date-fns โ Modern date manipulation library.
- jspdf & autotable โ PDF generation utilities.
๐งช Linting & Code Qualityโ
- TypeScript
- ESLint โ With Airbnb & Next.js configs.
- Prettier โ For consistent formatting.
- Husky โ Git hooks to enforce standards.
- Lint-staged โ Run linters on staged files before commit.
- Commitlint โ Ensure conventional commit messages.
๐ APIs & Typesโ
- Supabase โ Auth, database, and storage.
- openapi-typescript โ Generate typed SDK from backend OpenAPI spec.