A modern, full-stack personal portfolio website showcasing projects, skills, and professional experience. Built with Next.js, .NET Core, and deployed on Kubernetes for production scalability.
This is a comprehensive portfolio application featuring a responsive frontend built with Next.js and TypeScript, backed by a robust .NET Core API. The application showcases personal projects with dynamic content rendering, includes a functional contact system with email integration, and demonstrates modern web development practices with containerization and orchestration.
Live Demo: romitsagu.com
- Portfolio & Personal HomePage
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
β Frontend β β Backend β β Database β
β (Next.js) βββββΊβ (.NET Core) βββββΊβ (SQL Server) β
β Port: 3000 β β Port: 8080 β β Port: 1433 β
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
β β β
β βββββββββββββββββββ β
β β Email Service β β
β β (SMTP) β β
β βββββββββββββββββββ β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Kubernetes Cluster β
β βββββββββββββββ βββββββββββββββ βββββββββββββββ β
β β Ingress β β Service β β ConfigMap β β
β β (Nginx) β β (LB) β β (Config) β β
β βββββββββββββββ βββββββββββββββ βββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
The application follows a modern microservices architecture with:
- Frontend: Next.js application with TypeScript, Tailwind CSS, and Framer Motion
- Backend: .NET Core Web API with Entity Framework Core
- Database: SQL Server with Entity Framework migrations
- Containerization: Docker containers for both frontend and backend
- Orchestration: Kubernetes deployment with services, ingress, and ConfigMaps
- Email: SMTP integration for contact form functionality
- Responsive Design: Mobile-first approach with Tailwind CSS
- Interactive Animations: Smooth transitions with Framer Motion
- Particle Effects: Dynamic background particles using TSParticles
- Map Integration: Interactive location display with Leaflet
- Dark Theme: Modern dark UI with emerald accents
- SEO Optimized: Meta tags, structured data, and performance optimization
- RESTful API: Clean API design with Swagger documentation
- Entity Framework: Code-first database approach with migrations
- Email Service: SMTP integration for contact form submissions
- Data Protection: Secure key management with Entity Framework
- CORS Support: Cross-origin resource sharing configuration
- Environment Configuration: Separate development and production settings
- About: Personal introduction and background
- Skills: Categorized technical skills with icons
- Experience: Professional work history and achievements
- Projects: Detailed project showcase with GitHub integration
- Certificates: Professional certifications and credentials
- Testimonials: Colleague recommendations and feedback
- Contact: Functional contact form with email delivery
- Location: Interactive map showing current location
- Framework: Next.js 15 with App Router
- Language: TypeScript 5.0+
- Styling: Tailwind CSS 3.4+
- Animations: Framer Motion 12.23+
- UI Components: Custom components with Lucide React icons
- Data Grid: Syncfusion EJ2 React Grids
- Maps: React Leaflet for interactive maps
- Particles: TSParticles for background effects
- Build Tool: Turbopack for fast development
- Framework: .NET 10.0 Web API
- Language: C# with nullable reference types
- ORM: Entity Framework Core 10.0
- Database: SQL Server with Entity Framework migrations
- Documentation: Swagger/OpenAPI 3.0
- Email: SMTP service for contact forms
- Security: ASP.NET Core Data Protection
- Markdown: Markdig for README rendering
- Containerization: Docker with multi-stage builds
- Orchestration: Kubernetes with YAML manifests
- Web Server: Nginx for reverse proxy and SSL termination
- CI/CD: GitHub Actions for automated deployment
- SSL: TLS certificates for secure communication
- Environment: Development and production configurations
HomePage/
βββ .github/ # GitHub workflows and automation
β βββ dependabot.yml # Dependency update automation
β βββ workflows/ # CI/CD pipeline definitions
β βββ build-api.yml # Docker build & push for backend API
β βββ build-ui.yml # Docker build & push for frontend UI
β βββ deploy.yml # Kubernetes deployment to production
β βββ pr-check-api.yml # PR validation & testing for API
β βββ pr-check-ui.yml # PR validation & testing for UI
β βββ update-readme.yml # Automated README badge updates
βββ HomePage-UI/ # Next.js Frontend Application
β βββ src/
β β βββ app/ # App Router pages and layouts
β β β βββ (home)/ # Home page grouped routes
β β β β βββ Contact/ # Contact form page
β β β β βββ Logo/ # Logo generator page
β β β β βββ Resume/ # Resume viewer page
β β β β βββ page.tsx # Main homepage
β β β βββ Projects/ # Projects section with dynamic routes
β β β β βββ [...path]/ # Dynamic project detail pages
β β β β βββ layout.tsx # Projects layout with navigation
β β β β βββ page.tsx # Projects overview with data grid
β β β βββ api/ # API route handlers
β β β βββ proxy/ # API proxy for backend communication
β β βββ components/ # Reusable React components
β β β βββ Home/ # Homepage-specific components
β β β β βββ AboutSection.tsx
β β β β βββ CertificatesSection.tsx
β β β β βββ ContactSection.tsx
β β β β βββ ExperienceSection.tsx
β β β β βββ HeroSection.tsx
β β β β βββ LocationSection.tsx
β β β β βββ MobileNav.tsx
β β β β βββ Navbar.tsx
β β β β βββ ProjectsSection.tsx
β β β β βββ SignatureProjectSection.tsx
β β β β βββ SkillsSection.tsx
β β β β βββ TestimonialsSection.tsx
β β β β βββ TimelineItem.tsx
β β β βββ HeroParticles.tsx # TSParticles background animation
β β β βββ MapComponent.tsx # Leaflet map integration
β β β βββ icons.tsx # Custom SVG icon components
β β βββ lib/ # Utility functions and configurations
β β β βββ data.tsx # Static content data (skills, projects, etc.)
β β β βββ proxy.ts # API proxy utility functions
β β βββ types/ # TypeScript type definitions
β β βββ types.ts # Shared interface definitions
β βββ public/ # Static assets and images
β βββ Dockerfile # Frontend container configuration
β βββ package.json # Dependencies and scripts
β βββ tailwind.config.js # Tailwind CSS configuration
β βββ next.config.ts # Next.js configuration
β βββ tsconfig.json # TypeScript configuration
β
βββ HomePage-API/ # .NET Core Backend API
β βββ Controllers/ # API endpoint controllers
β β βββ ContactController.cs # Contact form handling
β β βββ ProjectsController.cs # Project data endpoints
β βββ Data/ # Entity Framework context and configuration
β β βββ HomePageContext.cs # Database context
β βββ Models/ # Data models and DTOs
β β βββ Application.cs # Project/application model
β β βββ Models.cs # Request/response models
β β βββ PowerSettings.cs # System configuration model
β βββ Services/ # Business logic and external services
β β βββ EmailService.cs # SMTP email functionality
β βββ Properties/
β β βββ launchSettings.json
β βββ appsettings.json # Production configuration
β βββ appsettings.Development.json # Development configuration
β βββ Dockerfile # Backend container configuration
β βββ Program.cs # Application entry point and configuration
β βββ HomePage-API.csproj # Project file and dependencies
β
βββ Kubernetes/ # Kubernetes deployment manifests
β βββ HomePageV2Deployment.yaml # Application deployment configuration
β βββ Nginx-config.yaml # Nginx ingress configuration
β
βββ .dockerignore # Docker build exclusions
βββ .gitignore # Git version control exclusions
βββ HomePage.sln # Visual Studio solution file
βββ README.md # Project documentation (this file)
Ensure you have the following installed:
- Node.js 22+ and npm 10+
- .NET 10.0 SDK or later
- SQL Server (LocalDB for development, full instance for production)
- Git for version control
- Docker (optional, for containerization)
- Kubernetes (optional, for orchestration)
-
Clone and Setup
git clone https://github.com/NinePiece2/HomePage.git cd HomePage -
Frontend Setup
cd HomePage-UI npm install # Edit .env.local with your configuration npm run dev
Frontend available at: http://localhost:3000
-
Backend Setup (in a new terminal)
cd HomePage-API dotnet restore # Configure appsettings.Development.json dotnet ef database update dotnet run
API available at: http://localhost:5298
-
Verify Setup
- Visit http://localhost:3000 for the frontend
- Visit http://localhost:5298/swagger for API documentation
- Test the contact form and project pages
# Start both services simultaneously
cd HomePage-UI
npm run dev-all
# Or start them separately:
# Terminal 1: Frontend
npm run dev
# Terminal 2: Backend
npm run dev-apiCreate HomePage-UI/.env.local:
# API Configuration
API_BASE_URL=http://localhost:5298
# Syncfusion License (required for data grid components)
SYNCFUSION_LICENSE=your_syncfusion_license_key_here
# Optional: Disable Next.js telemetry
NEXT_TELEMETRY_DISABLED=1Create HomePage-API/appsettings.Development.json:
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*",
"ConnectionStrings": {
"HomePageEntities": "Server=(localdb)\\mssqllocaldb;Database=HomePage;Trusted_Connection=true;MultipleActiveResultSets=true"
},
"Cors": {
"AllowedOrigins": [
"http://localhost:3000"
]
}
}- Use Kubernetes secrets for sensitive data
- Configure SQL Server connection strings for production
- Set up Email Service API credentials for email functionality
- Update CORS origins for your production domain
Frontend Container
cd HomePage-UI
docker build -t homepage-ui .
docker run -p 3000:3000 homepage-uiBackend Container
cd HomePage-API
docker build -t homepage-api .
docker run -p 8080:8080 homepage-api# Create namespace
kubectl create namespace homepage
# Apply Nginx configuration
kubectl apply -f Kubernetes/Nginx-config.yaml
# Deploy application
kubectl apply -f Kubernetes/HomePageV2Deployment.yaml
# Check deployment status
kubectl get pods -n homepage
kubectl get services -n homepageThe deployment includes:
- Deployments: Frontend (3 replicas) and Backend (3 replicas)
- Services: LoadBalancer and ClusterIP services
- ConfigMaps: Nginx configuration and application settings
- Secrets: SSL certificates and sensitive configuration
- Ingress: Traffic routing and SSL termination
Currently, the API does not require authentication for public endpoints.
GET /Projects/GetAll
Accept: application/jsonResponse:
[
{
"name": "Home Cloud Server",
"gitHubLink": "https://github.com/NinePiece2/HomeCloudServer",
"applicationLink": "https://homecloudserver.romitsagu.com/",
"homePageLink": "/Projects/HomeServer"
}
]GET /Projects/{ProjectName}
Accept: application/jsonAvailable Project Endpoints:
/Projects/HomeServer- Home Cloud Server details/Projects/Facegen- Artiface FaceGen project/Projects/CDN- Content Delivery Network project/Projects/CacheController- Cache Controller project/Projects/VGAController- VGA Controller project/Projects/LanCacheUI- LanCache UI project/Projects/MRIBrainTumorDetection- MRI Brain Tumor Detection/Projects/SmartTrafficControlSystem- Smart Traffic Control System
Response:
{
"projectName": "Home Cloud Server",
"projectDescription": "Project description",
"projectGithubLink": "https://github.com/NinePiece2/HomeCloudServer",
"projectApplicationLink": "https://homecloudserver.romitsagu.com/",
"projectReadmeContent": "<html>Rendered markdown content</html>"
}POST /Contact/SendContactForm
Content-Type: application/jsonRequest Body:
{
"name": "John Doe",
"email": "[email protected]",
"topic": "General Inquiry",
"message": "Hello, I'm interested in your projects..."
}Response:
{
"success": true,
"message": "Email sent successfully"
}All endpoints may return these error responses:
{
"error": "Error message description",
"status": 400
}Common HTTP Status Codes:
200- Success400- Bad Request404- Not Found500- Internal Server Error
# Development
npm run dev # Start development server with Turbopack
npm run build # Build for production
npm run lint # Run ESLint code analysis
# Cross-service development
npm run dev-api # Start backend API from UI directory
npm run dev-all # Start both frontend and backend concurrently
# Docker commands
docker build -t homepage-ui . # Build frontend container
docker run -p 3000:3000 homepage-ui # Run frontend container# Development
dotnet run # Start development server
dotnet watch run # Start with hot reload
dotnet build # Build the application
dotnet build --configuration Release # Build for production
# Database management
dotnet ef migrations add <MigrationName> # Create new migration
dotnet ef database update # Apply pending migrations
dotnet ef migrations remove # Remove last migration
dotnet ef database drop # Drop database (development only)
# Docker commands
docker build -t homepage-api . # Build backend container
docker run -p 8080:8080 homepage-api # Run backend container# Kubernetes deployment
kubectl apply -f Kubernetes/ # Deploy to Kubernetes
kubectl get pods -n homepage # Check deployment status
kubectl logs -f deployment/homepage-ui -n homepage # View logs# Clean build artifacts
npm run clean && dotnet clean # Clean all build outputs- Next.js Features: App Router, Server Components, Image Optimization
- Code Splitting: Automatic route-based code splitting
- Lazy Loading: Dynamic imports for heavy components
- Caching: API response caching and static asset optimization
- CDN: Static assets served through CDN
- Compression: Gzip compression for all text assets
- Database: Optimized Entity Framework queries with indexing
- HTTPS: SSL/TLS encryption for all communications
- CORS: Properly configured cross-origin resource sharing
- Data Protection: ASP.NET Core Data Protection for sensitive data
- Input Validation: Server-side validation for all inputs
- SQL Injection Prevention: Parameterized queries through Entity Framework
- XSS Protection: Content Security Policy and input sanitization
Built with β€οΈ by Romit Sagu
Showcasing modern full-stack development with Next.js, .NET Core, and Kubernetes