- Animated single-page portfolio with contact form
- Firebase Authentication (Google + Email/Password)
- Contacts saved to Firestore (collection
contacts) - Admin panel (
admin.html) that requires an admin email to view submissions - Easy deploy on GitHub Pages
- Create a Firebase project: https://console.firebase.google.com
- Enable Authentication providers: Email/Password and Google.
- Create a Firestore database (start in test mode for development).
- Copy your Firebase config and paste into
script.jsandadmin.js(replace the placeholderfirebaseConfig). - Set
ADMIN_EMAILinadmin.jsto the email you want to use for admin access. - Commit these files to a GitHub repository.
- In the repository's Settings → Pages set the source to the
mainbranch and/ (root)folder — GitHub Pages will publish your site.
- Firestore rules should be tightened for production. Example minimal rules:
service cloud.firestore {
match /databases/{database}/documents {
match /contacts/{doc} {
allow create: if true; // allow public to submit
allow read: if request.auth != null && request.auth.token.email == "youremail@example.com"; // only admin
}
}
}
Replace youremail@example.com with your admin email.
- Admin uses Google Sign-In (configured in Firebase). After sign-in the admin panel will check the email and load submissions if it matches
ADMIN_EMAIL.
- Push the files to a new GitHub repo.
- In GitHub repo Settings → Pages, choose branch
mainand folder/ (root). - Save — GitHub will give you a site URL like
https://username.github.io/repo.
- Update colors, copy, and projects in
index.htmlandstyle.css. - Replace the simple background with Lottie or particles.js if desired.