Modern dating and social discovery app β Where meaningful connections flow.
A beautifully designed, fully responsive web application for discovering and connecting with people who share your interests. Built with modern web standards (HTML5, CSS3, vanilla JavaScript) and inspired by contemporary dating app design.
Live Demo: https://abdimannor.github.io/heartlux/
Heartlux demonstrates professional frontend development practices by combining:
- Original Design Concept β Built upon and modernized from an earlier dating app design
- Clean Code β No frameworks, no build tools β pure, efficient web technologies
- Modern Standards β Responsive design, semantic HTML, CSS Grid/Flexbox
- Professional Structure β Well-organized, maintainable, production-ready code
Perfect for: Portfolio projects, learning web development, dating app concepts, or as a starting point for your own social app.
- Account Registration β Create account with email, password, and gender identity
- Secure Validation β Password strength checking (min 8 characters), email format validation
- Profile Setup β Configure interests, age range, and connection preferences
- Data Persistence β All user data saved locally (localStorage)
- Preference Selection β Choose who you'd like to meet (Men, Women, Everyone)
- Age Range Slider β Dual minβmax slider for precise age filtering (18β80 years)
- Interest Tagging β Multi-select from 6 interest categories
βοΈ Travel- π΅ Music
- πͺ Fitness
- π³ Cooking
- π Books
- π¨ Art
- Advanced Matching β Profiles sorted by compatibility score (shared interests)
- Responsive Layout β Perfectly optimized for mobile, tablet, and desktop
- Smooth Animations β Fade transitions, hover effects, micro-interactions
- Modern Aesthetic β Heart-themed magenta/pink color scheme with romantic design
- Dark Mode β One-click dark/light theme toggle, persisted across sessions
- Bilingual β Full Swedish/English interface with instant language switching
- Single Page App β No page reloads, instant navigation between sections
- Vanilla JavaScript β No dependencies, lightweight and fast
- Form Validation β Client-side validation with user feedback
- Notification Badges β Real-time unread match counter in the navbar
- PWA Ready β Installable app metadata and offline shell caching
- SEO & Sharing β Canonical URL, Open Graph/Twitter cards, structured data, robots, and sitemap
- Accessibility β Semantic HTML, proper contrast ratios, keyboard navigation
| Color | Hex | Usage |
|---|---|---|
| Heart Primary | #cc328c |
Buttons, accents, headers |
| Heart Dark | #a91f6a |
Hover states, shadows |
| Heart Light | #e84b9a |
Secondary accents |
| Background | #fff9fb |
Page background |
| Text Dark | #2d1b2e |
Primary text |
| Device | Width | Layout |
|---|---|---|
| Desktop | 1200px+ | Two-column hero, full features |
| Tablet | 768px-1199px | Optimized spacing, medium columns |
| Mobile | <480px | Single column, touch-friendly |
β Modern web browser (Chrome 90+, Firefox 88+, Safari 14+, Edge 90+)
β No installation or dependencies required
Option 1: Clone Repository
git clone https://github.com/abdimannor/heartlux.git
cd heartluxOption 2: Download
- Visit https://github.com/abdimannor/heartlux
- Click "Code" β "Download ZIP"
- Extract and open folder
Direct Open (Simplest)
# Double-click index.html
# Or right-click β Open with β Your browserLocal Server (Recommended)
# Python 3
python -m http.server 8000
# Python 2
python -m SimpleHTTPServer 8000
# Node.js
npm start
# Then visit: http://localhost:8080npm run check
npm run check:e2eThis validates JavaScript syntax, key HTML-to-JavaScript wiring, i18n coverage, PWA/SEO wiring, and the main browser flow with Playwright.
- Read the introduction
- Click "Start Discovering" (jump to preferences)
- Click "Create Account" (register first)
1. Enter unique username
2. Enter email address
3. Create password (min 8 characters)
4. Confirm password
5. Select gender identity (Man, Woman, Other)
6. Click "Skapa Konto" β Success! β
1. Choose who to meet:
β’ Men (π¨)
β’ Women (π©)
β’ Everyone (π)
2. Adjust age range with slider
3. Select interests (minimum 1):
β Multi-select checkbox
β Visual feedback on select
4. Click "SlutfΓΆr Profilen" β Animated success! β
- Use navbar to switch pages
- Smooth page transitions
- Data persists across sessions
heartlux/
βββ index.html # Main app β all pages in one SPA
βββ css/
β βββ style.css # Complete styling β responsive + dark mode
βββ js/
β βββ main.js # App logic β i18n, matching, chat, notifications
βββ server.js # Minimal Node static-file server (port 8080)
βββ manifest.webmanifest # PWA install metadata
βββ sw.js # Offline app shell cache
βββ robots.txt # Search crawler policy
βββ sitemap.xml # Public URL sitemap
βββ 404.html # GitHub Pages fallback page
βββ playwright.config.js # Browser test configuration
βββ tests/
β βββ app.spec.js # Playwright end-to-end flow
βββ images/
β βββ heartlux-preview.svg # Repository preview image
βββ scripts/
β βββ smoke-test.js # Lightweight project checks
βββ package.json # npm scripts and project metadata
βββ .nojekyll # GitHub Pages passthrough config
βββ README.md # This documentation
βββ .gitignore # Git configuration
βββ LICENSE # MIT License
index.html
- Semantic HTML5 structure
- Five pages: Home, Register/Login, Discover, Matches, Profile
- Chat modal and match popup overlays
- Accessible markup with proper hierarchy
css/style.css
- CSS custom properties (variables) with full dark-mode override
- Mobile-first responsive design
- Flexbox and CSS Grid layouts
- Smooth animations (swipe, popup, badge, card transitions)
js/main.js
- Page navigation and auth guard system
- Swedish/English i18n with instant switching
- Swipe gesture engine (mouse + touch)
- Compatibility-scored matching algorithm
- Chat with persistent message history
- Notification badge and seen-match tracking
- localStorage integration throughout
| Technology | Purpose | Details |
|---|---|---|
| HTML5 | Structure | Semantic markup, form validation |
| CSS3 | Styling | Grid, Flexbox, custom properties, responsive |
| JavaScript (ES6+) | Interactivity | Vanilla JS, no frameworks |
| localStorage | Storage | Client-side data persistence |
heartlux_user // { username, email, gender, createdAt }
heartlux_interest // "male" | "female" | "everyone"
heartlux_preferences // { interest, minAge, maxAge, interests[], completedAt }
heartlux_likes // profile ID array
heartlux_passes // profile ID array
heartlux_matches_list // matched profile objects array
heartlux_chats // { [profileId]: [{ from, text, ts }] }
heartlux_seen_matches // profile IDs opened in chat
heartlux_unread // unread match count (number)
heartlux_user_avatar // chosen emoji string
heartlux_user_bio // profile bio text
heartlux_dark // "1" | "0" (dark mode preference)
heartlux_lang // "sv" | "en"- Data saved in
localStorage(browser's local storage) - Persists across sessions and page refreshes
- No server communication (client-side only)
- Limited to ~5-10MB per domain
- β No data sent to servers
- β No external API calls
- β No tracking or analytics
- β Passwords not stored (demo only)
- β Single Page Application (SPA) pattern
- β Responsive mobile-first design
- β Modern CSS (Grid, Flexbox, custom properties)
- β Vanilla JavaScript state management
- β Form handling and validation
- β localStorage API
- β Semantic HTML5
- β Event-driven architecture
- Clean, readable code
- Minimal comments (self-documenting)
- Consistent formatting
- No code duplication
- Accessibility-first approach
- Landing page with hero section
- User registration system
- Preference setup flow
- Data persistence (localStorage)
- Responsive design (mobile to desktop)
- Profile browsing system
- Match algorithm based on preferences
- Swipe or click interaction
- Like/Pass functionality
- Match history
- User avatars and profile images
- Direct messaging system
- Notification system
- Dark mode toggle
- Advanced matching algorithm
- Backend API integration
- User authentication (real passwords)
- Database (Firebase/MongoDB/PostgreSQL)
- PWA capabilities (offline, installable)
- Performance optimization
- Analytics and metrics
# 1. Already pushed? Skip to step 3
git add .
git commit -m "Deploy to GitHub Pages"
git push origin master
# 2. Repository Settings β Pages
# Source: master/main branch β Save
# 3. Live at: https://abdimannor.github.io/heartlux- Drag & drop the folder
- Auto-deploys on git push
- Custom domain support
- Connect GitHub repo
- Auto-deploys
- Global CDN
- Firebase Hosting
- GitHub Pages
- AWS S3 + CloudFront
- Custom server
- Canonical URL:
https://abdimannor.github.io/heartlux/ - Open Graph and Twitter card metadata for richer sharing
- Structured data (
SoftwareApplication) for search engines robots.txtandsitemap.xmlfor public indexing
Want to improve Heartlux? Follow these steps:
-
Fork the repository
# Click "Fork" on GitHub -
Create feature branch
git checkout -b feature/amazing-feature
-
Make improvements
- Follow existing code style
- Test thoroughly
- Update documentation
-
Commit changes
git commit -m "Add: description of feature" -
Push to GitHub
git push origin feature/amazing-feature
-
Open Pull Request
- Describe changes clearly
- Link any related issues
- Total Lines: ~3,375 (HTML + CSS + JS)
- Total Size: ~108 KB (all files)
- CSS: ~36 KB (1,792 lines)
- JavaScript: ~48 KB (1,117 lines)
- HTML: ~24 KB (466 lines)
- Load Time: <100ms (local), <500ms (hosted)
- Browser Support: 95%+ of users
- Mobile Responsive: 100%
- Accessibility: 90+/100
- No backend database (localStorage only β data is device-specific)
- No real user accounts or server-side matching
- No image uploads (emoji avatars as placeholders)
- localStorage limited to ~5-10MB per domain
- Backend API integration
- Real database (Firebase / PostgreSQL)
- Image uploads and hosting
- Push notifications
- PWA β installable, offline-capable
β οΈ Passwords stored as***(not real hashing)β οΈ No authentication serverβ οΈ All data stored locally (no encryption)
- β Use HTTPS
- β Hash passwords (bcrypt, Argon2)
- β Implement OAuth/JWT authentication
- β Encrypt sensitive data
- β Add rate limiting
- β Validate all inputs server-side
- MDN Web Docs β Complete web reference
- JavaScript Info β Modern JavaScript guide
- CSS Tricks β CSS techniques and tutorials
- Dribbble β Design inspiration
- Behance β Creative showcase
- Color Hunt β Color schemes
MIT License β Free for personal, educational, and commercial use
Copyright (c) 2026 Mahad Abdullahi
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software...
- Author: Mahad Abdullahi (Mahad Abdullahi Mohamed Noor)
- GitHub: @abdimannor
- Repository: heartlux
- Live Demo: GitHub Pages
- Original design concept from student web development project
- Inspired by modern dating app interfaces
- Built with modern web standards and best practices
- Thanks to the open-source community
If Heartlux helped you or you found it useful:
- Star the repo β (on GitHub)
- Fork and contribute π΄
- Share with others π’
- Provide feedback π¬
Built with β€οΈ using HTML, CSS, and JavaScript
An evolution of web development β from student exercises to production-ready code.