Personal portfolio for Jayaditya Buddan Ramesh, Poolesville Magnet Scholar (Global Ecology Studies Program).
Built with React 18, Tailwind CSS v3, and lucide-react.
src/
├── App.jsx # Root component — state & layout orchestration
├── index.js # React entry point
├── index.css # Tailwind directives + custom keyframes
│
├── data/
│ └── initialData.js # Seed courses, projects, and admin password
│
├── hooks/
│ ├── useTheme.js # Accent color theming (emerald / red)
│ └── useToast.js # Toast notification state
│
└── components/
├── Header.jsx # Sticky nav with tab switcher and accent toggle
├── Hero.jsx # Full-width hero section
├── Footer.jsx # Site footer
├── Toast.jsx # Animated toast notification
├── CourseCard.jsx # Individual course card
├── ProjectCard.jsx # Individual project card with links
├── PortfolioTab.jsx # Portfolio tab (courses + projects + GESP panel)
├── TerminalTab.jsx # Interactive shell simulator
└── AdminTab.jsx # Password-gated CMS (add/delete content)
npm install
npm start
The app runs at http://localhost:3000.
npm install -g firebase-tools
firebase login
Go to https://console.firebase.google.com, create a project, then:
firebase init hosting
# Choose: Use an existing project (or create new)
# Public directory: build
# Single-page app: Yes
# Overwrite index.html: No
Or just update .firebaserc with your project ID:
{
"projects": {
"default": "YOUR_FIREBASE_PROJECT_ID"
}
}
npm run build
firebase deploy
Your site will be live at https://YOUR_PROJECT_ID.web.app
git init
git add .
git commit -m "Initial portfolio commit"
git remote add origin https://github.com/YOUR_USERNAME/YOUR_REPO.git
git branch -M main
git push -u origin main
The Editor tab is password-gated. The password lives in src/data/initialData.js as ADMIN_PASSWORD.
Important: This is client-side only — the password is readable in the built JS bundle. For a public site, either remove the Editor tab entirely or move authentication to a backend (e.g. Firebase Auth).