Welcome to my personal developer portfolio! This is a responsive web application built with React.js to showcase my skills, projects, and contact information in a professional and interactive way.
- Hero Section: Eye-catching introduction with name, title, and call-to-action.
- About Section: A brief summary about me and my background.
- Skills Section: Visual display of technical skills with animated progress bars.
- Projects Section: Project cards with descriptions, links, and responsive layout.
- Contact Section: Validated contact form with real-time feedback and accessibility improvements.
- Navigation & Footer: Accessible navigation and styled footer with dynamic year.
- Robustness & Performance: Error boundary, lazy-loading for sections, scroll-triggered animations, and optimized media loading.
- Frontend: React.js (React 18)
- Styling: styled-components via
GlobalStyles.js(project uses styled-components rather thanApp.css) - Hooks: Custom hooks in
src/hooks/(e.g.,useIntersectionObserver) - Icons: React Icons
- Forms: Client-side validation (built-in) and optional EmailJS for submissions
Typical structure (react/myprofile/src):
components/— UI components (About, Contact, Footer, Hero, Navigation, Projects, Skills, etc.)hooks/— custom hooks such asuseIntersectionObserver.jsApp.js— application bootstrap (usesErrorBoundaryand lazy-loaded sections)index.js— React entry pointGlobalStyles.js— styled-components global styles
- Clone the repository
git clone https://github.com/yourusername/your-portfolio.git
cd your-portfolio/react/myprofile- Install dependencies
npm install- Start the development server
npm startOpen http://localhost:3000 to view the app.
Run unit tests:
npm testDeploy to Netlify, Vercel, or GitHub Pages. Build for production:
npm run buildThen follow your chosen host's deployment instructions.
This project currently sends contact form submissions via EmailJS using the EmailJS REST API. EmailJS keys are required at build time so they end up in the static bundle the site serves.
-
Obtain keys from EmailJS:
service_id(REACT_APP_EMAILJS_SERVICE_ID)template_id(REACT_APP_EMAILJS_TEMPLATE_ID)public_key(REACT_APP_EMAILJS_PUBLIC_KEY)
-
Locally: copy
.env.exampleto.envand fill in the values, then runnpm run buildornpm start. -
For GitHub Pages builds (recommended): add the three values as repository secrets and inject them during your CI build (for example, set environment variables in your GitHub Actions workflow) so the built static files include the configuration.
-
Example
.env(do not commit):
REACT_APP_EMAILJS_SERVICE_ID=service_xxx
REACT_APP_EMAILJS_TEMPLATE_ID=template_xxx
REACT_APP_EMAILJS_PUBLIC_KEY=public_xxxSecurity note: the EmailJS public key is intended to be public for client-side use, but do not commit any secret admin keys. If you prefer not to expose keys at all, use a server-side relay instead (not applicable for GitHub Pages without an external host).
📸 Preview
📬 Contact
Feel free to connect with me via the Contact section on the site or reach out via [your email or LinkedIn]. 📄 License
This project is open source and available under the MIT License.
Made with ❤️ by Mandip Amgain
Let me know if you'd like help adding deployment instructions (e.g., Netlify, GitHub Pages) or customizing content like your project list or contact form.