Skip to content

Deploy static site to GitHub Pages#1

Open
Mianhassam96 wants to merge 5 commits into
mainfrom
gh-pages
Open

Deploy static site to GitHub Pages#1
Mianhassam96 wants to merge 5 commits into
mainfrom
gh-pages

Conversation

@Mianhassam96

@Mianhassam96 Mianhassam96 commented Nov 8, 2025

Copy link
Copy Markdown
Owner

Summary by CodeRabbit

  • New Features

    • Added standalone static pages for Home, About, Services, Portfolio, Testimonials, Contact, Login, Register, plus a dedicated 404 page for direct static serving.
    • Introduced bundled static CSS and icon assets for the rendered site.
  • Chores

    • Updated the repository to rely on static export artifacts and removed/cleared build/tooling configuration.
  • Removed

    • Removed the original app’s interactive source components, global app wrapper, and the contact API route.

@vercel

vercel Bot commented Nov 8, 2025

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
multi-mian Error Error Jul 3, 2026 3:23am
multi-mian-studio Error Error Jul 3, 2026 3:23am

@coderabbitai

coderabbitai Bot commented Nov 8, 2025

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

This PR adds generated static export artifacts for the site: build manifests, shared CSS, route bundles for /, /login, /register, and /services, plus pre-rendered HTML for /login and /register.

Changes

Static export artifacts

Layer / File(s) Summary
Runtime manifest and shared CSS
_next/static/XPh0mZRKXdyr5OdrJJdq6/_buildManifest.js, _next/static/css/583fa631c2923a72.css
Adds the build manifest route map and the bundled stylesheet used by the exported site.
Page route bundles
_next/static/chunks/pages/index-2809f5d086e5112b.js, _next/static/chunks/pages/login-beafd58c328634f6.js, _next/static/chunks/pages/register-e8d2d79b11ece0ad.js, _next/static/chunks/pages/services-9e8e7c736790358c.js
Adds client-side bundles for the homepage, login, register, and services routes.
Pre-rendered HTML pages
login.html, register.html
Adds static HTML documents for the login and register routes, including embedded Next.js data.

Estimated code review effort: 3 (Moderate) | ~25 minutes

Possibly related PRs

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title matches the main change: publishing the site as a static GitHub Pages deployment.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch gh-pages
⚔️ Resolve merge conflicts
  • Resolve merge conflict in branch gh-pages

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@netlify

netlify Bot commented Nov 8, 2025

Copy link
Copy Markdown

Deploy Preview for multimiandev failed.

Name Link
🔨 Latest commit 7e07318
🔍 Latest deploy log https://app.netlify.com/projects/multimiandev/deploys/690ef5267cd6900008273e9f

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 4

♻️ Duplicate comments (3)
contact.html (1)

1-1: Generated static page - see deployment strategy concern.

This is a Next.js generated static export. The critical issue is the overall deployment approach (see index.html review).

portfolio.html (1)

1-1: Generated static page - see deployment strategy concern.

Another Next.js generated static export page. Please review the critical deployment strategy issue raised in the index.html comment.

about.html (1)

1-1: Generated static page - see deployment strategy concern.

Final static export page in this PR. The fundamental issue is the deployment workflow, not the generated content. Please address the critical concern raised in the index.html review before proceeding.

🧹 Nitpick comments (1)
_next/static/css/552dc79397d4897a.css (1)

1-1: Clarify the deployment branch strategy.

The PR merges gh-pages into main, which is atypical for GitHub Pages deployments. Standard workflows build and push to the gh-pages branch, rather than merging it back into main. Verify this branch direction is intentional—if you're trying to deploy to GitHub Pages, you may want to build your static site and push to gh-pages from your CI/CD pipeline instead.

Would you like guidance on configuring a CI/CD workflow that properly deploys static sites to GitHub Pages?

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 36c54bd and 7e07318.

⛔ Files ignored due to path filters (1)
  • package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (52)
  • 404.html (1 hunks)
  • README.md (1 hunks)
  • _next/static/Gv3gfcvSNg84tRUXGb2ZS/_buildManifest.js (1 hunks)
  • _next/static/Gv3gfcvSNg84tRUXGb2ZS/_ssgManifest.js (1 hunks)
  • _next/static/chunks/cb355538-56c9ec421e5c48c3.js (1 hunks)
  • _next/static/chunks/pages/_error-ee5b5fb91d29d86f.js (1 hunks)
  • _next/static/chunks/pages/about-bce25b95cfa73232.js (1 hunks)
  • _next/static/chunks/pages/contact-c4ef527b6aa32492.js (1 hunks)
  • _next/static/chunks/pages/index-9a94938e53b2806d.js (1 hunks)
  • _next/static/chunks/pages/portfolio-b654a83b5b8bbe8a.js (1 hunks)
  • _next/static/chunks/pages/services-0cc2ee65d9866c3c.js (1 hunks)
  • _next/static/chunks/pages/testimonials-a04751ef76f670da.js (1 hunks)
  • _next/static/chunks/polyfills-c67a75d1b6f99dc8.js (1 hunks)
  • _next/static/chunks/webpack-4f2b944271923d24.js (1 hunks)
  • _next/static/css/552dc79397d4897a.css (1 hunks)
  • about.html (1 hunks)
  • components/CTABanner.tsx (0 hunks)
  • components/Features.tsx (0 hunks)
  • components/Footer.tsx (0 hunks)
  • components/Header.tsx (0 hunks)
  • components/Hero.tsx (0 hunks)
  • components/Layout.tsx (0 hunks)
  • components/ServiceCard.tsx (0 hunks)
  • components/Stats.tsx (0 hunks)
  • components/TestimonialsNew.tsx (0 hunks)
  • components/ThemeToggle.tsx (0 hunks)
  • components/WaveDivider.tsx (0 hunks)
  • components/icons.tsx (0 hunks)
  • contact.html (1 hunks)
  • eslint.config.js (0 hunks)
  • index.html (1 hunks)
  • lib/ReducedMotionContext.tsx (0 hunks)
  • next-env.d.ts (0 hunks)
  • next.config.js (0 hunks)
  • package.json (0 hunks)
  • pages/_app.tsx (0 hunks)
  • pages/about.tsx (0 hunks)
  • pages/api/contact.ts (0 hunks)
  • pages/contact.tsx (0 hunks)
  • pages/index.tsx (0 hunks)
  • pages/portfolio.tsx (0 hunks)
  • pages/services.tsx (0 hunks)
  • pages/testimonials.tsx (0 hunks)
  • portfolio.html (1 hunks)
  • postcss.config.js (0 hunks)
  • public/README.md (0 hunks)
  • services.html (1 hunks)
  • styles/globals.css (0 hunks)
  • tailwind.config.js (0 hunks)
  • testimonials.html (1 hunks)
  • tsconfig.json (0 hunks)
  • tsconfig.tsbuildinfo (0 hunks)
💤 Files with no reviewable changes (31)
  • components/WaveDivider.tsx
  • pages/_app.tsx
  • components/Stats.tsx
  • components/Features.tsx
  • pages/index.tsx
  • pages/testimonials.tsx
  • components/icons.tsx
  • components/Footer.tsx
  • components/Hero.tsx
  • pages/contact.tsx
  • components/TestimonialsNew.tsx
  • tsconfig.json
  • lib/ReducedMotionContext.tsx
  • components/Header.tsx
  • pages/about.tsx
  • components/CTABanner.tsx
  • next.config.js
  • public/README.md
  • styles/globals.css
  • postcss.config.js
  • tsconfig.tsbuildinfo
  • eslint.config.js
  • next-env.d.ts
  • components/ServiceCard.tsx
  • pages/services.tsx
  • tailwind.config.js
  • pages/portfolio.tsx
  • pages/api/contact.ts
  • package.json
  • components/Layout.tsx
  • components/ThemeToggle.tsx
✅ Files skipped from review due to trivial changes (3)
  • README.md
  • _next/static/chunks/pages/_error-ee5b5fb91d29d86f.js
  • testimonials.html
🧰 Additional context used
🧬 Code graph analysis (1)
_next/static/chunks/pages/services-0cc2ee65d9866c3c.js (1)
_next/static/chunks/pages/index-9a94938e53b2806d.js (2)
  • e (1-1)
  • t (1-1)
🪛 Biome (2.1.2)
_next/static/css/552dc79397d4897a.css

[error] 5-5: Duplicate custom properties can lead to unexpected behavior and may override previous declarations unintentionally.

--tw-gradient-to is already defined here.

Remove or rename the duplicate custom property to ensure consistent styling.

(lint/suspicious/noDuplicateCustomProperties)


[error] 5-5: Duplicate custom properties can lead to unexpected behavior and may override previous declarations unintentionally.

--tw-gradient-to is already defined here.

Remove or rename the duplicate custom property to ensure consistent styling.

(lint/suspicious/noDuplicateCustomProperties)


[error] 5-5: Duplicate properties can lead to unexpected behavior and may override previous declarations unintentionally.

transition-timing-function is already defined here.

Remove or rename the duplicate property to ensure consistent styling.

(lint/suspicious/noDuplicateProperties)

_next/static/chunks/pages/about-bce25b95cfa73232.js

[error] 1-1: Do not reassign a function declaration.

Reassigned here.

Use a local variable instead.

(lint/suspicious/noFunctionAssign)

_next/static/chunks/polyfills-c67a75d1b6f99dc8.js

[error] 1-1: Comparing to itself is potentially pointless.

(lint/suspicious/noSelfCompare)


[error] 1-1: Comparing to itself is potentially pointless.

(lint/suspicious/noSelfCompare)


[error] 1-1: Comparing to itself is potentially pointless.

(lint/suspicious/noSelfCompare)


[error] 1-1: Comparing to itself is potentially pointless.

(lint/suspicious/noSelfCompare)


[error] 1-1: Comparing to itself is potentially pointless.

(lint/suspicious/noSelfCompare)


[error] 1-1: Comparing to itself is potentially pointless.

(lint/suspicious/noSelfCompare)


[error] 1-1: Other switch clauses can erroneously access this declaration.
Wrap the declaration in a block to restrict its access to the switch clause.

The declaration is defined in this switch clause:

Safe fix: Wrap the declaration in a block.

(lint/correctness/noSwitchDeclarations)


[error] 1-1: Unexpected control character in a regular expression.

Control characters are unusual and potentially incorrect inputs, so they are disallowed.

(lint/suspicious/noControlCharactersInRegex)


[error] 1-1: Unexpected control character in a regular expression.

Control characters are unusual and potentially incorrect inputs, so they are disallowed.

(lint/suspicious/noControlCharactersInRegex)


[error] 1-1: Unexpected control character in a regular expression.

Control characters are unusual and potentially incorrect inputs, so they are disallowed.

(lint/suspicious/noControlCharactersInRegex)


[error] 1-1: Unexpected control character in a regular expression.

Control characters are unusual and potentially incorrect inputs, so they are disallowed.

(lint/suspicious/noControlCharactersInRegex)


[error] 1-1: Unexpected control character in a regular expression.

Control characters are unusual and potentially incorrect inputs, so they are disallowed.

(lint/suspicious/noControlCharactersInRegex)


[error] 1-1: Unexpected control character in a regular expression.

Control characters are unusual and potentially incorrect inputs, so they are disallowed.

(lint/suspicious/noControlCharactersInRegex)


[error] 1-1: Unexpected control character in a regular expression.

Control characters are unusual and potentially incorrect inputs, so they are disallowed.

(lint/suspicious/noControlCharactersInRegex)


[error] 1-1: Unexpected control character in a regular expression.

Control characters are unusual and potentially incorrect inputs, so they are disallowed.

(lint/suspicious/noControlCharactersInRegex)


[error] 1-1: Unexpected control character in a regular expression.

Control characters are unusual and potentially incorrect inputs, so they are disallowed.

(lint/suspicious/noControlCharactersInRegex)


[error] 1-1: Unexpected control character in a regular expression.

Control characters are unusual and potentially incorrect inputs, so they are disallowed.

(lint/suspicious/noControlCharactersInRegex)


[error] 1-1: Unexpected control character in a regular expression.

Control characters are unusual and potentially incorrect inputs, so they are disallowed.

(lint/suspicious/noControlCharactersInRegex)


[error] 1-1: Unexpected control character in a regular expression.

Control characters are unusual and potentially incorrect inputs, so they are disallowed.

(lint/suspicious/noControlCharactersInRegex)


[error] 1-1: Unexpected control character in a regular expression.

Control characters are unusual and potentially incorrect inputs, so they are disallowed.

(lint/suspicious/noControlCharactersInRegex)


[error] 1-1: Unexpected control character in a regular expression.

Control characters are unusual and potentially incorrect inputs, so they are disallowed.

(lint/suspicious/noControlCharactersInRegex)


[error] 1-1: Unexpected control character in a regular expression.

Control characters are unusual and potentially incorrect inputs, so they are disallowed.

(lint/suspicious/noControlCharactersInRegex)


[error] 1-1: Do not add then to an object.

(lint/suspicious/noThenProperty)


[error] 1-1: Do not add then to an object.

(lint/suspicious/noThenProperty)


[error] 1-1: This variable is used before its declaration.

The variable is declared here:

(lint/correctness/noInvalidUseBeforeDeclaration)


[error] 1-1: This variable is used before its declaration.

The variable is declared here:

(lint/correctness/noInvalidUseBeforeDeclaration)


[error] 1-1: This variable is used before its declaration.

The variable is declared here:

(lint/correctness/noInvalidUseBeforeDeclaration)


[error] 1-1: This variable is used before its declaration.

The variable is declared here:

(lint/correctness/noInvalidUseBeforeDeclaration)


[error] 1-1: This variable is used before its declaration.

The variable is declared here:

(lint/correctness/noInvalidUseBeforeDeclaration)


[error] 1-1: This variable is used before its declaration.

The variable is declared here:

(lint/correctness/noInvalidUseBeforeDeclaration)

_next/static/chunks/webpack-4f2b944271923d24.js

[error] 1-1: This variable is used before its declaration.

The variable is declared here:

(lint/correctness/noInvalidUseBeforeDeclaration)


[error] 1-1: Shouldn't redeclare 't'. Consider to delete it or rename it.

't' is defined here:

