Skip to content

jaydenstab/VTHacks13

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

14 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

<<<<<<< HEAD

πŸ—½ PulseNYC - AI-Powered Event Discovery

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.

PulseNYC Demo React Node.js TypeScript Google Maps

✨ Features

🎯 Core Functionality

  • 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

πŸ—ΊοΈ Mapping Options

  • Mapbox: Open-source, customizable mapping
  • Google Maps: Standard Google Maps integration
  • Advanced Google Maps: Full-featured with Places API, directions, and Street View

πŸ€– AI Features

  • 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

πŸ“± User Experience

  • 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

πŸš€ Quick Start

Prerequisites

  • Node.js 18+
  • Google Gemini API key
  • Mapbox access token (optional)
  • Google Maps API key (optional)

Installation

  1. Clone the repository

    git clone https://github.com/yourusername/pulsenyc.git
    cd pulsenyc
  2. Install dependencies

    # Install backend dependencies
    cd backend
    npm install
    
    # Install frontend dependencies
    cd ../frontend
    npm install
  3. 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
  4. Run the application

    # Terminal 1 - Backend
    cd backend
    npm start
    
    # Terminal 2 - Frontend
    cd frontend
    npm run dev
  5. Open your browser

πŸ—οΈ Project Structure

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

🎨 Demo Files

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

πŸ”§ API Endpoints

Events

  • GET /api/events - Get all events
  • GET /api/events/:id - Get specific event
  • POST /api/events - Create new event

AI Features

  • POST /api/ai/analyze - Analyze event data
  • GET /api/ai/recommendations - Get AI recommendations
  • POST /api/ai/categorize - Categorize events

Analytics

  • GET /api/analytics/metrics - Get real-time metrics
  • GET /api/analytics/trends - Get trend data

πŸ—ΊοΈ Map Providers

Mapbox (Free)

  • Open source mapping
  • Custom styling
  • No API key required for basic usage
  • Great for development and testing

Google Maps (Paid)

  • Industry standard mapping
  • Rich features (Street View, satellite)
  • Requires API key
  • Usage-based pricing

Advanced Google Maps (Paid)

  • Full Google Maps API features
  • Places API integration
  • Directions and navigation
  • Calendar integration
  • Social sharing

πŸ€– AI Integration

Google Gemini API

  • Event data extraction
  • Content categorization
  • Sentiment analysis
  • Smart recommendations

Machine Learning

  • Collaborative filtering
  • Content-based filtering
  • Hybrid recommendation systems
  • User behavior analysis

πŸ“Š Analytics & Monitoring

  • Real-time event metrics
  • User engagement tracking
  • Performance monitoring
  • A/B testing capabilities

πŸ”” Notifications

  • Proximity-based alerts
  • Price drop notifications
  • Weather-based warnings
  • Personalized timing

πŸ› οΈ Development

Available Scripts

Backend:

npm start          # Start development server
npm run dev        # Start with nodemon
npm test           # Run tests
npm run build      # Build for production

Frontend:

npm run dev        # Start development server
npm run build      # Build for production
npm run preview    # Preview production build
npm run lint       # Run ESLint

Tech Stack

Backend:

  • 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

πŸš€ Deployment

Backend (Railway/Heroku)

# Install Railway CLI
npm install -g @railway/cli

# Deploy
railway login
railway init
railway up

Frontend (Vercel/Netlify)

# Build
npm run build

# Deploy to Vercel
npx vercel

# Or deploy to Netlify
npx netlify deploy --prod --dir=dist

🀝 Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

πŸ“ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ™ Acknowledgments

  • The Skint - NYC event source
  • Google Maps - Mapping services
  • Mapbox - Open source mapping
  • Google Gemini - AI processing
  • React - Frontend framework
  • Node.js - Backend runtime

πŸ“ž Support

🎯 Roadmap

  • 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

Discover the pulse of New York City, one event at a time.

VTHacks13

f0e43e71d5d66f78f83fc623085f4b97651caa6e

About

Submission for VTHacks13

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors