Enterprise-grade corporate website for GDOZ Technology Solutions, a specialized consultancy delivering strategic solutions in software engineering, cloud architecture, cybersecurity, and artificial intelligence.
- Overview
- Application Architecture
- User Journey
- Security Model
- Design System
- Key Features
- External Integrations
- Local Development
- CI/CD and Production Deployment
- Technology Stack
- Server Requirements
- Testing
- Metrics and Monitoring
- Final Notes
- License
This repository contains the source code for the GDOZ Technology Solutions corporate website. The site serves as the company's digital presence, showcasing services, company information, and providing contact channels for potential clients and partners.
- Present GDOZ's core services and expertise
- Establish credibility through professional, modern design
- Provide easy access to external platforms (GedozTech Lab, Tilila Games)
- Ensure LGPD/GDPR compliance with privacy-first tracking
- Deliver optimal performance via static site generation
The application follows a component-based architecture built on Next.js 16 with App Router, designed for static export deployment.
┌──────────────────────────────────────────────────────────────────┐
│ Next.js App Router │
├──────────────────────────────────────────────────────────────────┤
│ app/ │
│ ├── layout.tsx # Root layout (fonts, analytics, meta) │
│ ├── page.tsx # Home page composition │
│ ├── globals.css # Design tokens & Tailwind config │
│ └── privacy/page.tsx # Privacy Policy page │
├──────────────────────────────────────────────────────────────────┤
│ components/ │
│ ├── header.tsx # Fixed navigation header │
│ ├── hero.tsx # Hero section with logo & CTAs │
│ ├── about.tsx # Company information & stats │
│ ├── services.tsx # Service cards grid │
│ ├── footer.tsx # Footer with links & contact │
│ ├── cookie-consent.tsx # GA4 cookie consent banner │
│ ├── visit-tracker.tsx # Privacy-friendly visit tracking │
│ └── ui/ # shadcn/ui component library │
├──────────────────────────────────────────────────────────────────┤
│ public/ │
│ ├── images/ # Logo assets (gdoz.png, logo-gdoz.png) │
│ └── icon-*.png # Favicons (light/dark mode) │
└──────────────────────────────────────────────────────────────────┘
| Decision | Rationale |
|---|---|
Static Export (output: 'export') |
No server required; deploy to any static hosting |
| App Router | Modern Next.js patterns, improved metadata handling |
| Component Composition | Each section is an independent, testable component |
| CSS Variables + Tailwind | Consistent theming with design tokens |
| Client-side Analytics | Works with static export; privacy-compliant |
┌──────────────────────────────────────────────────────────────────┐
│ USER JOURNEY │
└──────────────────────────────────────────────────────────────────┘
[1. LANDING]
│
▼
┌─────────────────────────────────────────────────────────────────┐
│ HERO SECTION │
│ • View GDOZ logo and tagline │
│ • CTA: "GedozTech Lab" → External link │
│ • CTA: "Tilila Games" → External link │
└─────────────────────────────────────────────────────────────────┘
│
▼ (scroll)
┌─────────────────────────────────────────────────────────────────┐
│ ABOUT SECTION │
│ • Company history and mission │
│ • Key statistics │
└─────────────────────────────────────────────────────────────────┘
│
▼ (scroll)
┌─────────────────────────────────────────────────────────────────┐
│ SERVICES SECTION │
│ • Software Engineering │
│ • Cloud Architecture │
│ • Cybersecurity │
│ • Artificial Intelligence │
└─────────────────────────────────────────────────────────────────┘
│
▼ (scroll)
┌─────────────────────────────────────────────────────────────────┐
│ FOOTER │
│ • LinkedIn link │
│ • Email contact │
│ • Location (Brazil) │
│ • Privacy Policy link │
└─────────────────────────────────────────────────────────────────┘
│
▼ (optional)
┌─────────────────────────────────────────────────────────────────┐
│ COOKIE CONSENT (overlay) │
│ • Accept → Enables GA4 tracking │
│ • Dismiss → No tracking │
└─────────────────────────────────────────────────────────────────┘
│
▼ (optional navigation)
┌─────────────────────────────────────────────────────────────────┐
│ PRIVACY POLICY PAGE │
│ • Full privacy policy text │
│ • Back to Home link │
└─────────────────────────────────────────────────────────────────┘
| Feature | Implementation | Compliance |
|---|---|---|
| Cookie Consent | User must accept before GA4 loads | LGPD / GDPR |
| Visit Tracker | No PII collected | LGPD / GDPR |
| No Server-Side Storage | Static site; no user data stored | N/A |
interface VisitPayload {
pagePath: string // Current page path
referrer: string // Previous page (if any)
}Note: The visit tracker uses client-side API token (
NEXT_PUBLIC_*). Since the site is statically exported, server-side token protection is not possible.
API-side mitigations:
- CORS restriction - Accept requests only from a specified domain
- Rate limiting - Prevent abuse (e.g., 100 requests/minute per IP)
- Origin/Referer validation - Verify request source
- Limited token scope - Allow the token to access only
POST /visit
The design uses a dark corporate theme with teal/blue accents derived from the GDOZ logo.
| Token | Value (OKLCH) | Usage |
|---|---|---|
--background |
oklch(0.13 0.005 250) |
Page background |
--foreground |
oklch(0.98 0 0) |
Primary text |
--primary |
oklch(0.55 0.12 220) |
Brand accent (teal-blue) |
--muted |
oklch(0.18 0.005 250) |
Secondary backgrounds |
--muted-foreground |
oklch(0.65 0.01 250) |
Secondary text |
--border |
oklch(0.25 0.01 250) |
Borders and dividers |
| Font | Usage | Variable |
|---|---|---|
| Inter | Body text, UI elements | --font-sans |
| JetBrains Mono | Code, technical content | --font-mono |
- Container max-width: Responsive, centered with
px-6padding - Section padding:
py-24(mobile) /py-32(desktop) - Grid system: CSS Grid for service cards, Flexbox for layouts
- Border radius:
0.5rem(via--radiustoken)
Built on shadcn/ui with Radix UI primitives. All components are located in components/ui/ and can be customized via CSS variables.
- Animated logo display with glow effect
- Primary/secondary CTAs to external products
- Scroll indicator animation
- Company mission and history
- Statistics grid (Years, Specializations, Commitment, Support)
- Four service cards with icons
- Hover animations and transitions
- Software Engineering, Cloud, Cybersecurity, AI
- LGPD/GDPR compliant banner
- Opt-in only GA4 tracking
- Configurable via constants in
cookie-consent.tsx
- Privacy-friendly analytics
- Configurable blocked hostnames (dev environments)
- External API integration
- Dedicated page at
/privacy - Covers data collection, cookies, user rights
- Mobile-first approach
- Breakpoints:
md(768px),lg(1024px) - Touch-friendly navigation
Configuration: components/cookie-consent.tsx
const GA4_ENABLED = true // Toggle analytics on/off
const GA4_MEASUREMENT_ID = "G-XXXXXXXXXX" // GA4 IDConfiguration: Environment variables
| Variable | Description |
|---|---|
NEXT_PUBLIC_VISIT_API_URL |
Base URL for the visit tracking API |
NEXT_PUBLIC_VISIT_API_TOKEN |
Token for API authentication |
Blocked Hostnames: Configure in components/visit-tracker.tsx
const BLOCKED_HOSTNAMES = [
"localhost",
"127.0.0.1",
"0.0.0.0",
// Other domains
]| Tool | Minimum Version |
|---|---|
| Node.js | 18.17.0+ |
| pnpm | 8.0.0+ |
# Clone the repository
git clone git@github.com:gdoz/gdoz-website.git && cd gdoz-website# Install dependencies
pnpm install# Create environment file (optional, for visit tracking)
cp .env.example .env.local
# Edit .env.local with your values# Start development server
pnpm devCreate .env.local for local development:
# Visit Tracker (optional)
NEXT_PUBLIC_VISIT_API_URL=https://api.gdoz.com.br
NEXT_PUBLIC_VISIT_API_TOKEN=your_api_token_here| Command | Description |
|---|---|
pnpm dev |
Start development server (localhost:3000) |
pnpm build |
Build for production |
pnpm start |
Start production server |
pnpm lint |
Run ESLint |
The project uses static export mode, generating pure HTML/CSS/JS files that can be served from any static web server.
next.config.mjs:
const isExport = process.env.NEXT_EXPORT === 'true';
const nextConfig = {
...(isExport && {
distDir: 'webapp',
output: 'export',
}),
// ... other config
}The deployment pipeline:
- Checkout repository
- Setup Node.js and pnpm
- Create
.envfrom GitHub Secrets - Build static export (
pnpm build) - Deploy via FTPS to production server (FTP-Deploy-Action)
# Build static export
pnpm build
# Output directory: ./webapp/
# Transfer contents to your web server| Technology | Version | Purpose |
|---|---|---|
| Next.js | 16.0.3 | React framework with App Router |
| React | 19.2.0 | UI library |
| TypeScript | 5.x | Type safety |
| Tailwind CSS | 4.x | Utility-first CSS |
| Library | Version | Purpose |
|---|---|---|
| shadcn/ui | Latest | Component library |
| Radix UI | Various | Accessible primitives |
| Lucide React | 0.454.0 | Icon library |
| Library | Purpose |
|---|---|
clsx |
Conditional class names |
tailwind-merge |
Merge Tailwind classes |
class-variance-authority |
Component variants |
| Tool | Purpose |
|---|---|
| pnpm | Package manager |
| ESLint | Code linting |
| PostCSS | CSS processing |
Since the site is statically exported, it can run on any static file server:
- Nginx / Apache - Traditional web servers
- Vercel / Netlify - JAMstack platforms
- AWS S3 + CloudFront - Cloud hosting
- GitHub Pages - Free static hosting
| Requirement | Specification |
|---|---|
| Storage | ~50MB for built assets |
| HTTPS | Required (SSL/TLS certificate) |
| Gzip/Brotli | Recommended for compression |
| Cache Headers | Configure for static assets |
server {
listen 443 ssl http2;
server_name gdoz.com.br www.gdoz.com.br;
root /var/www/gdoz/webapp;
index index.html;
# Gzip compression
gzip on;
gzip_types text/plain text/css application/json application/javascript;
# Cache static assets
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff2)$ {
expires 1y;
add_header Cache-Control "public, immutable";
}
# SPA fallback
location / {
try_files $uri $uri.html $uri/ /index.html;
}
}Current Status: No automated tests implemented.
| Type | Tools | Coverage |
|---|---|---|
| Unit Tests | Vitest, React Testing Library | Components, utilities |
| E2E Tests | Playwright | User flows, navigation |
| Visual Regression | Chromatic, Percy | UI consistency |
| Accessibility | axe-core, Lighthouse | WCAG compliance |
- Hero section loads with logo and CTAs
- Navigation links work (About, Services, Contact)
- External links open in new tabs
- Cookie consent appears on first visit
- Privacy policy page renders correctly
- Responsive layout on mobile/tablet/desktop
- Visit tracker sends data (check network tab)
Current Status: Only Google Analytics 4 for user behavior analysis is implemented (opt-in).
No other integrated monitoring tools is implemented.
| Category | Tool | Purpose |
|---|---|---|
| Performance | Vercel Analytics | Web Vitals |
| Uptime | UptimeRobot, Pingdom | Availability monitoring |
| Error Tracking | Sentry | Client-side errors |
| Metric | Target | Tool |
|---|---|---|
| LCP (Largest Contentful Paint) | < 2.5s | Lighthouse |
| FID (First Input Delay) | < 100ms | Lighthouse |
| CLS (Cumulative Layout Shift) | < 0.1 | Lighthouse |
| Performance Score | > 90 | Lighthouse |
-
Static Export Constraints
- No server-side API routes
- Environment variables must be
NEXT_PUBLIC_*for client access - API tokens are exposed in client bundle
-
Visit Tracker Security
- Token visible in browser DevTools
- Requires API-side protection (CORS, rate limiting)
-
No Dynamic Content
- All content is build-time static
- Content changes require rebuild and redeploy
- Implement automated testing suite
- Add performance monitoring (Web Vitals)
- Server-side rendering option for dynamic features
- Internationalization (i18n) support
- Blog/news section
- Contact form with backend integration
Copyright © 2025 GDOZ Technology Solutions. All rights reserved. Licensed under the MIT License.