(lint/suspicious/noRedeclare)


[error] 1-1: Shouldn't redeclare 'r'. Consider to delete it or rename it.

'r' is defined here:

(lint/suspicious/noRedeclare)


[error] 1-1: Shouldn't redeclare 'n'. Consider to delete it or rename it.

'n' is defined here:

(lint/suspicious/noRedeclare)


[error] 1-1: Shouldn't redeclare 'u'. Consider to delete it or rename it.

'u' is defined here:

(lint/suspicious/noRedeclare)

🔇 Additional comments (5)
_next/static/css/552dc79397d4897a.css (1)

1-1: Verify the build process for duplicate CSS properties.

Static analysis flags duplicate custom properties (--tw-gradient-to) and duplicate property declarations (transition-timing-function) in this minified Tailwind CSS output. While duplicates in minified CSS can result from normal CSS cascade behavior or Tailwind's generation process, they should be verified in the source build configuration to ensure they're intentional and not symptomatic of build issues.

Can you confirm that the Tailwind/Next.js build configuration is correct and these duplicates are expected in the generated output?

_next/static/Gv3gfcvSNg84tRUXGb2ZS/_ssgManifest.js (1)

1-1: Build artifact - part of broader deployment concern.

This file is a Next.js generated SSG manifest. The main issue is not with this file itself, but with the overall PR strategy of committing build artifacts to the main branch and potentially replacing source code with static exports.

404.html (1)

1-1: Generated 404 page - deployment strategy concern.

This is a Next.js generated 404 error page. See overall deployment strategy concerns.

_next/static/Gv3gfcvSNg84tRUXGb2ZS/_buildManifest.js (1)

1-1: Generated build manifest - see deployment concerns.

This is a Next.js generated build manifest mapping routes to chunks. Not an issue with this file specifically, but with the overall deployment approach.

_next/static/chunks/polyfills-c67a75d1b6f99dc8.js (1)

1-1: Generated polyfills bundle - static analysis warnings expected.

This is a Next.js generated polyfills bundle containing vendor code (core-js, etc.). The static analysis warnings from Biome can be safely ignored as this is generated/vendor code, not authored code.

@@ -0,0 +1 @@
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[521],{9212:function(e,t,i){(window.__NEXT_P=window.__NEXT_P||[]).push(["/about",function(){return i(286)}])},286:function(e,t,i){"use strict";i.r(t),i.d(t,{default:function(){return About}});var r=i(5893),n=i(5347),a=i(1664),s=i.n(a),l=i(2091);let o=[{category:"Frontend Development",techs:["React","TypeScript","Next.js","HTML5/CSS3","Tailwind CSS"]},{category:"Backend Development",techs:["Node.js","Express","MongoDB","MySQL","RESTful APIs","GraphQL"]},{category:"Full Stack Tools",techs:["Git","VS Code","Webpack","Firebase","Vercel","AWS"]},{category:"Best Practices",techs:["Clean Code","Performance Optimization","Responsive Design","Security"]}],c=[{icon:(0,r.jsx)(l.lMi,{className:"text-primary"}),title:"Web Development",description:"Custom, responsive, and performance-driven websites built using the latest technologies."},{icon:(0,r.jsx)(l.tvD,{className:"text-primary"}),title:"Full Stack Development",description:"End-to-end web solutions using modern frameworks like React, Node.js, and cloud platforms."},{icon:(0,r.jsx)(l.Els,{className:"text-primary"}),title:"Backend Development",description:"Robust server-side solutions with Node.js, Express, and various databases."},{icon:(0,r.jsx)(l.i1q,{className:"text-primary"}),title:"Database Design",description:"Efficient database architecture and optimization for both SQL and NoSQL databases."},{icon:(0,r.jsx)(l.lMi,{className:"text-primary"}),title:"Frontend Development",description:"Responsive and interactive user interfaces with React, Next.js, and modern CSS."},{icon:(0,r.jsx)(l.JI$,{className:"text-primary"}),title:"Mobile Development",description:"Cross-platform mobile applications using React Native and modern frameworks."},{icon:(0,r.jsx)(l.CP_,{className:"text-primary"}),title:"DevOps & Cloud",description:"Infrastructure setup, deployment automation, and cloud service integration."},{icon:"\uD83D\uDDA5️",title:"Frontend Development",description:"Modern, interactive UIs built with React and TypeScript for intuitive user experiences."},{icon:"⚡",title:"Backend Development",description:"Robust server-side solutions powered by Node.js, Express, and modern databases."},{icon:"\uD83D\uDD17",title:"API Integration",description:"Custom RESTful or GraphQL APIs designed for smooth system communication."},{icon:"☁️",title:"Deployment & Maintenance",description:"Expert deployment and maintenance on platforms like Firebase, Vercel, or AWS."}];function About(){return(0,r.jsxs)("div",{className:"container py-16 md:py-24",children:[(0,r.jsxs)(n.E.div,{initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{duration:.8},className:"max-w-4xl mx-auto mb-16",children:[(0,r.jsxs)(n.E.div,{initial:{opacity:0},animate:{opacity:1},transition:{duration:1.2},className:"mb-6 inline-flex items-center gap-2 px-4 py-2 rounded-full bg-white/10 backdrop-blur-sm border border-white/20",children:[(0,r.jsx)("span",{className:"flex h-2 w-2 rounded-full bg-primary animate-pulse"}),(0,r.jsx)("span",{className:"text-sm font-medium text-primary",children:"Full Stack Developer"})]}),(0,r.jsxs)("div",{className:"flex flex-col md:flex-row gap-8 items-start",children:[(0,r.jsxs)("div",{className:"flex-1",children:[(0,r.jsx)("h1",{className:"text-4xl md:text-5xl font-bold mb-6 bg-gradient-to-r from-primary to-primary-dark bg-clip-text text-transparent",children:"Hi, I'm Mian Hassam"}),(0,r.jsx)("p",{className:"text-xl text-muted leading-relaxed mb-6",children:"A passionate Full Stack Developer dedicated to building interactive, scalable, and user-centric web solutions. I specialize in crafting clean, efficient, and responsive applications using modern technologies."}),(0,r.jsx)("p",{className:"text-lg text-muted mb-6",children:"With a deep understanding of both frontend and backend development, I bring ideas to life — from concept and design to full deployment. My focus is always on performance, usability, and seamless user experience."}),(0,r.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,r.jsxs)("div",{className:"flex items-center gap-3",children:[(0,r.jsx)("span",{className:"text-xl",children:"✨"}),(0,r.jsxs)("p",{className:"text-muted",children:[(0,r.jsx)("strong",{children:"Vision:"})," Empowering ideas through technology and turning digital concepts into powerful realities."]})]}),(0,r.jsxs)("div",{className:"flex items-center gap-3",children:[(0,r.jsx)("span",{className:"text-xl",children:"☕"}),(0,r.jsxs)("p",{className:"text-muted",children:[(0,r.jsx)("strong",{children:"Fun Fact:"})," Debugging is my favorite puzzle, and coffee is my trusted sidekick."]})]})]})]}),(0,r.jsx)("div",{className:"w-full md:w-1/3",children:(0,r.jsx)(n.E.div,{className:"relative aspect-square rounded-2xl overflow-hidden glass-card p-1",whileHover:{scale:1.02},transition:{duration:.2},children:(0,r.jsx)("div",{className:"w-full h-full rounded-xl bg-gradient-to-br from-primary/20 to-primary-dark/20 flex items-center justify-center",children:(0,r.jsx)("span",{className:"text-6xl",children:"\uD83D\uDC68‍\uD83D\uDCBB"})})})})]})]}),(0,r.jsxs)(n.E.div,{initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{duration:.8,delay:.2},className:"mb-16",children:[(0,r.jsx)("h2",{className:"text-3xl font-bold mb-8 text-center",children:"Services I Offer"}),(0,r.jsx)("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6",children:c.map((e,t)=>(0,r.jsx)(n.E.div,{initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{delay:.1*t},whileHover:{y:-5},className:"glass-card p-6 rounded-xl",children:(0,r.jsxs)("div",{className:"flex items-start gap-4",children:[(0,r.jsx)("div",{className:"text-4xl",children:e.icon}),(0,r.jsxs)("div",{children:[(0,r.jsx)("h3",{className:"text-xl font-bold mb-2",children:e.title}),(0,r.jsx)("p",{className:"text-muted",children:e.description})]})]})},e.title))})]}),(0,r.jsxs)(n.E.div,{initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{duration:.8,delay:.4},className:"mb-16",children:[(0,r.jsx)("h2",{className:"text-3xl font-bold mb-8 text-center",children:"Our Expertise"}),(0,r.jsx)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-8",children:o.map((e,t)=>(0,r.jsxs)(n.E.div,{initial:{opacity:0,x:t%2==0?-20:20},animate:{opacity:1,x:0},transition:{delay:.2*t},className:"glass-card p-6 rounded-xl",children:[(0,r.jsx)("h3",{className:"text-xl font-bold mb-4 text-primary",children:e.category}),(0,r.jsx)("div",{className:"flex flex-wrap gap-2",children:e.techs.map(e=>(0,r.jsx)("span",{className:"px-3 py-1 bg-primary/10 rounded-full text-sm text-primary",children:e},e))})]},e.category))})]}),(0,r.jsxs)(n.E.div,{initial:{opacity:0},animate:{opacity:1},transition:{delay:.6},className:"text-center glass-card p-12 rounded-2xl",children:[(0,r.jsx)("h2",{className:"text-3xl font-bold mb-4",children:"Ready to Build Something Amazing?"}),(0,r.jsx)("p",{className:"text-muted mb-8 max-w-2xl mx-auto",children:"Let's collaborate to turn your vision into reality. I'm ready to help you create exceptional web experiences."}),(0,r.jsxs)(s(),{href:"/contact",className:"inline-flex items-center gap-2 glass-button px-8 py-4 rounded-xl font-medium",children:["Start a Conversation",(0,r.jsx)("svg",{className:"w-5 h-5",viewBox:"0 0 20 20",fill:"currentColor",children:(0,r.jsx)("path",{fillRule:"evenodd",d:"M3 10a.75.75 0 01.75-.75h10.638L10.23 5.29a.75.75 0 111.04-1.08l5.5 5.25a.75.75 0 010 1.08l-5.5 5.25a.75.75 0 11-1.04-1.08l4.158-3.96H3.75A.75.75 0 013 10z",clipRule:"evenodd"})})]})]})]})}},5054:function(e,t,i){"use strict";i.d(t,{w_:function(){return GenIcon}});var r=i(7294),n={color:void 0,size:void 0,className:void 0,style:void 0,attr:void 0},a=r.createContext&&r.createContext(n),s=["attr","size","title"];function _extends(){return(_extends=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var i=arguments[t];for(var r in i)Object.prototype.hasOwnProperty.call(i,r)&&(e[r]=i[r])}return e}).apply(this,arguments)}function ownKeys(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),i.push.apply(i,r)}return i}function _objectSpread(e){for(var t=1;t<arguments.length;t++){var i=null!=arguments[t]?arguments[t]:{};t%2?ownKeys(Object(i),!0).forEach(function(t){var r,n;r=t,n=i[t],(r=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var i=e[Symbol.toPrimitive];if(void 0!==i){var r=i.call(e,t||"default");if("object"!=typeof r)return r;throw TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(r))in e?Object.defineProperty(e,r,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[r]=n}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(i)):ownKeys(Object(i)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(i,t))})}return e}function GenIcon(e){return t=>r.createElement(IconBase,_extends({attr:_objectSpread({},e.attr)},t),function Tree2Element(e){return e&&e.map((e,t)=>r.createElement(e.tag,_objectSpread({key:t},e.attr),Tree2Element(e.child)))}(e.child))}function IconBase(e){var elem=t=>{var i,{attr:n,size:a,title:l}=e,o=function(e,t){if(null==e)return{};var i,r,n=function(e,t){if(null==e)return{};var i={};for(var r in e)if(Object.prototype.hasOwnProperty.call(e,r)){if(t.indexOf(r)>=0)continue;i[r]=e[r]}return i}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)i=a[r],!(t.indexOf(i)>=0)&&Object.prototype.propertyIsEnumerable.call(e,i)&&(n[i]=e[i])}return n}(e,s),c=a||t.size||"1em";return t.className&&(i=t.className),e.className&&(i=(i?i+" ":"")+e.className),r.createElement("svg",_extends({stroke:"currentColor",fill:"currentColor",strokeWidth:"0"},t.attr,n,o,{className:i,style:_objectSpread(_objectSpread({color:e.color||t.color},t.style),e.style),height:c,width:c,xmlns:"http://www.w3.org/2000/svg"}),l&&r.createElement("title",null,l),e.children)};return void 0!==a?r.createElement(a.Consumer,null,e=>elem(e)):elem(n)}}},function(e){e.O(0,[365,774,888,179],function(){return e(e.s=9212)}),_N_E=e.O()}]); No newline at end of file

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

Ensure unique React keys for service cards

Multiple entries in the c array share the same title ("Frontend Development", "Backend Development"), but the map still uses e.title as the key. That yields duplicate keys, which Next/React will warn about and can destabilize hydration. Use a unique key per item (e.g., include the index) or dedupe the data.

-},e.title))})]}),
+},"".concat(e.title,"-",t))}))]}),
🧰 Tools
🪛 Biome (2.1.2)

[error] 1-1: Do not reassign a function declaration.

Reassigned here.

Use a local variable instead.

(lint/suspicious/noFunctionAssign)

🤖 Prompt for AI Agents
In _next/static/chunks/pages/about-bce25b95cfa73232.js around line 1, the
services array mapping uses e.title as the React key but titles are duplicated
causing non-unique keys; update the map to provide a unique key per item (for
example combine title with the index or a stable id: `${e.title}-${t}` or add a
unique id field to each object and use that) so every rendered service card has
a unique key and avoid React/Next hydration warnings.

@@ -0,0 +1 @@
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[335],{1382:function(e,a,s){(window.__NEXT_P=window.__NEXT_P||[]).push(["/contact",function(){return s(1468)}])},1468:function(e,a,s){"use strict";s.r(a),s.d(a,{default:function(){return Contact}});var t=s(5893),r=s(7294),i=s(5347);function Contact(){let[e,a]=(0,r.useState)(""),[s,n]=(0,r.useState)(""),[l,o]=(0,r.useState)(""),[c,d]=(0,r.useState)("idle");async function submit(t){t.preventDefault(),d("sending");try{let t=await fetch("/api/contact",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:e,email:s,message:l})});t.ok?(d("sent"),a(""),n(""),o("")):d("error")}catch(e){d("error")}}return(0,t.jsxs)("div",{className:"min-h-screen",children:[(0,t.jsx)(i.E.div,{initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{duration:.8},className:"text-center py-16 md:py-24 bg-gradient-to-br from-primary/5 to-primary-dark/5",children:(0,t.jsxs)("div",{className:"container",children:[(0,t.jsx)("h1",{className:"text-4xl md:text-6xl font-bold mb-6 bg-gradient-to-r from-primary to-primary-dark bg-clip-text text-transparent",children:"Let's Connect"}),(0,t.jsx)("p",{className:"text-xl md:text-2xl text-muted max-w-3xl mx-auto mb-8",children:"Ready to bring your ideas to life? I'm here to help you build something amazing. Whether it's a new project, collaboration, or just a chat about technology, I'd love to hear from you."}),(0,t.jsxs)("div",{className:"inline-flex items-center gap-3 text-sm text-primary bg-primary/10 px-6 py-3 rounded-xl",children:[(0,t.jsx)("span",{children:"\uD83D\uDE80"}),(0,t.jsx)("span",{children:"Let's create something extraordinary together"})]})]})}),(0,t.jsx)(i.E.div,{initial:{opacity:0},animate:{opacity:1},transition:{delay:.3},className:"py-16 bg-white dark:bg-gray-900",children:(0,t.jsx)("div",{className:"container",children:(0,t.jsx)("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-8",children:[{icon:"\uD83D\uDCE7",label:"Email",value:"mianhassam96@gmail.com",href:"mailto:mianhassam96@gmail.com"},{icon:"\uD83D\uDCF1",label:"Phone",value:"+92 325 883 1437",href:"tel:+923258831437"},{icon:"\uD83D\uDCAC",label:"WhatsApp",value:"+92 325 883 1437",href:"https://wa.me/923258831437"},{icon:"\uD83D\uDCCD",label:"Location",value:"Pakistan",href:"#"}].map((e,a)=>(0,t.jsxs)(i.E.div,{initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{delay:.4+.1*a},className:"text-center glass-card p-6 rounded-2xl hover:shadow-lg transition-shadow",children:[(0,t.jsx)("div",{className:"text-4xl mb-4",children:e.icon}),(0,t.jsx)("h3",{className:"text-lg font-semibold mb-2",children:e.label}),"#"!==e.href?(0,t.jsx)("a",{href:e.href,className:"text-primary hover:text-primary-dark transition-colors",target:e.href.startsWith("http")?"_blank":void 0,rel:e.href.startsWith("http")?"noopener noreferrer":void 0,children:e.value}):(0,t.jsx)("p",{className:"text-muted",children:e.value})]},e.label))})})}),(0,t.jsx)(i.E.div,{initial:{opacity:0},animate:{opacity:1},transition:{delay:.6},className:"py-16 bg-gray-50 dark:bg-gray-800",children:(0,t.jsx)("div",{className:"container",children:(0,t.jsx)("div",{className:"max-w-4xl mx-auto",children:(0,t.jsxs)("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-12",children:[(0,t.jsxs)(i.E.div,{initial:{opacity:0,x:-20},animate:{opacity:1,x:0},transition:{delay:.7},className:"glass-card p-8 rounded-2xl",children:[(0,t.jsx)("h2",{className:"text-3xl font-bold mb-6",children:"Send a Message"}),(0,t.jsxs)("form",{onSubmit:submit,className:"space-y-6",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("label",{htmlFor:"name",className:"block text-sm font-medium mb-2",children:"Name *"}),(0,t.jsx)("input",{id:"name",className:"w-full p-4 border border-gray-300 dark:border-gray-600 rounded-xl focus:ring-2 focus:ring-primary focus:border-transparent transition",placeholder:"Your full name",value:e,onChange:e=>a(e.target.value),required:!0})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("label",{htmlFor:"email",className:"block text-sm font-medium mb-2",children:"Email *"}),(0,t.jsx)("input",{id:"email",type:"email",className:"w-full p-4 border border-gray-300 dark:border-gray-600 rounded-xl focus:ring-2 focus:ring-primary focus:border-transparent transition",placeholder:"your.email@example.com",value:s,onChange:e=>n(e.target.value),required:!0})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("label",{htmlFor:"message",className:"block text-sm font-medium mb-2",children:"Message *"}),(0,t.jsx)("textarea",{id:"message",className:"w-full p-4 border border-gray-300 dark:border-gray-600 rounded-xl focus:ring-2 focus:ring-primary focus:border-transparent transition resize-none",placeholder:"Tell me about your project or idea...",value:l,onChange:e=>o(e.target.value),rows:6,required:!0})]}),(0,t.jsx)("div",{children:(0,t.jsx)("button",{className:"w-full px-8 py-4 bg-primary text-white rounded-xl font-medium hover:bg-primary-dark transition disabled:opacity-50 disabled:cursor-not-allowed",type:"submit",disabled:"sending"===c,children:"sending"===c?"Sending...":"Send Message"})}),"sent"===c&&(0,t.jsx)(i.E.p,{initial:{opacity:0},animate:{opacity:1},className:"text-green-600 text-center",children:"Thanks! Your message has been sent successfully."}),"error"===c&&(0,t.jsx)(i.E.p,{initial:{opacity:0},animate:{opacity:1},className:"text-red-600 text-center",children:"There was an error sending your message. Please try again."})]})]}),(0,t.jsxs)(i.E.div,{initial:{opacity:0,x:20},animate:{opacity:1,x:0},transition:{delay:.8},className:"space-y-8",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("h3",{className:"text-2xl font-bold mb-4",children:"Why Work With Me?"}),(0,t.jsxs)("ul",{className:"space-y-3 text-muted",children:[(0,t.jsxs)("li",{className:"flex items-start gap-3",children:[(0,t.jsx)("span",{className:"text-primary mt-1",children:"✓"}),(0,t.jsx)("span",{children:"Full-stack development expertise"})]}),(0,t.jsxs)("li",{className:"flex items-start gap-3",children:[(0,t.jsx)("span",{className:"text-primary mt-1",children:"✓"}),(0,t.jsx)("span",{children:"Modern technologies and best practices"})]}),(0,t.jsxs)("li",{className:"flex items-start gap-3",children:[(0,t.jsx)("span",{className:"text-primary mt-1",children:"✓"}),(0,t.jsx)("span",{children:"Responsive and user-friendly designs"})]}),(0,t.jsxs)("li",{className:"flex items-start gap-3",children:[(0,t.jsx)("span",{className:"text-primary mt-1",children:"✓"}),(0,t.jsx)("span",{children:"Fast turnaround and clear communication"})]})]})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("h3",{className:"text-2xl font-bold mb-4",children:"Follow Me"}),(0,t.jsx)("div",{className:"flex gap-4",children:[{name:"GitHub",url:"https://github.com/Mianhassam96",icon:"\uD83D\uDC19"},{name:"LinkedIn",url:"https://www.linkedin.com/in/mianhassam96/",icon:"\uD83D\uDCBC"},{name:"Facebook",url:"https://www.facebook.com/mian.hassam.kz",icon:"\uD83D\uDCD8"}].map(e=>(0,t.jsx)("a",{href:e.url,target:"_blank",rel:"noopener noreferrer",className:"w-12 h-12 bg-primary/10 hover:bg-primary/20 rounded-xl flex items-center justify-center text-2xl transition",title:e.name,children:e.icon},e.name))})]}),(0,t.jsxs)("div",{className:"glass-card p-6 rounded-2xl",children:[(0,t.jsx)("h3",{className:"text-xl font-bold mb-4",children:"Quick Response"}),(0,t.jsx)("p",{className:"text-muted",children:"I typically respond to messages within 24 hours. For urgent inquiries, feel free to reach out via WhatsApp for faster communication."})]})]})]})})})})]})}}},function(e){e.O(0,[774,888,179],function(){return e(e.s=1382)}),_N_E=e.O()}]); No newline at end of file

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

Contact form submission broken on static hosting

This bundle still posts to /api/contact, but GitHub Pages can’t run API routes or server functions. Once deployed, every submission will hit a 404 (or CORS error), so users will always see the failure state and no message will go through. Please replace the POST target with an actual static-compatible service (e.g., Formspree, Netlify Forms, a hosted webhook) or otherwise rework the form before shipping.

