Personal one-page portfolio website with a modern hero, project highlights, interactive UI effects, and a no-backend contact flow.
- HTML5 + semantic section structure
- CSS3 (custom properties, transitions, responsive layout)
- Vanilla JavaScript (UI interactions and state)
- React 18 (hero light/background layers)
- Formspree (contact form submissions without a backend)
- Single-page navigation with smooth scroll
- Light/Dark theme toggle with persisted preference
- React-powered hero background with layered, animated lights
- Custom in-page scrollbar with drag + fade behavior
- Featured project card with impact line
- Skills and tooling breakdown (including GitHub Copilot)
- Modal contact form with backdrop blur
- Mobile-responsive layout and navigation
Portfolio/
├── index.html
├── styles.css
├── script.js
├── .gitignore
└── README.md
- Open index.html directly in a browser.
- Or run a local server:
python -m http.server 8000Then open http://localhost:8000.
The form action is already configured to Formspree:
- Endpoint:
https://formspree.io/f/xwvaqlbk
If you ever switch forms, update the action attribute in index.html.
- Create a new GitHub repository (recommended: public).
- Push this folder to that repository.
- Add your live deployment URL once published.
- Verify contact links and social profiles in index.html.
- Optionally add screenshots to this README.
- Push this repo to GitHub.
- Go to
Settings -> Pages. - Set source to
Deploy from a branch. - Choose
mainbranch and/ (root). - Save and wait for the Pages URL.
- Add a downloadable resume button
- Add additional project cards and live demo links
- Add simple analytics for portfolio traffic
- Add Open Graph metadata for better social sharing
Personal portfolio project by Elijah Richter.