dld_backend/SETUP_GUIDE.md
2025-10-30 12:13:02 +05:30

202 lines
3.8 KiB
Markdown

# 🚀 Dubai DLD Analytics API - Setup Guide
## Database Setup Required
Your MySQL database is not currently running. Here's how to set it up:
### Option 1: Install MySQL (Recommended)
#### Ubuntu/Debian:
```bash
sudo apt update
sudo apt install mysql-server
sudo systemctl start mysql
sudo systemctl enable mysql
sudo mysql_secure_installation
```
#### CentOS/RHEL:
```bash
sudo yum install mysql-server
sudo systemctl start mysqld
sudo systemctl enable mysqld
sudo mysql_secure_installation
```
#### macOS (with Homebrew):
```bash
brew install mysql
brew services start mysql
mysql_secure_installation
```
### Option 2: Use Docker (Quick Setup)
```bash
# Start MySQL with Docker
docker run --name dubai-mysql \
-e MYSQL_ROOT_PASSWORD=Admin@123 \
-e MYSQL_DATABASE=dubai_dld \
-p 3306:3306 \
-d mysql:8.0
# Wait for MySQL to start (30 seconds)
sleep 30
# Import the schema
docker exec -i dubai-mysql mysql -uroot -pAdmin@123 dubai_dld < 2.sql
```
### Option 3: Use XAMPP/WAMP/MAMP
1. Download and install XAMPP/WAMP/MAMP
2. Start MySQL service
3. Set root password to `Admin@123`
4. Create database `dubai_dld`
5. Import `2.sql` file
## After MySQL is Running
### 1. Configure Database Connection
```bash
./configure_db.sh
```
### 2. Install Node.js Dependencies
```bash
npm install
```
### 3. Start the API Server
```bash
npm run dev
```
### 4. Test the API
```bash
./test_api.sh
```
## Database Credentials
- **Host**: localhost
- **Port**: 3306
- **Username**: root
- **Password**: Admin@123
- **Database**: dubai_dld
## Verification Steps
### 1. Test MySQL Connection
```bash
mysql -h localhost -u root -pAdmin@123 -e "SELECT 1;"
```
### 2. Check Database Exists
```bash
mysql -h localhost -u root -pAdmin@123 -e "SHOW DATABASES LIKE 'dubai_dld';"
```
### 3. Check Tables
```bash
mysql -h localhost -u root -pAdmin@123 dubai_dld -e "SHOW TABLES;"
```
## Expected Tables
The database should contain these tables:
- `transactions` (218,518 records)
- `rents` (4,041 records)
- `projects` (355 records)
- `buildings` (16,322 records)
- `lands` (186,796 records)
- `valuations` (3,560 records)
- `brokers` (37,332 records)
- `developers` (from schema)
## Troubleshooting
### MySQL Connection Issues
1. **Service not running**: Start MySQL service
2. **Wrong password**: Reset MySQL root password
3. **Port conflict**: Check if port 3306 is available
4. **Firewall**: Allow MySQL connections
### Common Commands
```bash
# Start MySQL
sudo systemctl start mysql
# Stop MySQL
sudo systemctl stop mysql
# Restart MySQL
sudo systemctl restart mysql
# Check MySQL status
sudo systemctl status mysql
# Connect to MySQL
mysql -u root -p
# Reset root password
sudo mysql -e "ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Admin@123';"
```
## Once Database is Ready
### Quick Test
```bash
# 1. Configure database
./configure_db.sh
# 2. Install dependencies
npm install
# 3. Start server
npm run dev
# 4. Test API (in another terminal)
curl http://localhost:3000/health
```
### Full Test Suite
```bash
./test_api.sh
```
## Features Ready to Test
**Context-Aware Queries**
- Q1: "Give me the last 6 months rental price trend for Business Bay"
- Q2: "Summarise by week" (refinement)
- Q3: "Apartments only" (filter)
**All 10 Specific Queries**
- Project summaries
- Fast moving projects
- Off-plan uptick areas
- Commercial/Residential leasing
- BHK apartment prices
**Chart.js Integration**
- Line charts for trends
- Bar charts for comparisons
- Pie charts for distributions
- Summary cards
## Next Steps
1. **Set up MySQL** using one of the options above
2. **Run the configuration script**: `./configure_db.sh`
3. **Start the API**: `npm run dev`
4. **Test everything**: `./test_api.sh`
5. **Open the dashboard**: `public/index.html`
---
**Status**: ⏳ Waiting for MySQL setup
**API**: ✅ Ready to run
**Database**: ⏳ Needs MySQL installation/startup