Comment thread index.html
@@ -0,0 +1 @@
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/MultiMian-Studio/_next/static/css/552dc79397d4897a.css" as="style" crossorigin=""/><link rel="stylesheet" href="/MultiMian-Studio/_next/static/css/552dc79397d4897a.css" crossorigin="" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" crossorigin="" nomodule="" src="/MultiMian-Studio/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js"></script><script src="/MultiMian-Studio/_next/static/chunks/webpack-4f2b944271923d24.js" defer="" crossorigin=""></script><script src="/MultiMian-Studio/_next/static/chunks/framework-142bc663a62a6fa3.js" defer="" crossorigin=""></script><script src="/MultiMian-Studio/_next/static/chunks/main-e3a09e7bb54bbcc7.js" defer="" crossorigin=""></script><script src="/MultiMian-Studio/_next/static/chunks/pages/_app-339b0f32b9fcc349.js" defer="" crossorigin=""></script><script src="/MultiMian-Studio/_next/static/chunks/pages/index-9a94938e53b2806d.js" defer="" crossorigin=""></script><script src="/MultiMian-Studio/_next/static/Gv3gfcvSNg84tRUXGb2ZS/_buildManifest.js" defer="" crossorigin=""></script><script src="/MultiMian-Studio/_next/static/Gv3gfcvSNg84tRUXGb2ZS/_ssgManifest.js" defer="" crossorigin=""></script></head><body><div id="__next"><div class="min-h-screen flex flex-col"><header class="backdrop-blur-lg bg-white/80 dark:bg-gray-900/80 border-b border-white/20 dark:border-gray-700/20 sticky top-0 z-40 shadow-sm"><div class="container flex items-center justify-between h-20"><a class="flex items-center gap-3 group" href="/MultiMian-Studio"><span class="inline-block w-10 h-10 rounded-xl bg-gradient-to-br from-primary to-primary-dark shadow-lg group-hover:shadow-xl transition-all duration-300 relative overflow-hidden" aria-hidden="true"><span class="absolute inset-0 bg-gradient-to-br from-primary/80 to-primary-dark/80 backdrop-blur-sm transform group-hover:scale-110 transition-transform duration-300"></span><span class="absolute inset-0 flex items-center justify-center font-bold text-white text-xl">M</span></span><span class="text-xl font-extrabold tracking-tight bg-gradient-to-r from-primary to-primary-dark bg-clip-text text-transparent">MultiMian<span class="text-sm font-semibold text-muted ml-1">Studio</span></span></a><nav class="hidden md:flex items-center gap-8"><a class="text-sm font-medium text-muted hover:text-primary transition-colors" href="/MultiMian-Studio/about">About</a><a class="text-sm font-medium text-muted hover:text-primary transition-colors" href="/MultiMian-Studio/services">Services</a><a class="text-sm font-medium text-muted hover:text-primary transition-colors" href="/MultiMian-Studio/portfolio">Portfolio</a><a class="text-sm font-medium text-muted hover:text-primary transition-colors" href="/MultiMian-Studio/testimonials">Testimonials</a><a class="ml-4 inline-flex items-center px-6 py-2.5 glass-button rounded-lg text-sm font-medium" href="/MultiMian-Studio/contact">Get in touch</a><button aria-pressed="false" title="Switch to dark mode" class="ml-3 p-3 rounded-xl glass-card hover:shadow-lg transition-all duration-300 hover:scale-105 border border-white/10" tabindex="0"><div class="text-2xl" style="transform:none">☀️</div></button></nav><div class="md:hidden relative"><button aria-expanded="false" aria-label="Toggle menu" class="inline-flex items-center justify-center p-2 rounded-md border"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" class="text-muted"><path d="M4 6h16M4 12h16M4 18h16" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path></svg></button></div></div></header><main class="flex-1 w-full container py-12"><div><section class="hero-gradient rounded-2xl p-8 md:p-16 text-center relative overflow-hidden min-h-[80vh] flex items-center justify-center"><div class="absolute inset-0 bg-gradient-to-br from-primary/10 to-primary-dark/5 backdrop-blur-sm"></div><div class="max-w-5xl mx-auto relative z-10" style="opacity:0;transform:translateY(20px) translateZ(0)"><div class="mb-6 inline-flex items-center gap-2 px-4 py-2 rounded-full bg-white/10 backdrop-blur-sm border border-white/20" style="opacity:0"><span class="flex h-2 w-2 rounded-full bg-primary animate-pulse"></span><span class="text-sm font-medium text-primary">Full-Stack Development Studio</span></div><h1 class="text-4xl md:text-6xl font-extrabold leading-tight mb-6 bg-clip-text text-transparent bg-gradient-to-r from-primary to-primary-dark" style="opacity:0;transform:translateY(20px) translateZ(0)">🚀 Transforming Ideas into<span class="relative"> Powerful Digital Experiences</span></h1><p class="text-lg md:text-xl text-muted max-w-3xl mx-auto mb-6 leading-relaxed" style="opacity:0;transform:translateY(20px) translateZ(0)">I’m Mian Hassam, a Full Stack Developer specializing in building modern, scalable, and user-focused web applications that drive results.</p><div class="max-w-3xl mx-auto text-base text-muted mb-8 leading-relaxed" style="opacity:0;transform:translateY(20px) translateZ(0)"><p class="mb-3">Hi there! I help businesses and individuals turn their ideas into high-performing web solutions. From sleek frontends to robust backends, I create websites and apps that don’t just look great — they perform flawlessly and deliver real impact.</p><p class="">💡 Whether you need a portfolio site, business platform, or custom web app, I’ve got the tools, experience, and passion to make it happen.</p></div><div class="max-w-3xl mx-auto mb-8" style="opacity:0;transform:translateY(20px) translateZ(0)"><div class="grid grid-cols-1 sm:grid-cols-2 gap-3 mb-6"><div class="flex items-start gap-3"><div class="text-primary text-xl">✅</div><div><div class="font-semibold">Full Stack Expertise</div><div class="text-sm text-muted">Frontend, Backend, APIs, and Databases</div></div></div><div class="flex items-start gap-3"><div class="text-primary text-xl">✅</div><div><div class="font-semibold">Clean &amp; Scalable Code</div><div class="text-sm text-muted">Maintainable architecture and best practices</div></div></div><div class="flex items-start gap-3"><div class="text-primary text-xl">✅</div><div><div class="font-semibold">Responsive &amp; SEO-Optimized</div><div class="text-sm text-muted">Fast, accessible, and search-friendly designs</div></div></div><div class="flex items-start gap-3"><div class="text-primary text-xl">✅</div><div><div class="font-semibold">On-Time Delivery</div><div class="text-sm text-muted">Reliable timelines and ongoing support</div></div></div></div><div class="flex items-center justify-center gap-6 flex-wrap"><a class="glass-button px-8 py-4 rounded-xl font-medium inline-flex items-center gap-2" href="/MultiMian-Studio/contact">👉 Let’s Build Your Project<svg class="w-4 h-4" viewBox="0 0 20 20" fill="currentColor"><path fill-rule="evenodd" d="M3 10a.75.75 0 01.75-.75h10.638L10.23 5.29a.75.75 0 111.04-1.08l5.5 5.25a.75.75 0 010 1.08l-5.5 5.25a.75.75 0 11-1.04-1.08l4.158-3.96H3.75A.75.75 0 013 10z" clip-rule="evenodd"></path></svg></a><a class="px-6 py-4 rounded-xl text-primary font-medium hover:bg-primary/5 transition-all duration-300 inline-flex items-center gap-2 border border-primary/20" href="/MultiMian-Studio/portfolio">View My Work<svg class="w-4 h-4" viewBox="0 0 20 20" fill="currentColor"><path d="M10 12.5a2.5 2.5 0 100-5 2.5 2.5 0 000 5z"></path><path fill-rule="evenodd" d="M.664 10.59a1.651 1.651 0 010-1.186A10.004 10.004 0 0110 3c4.257 0 7.893 2.66 9.336 6.41.147.381.146.804 0 1.186A10.004 10.004 0 0110 17c-4.257 0-7.893-2.66-9.336-6.41zM14 10a4 4 0 11-8 0 4 4 0 018 0z" clip-rule="evenodd"></path></svg></a></div></div><div class="mt-16 flex items-center justify-center gap-8" style="opacity:0"><div class="text-center"><div class="text-2xl font-bold text-primary mb-1">100+</div><div class="text-sm text-muted">Projects Delivered</div></div><div class="text-center"><div class="text-2xl font-bold text-primary mb-1">5★</div><div class="text-sm text-muted">Client Rating</div></div><div class="text-center"><div class="text-2xl font-bold text-primary mb-1">24/7</div><div class="text-sm text-muted">Support</div></div></div></div></section><div class="-mt-6"><svg viewBox="0 0 1440 60" class="w-full h-12" preserveAspectRatio="none" xmlns="http://www.w3.org/2000/svg"><path d="M0 30 C 360 0 1080 60 1440 30 L1440 60 L0 60 Z" fill="rgba(255,255,255,0.6)"></path></svg></div><section class="mt-8"><h2 class="text-2xl font-semibold mb-6">How we help</h2><div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-6"><div class="p-8 bg-gradient-to-b from-white/80 to-white/60 backdrop-blur-lg rounded-xl border border-white/20 shadow-xl hover:shadow-2xl transition-all duration-300" style="opacity:0;transform:translateY(20px) translateZ(0)"><div class="flex flex-col items-start gap-4"><div class="w-12 h-12 rounded-xl bg-gradient-to-br from-primary/20 to-primary-dark/20 flex items-center justify-center text-primary shadow-inner"><svg width="18" height="18" viewBox="0 0 24 24" fill="none"><path d="M3 12h18" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path></svg></div><div><h3 class="font-bold text-xl mb-3 text-gray-800" style="opacity:0">Web Applications</h3><div class="text-base text-gray-600 leading-relaxed" style="opacity:0">High-performance React and Next.js apps with server-side rendering and hybrid architectures.</div></div></div></div><div class="p-8 bg-gradient-to-b from-white/80 to-white/60 backdrop-blur-lg rounded-xl border border-white/20 shadow-xl hover:shadow-2xl transition-all duration-300" style="opacity:0;transform:translateY(20px) translateZ(0)"><div class="flex flex-col items-start gap-4"><div class="w-12 h-12 rounded-xl bg-gradient-to-br from-primary/20 to-primary-dark/20 flex items-center justify-center text-primary shadow-inner"><svg width="18" height="18" viewBox="0 0 24 24" fill="none"><path d="M12 2v20" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path></svg></div><div><h3 class="font-bold text-xl mb-3 text-gray-800" style="opacity:0">API &amp; Backend</h3><div class="text-base text-gray-600 leading-relaxed" style="opacity:0">REST/GraphQL APIs, authentication, database design, and cloud deployment.</div></div></div></div><div class="p-8 bg-gradient-to-b from-white/80 to-white/60 backdrop-blur-lg rounded-xl border border-white/20 shadow-xl hover:shadow-2xl transition-all duration-300" style="opacity:0;transform:translateY(20px) translateZ(0)"><div class="flex flex-col items-start gap-4"><div class="w-12 h-12 rounded-xl bg-gradient-to-br from-primary/20 to-primary-dark/20 flex items-center justify-center text-primary shadow-inner"><svg width="18" height="18" viewBox="0 0 24 24" fill="none"><path d="M3 6h18M3 12h18M3 18h18" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path></svg></div><div><h3 class="font-bold text-xl mb-3 text-gray-800" style="opacity:0">DevOps &amp; Scale</h3><div class="text-base text-gray-600 leading-relaxed" style="opacity:0">CI/CD, observability, scaling strategies and cost optimization for production systems.</div></div></div></div></div></section><section class="mt-12 bg-white/50 rounded-lg p-6"><h3 class="text-xl font-semibold mb-2">Ready to start?</h3><p class="text-muted mb-4">Tell us about your project and we&#x27;ll reply within 48 hours.</p><a class="inline-block px-5 py-2 bg-primary text-white rounded" href="/MultiMian-Studio/contact">Contact us</a></section><section class="mt-24 py-16 bg-gradient-to-b from-white/5 to-primary/5 rounded-3xl"><div class="text-center mb-12" style="opacity:0;transform:translateY(20px) translateZ(0)"><h2 class="text-3xl md:text-4xl font-bold mb-4 bg-gradient-to-r from-primary to-primary-dark bg-clip-text text-transparent">Key Features</h2><p class="text-lg text-gray-600 max-w-2xl mx-auto">Building the future of web applications with modern technologies and best practices</p></div><div class="grid grid-cols-1 sm:grid-cols-3 gap-8 px-8" style="opacity:0"><div class="p-8 bg-white/80 backdrop-blur-lg rounded-2xl shadow-xl hover:shadow-2xl transition-all duration-300 border border-white/20" style="opacity:0;transform:translateY(20px) translateZ(0)"><div class="text-4xl mb-4" style="transform:scale(0.8) translateZ(0)">⚡</div><h3 class="text-xl font-bold mb-3 text-gray-800">Fast delivery</h3><p class="text-gray-600 leading-relaxed">Ship production-ready features rapidly with a streamlined process.</p></div><div class="p-8 bg-white/80 backdrop-blur-lg rounded-2xl shadow-xl hover:shadow-2xl transition-all duration-300 border border-white/20" style="opacity:0;transform:translateY(20px) translateZ(0)"><div class="text-4xl mb-4" style="transform:scale(0.8) translateZ(0)">🏗️</div><h3 class="text-xl font-bold mb-3 text-gray-800">Scalable architecture</h3><p class="text-gray-600 leading-relaxed">Design systems that handle growth and maintain low latency.</p></div><div class="p-8 bg-white/80 backdrop-blur-lg rounded-2xl shadow-xl hover:shadow-2xl transition-all duration-300 border border-white/20" style="opacity:0;transform:translateY(20px) translateZ(0)"><div class="text-4xl mb-4" style="transform:scale(0.8) translateZ(0)">👨‍💻</div><h3 class="text-xl font-bold mb-3 text-gray-800">Developer-friendly</h3><p class="text-gray-600 leading-relaxed">Readable code, clear tests, and strong DX.</p></div></div></section><section class="mt-16 bg-white/40 dark:bg-gray-800/40 rounded-lg p-4 md:p-6"><div class="grid grid-cols-1 sm:grid-cols-3 gap-6 md:gap-8"><div class="text-center" style="opacity:0;transform:scale(0.95) translateZ(0)"><div class="text-2xl md:text-3xl font-extrabold text-primary">40+</div><div class="text-sm md:text-base text-muted mt-1">Projects</div></div><div class="text-center" style="opacity:0;transform:scale(0.95) translateZ(0)"><div class="text-2xl md:text-3xl font-extrabold text-primary">4</div><div class="text-sm md:text-base text-muted mt-1">Years</div></div><div class="text-center" style="opacity:0;transform:scale(0.95) translateZ(0)"><div class="text-2xl md:text-3xl font-extrabold text-primary">60+</div><div class="text-sm md:text-base text-muted mt-1">Happy clients</div></div></div></section><section class="mt-16 bg-gradient-to-r from-primary to-brand-500 text-white rounded-lg p-8" style="opacity:0;transform:translateY(8px) translateZ(0)"><div class="flex flex-col md:flex-row items-center justify-between gap-4"><div><h3 class="text-2xl font-bold">Start building something great</h3><p class="text-sm">Book a free consultation and technical review.</p></div><div><a class="inline-block px-5 py-3 bg-white text-primary rounded font-semibold" href="/MultiMian-Studio/contact">Get in touch</a></div></div></section></div></main><footer class="border-t bg-white/60 dark:bg-gray-900/60"><div class="container py-8 flex flex-col md:flex-row items-center justify-between gap-4"><div class="text-sm text-muted">© <!-- -->2025<!-- --> Mian Hassam — Full-stack developer</div><div class="flex items-center gap-4"><div class="flex items-center gap-3 text-sm text-muted"><a href="#" class="hover:underline">Privacy</a><span aria-hidden="true">·</span><a href="#" class="hover:underline">Terms</a></div><div class="flex items-center gap-3 text-sm"><a href="https://github.com/Mianhassam96" target="_blank" rel="noreferrer" aria-label="GitHub" class="hover:opacity-80"><svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor" class="text-muted"><path d="M12 .5C5.7.5.5 5.7.5 12c0 5.1 3.3 9.4 7.9 10.9.6.1.8-.3.8-.6v-2.1c-3.2.7-3.8-1.4-3.8-1.4-.5-1.2-1.2-1.5-1.2-1.5-1-.7.1-.7.1-.7 1.1.1 1.7 1.2 1.7 1.2 1 .1.7 1.6.7 1.7 1.6.1 3.1-1.1 3.8-2 .1-.9.6-1.5 1-1.9-2.6-.3-5.4-1.3-5.4-5.7 0-1.3.5-2.4 1.2-3.3-.1-.3-.5-1.6.1-3.3 0 0 1-.3 3.3 1.2.9-.2 1.8-.3 2.7-.3s1.9.1 2.7.3c2.3-1.6 3.3-1.2 3.3-1.2.6 1.7.2 3 .1 3.3.7.9 1.2 2 1.2 3.3 0 4.4-2.8 5.4-5.4 5.7.6.5 1 1.3 1 2.6v3.8c0 .4.2.8.8.6 4.6-1.5 7.9-5.8 7.9-10.9C23.5 5.7 18.3.5 12 .5z"></path></svg></a><a href="https://www.linkedin.com/in/mianhassam96/" target="_blank" rel="noreferrer" aria-label="LinkedIn" class="hover:opacity-80"><svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor" class="text-muted"><path d="M4.98 3.5C4.98 4.88 3.9 6 2.5 6S0 4.88 0 3.5 1.07 1 2.5 1 4.98 2.12 4.98 3.5zM.5 8h4V24h-4zM8.5 8h3.8v2.18h.06c.53-1 1.82-2.06 3.75-2.06 4 0 4.74 2.64 4.74 6.07V24h-4V15.5c0-2.04-.04-4.66-2.84-4.66-2.84 0-3.28 2.22-3.28 4.5V24h-4z"></path></svg></a><a href="https://www.facebook.com/mian.hassam.kz" target="_blank" rel="noreferrer" aria-label="Facebook" class="hover:opacity-80"><svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor" class="text-muted"><path d="M22 12c0-5.522-4.477-10-10-10S2 6.478 2 12c0 4.991 3.657 9.128 8.438 9.878v-6.99H7.898v-2.888h2.54V9.797c0-2.507 1.492-3.89 3.777-3.89 1.094 0 2.238.195 2.238.195v2.46h-1.26c-1.242 0-1.63.771-1.63 1.562v1.875h2.773l-.443 2.888h-2.33v6.99C18.343 21.128 22 16.991 22 12z"></path></svg></a></div></div></div></footer></div></div><script id="__NEXT_DATA__" type="application/json" crossorigin="">{"props":{"pageProps":{}},"page":"/","query":{},"buildId":"Gv3gfcvSNg84tRUXGb2ZS","assetPrefix":"/MultiMian-Studio","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html> No newline at end of file

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

Critical: Incorrect deployment strategy.

This PR is deploying static build artifacts to the main branch by merging gh-pages → main, which will likely result in:

  1. Loss of source code: If this replaces the existing main branch content, all source code (pages/, components/, configs, etc.) will be lost
  2. Backwards branch flow: GitHub Pages deployments should go FROM main TO gh-pages, not the reverse
  3. Build artifacts in main: Build outputs shouldn't be committed to the main development branch

Recommended approach:

  • Keep source code in the main branch
  • Configure GitHub Pages to deploy FROM main (if using output: 'export' in next.config.js, commit the out/ directory)
  • Or use GitHub Actions to build and deploy to gh-pages automatically
  • Or keep build artifacts in gh-pages only and deploy from there

Action required: Close this PR and reconfigure your deployment workflow to preserve source code.

Would you like help setting up a proper GitHub Pages deployment workflow for Next.js that preserves your source code?

🤖 Prompt for AI Agents
index.html lines 1-1: this PR has committed static build artifacts (index.html)
into main by merging gh-pages → main, risking loss of source and incorrect
deployment flow; revert this merge or restore main from the last good commit
that contained source (pages/, components/, configs), remove build artifacts
from main (delete committed out/ or _next static files), then reconfigure
deployment to build from main and publish to gh-pages (either configure GitHub
Pages to serve the built output or add a GitHub Actions workflow that builds the
Next.js app and pushes only the generated static files to the gh-pages branch),
ensure source files remain in main, add .gitignore for build output and consider
adding a protective branch rule to prevent direct pushes of artifacts to main.

Comment thread services.html
@@ -0,0 +1 @@
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/MultiMian-Studio/_next/static/css/552dc79397d4897a.css" as="style" crossorigin=""/><link rel="stylesheet" href="/MultiMian-Studio/_next/static/css/552dc79397d4897a.css" crossorigin="" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" crossorigin="" nomodule="" src="/MultiMian-Studio/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js"></script><script src="/MultiMian-Studio/_next/static/chunks/webpack-4f2b944271923d24.js" defer="" crossorigin=""></script><script src="/MultiMian-Studio/_next/static/chunks/framework-142bc663a62a6fa3.js" defer="" crossorigin=""></script><script src="/MultiMian-Studio/_next/static/chunks/main-e3a09e7bb54bbcc7.js" defer="" crossorigin=""></script><script src="/MultiMian-Studio/_next/static/chunks/pages/_app-339b0f32b9fcc349.js" defer="" crossorigin=""></script><script src="/MultiMian-Studio/_next/static/chunks/pages/services-0cc2ee65d9866c3c.js" defer="" crossorigin=""></script><script src="/MultiMian-Studio/_next/static/Gv3gfcvSNg84tRUXGb2ZS/_buildManifest.js" defer="" crossorigin=""></script><script src="/MultiMian-Studio/_next/static/Gv3gfcvSNg84tRUXGb2ZS/_ssgManifest.js" defer="" crossorigin=""></script></head><body><div id="__next"><div class="min-h-screen flex flex-col"><header class="backdrop-blur-lg bg-white/80 dark:bg-gray-900/80 border-b border-white/20 dark:border-gray-700/20 sticky top-0 z-40 shadow-sm"><div class="container flex items-center justify-between h-20"><a class="flex items-center gap-3 group" href="/MultiMian-Studio"><span class="inline-block w-10 h-10 rounded-xl bg-gradient-to-br from-primary to-primary-dark shadow-lg group-hover:shadow-xl transition-all duration-300 relative overflow-hidden" aria-hidden="true"><span class="absolute inset-0 bg-gradient-to-br from-primary/80 to-primary-dark/80 backdrop-blur-sm transform group-hover:scale-110 transition-transform duration-300"></span><span class="absolute inset-0 flex items-center justify-center font-bold text-white text-xl">M</span></span><span class="text-xl font-extrabold tracking-tight bg-gradient-to-r from-primary to-primary-dark bg-clip-text text-transparent">MultiMian<span class="text-sm font-semibold text-muted ml-1">Studio</span></span></a><nav class="hidden md:flex items-center gap-8"><a class="text-sm font-medium text-muted hover:text-primary transition-colors" href="/MultiMian-Studio/about">About</a><a class="text-sm font-medium text-muted hover:text-primary transition-colors" href="/MultiMian-Studio/services">Services</a><a class="text-sm font-medium text-muted hover:text-primary transition-colors" href="/MultiMian-Studio/portfolio">Portfolio</a><a class="text-sm font-medium text-muted hover:text-primary transition-colors" href="/MultiMian-Studio/testimonials">Testimonials</a><a class="ml-4 inline-flex items-center px-6 py-2.5 glass-button rounded-lg text-sm font-medium" href="/MultiMian-Studio/contact">Get in touch</a><button aria-pressed="false" title="Switch to dark mode" class="ml-3 p-3 rounded-xl glass-card hover:shadow-lg transition-all duration-300 hover:scale-105 border border-white/10" tabindex="0"><div class="text-2xl" style="transform:none">☀️</div></button></nav><div class="md:hidden relative"><button aria-expanded="false" aria-label="Toggle menu" class="inline-flex items-center justify-center p-2 rounded-md border"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" class="text-muted"><path d="M4 6h16M4 12h16M4 18h16" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path></svg></button></div></div></header><main class="flex-1 w-full container py-12"><div class="py-12"><section class="text-center max-w-3xl mx-auto mb-16" style="opacity:0;transform:translateY(20px) translateZ(0)"><h1 class="text-4xl md:text-5xl font-extrabold mb-4 bg-gradient-to-r from-primary to-primary-dark bg-clip-text text-transparent">Services I Offer</h1><p class="text-lg text-muted">Empowering businesses and individuals with full-stack development, performance optimization, and scalable web solutions — from idea to launch and beyond.</p></section><section class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-8 px-4 md:px-0" style="opacity:0"><div class="p-8 bg-gradient-to-b from-white/80 to-white/60 backdrop-blur-lg rounded-xl border border-white/20 shadow-xl hover:shadow-2xl transition-all duration-300" style="opacity:0;transform:translateY(20px) translateZ(0)"><div class="flex flex-col items-start gap-4"><div><h3 class="font-bold text-xl mb-3 text-gray-800" style="opacity:0">Product Discovery</h3><div class="text-base text-gray-600 leading-relaxed" style="opacity:0">Transform ideas into actionable roadmaps through research, prototyping, and strategic planning.</div></div></div></div><div class="p-8 bg-gradient-to-b from-white/80 to-white/60 backdrop-blur-lg rounded-xl border border-white/20 shadow-xl hover:shadow-2xl transition-all duration-300" style="opacity:0;transform:translateY(20px) translateZ(0)"><div class="flex flex-col items-start gap-4"><div><h3 class="font-bold text-xl mb-3 text-gray-800" style="opacity:0">Frontend &amp; Web Apps</h3><div class="text-base text-gray-600 leading-relaxed" style="opacity:0">Build fast, responsive, and interactive interfaces using React, Next.js, and modern web standards.</div></div></div></div><div class="p-8 bg-gradient-to-b from-white/80 to-white/60 backdrop-blur-lg rounded-xl border border-white/20 shadow-xl hover:shadow-2xl transition-all duration-300" style="opacity:0;transform:translateY(20px) translateZ(0)"><div class="flex flex-col items-start gap-4"><div><h3 class="font-bold text-xl mb-3 text-gray-800" style="opacity:0">APIs &amp; Integrations</h3><div class="text-base text-gray-600 leading-relaxed" style="opacity:0">Develop secure and scalable APIs, integrate third-party tools, and automate workflows effortlessly.</div></div></div></div><div class="p-8 bg-gradient-to-b from-white/80 to-white/60 backdrop-blur-lg rounded-xl border border-white/20 shadow-xl hover:shadow-2xl transition-all duration-300" style="opacity:0;transform:translateY(20px) translateZ(0)"><div class="flex flex-col items-start gap-4"><div><h3 class="font-bold text-xl mb-3 text-gray-800" style="opacity:0">Cloud &amp; DevOps</h3><div class="text-base text-gray-600 leading-relaxed" style="opacity:0">Streamline deployment pipelines with CI/CD, infrastructure-as-code, and cloud monitoring solutions.</div></div></div></div><div class="p-8 bg-gradient-to-b from-white/80 to-white/60 backdrop-blur-lg rounded-xl border border-white/20 shadow-xl hover:shadow-2xl transition-all duration-300" style="opacity:0;transform:translateY(20px) translateZ(0)"><div class="flex flex-col items-start gap-4"><div><h3 class="font-bold text-xl mb-3 text-gray-800" style="opacity:0">Performance &amp; Security</h3><div class="text-base text-gray-600 leading-relaxed" style="opacity:0">Optimize for speed, scalability, and security with caching strategies, audits, and best practices.</div></div></div></div><div class="p-8 bg-gradient-to-b from-white/80 to-white/60 backdrop-blur-lg rounded-xl border border-white/20 shadow-xl hover:shadow-2xl transition-all duration-300" style="opacity:0;transform:translateY(20px) translateZ(0)"><div class="flex flex-col items-start gap-4"><div><h3 class="font-bold text-xl mb-3 text-gray-800" style="opacity:0">Consulting &amp; Team Augmentation</h3><div class="text-base text-gray-600 leading-relaxed" style="opacity:0">Bring in on-demand expertise or extend your development team with reliable engineering support.</div></div></div></div></section><div class="-mt-6"><svg viewBox="0 0 1440 60" class="w-full h-12" preserveAspectRatio="none" xmlns="http://www.w3.org/2000/svg"><path d="M0 30 C 360 0 1080 60 1440 30 L1440 60 L0 60 Z" fill="rgba(255,255,255,0.6)"></path></svg></div><section class="mt-20 px-4 md:px-0 text-center"><h2 class="text-3xl font-semibold mb-6 bg-gradient-to-r from-primary to-primary-dark bg-clip-text text-transparent">How I Work</h2><div class="p-8 bg-white/70 rounded-2xl shadow-sm backdrop-blur-md max-w-2xl mx-auto" style="opacity:0;transform:translateY(8px) translateZ(0)"><ol class="list-decimal ml-6 text-muted space-y-2 text-left md:text-center"><li>Kickoff &amp; Discovery — aligning on goals, scope, and outcomes.</li><li>Iterative Development — shipping valuable, incremental updates.</li><li>Operate &amp; Evolve — continuous improvement and scaling with insights.</li></ol></div></section><section class="mt-20"><section class="mt-16 bg-gradient-to-r from-primary to-brand-500 text-white rounded-lg p-8" style="opacity:0;transform:translateY(8px) translateZ(0)"><div class="flex flex-col md:flex-row items-center justify-between gap-4"><div><h3 class="text-2xl font-bold">Start building something great</h3><p class="text-sm">Book a free consultation and technical review.</p></div><div><a class="inline-block px-5 py-3 bg-white text-primary rounded font-semibold" href="/MultiMian-Studio/contact">Get in touch</a></div></div></section></section></div></main><footer class="border-t bg-white/60 dark:bg-gray-900/60"><div class="container py-8 flex flex-col md:flex-row items-center justify-between gap-4"><div class="text-sm text-muted">© <!-- -->2025<!-- --> Mian Hassam — Full-stack developer</div><div class="flex items-center gap-4"><div class="flex items-center gap-3 text-sm text-muted"><a href="#" class="hover:underline">Privacy</a><span aria-hidden="true">·</span><a href="#" class="hover:underline">Terms</a></div><div class="flex items-center gap-3 text-sm"><a href="https://github.com/Mianhassam96" target="_blank" rel="noreferrer" aria-label="GitHub" class="hover:opacity-80"><svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor" class="text-muted"><path d="M12 .5C5.7.5.5 5.7.5 12c0 5.1 3.3 9.4 7.9 10.9.6.1.8-.3.8-.6v-2.1c-3.2.7-3.8-1.4-3.8-1.4-.5-1.2-1.2-1.5-1.2-1.5-1-.7.1-.7.1-.7 1.1.1 1.7 1.2 1.7 1.2 1 .1.7 1.6.7 1.7 1.6.1 3.1-1.1 3.8-2 .1-.9.6-1.5 1-1.9-2.6-.3-5.4-1.3-5.4-5.7 0-1.3.5-2.4 1.2-3.3-.1-.3-.5-1.6.1-3.3 0 0 1-.3 3.3 1.2.9-.2 1.8-.3 2.7-.3s1.9.1 2.7.3c2.3-1.6 3.3-1.2 3.3-1.2.6 1.7.2 3 .1 3.3.7.9 1.2 2 1.2 3.3 0 4.4-2.8 5.4-5.4 5.7.6.5 1 1.3 1 2.6v3.8c0 .4.2.8.8.6 4.6-1.5 7.9-5.8 7.9-10.9C23.5 5.7 18.3.5 12 .5z"></path></svg></a><a href="https://www.linkedin.com/in/mianhassam96/" target="_blank" rel="noreferrer" aria-label="LinkedIn" class="hover:opacity-80"><svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor" class="text-muted"><path d="M4.98 3.5C4.98 4.88 3.9 6 2.5 6S0 4.88 0 3.5 1.07 1 2.5 1 4.98 2.12 4.98 3.5zM.5 8h4V24h-4zM8.5 8h3.8v2.18h.06c.53-1 1.82-2.06 3.75-2.06 4 0 4.74 2.64 4.74 6.07V24h-4V15.5c0-2.04-.04-4.66-2.84-4.66-2.84 0-3.28 2.22-3.28 4.5V24h-4z"></path></svg></a><a href="https://www.facebook.com/mian.hassam.kz" target="_blank" rel="noreferrer" aria-label="Facebook" class="hover:opacity-80"><svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor" class="text-muted"><path d="M22 12c0-5.522-4.477-10-10-10S2 6.478 2 12c0 4.991 3.657 9.128 8.438 9.878v-6.99H7.898v-2.888h2.54V9.797c0-2.507 1.492-3.89 3.777-3.89 1.094 0 2.238.195 2.238.195v2.46h-1.26c-1.242 0-1.63.771-1.63 1.562v1.875h2.773l-.443 2.888h-2.33v6.99C18.343 21.128 22 16.991 22 12z"></path></svg></a></div></div></div></footer></div></div><script id="__NEXT_DATA__" type="application/json" crossorigin="">{"props":{"pageProps":{}},"page":"/services","query":{},"buildId":"Gv3gfcvSNg84tRUXGb2ZS","assetPrefix":"/MultiMian-Studio","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html> No newline at end of file

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

Add document <title> and language metadata

The exported page ships without a <title> element and without an explicit document language. That leaves the browser tab blank, hurts SEO, and prevents assistive tech from knowing the language. Please add both before shipping.

-<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/MultiMian-Studio/_next/static/css/552dc79397d4897a.css" as="style" crossorigin=""/>
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><title>Services | MultiMian Studio</title><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/MultiMian-Studio/_next/static/css/552dc79397d4897a.css" as="style" crossorigin=""/>
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/MultiMian-Studio/_next/static/css/552dc79397d4897a.css" as="style" crossorigin=""/><link rel="stylesheet" href="/MultiMian-Studio/_next/static/css/552dc79397d4897a.css" crossorigin="" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" crossorigin="" nomodule="" src="/MultiMian-Studio/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js"></script><script src="/MultiMian-Studio/_next/static/chunks/webpack-4f2b944271923d24.js" defer="" crossorigin=""></script><script src="/MultiMian-Studio/_next/static/chunks/framework-142bc663a62a6fa3.js" defer="" crossorigin=""></script><script src="/MultiMian-Studio/_next/static/chunks/main-e3a09e7bb54bbcc7.js" defer="" crossorigin=""></script><script src="/MultiMian-Studio/_next/static/chunks/pages/_app-339b0f32b9fcc349.js" defer="" crossorigin=""></script><script src="/MultiMian-Studio/_next/static/chunks/pages/services-0cc2ee65d9866c3c.js" defer="" crossorigin=""></script><script src="/MultiMian-Studio/_next/static/Gv3gfcvSNg84tRUXGb2ZS/_buildManifest.js" defer="" crossorigin=""></script><script src="/MultiMian-Studio/_next/static/Gv3gfcvSNg84tRUXGb2ZS/_ssgManifest.js" defer="" crossorigin=""></script></head><body><div id="__next"><div class="min-h-screen flex flex-col"><header class="backdrop-blur-lg bg-white/80 dark:bg-gray-900/80 border-b border-white/20 dark:border-gray-700/20 sticky top-0 z-40 shadow-sm"><div class="container flex items-center justify-between h-20"><a class="flex items-center gap-3 group" href="/MultiMian-Studio"><span class="inline-block w-10 h-10 rounded-xl bg-gradient-to-br from-primary to-primary-dark shadow-lg group-hover:shadow-xl transition-all duration-300 relative overflow-hidden" aria-hidden="true"><span class="absolute inset-0 bg-gradient-to-br from-primary/80 to-primary-dark/80 backdrop-blur-sm transform group-hover:scale-110 transition-transform duration-300"></span><span class="absolute inset-0 flex items-center justify-center font-bold text-white text-xl">M</span></span><span class="text-xl font-extrabold tracking-tight bg-gradient-to-r from-primary to-primary-dark bg-clip-text text-transparent">MultiMian<span class="text-sm font-semibold text-muted ml-1">Studio</span></span></a><nav class="hidden md:flex items-center gap-8"><a class="text-sm font-medium text-muted hover:text-primary transition-colors" href="/MultiMian-Studio/about">About</a><a class="text-sm font-medium text-muted hover:text-primary transition-colors" href="/MultiMian-Studio/services">Services</a><a class="text-sm font-medium text-muted hover:text-primary transition-colors" href="/MultiMian-Studio/portfolio">Portfolio</a><a class="text-sm font-medium text-muted hover:text-primary transition-colors" href="/MultiMian-Studio/testimonials">Testimonials</a><a class="ml-4 inline-flex items-center px-6 py-2.5 glass-button rounded-lg text-sm font-medium" href="/MultiMian-Studio/contact">Get in touch</a><button aria-pressed="false" title="Switch to dark mode" class="ml-3 p-3 rounded-xl glass-card hover:shadow-lg transition-all duration-300 hover:scale-105 border border-white/10" tabindex="0"><div class="text-2xl" style="transform:none">☀️</div></button></nav><div class="md:hidden relative"><button aria-expanded="false" aria-label="Toggle menu" class="inline-flex items-center justify-center p-2 rounded-md border"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" class="text-muted"><path d="M4 6h16M4 12h16M4 18h16" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path></svg></button></div></div></header><main class="flex-1 w-full container py-12"><div class="py-12"><section class="text-center max-w-3xl mx-auto mb-16" style="opacity:0;transform:translateY(20px) translateZ(0)"><h1 class="text-4xl md:text-5xl font-extrabold mb-4 bg-gradient-to-r from-primary to-primary-dark bg-clip-text text-transparent">Services I Offer</h1><p class="text-lg text-muted">Empowering businesses and individuals with full-stack development, performance optimization, and scalable web solutions — from idea to launch and beyond.</p></section><section class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-8 px-4 md:px-0" style="opacity:0"><div class="p-8 bg-gradient-to-b from-white/80 to-white/60 backdrop-blur-lg rounded-xl border border-white/20 shadow-xl hover:shadow-2xl transition-all duration-300" style="opacity:0;transform:translateY(20px) translateZ(0)"><div class="flex flex-col items-start gap-4"><div><h3 class="font-bold text-xl mb-3 text-gray-800" style="opacity:0">Product Discovery</h3><div class="text-base text-gray-600 leading-relaxed" style="opacity:0">Transform ideas into actionable roadmaps through research, prototyping, and strategic planning.</div></div></div></div><div class="p-8 bg-gradient-to-b from-white/80 to-white/60 backdrop-blur-lg rounded-xl border border-white/20 shadow-xl hover:shadow-2xl transition-all duration-300" style="opacity:0;transform:translateY(20px) translateZ(0)"><div class="flex flex-col items-start gap-4"><div><h3 class="font-bold text-xl mb-3 text-gray-800" style="opacity:0">Frontend &amp; Web Apps</h3><div class="text-base text-gray-600 leading-relaxed" style="opacity:0">Build fast, responsive, and interactive interfaces using React, Next.js, and modern web standards.</div></div></div></div><div class="p-8 bg-gradient-to-b from-white/80 to-white/60 backdrop-blur-lg rounded-xl border border-white/20 shadow-xl hover:shadow-2xl transition-all duration-300" style="opacity:0;transform:translateY(20px) translateZ(0)"><div class="flex flex-col items-start gap-4"><div><h3 class="font-bold text-xl mb-3 text-gray-800" style="opacity:0">APIs &amp; Integrations</h3><div class="text-base text-gray-600 leading-relaxed" style="opacity:0">Develop secure and scalable APIs, integrate third-party tools, and automate workflows effortlessly.</div></div></div></div><div class="p-8 bg-gradient-to-b from-white/80 to-white/60 backdrop-blur-lg rounded-xl border border-white/20 shadow-xl hover:shadow-2xl transition-all duration-300" style="opacity:0;transform:translateY(20px) translateZ(0)"><div class="flex flex-col items-start gap-4"><div><h3 class="font-bold text-xl mb-3 text-gray-800" style="opacity:0">Cloud &amp; DevOps</h3><div class="text-base text-gray-600 leading-relaxed" style="opacity:0">Streamline deployment pipelines with CI/CD, infrastructure-as-code, and cloud monitoring solutions.</div></div></div></div><div class="p-8 bg-gradient-to-b from-white/80 to-white/60 backdrop-blur-lg rounded-xl border border-white/20 shadow-xl hover:shadow-2xl transition-all duration-300" style="opacity:0;transform:translateY(20px) translateZ(0)"><div class="flex flex-col items-start gap-4"><div><h3 class="font-bold text-xl mb-3 text-gray-800" style="opacity:0">Performance &amp; Security</h3><div class="text-base text-gray-600 leading-relaxed" style="opacity:0">Optimize for speed, scalability, and security with caching strategies, audits, and best practices.</div></div></div></div><div class="p-8 bg-gradient-to-b from-white/80 to-white/60 backdrop-blur-lg rounded-xl border border-white/20 shadow-xl hover:shadow-2xl transition-all duration-300" style="opacity:0;transform:translateY(20px) translateZ(0)"><div class="flex flex-col items-start gap-4"><div><h3 class="font-bold text-xl mb-3 text-gray-800" style="opacity:0">Consulting &amp; Team Augmentation</h3><div class="text-base text-gray-600 leading-relaxed" style="opacity:0">Bring in on-demand expertise or extend your development team with reliable engineering support.</div></div></div></div></section><div class="-mt-6"><svg viewBox="0 0 1440 60" class="w-full h-12" preserveAspectRatio="none" xmlns="http://www.w3.org/2000/svg"><path d="M0 30 C 360 0 1080 60 1440 30 L1440 60 L0 60 Z" fill="rgba(255,255,255,0.6)"></path></svg></div><section class="mt-20 px-4 md:px-0 text-center"><h2 class="text-3xl font-semibold mb-6 bg-gradient-to-r from-primary to-primary-dark bg-clip-text text-transparent">How I Work</h2><div class="p-8 bg-white/70 rounded-2xl shadow-sm backdrop-blur-md max-w-2xl mx-auto" style="opacity:0;transform:translateY(8px) translateZ(0)"><ol class="list-decimal ml-6 text-muted space-y-2 text-left md:text-center"><li>Kickoff &amp; Discovery — aligning on goals, scope, and outcomes.</li><li>Iterative Development — shipping valuable, incremental updates.</li><li>Operate &amp; Evolve — continuous improvement and scaling with insights.</li></ol></div></section><section class="mt-20"><section class="mt-16 bg-gradient-to-r from-primary to-brand-500 text-white rounded-lg p-8" style="opacity:0;transform:translateY(8px) translateZ(0)"><div class="flex flex-col md:flex-row items-center justify-between gap-4"><div><h3 class="text-2xl font-bold">Start building something great</h3><p class="text-sm">Book a free consultation and technical review.</p></div><div><a class="inline-block px-5 py-3 bg-white text-primary rounded font-semibold" href="/MultiMian-Studio/contact">Get in touch</a></div></div></section></section></div></main><footer class="border-t bg-white/60 dark:bg-gray-900/60"><div class="container py-8 flex flex-col md:flex-row items-center justify-between gap-4"><div class="text-sm text-muted">© <!-- -->2025<!-- --> Mian Hassam — Full-stack developer</div><div class="flex items-center gap-4"><div class="flex items-center gap-3 text-sm text-muted"><a href="#" class="hover:underline">Privacy</a><span aria-hidden="true">·</span><a href="#" class="hover:underline">Terms</a></div><div class="flex items-center gap-3 text-sm"><a href="https://github.com/Mianhassam96" target="_blank" rel="noreferrer" aria-label="GitHub" class="hover:opacity-80"><svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor" class="text-muted"><path d="M12 .5C5.7.5.5 5.7.5 12c0 5.1 3.3 9.4 7.9 10.9.6.1.8-.3.8-.6v-2.1c-3.2.7-3.8-1.4-3.8-1.4-.5-1.2-1.2-1.5-1.2-1.5-1-.7.1-.7.1-.7 1.1.1 1.7 1.2 1.7 1.2 1 .1.7 1.6.7 1.7 1.6.1 3.1-1.1 3.8-2 .1-.9.6-1.5 1-1.9-2.6-.3-5.4-1.3-5.4-5.7 0-1.3.5-2.4 1.2-3.3-.1-.3-.5-1.6.1-3.3 0 0 1-.3 3.3 1.2.9-.2 1.8-.3 2.7-.3s1.9.1 2.7.3c2.3-1.6 3.3-1.2 3.3-1.2.6 1.7.2 3 .1 3.3.7.9 1.2 2 1.2 3.3 0 4.4-2.8 5.4-5.4 5.7.6.5 1 1.3 1 2.6v3.8c0 .4.2.8.8.6 4.6-1.5 7.9-5.8 7.9-10.9C23.5 5.7 18.3.5 12 .5z"></path></svg></a><a href="https://www.linkedin.com/in/mianhassam96/" target="_blank" rel="noreferrer" aria-label="LinkedIn" class="hover:opacity-80"><svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor" class="text-muted"><path d="M4.98 3.5C4.98 4.88 3.9 6 2.5 6S0 4.88 0 3.5 1.07 1 2.5 1 4.98 2.12 4.98 3.5zM.5 8h4V24h-4zM8.5 8h3.8v2.18h.06c.53-1 1.82-2.06 3.75-2.06 4 0 4.74 2.64 4.74 6.07V24h-4V15.5c0-2.04-.04-4.66-2.84-4.66-2.84 0-3.28 2.22-3.28 4.5V24h-4z"></path></svg></a><a href="https://www.facebook.com/mian.hassam.kz" target="_blank" rel="noreferrer" aria-label="Facebook" class="hover:opacity-80"><svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor" class="text-muted"><path d="M22 12c0-5.522-4.477-10-10-10S2 6.478 2 12c0 4.991 3.657 9.128 8.438 9.878v-6.99H7.898v-2.888h2.54V9.797c0-2.507 1.492-3.89 3.777-3.89 1.094 0 2.238.195 2.238.195v2.46h-1.26c-1.242 0-1.63.771-1.63 1.562v1.875h2.773l-.443 2.888h-2.33v6.99C18.343 21.128 22 16.991 22 12z"></path></svg></a></div></div></div></footer></div></div><script id="__NEXT_DATA__" type="application/json" crossorigin="">{"props":{"pageProps":{}},"page":"/services","query":{},"buildId":"Gv3gfcvSNg84tRUXGb2ZS","assetPrefix":"/MultiMian-Studio","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><title>Services | MultiMian Studio</title><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/MultiMian-Studio/_next/static/css/552dc79397d4897a.css" as="style" crossorigin=""/><link rel="stylesheet" href="/MultiMian-Studio/_next/static/css/552dc79397d4897a.css" crossorigin="" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" crossorigin="" nomodule="" src="/MultiMian-Studio/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js"></script><script src="/MultiMian-Studio/_next/static/chunks/webpack-4f2b944271923d24.js" defer="" crossorigin=""></script><script src="/MultiMian-Studio/_next/static/chunks/framework-142bc663a62a6fa3.js" defer="" crossorigin=""></script><script src="/MultiMian-Studio/_next/static/chunks/main-e3a09e7bb54bbcc7.js" defer="" crossorigin=""></script><script src="/MultiMian-Studio/_next/static/chunks/pages/_app-339b0f32b9fcc349.js" defer="" crossorigin=""></script><script src="/MultiMian-Studio/_next/static/chunks/pages/services-0cc2ee65d9866c3c.js" defer="" crossorigin=""></script><script src="/MultiMian-Studio/_next/static/Gv3gfcvSNg84tRUXGb2ZS/_buildManifest.js" defer="" crossorigin=""></script><script src="/MultiMian-Studio/_next/static/Gv3gfcvSNg84tRUXGb2ZS/_ssgManifest.js" defer="" crossorigin=""></script></head><body><div id="__next"><div class="min-h-screen flex flex-col"><header class="backdrop-blur-lg bg-white/80 dark:bg-gray-900/80 border-b border-white/20 dark:border-gray-700/20 sticky top-0 z-40 shadow-sm"><div class="container flex items-center justify-between h-20"><a class="flex items-center gap-3 group" href="/MultiMian-Studio"><span class="inline-block w-10 h-10 rounded-xl bg-gradient-to-br from-primary to-primary-dark shadow-lg group-hover:shadow-xl transition-all duration-300 relative overflow-hidden" aria-hidden="true"><span class="absolute inset-0 bg-gradient-to-br from-primary/80 to-primary-dark/80 backdrop-blur-sm transform group-hover:scale-110 transition-transform duration-300"></span><span class="absolute inset-0 flex items-center justify-center font-bold text-white text-xl">M</span></span><span class="text-xl font-extrabold tracking-tight bg-gradient-to-r from-primary to-primary-dark bg-clip-text text-transparent">MultiMian<span class="text-sm font-semibold text-muted ml-1">Studio</span></span></a><nav class="hidden md:flex items-center gap-8"><a class="text-sm font-medium text-muted hover:text-primary transition-colors" href="/MultiMian-Studio/about">About</a><a class="text-sm font-medium text-muted hover:text-primary transition-colors" href="/MultiMian-Studio/services">Services</a><a class="text-sm font-medium text-muted hover:text-primary transition-colors" href="/MultiMian-Studio/portfolio">Portfolio</a><a class="text-sm font-medium text-muted hover:text-primary transition-colors" href="/MultiMian-Studio/testimonials">Testimonials</a><a class="ml-4 inline-flex items-center px-6 py-2.5 glass-button rounded-lg text-sm font-medium" href="/MultiMian-Studio/contact">Get in touch</a><button aria-pressed="false" title="Switch to dark mode" class="ml-3 p-3 rounded-xl glass-card hover:shadow-lg transition-all duration-300 hover:scale-105 border border-white/10" tabindex="0"><div class="text-2xl" style="transform:none">☀️</div></button></nav><div class="md:hidden relative"><button aria-expanded="false" aria-label="Toggle menu" class="inline-flex items-center justify-center p-2 rounded-md border"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" class="text-muted"><path d="M4 6h16M4 12h16M4 18h16" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path></svg></button></div></div></header><main class="flex-1 w-full container py-12"><div class="py-12"><section class="text-center max-w-3xl mx-auto mb-16" style="opacity:0;transform:translateY(20px) translateZ(0)"><h1 class="text-4xl md:text-5xl font-extrabold mb-4 bg-gradient-to-r from-primary to-primary-dark bg-clip-text text-transparent">Services I Offer</h1><p class="text-lg text-muted">Empowering businesses and individuals with full-stack development, performance optimization, and scalable web solutions — from idea to launch and beyond.</p></section><section class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-8 px-4 md:px-0" style="opacity:0"><div class="p-8 bg-gradient-to-b from-white/80 to-white/60 backdrop-blur-lg rounded-xl border border-white/20 shadow-xl hover:shadow-2xl transition-all duration-300" style="opacity:0;transform:translateY(20px) translateZ(0)"><div class="flex flex-col items-start gap-4"><div><h3 class="font-bold text-xl mb-3 text-gray-800" style="opacity:0">Product Discovery</h3><div class="text-base text-gray-600 leading-relaxed" style="opacity:0">Transform ideas into actionable roadmaps through research, prototyping, and strategic planning.</div></div></div></div><div class="p-8 bg-gradient-to-b from-white/80 to-white/60 backdrop-blur-lg rounded-xl border border-white/20 shadow-xl hover:shadow-2xl transition-all duration-300" style="opacity:0;transform:translateY(20px) translateZ(0)"><div class="flex flex-col items-start gap-4"><div><h3 class="font-bold text-xl mb-3 text-gray-800" style="opacity:0">Frontend &amp; Web Apps</h3><div class="text-base text-gray-600 leading-relaxed" style="opacity:0">Build fast, responsive, and interactive interfaces using React, Next.js, and modern web standards.</div></div></div></div><div class="p-8 bg-gradient-to-b from-white/80 to-white/60 backdrop-blur-lg rounded-xl border border-white/20 shadow-xl hover:shadow-2xl transition-all duration-300" style="opacity:0;transform:translateY(20px) translateZ(0)"><div class="flex flex-col items-start gap-4"><div><h3 class="font-bold text-xl mb-3 text-gray-800" style="opacity:0">APIs &amp; Integrations</h3><div class="text-base text-gray-600 leading-relaxed" style="opacity:0">Develop secure and scalable APIs, integrate third-party tools, and automate workflows effortlessly.</div></div></div></div><div class="p-8 bg-gradient-to-b from-white/80 to-white/60 backdrop-blur-lg rounded-xl border border-white/20 shadow-xl hover:shadow-2xl transition-all duration-300" style="opacity:0;transform:translateY(20px) translateZ(0)"><div class="flex flex-col items-start gap-4"><div><h3 class="font-bold text-xl mb-3 text-gray-800" style="opacity:0">Cloud &amp; DevOps</h3><div class="text-base text-gray-600 leading-relaxed" style="opacity:0">Streamline deployment pipelines with CI/CD, infrastructure-as-code, and cloud monitoring solutions.</div></div></div></div><div class="p-8 bg-gradient-to-b from-white/80 to-white/60 backdrop-blur-lg rounded-xl border border-white/20 shadow-xl hover:shadow-2xl transition-all duration-300" style="opacity:0;transform:translateY(20px) translateZ(0)"><div class="flex flex-col items-start gap-4"><div><h3 class="font-bold text-xl mb-3 text-gray-800" style="opacity:0">Performance &amp; Security</h3><div class="text-base text-gray-600 leading-relaxed" style="opacity:0">Optimize for speed, scalability, and security with caching strategies, audits, and best practices.</div></div></div></div><div class="p-8 bg-gradient-to-b from-white/80 to-white/60 backdrop-blur-lg rounded-xl border border-white/20 shadow-xl hover:shadow-2xl transition-all duration-300" style="opacity:0;transform:translateY(20px) translateZ(0)"><div class="flex flex-col items-start gap-4"><div><h3 class="font-bold text-xl mb-3 text-gray-800" style="opacity:0">Consulting &amp; Team Augmentation</h3><div class="text-base text-gray-600 leading-relaxed" style="opacity:0">Bring in on-demand expertise or extend your development team with reliable engineering support.</div></div></div></div></section><div class="-mt-6"><svg viewBox="0 0 1440 60" class="w-full h-12" preserveAspectRatio="none" xmlns="http://www.w3.org/2000/svg"><path d="M0 30 C 360 0 1080 60 1440 30 L1440 60 L0 60 Z" fill="rgba(255,255,255,0.6)"></path></svg></div><section class="mt-20 px-4 md:px-0 text-center"><h2 class="text-3xl font-semibold mb-6 bg-gradient-to-r from-primary to-primary-dark bg-clip-text text-transparent">How I Work</h2><div class="p-8 bg-white/70 rounded-2xl shadow-sm backdrop-blur-md max-w-2xl mx-auto" style="opacity:0;transform:translateY(8px) translateZ(0)"><ol class="list-decimal ml-6 text-muted space-y-2 text-left md:text-center"><li>Kickoff &amp; Discovery — aligning on goals, scope, and outcomes.</li><li>Iterative Development — shipping valuable, incremental updates.</li><li>Operate &amp; Evolve — continuous improvement and scaling with insights.</li></ol></div></section><section class="mt-20"><section class="mt-16 bg-gradient-to-r from-primary to-brand-500 text-white rounded-lg p-8" style="opacity:0;transform:translateY(8px) translateZ(0)"><div class="flex flex-col md:flex-row items-center justify-between gap-4"><div><h3 class="text-2xl font-bold">Start building something great</h3><p class="text-sm">Book a free consultation and technical review.</p></div><div><a class="inline-block px-5 py-3 bg-white text-primary rounded font-semibold" href="/MultiMian-Studio/contact">Get in touch</a></div></div></section></section></div></main><footer class="border-t bg-white/60 dark:bg-gray-900/60"><div class="container py-8 flex flex-col md:flex-row items-center justify-between gap-4"><div class="text-sm text-muted">© <!-- -->2025<!-- --> Mian Hassam — Full-stack developer</div><div class="flex items-center gap-4"><div class="flex items-center gap-3 text-sm text-muted"><a href="#" class="hover:underline">Privacy</a><span aria-hidden="true">·</span><a href="#" class="hover:underline">Terms</a></div><div class="flex items-center gap-3 text-sm"><a href="https://github.com/Mianhassam96" target="_blank" rel="noreferrer" aria-label="GitHub" class="hover:opacity-80"><svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor" class="text-muted"><path d="M12 .5C5.7.5.5 5.7.5 12c0 5.1 3.3 9.4 7.9 10.9.6.1.8-.3.8-.6v-2.1c-3.2.7-3.8-1.4-3.8-1.4-.5-1.2-1.2-1.5-1.2-1.5-1-.7.1-.7.1-.7 1.1.1 1.7 1.2 1.7 1.2 1 .1.7 1.6.7 1.7 1.6.1 3.1-1.1 3.8-2 .1-.9.6-1.5 1-1.9-2.6-.3-5.4-1.3-5.4-5.7 0-1.3.5-2.4 1.2-3.3-.1-.3-.5-1.6.1-3.3 0 0 1-.3 3.3 1.2.9-.2 1.8-.3 2.7-.3s1.9.1 2.7.3c2.3-1.6 3.3-1.2 3.3-1.2.6 1.7.2 3 .1 3.3.7.9 1.2 2 1.2 3.3 0 4.4-2.8 5.4-5.4 5.7.6.5 1 1.3 1 2.6v3.8c0 .4.2.8.8.6 4.6-1.5 7.9-5.8 7.9-10.9C23.5 5.7 18.3.5 12 .5z"></path></svg></a><a href="https://www.linkedin.com/in/mianhassam96/" target="_blank" rel="noreferrer" aria-label="LinkedIn" class="hover:opacity-80"><svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor" class="text-muted"><path d="M4.98 3.5C4.98 4.88 3.9 6 2.5 6S0 4.88 0 3.5 1.07 1 2.5 1 4.98 2.12 4.98 3.5zM.5 8h4V24h-4zM8.5 8h3.8v2.18h.06c.53-1 1.82-2.06 3.75-2.06 4 0 4.74 2.64 4.74 6.07V24h-4V15.5c0-2.04-.04-4.66-2.84-4.66-2.84 0-3.28 2.22-3.28 4.5V24h-4z"></path></svg></a><a href="https://www.facebook.com/mian.hassam.kz" target="_blank" rel="noreferrer" aria-label="Facebook" class="hover:opacity-80"><svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor" class="text-muted"><path d="M22 12c0-5.522-4.477-10-10-10S2 6.478 2 12c0 4.991 3.657 9.128 8.438 9.878v-6.99H7.898v-2.888h2.54V9.797c0-2.507 1.492-3.89 3.777-3.89 1.094 0 2.238.195 2.238.195v2.46h-1.26c-1.242 0-1.63.771-1.63 1.562v1.875h2.773l-.443 2.888h-2.33v6.99C18.343 21.128 22 16.991 22 12z"></path></svg></a></div></div></div></footer></div></div><script id="__NEXT_DATA__" type="application/json" crossorigin="">{"props":{"pageProps":{}},"page":"/services","query":{},"buildId":"Gv3gfcvSNg84tRUXGb2ZS","assetPrefix":"/MultiMian-Studio","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
🤖 Prompt for AI Agents
In services.html around lines 1 to 1, the exported document is missing a <title>
element and an explicit document language; add a lang attribute to the <html>
tag (e.g., lang="en" or the appropriate locale) and insert a concise <title>
inside the <head> (e.g., "Services — MultiMian Studio") so browsers, search
engines, and assistive tech receive language and title metadata.

