Table of Contents
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.
- Framework: Next.js, MaterialUI
- State Management: Zustand for managing application state
- Framework: Spring Boot
- Database: PostgreSQL
- Cloud Provider: Vercel, AWS for hosting the application
- Containerization: Docker for containerizing the application for easier deployment and scalability
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.).
- 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.
- 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.
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
POST /auth/register
- Register userPOST /auth/login
- Login with credentials
GET /api/vendors
- List all vendorsPOST /api/vendors
- Create new vendorGET /api/vendors/:id
- Get vendor detailsPUT /api/vendors/:id
- Update vendor detailsDELETE /api/vendors/:id
- Deactivate vendorPOST /api/vendors/:id/menu
- Add item to menuDELETE /api/vendors/:id/menu
- Remove item from menu
GET /api/users/:id
- Get user profilePUT /api/users/:id
- Update user profilePOST /api/users/:id/favorites
- Add vendor to favoritesDELETE /api/users/:id/favorites/:vendorId
- Remove vendor from favorites
GET /api/vendors/:id/reviews
- List reviews for a vendorPOST /api/vendors/:id/reviews
- Add a reviewPUT /api/vendors/:id/reviews/:reviewId
- Update a reviewDELETE /api/vendors/:id/reviews/:reviewId
- Delete a review
GET /api/search?q=query&lat=latitude&lng=longitude
- Search vendors by query and location
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;
-
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.
-
Choose Technology Stack
- Select Node.js for backend development.
- Choose a database (PostgreSQL).
- Select a frontend framework (React).
-
Design Database Schema
- Create tables for vendors, users, menus, orders, reviews, and notifications.
- [] Ensure proper normalization and relationships between tables.
-
Implement Real-Time Location Tracking
- [] Integrate GPS functionality using Google Maps API or Mapbox.
- [] Develop a map interface to display food truck locations.
-
Develop Menu Display Feature
- [] Create a user interface for vendors to update menus.
- [] Implement a dynamic menu display for customers.
-
Implement Estimated Wait Times
- [] Develop algorithms to calculate wait times based on current orders.
- [] Display estimated wait times on vendor profiles.
-
Implement Favorites and Notifications
- [] Develop a user account system for saving favorite vendors.
- [] Set up a notification system for alerts about nearby vendors.
-
Develop User Reviews and Ratings
- [] Implement a review and rating system for users.
- [] Display reviews and ratings on vendor profiles.
-
Implement Search and Filter Options
- [] Develop search functionality for vendors by name and cuisine type.
- [] Provide filter options for dietary preferences and distance.
-
Integrate Event Features
- [] Create a database for local events and participating vendors.
- [] Implement event notifications for users.
-
Add Social Sharing Capabilities
- [] Integrate social media sharing features.
- [] Encourage community engagement through user-generated content.
-
Backend Development and Integration
- [] Set up server infrastructure to handle API requests.
- [] Ensure secure data transactions and user authentication.
-
Testing and Deployment
- [] Conduct thorough testing of all features.
- [] Deploy the app on Android and iOS platforms.