Frequently Asked Questions
Which technologies were used for the project?
The technologies used for this project are PHP for the backend and HTML, CSS,
Javascript for the frontend. The project is hosted on Apache Server.
Details
Backend: PHP7
Frontend: HTML5, CSS3, Javascript, Jquery, Bootstrap 4, Chart.js
Database: MongoDB (MongoDB PHP driver for connection with PHP)
Template engine: PHP Smarty
Server: Apache
How long did it take you to build it?
Around 20 man-days.
What's its purpose?
This site offers a personalized smartphone recommendation based on 3 simple steps. Budget, features and types of use. An advanced recommendation algorithm takes place under the hood, that will always suggest the top 3 smartphones on the results page.
Database information?
Due to hardware limitations, the project is currently using a JSON file as a database. This file can be used as a MongoDB collection on stronger machines, but since it is hosted on an entry level tiny server I preferred not to install mongodb. The database consists of around 600 smartphones and was last updated on April 2019.
Which features are currently non functional / useless?
- The search bar on the top navbar supports autocomplete of all the smartphones, but once you click on a name nothing happens.
- The log in / register functionality is there but it's extremely basic, even password validation is missing (you can register with empty username and pass hooray!)
- The smartphones-database page is for demonstration purposes only, to show how ajax requests based on autocomplete suggestion dynamically change the content of the page.
- The compare and details buttons on the results page do nothing at the moment.
- Smartphone photos are missing :)
- Some pages such as faq, smartphone-database and stats are not translated to greek.
What was the most challenging thing in this project?
The hardest part was definitely on the extra features step where the user can select as many features as they like. Each time a feature is clicked, an AJAX request is sent to the server checking if each one of the unselected features produces at least 3 devices in combination with the selected features. Those that don't, are automatically being rendered unavailable.