@netlify

netlify Bot commented Jul 3, 2026

Copy link
Copy Markdown

Deploy Preview for multimiandev failed.

Name Link
🔨 Latest commit 0f28e36
🔍 Latest deploy log https://app.netlify.com/projects/multimiandev/deploys/6a472b16328ff30007e66d3a

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@_next/static/chunks/pages/login-beafd58c328634f6.js`:
- Line 1: The Login submit handler is logging sensitive credentials, which
should be removed from browser-visible logs. Update the onSubmit logic in Login
so it no longer calls console.log with the email/password values, and keep the
rest of the form submission behavior intact.

In `@_next/static/chunks/pages/register-e8d2d79b11ece0ad.js`:
- Line 1: The Register component is exposing sensitive credentials and not
actually performing registration. In `Register`, remove the
`console.log("Registration attempt:", e)` that prints `password` and
`confirmPassword`, and replace the submit handler with a real async signup flow
that sends only the needed fields from the form state. Keep the password match
check, but after validation call the appropriate auth/API client used by the
app, handle loading/error states, and redirect or show success on completion.
Rebuild the `/register` bundle after updating the component source.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 4a0567f4-6780-463a-97fd-dc7500167f6d

📥 Commits

Reviewing files that changed from the base of the PR and between 7e07318 and 0f28e36.

📒 Files selected for processing (9)
  • _next/static/XPh0mZRKXdyr5OdrJJdq6/_buildManifest.js
  • _next/static/chunks/pages/_app-2d6f52586772b653.js
  • _next/static/chunks/pages/index-2809f5d086e5112b.js
  • _next/static/chunks/pages/login-beafd58c328634f6.js
  • _next/static/chunks/pages/register-e8d2d79b11ece0ad.js
  • _next/static/chunks/pages/services-9e8e7c736790358c.js
  • _next/static/css/583fa631c2923a72.css
  • login.html
  • register.html
✅ Files skipped from review due to trivial changes (3)
  • _next/static/XPh0mZRKXdyr5OdrJJdq6/_buildManifest.js
  • login.html
  • _next/static/chunks/pages/services-9e8e7c736790358c.js

@@ -0,0 +1 @@
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[459],{3236:function(e,t,r){(window.__NEXT_P=window.__NEXT_P||[]).push(["/login",function(){return r(1650)}])},1650:function(e,t,r){"use strict";r.r(t),r.d(t,{default:function(){return Login}});var n=r(5893),a=r(7294),s=r(1664),o=r.n(s),l=r(5347);function Login(){let[e,t]=(0,a.useState)(""),[r,s]=(0,a.useState)("");return(0,n.jsx)("div",{className:"min-h-screen bg-gradient-to-br from-slate-900 via-purple-900/90 to-indigo-900/80 flex items-center justify-center p-4",children:(0,n.jsxs)(l.E.div,{initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{duration:.8},className:"max-w-md w-full bg-white/10 backdrop-blur-lg rounded-2xl p-8 border border-white/20 shadow-2xl",children:[(0,n.jsxs)("div",{className:"text-center mb-8",children:[(0,n.jsx)("h1",{className:"text-3xl font-bold text-white mb-2",children:"Welcome Back"}),(0,n.jsx)("p",{className:"text-gray-300",children:"Sign in to your account"})]}),(0,n.jsxs)("form",{onSubmit:t=>{t.preventDefault(),console.log("Login attempt:",{email:e,password:r})},className:"space-y-6",children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("label",{htmlFor:"email",className:"block text-sm font-medium text-gray-300 mb-2",children:"Email Address"}),(0,n.jsx)("input",{type:"email",id:"email",value:e,onChange:e=>t(e.target.value),required:!0,className:"w-full px-4 py-3 bg-white/10 border border-white/20 rounded-lg text-white placeholder-gray-400 focus:outline-none focus:ring-2 focus:ring-cyan-500 focus:border-transparent",placeholder:"Enter your email"})]}),(0,n.jsxs)("div",{children:[(0,n.jsx)("label",{htmlFor:"password",className:"block text-sm font-medium text-gray-300 mb-2",children:"Password"}),(0,n.jsx)("input",{type:"password",id:"password",value:r,onChange:e=>s(e.target.value),required:!0,className:"w-full px-4 py-3 bg-white/10 border border-white/20 rounded-lg text-white placeholder-gray-400 focus:outline-none focus:ring-2 focus:ring-cyan-500 focus:border-transparent",placeholder:"Enter your password"})]}),(0,n.jsx)("button",{type:"submit",className:"w-full bg-gradient-to-r from-cyan-500 to-blue-500 hover:from-cyan-600 hover:to-blue-600 text-white py-3 px-4 rounded-lg font-medium transition-all duration-300 transform hover:scale-105 shadow-lg hover:shadow-xl",children:"Sign In"})]}),(0,n.jsx)("div",{className:"mt-6 text-center",children:(0,n.jsxs)("p",{className:"text-gray-300",children:["Don't have an account?"," ",(0,n.jsx)(o(),{href:"/register",className:"text-cyan-400 hover:text-cyan-300 font-medium",children:"Sign up"})]})}),(0,n.jsx)("div",{className:"mt-4 text-center",children:(0,n.jsx)(o(),{href:"/",className:"text-gray-400 hover:text-gray-300 text-sm",children:"← Back to Home"})})]})})}}},function(e){e.O(0,[774,888,179],function(){return e(e.s=3236)}),_N_E=e.O()}]); No newline at end of file

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔒 Security & Privacy | 🟠 Major | ⚡ Quick win

Remove the credential log from the submit handler.

This leaks email and especially password into browser logs/devtools and can be captured by extensions or shared screenshots.

🔧 Proposed fix
-},className:"space-y-6",children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("label",{htmlFor:"email",className:"block text-sm font-medium text-gray-300 mb-2",children:"Email Address"}),(0,n.jsx)("input",{type:"email",id:"email",value:e,onChange:e=>t(e.target.value),required:!0,className:"w-full px-4 py-3 bg-white/10 border border-white/20 rounded-lg text-white placeholder-gray-400 focus:outline-none focus:ring-2 focus:ring-cyan-500 focus:border-transparent",placeholder:"Enter your email"})]}),(0,n.jsxs)("div",{children:[(0,n.jsx)("label",{htmlFor:"password",className:"block text-sm font-medium text-gray-300 mb-2",children:"Password"}),(0,n.jsx)("input",{type:"password",id:"password",value:r,onChange:e=>s(e.target.value),required:!0,className:"w-full px-4 py-3 bg-white/10 border border-white/20 rounded-lg text-white placeholder-gray-400 focus:outline-none focus:ring-2 focus:ring-cyan-500 focus:border-transparent",placeholder:"Enter your password"})]}),(0,n.jsx)("button",{type:"submit",className:"w-full bg-gradient-to-r from-cyan-500 to-blue-500 hover:from-cyan-600 hover:to-blue-600 text-white py-3 px-4 rounded-lg font-medium transition-all duration-300 transform hover:scale-105 shadow-lg hover:shadow-xl",children:"Sign In"})]}),(0,n.jsx)("div",{className:"mt-6 text-center",children:(0,n.jsxs)("p",{className:"text-gray-300",children:["Don't have an account?"," ",(0,n.jsx)(o(),{href:"/register",className:"text-cyan-400 hover:text-cyan-300 font-medium",children:"Sign up"})]})}),(0,n.jsx)("div",{className:"mt-4 text-center",children:(0,n.jsx)(o(),{href:"/",className:"text-gray-400 hover:text-gray-300 text-sm",children:"← Back to Home"})})]})})}}},function(e){e.O(0,[774,888,179],function(){return e(e.s=3236)}),_N_E=e.O()}]);
+},className:"space-y-6",children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("label",{htmlFor:"email",className:"block text-sm font-medium text-gray-300 mb-2",children:"Email Address"}),(0,n.jsx)("input",{type:"email",id:"email",value:e,onChange:e=>t(e.target.value),required:!0,className:"w-full px-4 py-3 bg-white/10 border border-white/20 rounded-lg text-white placeholder-gray-400 focus:outline-none focus:ring-2 focus:ring-cyan-500 focus:border-transparent",placeholder:"Enter your email"})]}),(0,n.jsxs)("div",{children:[(0,n.jsx)("label",{htmlFor:"password",className:"block text-sm font-medium text-gray-300 mb-2",children:"Password"}),(0,n.jsx)("input",{type:"password",id:"password",value:r,onChange:e=>s(e.target.value),required:!0,className:"w-full px-4 py-3 bg-white/10 border border-white/20 rounded-lg text-white placeholder-gray-400 focus:outline-none focus:ring-2 focus:ring-cyan-500 focus:border-transparent",placeholder:"Enter your password"})]}),(0,n.jsx)("button",{type:"submit",className:"w-full bg-gradient-to-r from-cyan-500 to-blue-500 hover:from-cyan-600 hover:to-blue-600 text-white py-3 px-4 rounded-lg font-medium transition-all duration-300 transform hover:scale-105 shadow-lg hover:shadow-xl",children:"Sign In"})]}),(0,n.jsx)("div",{className:"mt-6 text-center",children:(0,n.jsxs)("p",{className:"text-gray-300",children:["Don't have an account?"," ",(0,n.jsx)(o(),{href:"/register",className:"text-cyan-400 hover:text-cyan-300 font-medium",children:"Sign up"})]})}),(0,n.jsx)("div",{className:"mt-4 text-center",children:(0,n.jsx)(o(),{href:"/",className:"text-gray-400 hover:text-gray-300 text-sm",children:"← Back to Home"})})]})})}}},function(e){e.O(0,[774,888,179],function(){return e(e.s=3236)}),_N_E=e.O()}]);
🧰 Tools
🪛 ast-grep (0.44.0)

[warning] Avoid logging sensitive data
Context: console.log("Login attempt:",{email:e,password:r})
Note: [CWE-532] Insertion of Sensitive Information into Log File.

(log-sensitive-data)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@_next/static/chunks/pages/login-beafd58c328634f6.js` at line 1, The Login
submit handler is logging sensitive credentials, which should be removed from
browser-visible logs. Update the onSubmit logic in Login so it no longer calls
console.log with the email/password values, and keep the rest of the form
submission behavior intact.

Source: Linters/SAST tools

@@ -0,0 +1 @@
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[495],{4722:function(e,r,a){(window.__NEXT_P=window.__NEXT_P||[]).push(["/register",function(){return a(6618)}])},6618:function(e,r,a){"use strict";a.r(r),a.d(r,{default:function(){return Register}});var t=a(5893),n=a(7294),s=a(1664),o=a.n(s),l=a(5347);function Register(){let[e,r]=(0,n.useState)({name:"",email:"",password:"",confirmPassword:""}),handleChange=a=>{r({...e,[a.target.name]:a.target.value})};return(0,t.jsx)("div",{className:"min-h-screen bg-gradient-to-br from-slate-900 via-purple-900/90 to-indigo-900/80 flex items-center justify-center p-4",children:(0,t.jsxs)(l.E.div,{initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{duration:.8},className:"max-w-md w-full bg-white/10 backdrop-blur-lg rounded-2xl p-8 border border-white/20 shadow-2xl",children:[(0,t.jsxs)("div",{className:"text-center mb-8",children:[(0,t.jsx)("h1",{className:"text-3xl font-bold text-white mb-2",children:"Create Account"}),(0,t.jsx)("p",{className:"text-gray-300",children:"Join us today"})]}),(0,t.jsxs)("form",{onSubmit:r=>{if(r.preventDefault(),e.password!==e.confirmPassword){alert("Passwords do not match");return}console.log("Registration attempt:",e)},className:"space-y-6",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("label",{htmlFor:"name",className:"block text-sm font-medium text-gray-300 mb-2",children:"Full Name"}),(0,t.jsx)("input",{type:"text",id:"name",name:"name",value:e.name,onChange:handleChange,required:!0,className:"w-full px-4 py-3 bg-white/10 border border-white/20 rounded-lg text-white placeholder-gray-400 focus:outline-none focus:ring-2 focus:ring-cyan-500 focus:border-transparent",placeholder:"Enter your full name"})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("label",{htmlFor:"email",className:"block text-sm font-medium text-gray-300 mb-2",children:"Email Address"}),(0,t.jsx)("input",{type:"email",id:"email",name:"email",value:e.email,onChange:handleChange,required:!0,className:"w-full px-4 py-3 bg-white/10 border border-white/20 rounded-lg text-white placeholder-gray-400 focus:outline-none focus:ring-2 focus:ring-cyan-500 focus:border-transparent",placeholder:"Enter your email"})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("label",{htmlFor:"password",className:"block text-sm font-medium text-gray-300 mb-2",children:"Password"}),(0,t.jsx)("input",{type:"password",id:"password",name:"password",value:e.password,onChange:handleChange,required:!0,className:"w-full px-4 py-3 bg-white/10 border border-white/20 rounded-lg text-white placeholder-gray-400 focus:outline-none focus:ring-2 focus:ring-cyan-500 focus:border-transparent",placeholder:"Create a password"})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("label",{htmlFor:"confirmPassword",className:"block text-sm font-medium text-gray-300 mb-2",children:"Confirm Password"}),(0,t.jsx)("input",{type:"password",id:"confirmPassword",name:"confirmPassword",value:e.confirmPassword,onChange:handleChange,required:!0,className:"w-full px-4 py-3 bg-white/10 border border-white/20 rounded-lg text-white placeholder-gray-400 focus:outline-none focus:ring-2 focus:ring-cyan-500 focus:border-transparent",placeholder:"Confirm your password"})]}),(0,t.jsx)("button",{type:"submit",className:"w-full bg-gradient-to-r from-cyan-500 to-blue-500 hover:from-cyan-600 hover:to-blue-600 text-white py-3 px-4 rounded-lg font-medium transition-all duration-300 transform hover:scale-105 shadow-lg hover:shadow-xl",children:"Create Account"})]}),(0,t.jsx)("div",{className:"mt-6 text-center",children:(0,t.jsxs)("p",{className:"text-gray-300",children:["Already have an account?"," ",(0,t.jsx)(o(),{href:"/login",className:"text-cyan-400 hover:text-cyan-300 font-medium",children:"Sign in"})]})}),(0,t.jsx)("div",{className:"mt-4 text-center",children:(0,t.jsx)(o(),{href:"/",className:"text-gray-400 hover:text-gray-300 text-sm",children:"← Back to Home"})})]})})}}},function(e){e.O(0,[774,888,179],function(){return e(e.s=4722)}),_N_E=e.O()}]); No newline at end of file

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔒 Security & Privacy | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf 'Files matching register-related terms:\n'
rg -n --hidden --glob '!_next/**' --glob '!node_modules/**' \
  'Registration attempt|Create Account|confirmPassword|/register|registerUser|fetch\\(' .

printf '\nLikely page files:\n'
fd -a -I 'register.*\.(js|jsx|ts|tsx)$|page\.(js|jsx|ts|tsx)$' . 2>/dev/null | sed -n '1,120p'

Repository: Mianhassam96/MultiMian-Studio

Length of output: 423


🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf 'Matches for register page terms:\n'
rg -n --hidden --glob '!_next/**' --glob '!node_modules/**' -e 'Registration attempt' -e 'Create Account' -e 'confirmPassword' -e '/register' -e 'registerUser' -e 'fetch\(' .

printf '\nCandidate register-related source files:\n'
fd -a -I -e js -e jsx -e ts -e tsx . | rg 'register|login|signup|auth|page\.(js|jsx|ts|tsx)$'

Repository: Mianhassam96/MultiMian-Studio

Length of output: 22719


Registration form leaks credentials and never submits

  • console.log("Registration attempt:", e) prints the full form state, including password and confirmPassword.
  • There’s no request/API call, so “Create Account” only logs data instead of creating a user; fix the Register component and rebuild this page bundle.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@_next/static/chunks/pages/register-e8d2d79b11ece0ad.js` at line 1, The
Register component is exposing sensitive credentials and not actually performing
registration. In `Register`, remove the `console.log("Registration attempt:",
e)` that prints `password` and `confirmPassword`, and replace the submit handler
with a real async signup flow that sends only the needed fields from the form
state. Keep the password match check, but after validation call the appropriate
auth/API client used by the app, handle loading/error states, and redirect or
show success on completion. Rebuild the `/register` bundle after updating the
component source.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant