Skip to content

dcat23/street-scout

 
 

Repository files navigation

GitHub Stars GitHub Issues Current Version Live Demo


Logo

Street Scout

UPDATE OUR DESCRIPTION
Explore the docs »

View Demo · Report Bug · Request Feature

Table of Contents
  1. Overview
  2. Setup
  3. Modules
  4. API Reference
  5. Database Schema
  6. Implementation Steps
  7. Additional Considerations
  8. Contributors

Overview

Street Scout is designed to connect food enthusiasts with local food trucks in real-time, enhancing the dining experience by providing users with up-to-date information on food truck locations, menus, and wait times.

(back to top)


Technical Stack

Frontend

  • Framework: Next.js, MaterialUI
  • State Management: Zustand for managing application state

Backend

  • Framework: Spring Boot
  • Database: PostgreSQL

Hosting and Deployment

  • Cloud Provider: Vercel, AWS for hosting the application
  • Containerization: Docker for containerizing the application for easier deployment and scalability

(back to top)


Core Features

  1. Real-Time Location Tracking:
    • Map Interface: A user-friendly map that displays the current locations of food trucks.
    • GPS Integration: Utilize GPS technology to provide accurate positioning and navigation to the nearest food trucks.
  2. Menu Display:
    • Dynamic Menus: Each food truck can upload and update their menu items, including prices and descriptions.
    • Specials and Promotions: Highlight daily specials or promotions to attract customers.
  3. Estimated Wait Times:
    • Live Updates: Provide estimated wait times based on current customer volume and order processing times.
    • Queue Management: Allow users to see how busy a truck is before deciding to visit.
  4. Favorites and Notifications:
    • Favorite Trucks: Users can mark their favorite food trucks to receive notifications.
    • Alerts: Push notifications when favorite trucks are nearby or when new vendors join the platform.
  5. User Reviews and Ratings:
    • Customer Feedback: Users can leave reviews and rate their experiences, helping others make informed decisions.
    • Vendor Response: Food truck owners can respond to reviews, fostering community engagement.
  6. Search and Filter Options:
    • Cuisine Types: Users can filter food trucks by cuisine (e.g., Mexican, Asian, vegan).
    • Dietary Preferences: Options for filtering based on dietary needs (gluten-free, vegetarian, etc.).
  7. Event Integration:
    • Local Events: Highlight food trucks participating in local festivals, markets, or events.
    • Event Notifications: Notify users of upcoming food truck gatherings or special events.
  8. Social Sharing:
    • Share Experiences: Users can share their food truck experiences on social media directly from the app.
    • Community Engagement: Encourage users to post photos and reviews of their meals.

(back to top)


Setup

Clone the project

  git clone https://github.com/aye-shadow/street-scout

Copy environment variables to the .env file

cp .env.example .env

Start the backend and database

docker compose up -d

Go to the project directory

  cd frontend

Install dependencies

  npm install

Start the server

  npm run dev

(back to top)


  • POST /auth/register - Register user
  • POST /auth/login - Login with credentials
  • GET /api/vendors - List all vendors
  • POST /api/vendors - Create new vendor
  • GET /api/vendors/:id - Get vendor details
  • PUT /api/vendors/:id - Update vendor details
  • DELETE /api/vendors/:id - Deactivate vendor
  • POST /api/vendors/:id/menu - Add item to menu
  • DELETE /api/vendors/:id/menu - Remove item from menu
  • GET /api/users/:id - Get user profile
  • PUT /api/users/:id - Update user profile
  • POST /api/users/:id/favorites - Add vendor to favorites
  • DELETE /api/users/:id/favorites/:vendorId - Remove vendor from favorites
  • GET /api/vendors/:id/reviews - List reviews for a vendor
  • POST /api/vendors/:id/reviews - Add a review
  • PUT /api/vendors/:id/reviews/:reviewId - Update a review
  • DELETE /api/vendors/:id/reviews/:reviewId - Delete a review
  • GET /api/search?q=query&lat=latitude&lng=longitude - Search vendors by query and location

(back to top)


Database Schema

  • id: number;
  • name: string;
  • description: string;
  • location:
    • latitude: number;
    • longitude: number;
  • operatingHours:
    • open: string;
    • close: string;
  • menu: MenuItem[];
  • photos: string[];
  • reviews: Review[];
  • is_active: boolean
  • id: number;
  • name: string;
  • email: string;
  • favoriteVendors: string[];
  • id: number;
  • userId: string;
  • rating: number;
  • text: string;
  • createdAt: Timestamp;
  • id: number;
  • name: string;
  • description: string;
  • price: number;

(back to top)


Implementation Steps

  1. Define Requirements and Scope

    • [] Gather detailed requirements from stakeholders.
    • Identify key features such as real-time location tracking, menu display, user reviews, and notifications.
    • Define user roles, including customers and vendors.
  2. Choose Technology Stack

    • Select Node.js for backend development.
    • Choose a database (PostgreSQL).
    • Select a frontend framework (React).
  3. Design Database Schema

    • Create tables for vendors, users, menus, orders, reviews, and notifications.
    • [] Ensure proper normalization and relationships between tables.
  4. Implement Real-Time Location Tracking

    • [] Integrate GPS functionality using Google Maps API or Mapbox.
    • [] Develop a map interface to display food truck locations.
  5. Develop Menu Display Feature

    • [] Create a user interface for vendors to update menus.
    • [] Implement a dynamic menu display for customers.
  6. Implement Estimated Wait Times

    • [] Develop algorithms to calculate wait times based on current orders.
    • [] Display estimated wait times on vendor profiles.
  7. Implement Favorites and Notifications

    • [] Develop a user account system for saving favorite vendors.
    • [] Set up a notification system for alerts about nearby vendors.
  8. Develop User Reviews and Ratings

    • [] Implement a review and rating system for users.
    • [] Display reviews and ratings on vendor profiles.
  9. Implement Search and Filter Options

    • [] Develop search functionality for vendors by name and cuisine type.
    • [] Provide filter options for dietary preferences and distance.
  10. Integrate Event Features

    • [] Create a database for local events and participating vendors.
    • [] Implement event notifications for users.
  11. Add Social Sharing Capabilities

    • [] Integrate social media sharing features.
    • [] Encourage community engagement through user-generated content.
  12. Backend Development and Integration

    • [] Set up server infrastructure to handle API requests.
    • [] Ensure secure data transactions and user authentication.
  13. Testing and Deployment

    • [] Conduct thorough testing of all features.
    • [] Deploy the app on Android and iOS platforms.

(back to top)


Additional Considerations

Bonus Features

To-Do

Future Features

(back to top)


Contributors

(back to top)


About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 38.2%
  • JavaScript 38.0%
  • TypeScript 23.6%
  • CSS 0.2%