<<<<<<< HEAD
A sophisticated hyperlocal event aggregator for New York City that combines web scraping, AI processing, and interactive mapping to help users discover the best events happening around them.
- Web Scraping: Automatically scrapes events from The Skint and other NYC sources
- AI Processing: Uses Google Gemini API to extract and categorize event data
- Interactive Mapping: Multiple map providers (Mapbox, Google Maps, Advanced Google Maps)
- Real-time Filtering: Filter events by category, location, and time
- Smart Search: AI-powered search and recommendations
- Mapbox: Open-source, customizable mapping
- Google Maps: Standard Google Maps integration
- Advanced Google Maps: Full-featured with Places API, directions, and Street View
- Event Categorization: Automatic categorization using AI
- Smart Recommendations: Personalized event suggestions
- Trend Analysis: Identify popular event types and locations
- Sentiment Analysis: Analyze event descriptions and reviews
- Apple-Style UI: Clean, modern interface inspired by iOS design
- Responsive Design: Works perfectly on desktop, tablet, and mobile
- Real-time Updates: Live event data and notifications
- Social Integration: Share events and add to calendar
- Node.js 18+
- Google Gemini API key
- Mapbox access token (optional)
- Google Maps API key (optional)
-
Clone the repository
git clone https://github.com/yourusername/pulsenyc.git cd pulsenyc -
Install dependencies
# Install backend dependencies cd backend npm install # Install frontend dependencies cd ../frontend npm install
-
Set up environment variables
Backend (
backend/.env):GEMINI_API_KEY=your_gemini_api_key_here MAPBOX_ACCESS_TOKEN=your_mapbox_token_here PORT=8000
Frontend (
frontend/.env.local):VITE_MAPBOX_ACCESS_TOKEN=your_mapbox_token_here VITE_GOOGLE_MAPS_API_KEY=your_google_maps_api_key_here
-
Run the application
# Terminal 1 - Backend cd backend npm start # Terminal 2 - Frontend cd frontend npm run dev
-
Open your browser
- Frontend: http://localhost:3000
- Backend API: http://localhost:8000
pulsenyc/
βββ backend/ # Node.js/Express backend
β βββ ai/ # AI processing modules
β β βββ advancedProcessor.js
β β βββ recommendationEngine.js
β βββ analytics/ # Real-time analytics
β βββ ml/ # Machine learning models
β βββ notifications/ # Notification system
β βββ scraper.js # Web scraping logic
β βββ aiProcessor.js # AI data processing
β βββ geocoder.js # Address geocoding
β βββ server.js # Express server
βββ frontend/ # React/TypeScript frontend
β βββ src/
β β βββ components/ # React components
β β β βββ EventMap.tsx
β β β βββ GoogleEventMap.tsx
β β β βββ AdvancedGoogleMap.tsx
β β β βββ CategoryFilter.tsx
β β β βββ AIInsights.tsx
β β β βββ RealTimeDashboard.tsx
β β βββ types/ # TypeScript definitions
β β βββ App.tsx # Main application
β β βββ main.tsx # Entry point
β βββ public/ # Static assets
βββ demos/ # Standalone HTML demos
β βββ simple-google-maps.html
β βββ leaflet-interactive-map.html
β βββ advanced-google-maps-demo.html
β βββ interactive-map.html
βββ README.md
Try out different map implementations:
- Simple Google Maps:
simple-google-maps.html - Leaflet Interactive:
leaflet-interactive-map.html - Advanced Google Maps:
advanced-google-maps-demo.html - Interactive Map:
interactive-map.html
GET /api/events- Get all eventsGET /api/events/:id- Get specific eventPOST /api/events- Create new event
POST /api/ai/analyze- Analyze event dataGET /api/ai/recommendations- Get AI recommendationsPOST /api/ai/categorize- Categorize events
GET /api/analytics/metrics- Get real-time metricsGET /api/analytics/trends- Get trend data
- Open source mapping
- Custom styling
- No API key required for basic usage
- Great for development and testing
- Industry standard mapping
- Rich features (Street View, satellite)
- Requires API key
- Usage-based pricing
- Full Google Maps API features
- Places API integration
- Directions and navigation
- Calendar integration
- Social sharing
- Event data extraction
- Content categorization
- Sentiment analysis
- Smart recommendations
- Collaborative filtering
- Content-based filtering
- Hybrid recommendation systems
- User behavior analysis
- Real-time event metrics
- User engagement tracking
- Performance monitoring
- A/B testing capabilities
- Proximity-based alerts
- Price drop notifications
- Weather-based warnings
- Personalized timing
Backend:
npm start # Start development server
npm run dev # Start with nodemon
npm test # Run tests
npm run build # Build for productionFrontend:
npm run dev # Start development server
npm run build # Build for production
npm run preview # Preview production build
npm run lint # Run ESLintBackend:
- Node.js & Express
- Google Gemini AI
- Cheerio (web scraping)
- Axios (HTTP client)
- WebSocket (real-time)
Frontend:
- React 18 & TypeScript
- Vite (build tool)
- Mapbox GL JS
- Google Maps API
- Leaflet.js
Styling:
- CSS Modules
- Apple-inspired design
- Glassmorphism effects
- Responsive design
# Install Railway CLI
npm install -g @railway/cli
# Deploy
railway login
railway init
railway up# Build
npm run build
# Deploy to Vercel
npx vercel
# Or deploy to Netlify
npx netlify deploy --prod --dir=dist- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the 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.
- The Skint - NYC event source
- Google Maps - Mapping services
- Mapbox - Open source mapping
- Google Gemini - AI processing
- React - Frontend framework
- Node.js - Backend runtime
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Email: your.email@example.com
- Mobile app (React Native)
- More event sources
- User accounts and preferences
- Event booking integration
- Social features
- Offline support
- Push notifications
- Multi-city support
Built with β€οΈ for NYC event lovers
f0e43e71d5d66f78f83fc623085f4b97651caa6e