Android Developer Β· Kotlin Β· Jetpack Compose
A modern, interactive, bilingual portfolio website with a built-in admin panel β built from Gaza for the world.
- Dark & Light themes with smooth transitions
- Bilingual β full English β Arabic support with RTL layout
- Interactive phone simulator with 4 mini-apps:
- π¬ Ask Me β chat-style Q&A revealing personality
- π Bug Smash β a 20-second reflex game (with high score tracking)
- π Fun Facts β swipeable personality cards
- π My Dream β goals and aspirations
- Particle constellation hero with mouse interaction
- Scroll-triggered animations, animated stat counters, and typing effect
- 3D tilt cards and magnetic buttons on desktop
- Custom cursor with context-aware glow
- Scroll progress bar and active nav highlighting
- SEO optimized β Open Graph, Twitter Cards, JSON-LD structured data
- Accessible β keyboard navigation, reduced-motion support, semantic HTML
- Responsive β works on all screen sizes
- Secure login via Firebase Authentication
- Dashboard with visit counter (total + daily breakdown)
- Full CMS β edit all website content:
- Hero section (name, roles, tagline)
- About section (bio, portrait path)
- Projects (add, edit, delete with tech tags)
- Timeline (experience & education entries)
- Skills (categories and chips)
- Contact info (email, WhatsApp, LinkedIn, GitHub)
- Live sync β edits appear on the public site automatically via Firestore
- Responsive sidebar layout with mobile support
| Layer | Technologies |
|---|---|
| Frontend | HTML5, CSS3 (custom properties, grid, clamp), Vanilla JavaScript |
| Fonts | Sora, Inter, Tajawal (Google Fonts) |
| Backend | Firebase (Auth, Firestore) |
| Hosting | GitHub Pages |
| Analytics | Custom Firestore visit counter |
| Contact | Gmail compose integration |
π¦ Abdalsamee.github.io
βββ π index.html # Main portfolio page
βββ π admin.html # Admin panel (protected)
βββ π styles.css # All styling
βββ π scripts.js # Portfolio logic + Firestore CMS bridge
βββ π assets/
β βββ π· portrait.jpg # Profile photo
β βββ π· social-preview.png # OG image (1200Γ630)
β βββ π· saffiedu.png # Project screenshot
β βββ π logo/
β βββ favicon.svg
βββ π README.md
git clone https://github.com/Abdalsamee/Abdalsamee.github.io.git
cd Abdalsamee.github.io- Create a project at console.firebase.google.com
- Enable Authentication β Email/Password sign-in β Add your admin user
- Create a Firestore Database in production mode
- Copy your Firebase config and paste it into:
index.html(the inline<script>block)admin.html(thefirebaseConfigobject)
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read: if true;
}
match /content/{doc} {
allow write: if request.auth != null;
}
match /projects/{doc} {
allow write: if request.auth != null;
}
match /timeline/{doc} {
allow write: if request.auth != null;
}
match /analytics/visits {
allow write: if true;
}
}
}
Push to GitHub β GitHub Pages serves it automatically at https://<username>.github.io/.
Open https://<your-site>/admin.html, log in, and start adding your projects, experience, and skills. Changes appear on the live site instantly.
ββββββββββββββββ Firestore ββββββββββββββββββββ
β Admin Panel β ββββ writes βββββΆ β Cloud Database β
β admin.html β β (projects, bio, β
ββββββββββββββββ β timeline, etc.) β
ββββββββββ¬ββββββββββ
β reads
βΌ
ββββββββββββββββββββ
β Public Website β
β index.html β
β + scripts.js β
ββββββββββββββββββββ
- Admin logs in β edits content β saved to Firestore
- Visitor opens the site β
scripts.jsloads Firestore data in the background - If Firestore has content, it replaces the hardcoded fallback and re-renders
- If Firestore is unreachable, hardcoded content displays instantly (zero downtime)
Every page load increments a Firestore counter β no third-party analytics needed.
- Total visit count
- Daily breakdown (YYYY-MM-DD)
- Viewable from the admin dashboard
Tracked via a lightweight inline script in index.html using FieldValue.increment().
The site supports English (LTR) and Arabic (RTL) with a single toggle:
- All text content has EN/AR variants stored in the
i18nobject - CSS uses logical properties (
inset-inline,padding-block,margin-inline) for automatic RTL - The admin panel stores bilingual content for every field
- Font families swap between Inter/Sora (EN) and Tajawal (AR)
- Firebase Auth β email/password authentication for admin access
- Firestore Rules β write access restricted to authenticated users only
- HTTPS β all data in transit is encrypted (GitHub Pages + Firebase)
- No secrets in client code β Firebase API keys are safe by design (restricted by security rules and domain)
noindexon admin β search engines won't index the admin page- Visit counter is the only publicly writable endpoint
| Breakpoint | Behavior |
|---|---|
> 880px |
Full desktop layout, side-by-side grids, floating badges |
650β880px |
Single-column content, hamburger nav, hidden portrait floats |
< 650px |
Mobile-optimized phone section, stacked cards |
< 400px |
Scaled phone mockup, compact spacing |
Edit the CSS variables at the top of styles.css:
--brand-1: #2dd4bf; /* Teal */
--brand-2: #38bdf8; /* Blue */
--brand-3: #818cf8; /* Purple */
--gold: #f4c95d; /* Accent */- Quick edits: use the admin panel at
/admin.html - Structural changes: edit
index.htmldirectly - Add animations: modify the reveal classes in
styles.css
Add new <button class="aa-filter" data-f="NewTech"> in the projects section of index.html, and use matching tech tags when adding projects.
This project is open source under the MIT License. Feel free to fork, modify, and use it for your own portfolio β just swap in your own content.
| Channel | Link |
|---|---|
| π Website | abdalsamee.github.io |
| πΌ LinkedIn | in/abdalsamee-alnajjar |
| π GitHub | Abdalsamee |
| π§ Email | abd409115011@gmail.com |
| π¬ WhatsApp | +972 567 824 900 |
Built with β€οΈ from Gaza, Palestine
From a single line of code to a full-stack portfolio β the journey continues.