# Personal Guide Project

A full-stack platform for publishing and managing private travel itineraries. The repository contains a React frontend for guests and administrators, plus a Laravel API for authentication, itinerary management, page content, and image uploads.

## Features

- Public landing page and available-trip catalogue
- Detailed itinerary, timeline, and animated road-trip views
- Admin authentication and itinerary management
- Editable page content and itinerary image uploads
- English, Arabic (RTL), and German translations
- Light and dark themes
- Responsive guest and admin interfaces

## Technology

- **Frontend:** React 18, Vite, Tailwind CSS, Framer Motion, React Router, and i18next
- **Backend:** PHP 8.2+, Laravel 12, Laravel Sanctum, and MySQL

## Repository structure

```text
personal-guide-project/
├── personal-guide-backend/   # Laravel REST API
└── personal-guide-fronend/   # React/Vite application
```

## Requirements

- PHP 8.2 or newer
- Composer
- MySQL
- Node.js and npm

## Backend setup

From the repository root:

```powershell
cd personal-guide-backend
composer install
Copy-Item .env.example .env
php artisan key:generate
```

Create a MySQL database named `personal_guide_api`, then update the database settings in `personal-guide-backend/.env` if necessary. Finish the setup and start the API:

```powershell
php artisan migrate --seed
php artisan storage:link
php artisan serve
```

The API runs at `http://localhost:8000` by default.

## Frontend setup

In a second terminal, from the repository root:

```powershell
cd personal-guide-fronend
npm install
Copy-Item .env.example .env
npm run dev
```

The frontend runs at `http://localhost:5173` by default and uses `http://localhost:8000/api` as its API endpoint. To use another endpoint, change `VITE_API_BASE_URL` in `personal-guide-fronend/.env`.

## Verification

Run the backend tests:

```powershell
cd personal-guide-backend
php artisan test
```

Create a production frontend build:

```powershell
cd personal-guide-fronend
npm run build
```

## Environment files

Real `.env` files, installed dependencies, generated builds, logs, and uploaded runtime files are excluded from Git. Use each project's `.env.example` as the starting point for local configuration.
