High-performance, modular Next.js website for Easyio Technologies frontier software lab.
Built with: Next.js 16 · TypeScript · Tailwind CSS v4 · Framer Motion · Zod · Resend
- ✅ Full-Stack: Pages + APIs + Email
- ✅ Type-Safe: TypeScript + Zod validation
- ✅ SEO: Auto sitemap, metadata, JSON-LD, OG images
- ✅ Security: Rate limiting, CSRF protection, security headers
- ✅ Performance: SSG, RSC, lazy loading, image optimization
- ✅ Dark Mode: CSS class-based, no flash
- ✅ Modular: Reusable components, clean architecture
- ✅ Production-Ready: Vercel-optimized, zero build errors
# Install
npm install
# Setup env
cp .env.example .env.local
# Add RESEND_API_KEY, UPSTASH_REDIS_REST_URL (optional)
# Dev
npm run dev # http://localhost:3000
# Build
npm run build
npm startSee SETUP.md for detailed guide.
app/ Pages + API routes
components/ Reusable UI components
lib/ Business logic (email, validation, seo)
config/ Site config, team, jobs
content/blog/ MDX blog posts
| Route | Component | Status |
|---|---|---|
| / | HomePage | ✅ Live |
| /about | AboutPage | ✅ Live |
| /blog | BlogPage | ✅ Live |
| /careers | CareersPage | ✅ Live |
| /contact | ContactPage | ✅ Live |
| /api/contact | Contact API | ✅ Live |
| /api/waitlist | Waitlist API | ✅ Live |
- Framework: Next.js 16.2 (Turbopack, App Router, RSC)
- Language: TypeScript 5
- Styling: Tailwind CSS 4 (dark mode)
- Animations: Framer Motion 11
- Forms: React Hook Form + Zod
- Email: Resend (with mock fallback)
- Rate Limiting: Upstash Redis (with in-memory fallback)
- Icons: Lucide React
- Deployment: Vercel
Submit contact form.
Join waitlist.
RESEND_API_KEY=re_xxxxx
NEXT_PUBLIC_SITE_URL=https://easyiotech.com
UPSTASH_REDIS_REST_URL=https://xxxxx.upstash.io
UPSTASH_REDIS_REST_TOKEN=xxxxxnpm run dev # Dev server
npm run build # Production build
npm start # Run production build
npm run lint # Lint code- Lighthouse: 90+ (all categories)
- Build Time: ~5s
- Page Size: <50KB (avg)
Deploy to Vercel:
vercel deployAuto-configured via vercel.json.
MIT