A production-grade portfolio built with Next.js, showcasing clean architecture, strong engineering practices, and a focus on performance, security, and maintainability.
This project is more than a portfolio website; it is a practical demonstration of scalable software design in a real-world application. It combines content delivery, contact workflows, deployment readiness, and observability in a single, well-structured codebase.
The objective is to present professional work clearly, share engineering insights through structured content, and maintain a high standard of quality across every layer of the stack.
- Scalable architecture with clear separation of concerns across routing, components, services, and utilities
- TypeScript-first development for improved reliability and reduced runtime errors
- Performance-oriented implementation with optimized rendering, caching strategies, and minimal client-side overhead
- Production-ready security through input validation, rate limiting, sanitization, and hardened API routes
- Responsive and polished UI with subtle animations and a modern user experience
- Containerized deployment for consistent environments and streamlined delivery
- Observability built in through structured logging, health checks, and error handling
| Layer | Technology |
|---|---|
| Frontend | Next.js, React, TypeScript, Tailwind CSS, Framer Motion |
| Backend | Node.js, Next.js Route Handlers |
| Database | Neon Serverless Postgres, Drizzle ORM |
| Infrastructure | Docker, Alpine Linux, Upstash Redis |
| Testing | Vitest, React Testing Library |
| Monitoring | Structured logging, Sentry (optional), health probes |
src/
├── app/ # App Router segments and API routes
├── components/ # Reusable UI components and page sections
├── services/ # Business logic for contact and email workflows
├── lib/ # Shared utilities, security, logging, and env validation
├── constant/ # Structured content, metadata, and portfolio data
├── hooks/ # Custom React hooks
└── types/ # TypeScript interfaces and domain models
- Clear separation between presentation, business logic, and infrastructure
- Single responsibility across components and services
- Consistent design boundaries for long-term maintainability
- Full TypeScript coverage with strict configuration enabled
- Centralized domain types to reduce ambiguity and runtime failures
- Route-level caching where appropriate
- Server-first rendering with minimal client-side JavaScript
- Optimized image delivery and efficient asset handling
- Startup-time environment validation
- Server-only secret handling
- CSP headers, request validation, rate limiting, and input sanitization
- Clear troubleshooting paths and actionable error messages
- Structured logging for debugging and diagnostics
- Health endpoints for deployment verification
- Node.js 18 or newer
- npm or yarn
-
Install dependencies:
npm ci
-
Configure environment variables:
cp .env.example .env.local
Required variables include
DATABASE_URL,QEV_API_KEY,EMAIL_FROM, andEMAIL_PASSWORD.Optional production variables include
UPSTASH_REDIS_REST_URL,UPSTASH_REDIS_REST_TOKEN, andSENTRY_DSN. -
Set up the database:
npm run db:generate npm run db:migrate npm run db:seed
-
Start the development server:
npm run dev
The application will be available at
http://localhost:3000.
npm run lint
npm run typecheck
npm run build
npm run startThe project uses Drizzle ORM with Neon Serverless Postgres for type-safe database interactions.
npm run db:generate # Generate migration files based on schema changes
npm run db:migrate # Run pending migrations against the database
npm run db:seed # Seed the database with initial data
npm run db:studio # Open Drizzle Studio to view and manage dataBuild the image:
docker build -t tushardevx01 .Run the container:
docker run \
--rm \
--name tushardevx01 \
-p 3000:3000 \
--env-file .env.local \
tushardevx01Or use Docker Compose:
docker compose up --buildThe container is built on Alpine Linux and runs as a non-root user to improve security.
- Strict content-type validation
- Payload size limits
- Same-origin verification for sensitive operations
- Automatic rejection of malformed requests
- Distributed rate limiting with Redis in production
- In-memory fallback during development
- Protection against misuse and denial-of-service attempts
- Minimal API response payloads
- Reduced implementation detail exposure in production
- Fast, lightweight health checks
- Structured error logging
- Optional Sentry integration for monitoring
- Readiness endpoints for container orchestration
| Method | Endpoint | Purpose |
|---|---|---|
POST |
/api/send |
Secure contact form submission |
POST |
/api/analyze |
SEO analysis for content |
GET |
/api/health |
Deployment readiness check |
GET |
/api/version |
Deployment metadata |
All endpoints enforce request validation and rate limiting.
Tushar Kanti Dey
Full-Stack Software Engineer focused on scalable systems, platform engineering, and production infrastructure.
- 📧 Email: thetushardev0@gmail.com
- 🔗 GitHub: @
- 📸 Instagram: @tushardevx01
- 🌐 Portfolio: tushardevx01.tech