# WorldWise Travel Tracker
WorldWise is a travel tracker app where you can pin your visited cities on the map and also write a short note about it.


The WorldWise Web-App is built with React.js that allows users to track travel plans.  
Whether you're a casual or frequent traveler, this app provides a simple and intuitive way to organize your trips, keep track of important details.

## Set-up
### One-time and development requirements: 
* NodeJS (22 or newer).
* npm (10 or newer).

### Hosting requirements:
* a Web server (for example Nginx or Apache).
* PHP (8.2 or higher with modules PDO,PDO-mysql,curl).
* Mysql (8.0  or higher) or MariaDB (10 or higher).

### Steps:
* Clone the repository to the system with npm/nodejs.
* Open the cloned directory.
* Run `npm install`.
* Run `npm run build`.
* Copy the `api` and `dist` folders to the hosting server.
* Create a MySQL database with a corresponding user and import `api/db.sql`.
* Copy example configurations in `api/config/*.php.example` to `api/config/*.php`.
* Update `api/config/db.php` with your database name and credentials.

The application is now available on the address configured by the web server,  
an account can be created using the link on the login page.



###  Extra steps to disable account creation
**Please make sure an account exists before continuing.**  
* Set the `AllowUserRegistration` variable in `api/config/auth.php` to `false`
 

###  Extra steps for  frond-end development:
* Uncomment disabled variables `api/config/headers.php`.
* Update the api url in `vite.config.js` to reflect your environment.
* Run `npm run dev`.
The application is now available on the displayed url

###  Extra steps for  use  of self-hosted geocode api
**A requirement is that a komoot photon api is already set-up.**
* Update variables `geocodeType`, `geocodeApiurl` and if required `geocodeApikey` in `api/config/geocode.php`.
 


## Technologies 
The WorldWise App uses the following technologies:

* React.js: A popular JavaScript library for building user interfaces.

* React Router: Used for handling routing within the app.

* php : Provides the auth and data api.

* MySQL : Used for data storage.

* Reverse Geocode :  by default provided by Big Data Cloud but can be configured to use a self-hosted komoot photon api.

Thank you for using the WorldWise Travel Tracker App!  
Happy travels! 🌍✈️