π Leer en EspaΓ±ol
A professional website built with Next.js, React 19, Tailwind CSS, and full internationalization (i18n) support. This project is optimized for Docker deployment and ready for modern development and production environments.
| Technology | Version | Purpose |
|---|---|---|
| Next.js | 16 | React framework β SSR, SSG, routing |
| React | 19 | UI library |
| Tailwind CSS | 4 | Utility-first CSS framework |
| TypeScript | 5 | Static typing |
| Node.js | 25 | JavaScript runtime |
| Docker | Latest | Containerization |
| canvas-confetti | 1.9.4 | Visual effects library |
src/
app/
[lang]/ # Dynamic language routes (es-MX, en-US)
layout.tsx # Root layout with metadata and global font
page.tsx # Main page β renders dashboard card components
globals.css # Global styles and Tailwind utilities
components/
cart/ # 8 isolated, reusable card components (1β8)
languagePicker/ # Language switcher with scroll-aware visibility
snow/ # Decorative snow visual effect
version/ # Version display component
utils/
i18n/ # i18n dictionaries and utilities
en-US.json # English translations
es-MX.json # Spanish translations
dictionary.ts # Dictionary loader
index.ts # Supported languages registry
interface/ # TypeScript types for i18n
public/ # Static assets
dockerfile # Optimized multi-stage Docker image
docker-compose.yml # Production service orchestration
docker-compose-dev.yml # Development service orchestration
next.config.ts # Next.js configuration
tsconfig.json # TypeScript configuration
eslint.config.mjs # ESLint configuration
- SSR / SSG: Server-side rendering and static generation via Next.js App Router.
- Dynamic i18n routing: Language is resolved from the URL segment (
/en-US/,/es-MX/), with static params generated at build time. - Component isolation: Each card is a self-contained component receiving translated strings as props.
- Custom design system: Mango color palette defined as CSS variables, reusable utility classes via
@layer components. - Scroll-aware UI: The
LanguagePickercomponent hides on scroll-down and reveals on scroll-up. - Secure Docker build: Multi-stage Dockerfile β separate
deps,builder, andrunnerstages; runs as a non-rootnextjssystem user. - SEO ready: Custom metadata, Google Fonts (JetBrains Mono), keyword tags, and Google AdSense integration.
- Node.js 25+
- npm
- Docker (optional)
-
Clone the repository:
git clone https://github.com/manghidev/MyWebSite.git cd MyWebSite -
Install dependencies:
npm install
-
Start the development server:
npm run dev
The site will be available at http://localhost:3000
docker compose -f docker-compose-dev.yml updocker compose up --build -dThe production image uses a multi-stage build to minimize final image size. The app runs on port 3000 under a dedicated non-root user.
- Supported locales: English (en-US) and Spanish (es-MX).
- Language is derived from the URL:
/{lang}/. - Static params are auto-generated at build time via
generateStaticParams. - Switch language using the
LanguagePickercomponent in the UI. - Translation dictionaries live in
src/utils/i18n/.
| Command | Description |
|---|---|
npm run dev |
Start development server |
npm run build |
Build for production |
npm run start |
Start production server |
npm run lint |
Run ESLint |
Read the contribution guide and the code of conduct before submitting a PR.
If you find a vulnerability, see SECURITY.md for responsible disclosure instructions.
GPL β ManghiDev