Maporia - Egypt domestic-tourism Flutter app with AI chatbot (LangChain/FAISS/Hugging Face) and YOLOv8 landmark detection
# đź—ş Maporia
Maporia is a smart mobile application focused on domestic tourism in Egypt. It helps users explore Egyptian governorates, discover historical and cultural attractions, and interact with intelligent tools such as an AI chatbot and a landmark scanner.
---
## đź“‹ Table of Contents
- Project Overview
- Prerequisites
- Setup Instructions
- Backend Setup
- AI Chatbot
- Landmark Detection API
- Key Features
- Troubleshooting
- Contact
---
## Prerequisites
- A computer running Windows or macOS
- An Android mobile device (Developer Mode must be enabled)
- Android Studio installed and configured
- Flutter SDK installed (for fetching dependencies and running the app)
---
## Setup Instructions
### 1. Install All Dependencies
After cloning or downloading the project, open a terminal in the project directory and run:
bash
flutter pub get
---
### 2. Run the App on an Android Device
- Enable Developer Mode on your Android phone.
- Enable USB Debugging under Developer Options.
- Connect your Android device to your computer via USB.
- Open Android Studio, or run:
bash
flutter run
---
## Backend Setup (Express.js + MySQL)
### 1. Prerequisites
- Node.js (v18 or higher)
- MySQL Server & MySQL Workbench
- Postman (for API testing)
---
### 2. Installation
Clone the backend folder and navigate to it:
bash
cd backend
npm install
Create a .env file with the following:
env
PORT=4040
DB_HOST=localhost
DB_PORT=3306
DB_USER=root
DB_PASSWORD=
DB_NAME=mydb
# JWT secret key
JWT_SECRET=super_secret_key_123
---
### 3. Running the Backend
bash
npm run dev
npm run seed => to full database
npx tsc => to make build folder
API available at:
localhost
---
All APIs need token in header except login , signup
### 4. API Highlights
- POST /auth/signup – Create a new user
- POST /auth/login – Login and receive JWT
- POST /visit/create – Create a visit (auth required)
- GET /city/all – List all cities
- GET /visit/all – List all visits
- GET /a …