A developer portfolio built with React, styled as a fully interactive Neovim terminal. Features a file tree, tabbed buffers, a status line, Telescope fuzzy finder, and a dashboard — all rendered in the browser.
- Neovim UI — File tree, buffer tabs, status line, and line numbers that mimic a real Neovim session
- Telescope Integration — Fuzzy finder overlay for quick navigation between sections
- Dashboard — Start screen inspired by Neovim dashboard plugins
- Lazy Loading — Components load on demand for fast initial paint
- Smooth Animations — Transitions powered by Framer Motion
- Fully Responsive — Optimized for desktop, tablet, and mobile
- Contact Form — Functional email form via EmailJS
| Layer | Technology |
|---|---|
| UI Library | React 18 |
| Styling | Tailwind CSS 3 |
| Animations | Framer Motion |
| Icons | Lucide React, React Icons |
| EmailJS | |
| Build Tool | Create React App |
- Node.js 16+
- npm or yarn
# Clone the repository
git clone https://github.com/your-username/portfolio.git
cd portfolio
# Install dependencies
npm install
# Start the dev server
npm startThe app will be available at http://localhost:3000.
npm run buildOutput is generated in the build/ directory, ready for static hosting.
portfolio/
├── public/
│ └── index.html
├── src/
│ ├── components/
│ │ ├── NeovimTerminal.js # Main terminal wrapper
│ │ ├── terminal/
│ │ │ ├── Dashboard.js # Neovim start screen
│ │ │ ├── FileTree.js # Side panel file explorer
│ │ │ ├── StatusLine.js # Bottom status bar
│ │ │ ├── TitleBar.js # Terminal title bar
│ │ │ ├── Line.js # Line rendering with numbers
│ │ │ ├── Telescope.js # Fuzzy finder overlay
│ │ │ ├── LazyLoader.js # On-demand component loading
│ │ │ ├── CursorContext.js # Cursor state management
│ │ │ └── views/
│ │ │ ├── ReadmeView.js
│ │ │ ├── AboutView.js
│ │ │ ├── ExperienceView.js
│ │ │ ├── SkillsView.js
│ │ │ ├── ProjectsView.js
│ │ │ ├── ContactView.js
│ │ │ └── PackageJsonView.js
│ │ ├── Hero.js
│ │ ├── About.js
│ │ ├── Skills.js
│ │ ├── Projects.js
│ │ ├── Contact.js
│ │ ├── Header.js
│ │ ├── Footer.js
│ │ └── ui/
│ │ └── AuroraBackground.js
│ ├── lib/
│ │ └── utils.js
│ ├── App.js
│ └── index.js
├── tailwind.config.js
├── postcss.config.js
└── package.json
npm i -g vercel
vercelSet the build command to npm run build and the publish directory to build.
npm install --save-dev gh-pagesAdd to package.json:
"homepage": "https://your-username.github.io/portfolio",
"scripts": {
"predeploy": "npm run build",
"deploy": "gh-pages -d build"
}Then run:
npm run deployMIT