A sophisticated Tinder-like web application for discovering and matching with events tailored to your interests, powered by AI-driven recommendations and secure authentication.
- AI-Powered Recommendations: Intelligent event scoring based on your profile
- Multi-Factor Scoring: Considers occupation (20%), interests (40%), location (20%), and format preference (20%)
- Real-time Match Explanations: Visual indicators showing why events match your preferences
- Tinder-Style Gestures: Swipe right (like), left (pass), or up (super-like)
- Responsive Design: Optimized for both desktop and mobile devices
- Smooth Animations: Professional-grade UI with fluid transitions
- Auth0 Integration: Enterprise-grade authentication with popup login
- Multiple Auth Options: Auth0, Google OAuth, or guest mode
- Enhanced Security: Token-based authentication with refresh tokens
- Comprehensive Event Tracking: Every interaction is logged via webhook integration
- Match Analytics: Track user preferences and behavior patterns
- Data Export/Import: Full user data management and backup capabilities
- Apify API: Real-time event data from Luma.co
- Local Fallback: Offline support with cached event data
- Smart Caching: Optimized data loading and refresh strategies
- Local Storage: All user data stored securely in browser
- Data Portability: Export and import user preferences and matches
- Privacy-First: No user data sent to external servers without consent
- Modern web browser (Chrome 80+, Firefox 75+, Safari 13+, Edge 80+)
- Local web server (included Python server)
- Auth0 account (optional, for enhanced features)
- Apify account (optional, for live event data)
# Clone the repository
git clone https://github.com/ottomansky/event-matcher.git
cd event-matcher
# Copy configuration template
cp src/config.example.js src/config.js
# Start the development server
./start.sh
π Application URL: http://localhost:8080/public/
To enable secure authentication with enhanced features:
- Visit Auth0 Dashboard
- Click "Create Application"
- Choose "Single Page Application"
- Note your
Domain
andClient ID
Allowed Callback URLs:
http://localhost:8080/public/index.html,
https://your-domain.com/public/index.html
Allowed Logout URLs:
http://localhost:8080/public/index.html,
https://your-domain.com/public/index.html
Allowed Web Origins:
http://localhost:8080,
https://your-domain.com
Edit src/config.js
:
auth0: {
domain: 'your-tenant.auth0.com', // Your Auth0 domain
clientId: 'YOUR_AUTH0_CLIENT_ID', // Your Auth0 Client ID
redirectUri: window.location.origin + '/public/index.html',
audience: '', // Optional: API identifier
}
π Security Note: Never commit src/config.js
- it's already in .gitignore
For live event data from Luma.co:
- Sign up at Apify.com
- Get your API token from Account Settings
- Find relevant actor ID (e.g.,
lexis-solutions/lu-ma-scraper
) - Update
src/config.js
:
apify: {
apiToken: 'apify_api_YOUR_TOKEN',
runId: 'YOUR_RUN_ID',
actorId: 'YOUR_ACTOR_ID',
baseUrl: 'https://api.apify.com/v2',
useLocalFallback: true
}
- Click "Sign in with Auth0" for full features
- Or "Continue as Guest" for basic functionality
- Personal Info: Name and occupation
- Interests: Select from technology, business, arts, networking, education, health
- Location: Geographic preference for in-person events
- Format: In-person, virtual, or both
- Right Swipe / β€οΈ: Like the event (add to matches)
- Left Swipe / βοΈ: Pass on the event
- Up Swipe / β: Super-like (enhanced tracking)
- Use Buttons: Click action buttons if preferred
- View all liked events in the Matches section
- Click events to visit their Luma pages
- Export your data for backup
Our sophisticated algorithm scores events based on:
Factor | Weight | Description |
---|---|---|
Interests | 40% | Alignment with selected interest categories |
Occupation | 20% | Professional relevance and career development |
Location | 20% | Geographic proximity or virtual availability |
Format | 20% | Preferred event format (in-person vs virtual) |
- πΌ Profession Match: Events relevant to your occupation
- β€οΈ Interest Alignment: Matches your selected interests
- π Location Match: In your preferred geographic area
- π₯οΈ Format Match: Matches your format preference
- Pure JavaScript (ES6+): Modern vanilla JS with modules
- Auth0 SPA SDK: Secure authentication and authorization
- Tailwind CSS: Utility-first CSS framework
- Font Awesome: Professional iconography
- Primary: Apify API for live event data
- Fallback: Local JSON files in
input/
directory - Storage: Browser localStorage for user data
- Apify API: Event data fetching with caching
- Webhook Integration: Comprehensive event tracking
- Auth0 API: User management and authentication
event-matcher/
βββ public/
β βββ index.html # Main application
β βββ ...
βββ src/
β βββ app.js # Main application logic
β βββ auth0.js # Auth0 integration
β βββ auth.js # Authentication manager
β βββ events.js # Event data management
β βββ swipe.js # Swipe interface
β βββ webhook.js # Analytics tracking
β βββ config.js # Configuration (ignored)
β βββ config.example.js # Configuration template
βββ styles/
β βββ main.css # Custom styles
βββ input/ # Local event data (optional)
βββ server.py # Python development server
βββ start.sh # Startup script
βββ README.md
- Template:
src/config.example.js
(version controlled) - Active:
src/config.js
(gitignored, contains secrets) - Security: All sensitive data excluded from repository
- Authentication: Auth0 β Local Storage β App State
- Events: Apify API β Cache β Filter β UI
- Interactions: User Action β Webhook β Analytics
- Storage: Local Storage β Export/Import β Backup
- Local-First: All user data stored in browser
- Secure Tokens: Auth0 handles token management
- No Tracking: External analytics only with user consent
- Data Control: Full export/import capabilities
- Token-Based: Secure JWT tokens with refresh capability
- HTTPS Only: Secure communication in production
- CORS Protected: Proper origin validation
- Session Management: Automatic token refresh
π Auth0 Login Issues
- Verify domain format:
your-tenant.auth0.com
- Check callback URLs in Auth0 dashboard
- Ensure popup blockers are disabled
- Check browser console for detailed errors
π‘ Event Loading Problems
- Verify Apify API token and permissions
- Check network connectivity
- Ensure local fallback files exist in
input/
- Check browser console for API errors
πΎ Data Not Saving
- Ensure localStorage is enabled
- Check for browser storage limits
- Clear browser cache and retry
- Verify HTTPS in production
π¨ UI/UX Issues
- Enable JavaScript in browser
- Update to supported browser version
- Check for CSS loading errors
- Disable browser extensions temporarily
Open browser console to see detailed logs:
- π Auth: Authentication flow details
- π Events: Data loading and filtering
- π― Matching: Algorithm scoring details
- π‘ API: Network requests and responses
The app includes comprehensive analytics via webhook:
- User Authentication: Login/logout events
- Event Interactions: Views, likes, passes, super-likes
- URL Clicks: Event page visits tracking
- Preference Updates: Settings changes
- Session Analytics: Usage patterns and duration
{
"eventType": "match_created",
"eventId": "unique-event-id",
"eventUrl": "https://lu.ma/event-slug",
"action": "like", // or "super-like"
"matchScore": 0.85,
"user": { /* user context */ },
"timestamp": "2025-01-01T12:00:00Z"
}
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature
- Commit changes:
git commit -m 'Add amazing feature'
- Push to branch:
git push origin feature/amazing-feature
- Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Auth0 for enterprise-grade authentication
- Apify for reliable event data API
- Luma.co for event platform integration
- Tailwind CSS for modern styling framework
π Star this repository if Event Matcher helped you discover amazing events!
For support, please check the troubleshooting section or open an issue.