---
title: "AI Link — Static Next.js Corporate Site — Tran Manh Tuan"
description: "AI Link's bilingual Japanese–English corporate website for B2B AI services — Next.js fully static on a CDN, a contact form with layered spam protection, and near-zero operating cost."
canonical: "https://tmtuan.dev/en/projects/ai-link"
language: "en"
image: "https://tmtuan.dev/_img/projects/ai-link/ai-link.55f0d905-og.jpg"
tokens: 1007
---

# AI Link

**AI Link** is a corporate website introducing the company's mission, its AI services (**Devin**, **Leaders AI**) and news to business customers. The brief: bilingual Japanese–English from launch day, a fast launch with low operating cost and quick addition of new service pages, a consultation form that blocks spam and answers customers in their own language, and security from day one — worthy of a technology brand.

The site is built with **Next.js 15 (App Router) + React + TypeScript**, exported as a fully static site on a CDN: production has no server at all — pages load fast, there is no attack surface and infrastructure cost is close to zero. The UI sits on a **design system** (Chakra UI + Radix UI + Tailwind CSS, components with variants), so it stays consistent and new pages come together quickly; the codebase is a **Turborepo** monorepo with shared ESLint/TypeScript configuration and tests in Jest + Supertest.

Bilingualism is built into the architecture: Japanese lives at the root path, English under `/en`. News articles are written as **per-language Markdown managed in Git** — every post has an edit history, gets reviewed before publishing, and there are no CMS fees.

The contact form is validated in **both the browser and the server against the same schema** (react-hook-form + strict Zod — any unknown field is rejected), with layered spam protection: reCAPTCHA, per-IP rate limiting, an API that only accepts requests from the official domain, and security headers on the API. Customers receive an automatic reply **in their own language, Japanese or English**, and the team in charge gets a notification email — sent through **AWS SES**; the AWS and reCAPTCHA keys live in **Secret Manager**, attached to the service as secret references and never present in code.

Staging runs the exact build that will reach production, locked behind a password by a small service on **Cloud Run** designed **fail-closed**: if the password configuration is missing the service refuses to start, so staging can never be accidentally left open — the service has automated tests, its container runs as a regular user and its service account carries no excess permissions. A **GitHub Actions** pipeline lints, builds, deploys and reports to Slack; every Pull Request of both the website and the API is scanned automatically — library vulnerabilities, source-code issues, leaked secrets, container and configuration — with third-party bundles excluded from scope so reports stay clean.

## Details

- **Role:** Technical Lead
- **Website:** [dena-ailink.com/](https://dena-ailink.com/)

## Technology

- Next.js
- React
- TypeScript
- Chakra UI
- Radix UI
- Tailwind CSS
- Turborepo
- Node.js
- Express
- AWS SES
- reCAPTCHA
- Cloud Run
- Firebase Hosting
- Secret Manager
- Github Action
- Docker
- Trivy
- Semgrep
- Gitleaks

## Services this project shows

- [Corporate & Content Web Platforms](https://tmtuan.dev/en/services/web-platforms)

## Related articles

- [Docs-as-code Knowledge Base + Context Graph for a 15-project portfolio](https://tmtuan.dev/en/articles/knowledge-base-docs-as-code-context-graph)

## Structured data (JSON-LD)

```json
{"@context":"https://schema.org","@graph":[{"@type":"WebPage","@id":"https://tmtuan.dev/en/projects/ai-link#webpage","url":"https://tmtuan.dev/en/projects/ai-link","name":"AI Link — Static Next.js Corporate Site","description":"AI Link's bilingual Japanese–English corporate website for B2B AI services — Next.js fully static on a CDN, a contact form with layered spam protection, and near-zero operating cost.","inLanguage":"en","isPartOf":{"@id":"https://tmtuan.dev/#website"},"about":{"@id":"https://tmtuan.dev/#person"}},{"@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://tmtuan.dev/en"},{"@type":"ListItem","position":2,"name":"Projects","item":"https://tmtuan.dev/en/projects"},{"@type":"ListItem","position":3,"name":"AI Link","item":"https://tmtuan.dev/en/projects/ai-link"}]}]}
```
