Skip to content

Hackathon Winner App, built with Next.js and TypeScript for a frontend, styled with Tailwind CSS. The Flask backend integrates Claude AI for generating location descriptions and ElevenLabs for text-to-speech conversion. Google Maps API enhances interactivity by displaying routes and POIs, while React hooks manage state

Notifications You must be signed in to change notification settings

craftingweb/POINT

Repository files navigation

CB32CD93-F420-40D4-9978-47EDD26C8176_1_105_c

POINT (Point Of INterest Tourguide)

Hackathon Winner | Most Creative Track | TechNYU

Overview

POINT is a web application that enables users to calculate routes between a starting point and a destination, displaying points of interest (POIs) along the way. Users can also listen to audio descriptions of select locations.

Features

  • Route Calculation: Input a starting location and destination to compute the optimal route.
  • Points of Interest Display: View notable locations along the route with relevant details.
  • Audio Playback: Listen to descriptions of select POIs.
  • Interactive Map: Visual representation of routes and POIs using a mapping service.
  • Responsive Design: Optimized for various devices and screen sizes.

Technologies Used

  • Frontend Framework: Next.js (React-based framework)
  • TypeScript: For type-safe JavaScript development
  • Styling: Tailwind CSS
  • Mapping Library: (Google Maps API)
  • Text-to-speech: (Eleven Labs)
  • API Integration: Communication with the backend Flask API

Demo

  1. Add the start and end destination:

2025-03-0122-32-34-ezgif com-video-to-gif-converter

  1. Choose which landmarks/point of interests you want to learn more about

2025-03-0122-32-34-ezgif com-video-to-gif-converter (1)

  1. Listen about the historical impact and description of the landmark/point of interests

2025-03-0122-32-34-ezgif com-video-to-gif-converter (2)

Installation & Setup

Prerequisites

  • Node.js (v14 or later)
  • npm
  • API keys for mapping services (if applicable)

Steps

  1. Clone the repository:

    git clone https://github.com/craftingweb/Buildathon.git
    cd Buildathon
  2. Install dependencies:

    npm install
  3. Set up environment variables:

    Create a .env.local file in the project root with the following variables:

    NEXT_PUBLIC_GOOGLE_MAPS_API_KEY=xxxxx
  4. Run the development server:

    npm run dev

    The application will be available at http://localhost:3000/.

  5. Run the backend server:

The repo is available at: BuildathonBackend

Project Structure

Buildathon/
├── app/                     # Application-specific configurations
├── components/              # Reusable UI components
├── hooks/                   # Custom React hooks
├── lib/                     # Library utilities
├── public/                  # Static assets
├── styles/                  # Styling files (CSS, Tailwind configurations)
├── types/                   # TypeScript type definitions
├── .gitignore               # Git ignore file
├── components.json          # (Specify the purpose of this file)
├── flatiron_building_.mp3   # Sample audio file
├── next.config.mjs          # Next.js configuration
├── package-lock.json        # Lockfile for npm
├── package.json             # Project dependencies and scripts
├── postcss.config.mjs       # PostCSS configuration
├── tailwind.config.js       # Tailwind CSS configuration
└── tsconfig.json            # TypeScript configuration

API Integration

The frontend interacts with the backend Flask API to fetch route details and audio descriptions.

Checking the health of the backend server

  • Endpoint: /health

  • Method: GET

  • Response:

    {
      "status": "healthy"
    }

Fetching Location Information (Text Only)

  • Endpoint: /get-location-info

  • Method: GET

  • Query Parameters:

    • place: Name of the location (e.g., ?place=Flatiron)
  • Response:

    {
      "place": "Flatiron",
      "description": "Now approaching the Flatiron Building, an iconic triangular skyscraper..."
    }

Fetching Points of Interest & Audio

  • Endpoint: /get-location-audio
  • Method: GET
  • Query Parameters:
    • place: Name of the location (e.g., ?place=Flatiron)
  • Response: Returns an MP3 file for audio playback.

Deployment

Running in Production

  1. Build the project:

    npm run build
  2. Start the production server:

    npm start

    Ensure that the environment variables are set appropriately for production.

Docker Deployment

  1. Create a Dockerfile:

    (Provide the Dockerfile content if available)

  2. Build and run the Docker container:

    docker build -t route-planner-frontend .
    docker run -p 3000:3000 route-planner-frontend

Contributing

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

License

This project is licensed under the MIT License.


About

Hackathon Winner App, built with Next.js and TypeScript for a frontend, styled with Tailwind CSS. The Flask backend integrates Claude AI for generating location descriptions and ElevenLabs for text-to-speech conversion. Google Maps API enhances interactivity by displaying routes and POIs, while React hooks manage state

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •