This project, self-titled "SciFY Monitor", is an exercise app made to exhibit basic web development skills for a Full Stack Software Engineer position at SciFY. The goal was to "develop an application that will simulate a back-office that allows a SciFY employer to understand the usage of SciFY solutions in the assistive technology domain. This application will summarize the number of games / exercises created by the community for the Memor-i-studio and Διάννοια applications."
Specifications: Create a simple MVC project (at a language of your preference) with 2 pages.
-
Login Page
This can be a simple page with one html form.
- Agent's username
- Submit button
If user enters username "Antigoni" she should be redirected to the user’s activity page. If username is wrong a message should be displayed again "The username you have provided is invalid."
-
“Assistive Technologies > User’s activity” page
This page displays a table with all the games created at Memori-i studio and all the exercises created at Diannoia.
Assuming that PHP, Composer & Git have already been installed and are in your system's PATH, perform the following:
- Open a terminal instance in a directory where you want to store the project and run "git clone https://github.com/papandrk/scify-monitor.git"
- Go into the newly created directory: run "cd scify-monitor"
- Install all required dependencies: run "composer install"
- Set up a .env file: run "cp .env.example .env"
- Generate a key for the .env file: run "php artisan key:generate"
- Set up a database for the app to use - the easiest solution if no other database software is installed: an sqlite database can be used without needing any further installations: just follow the 1-2 paragraphs from these instructions.
- Perform the database migrations by running "php artisan migrate"
- Seed the database with predefined data by running "php artisan db:seed"
- Run "php artisan serve"
- In your browser, go to the address "localhost:8000"
The web app should be up and running now - you can use username "Antigoni" & password "password" to log in.
Some possible improvements-to-be-made, off the top of my head:
- adding sorting functionality to the records list: sort by creation-date, application, alphabetically, descending/ascending etc.
- add selectable pagination length - in the current form every page returns a fixed maximum of 10 records
- adding record management - essentially CRUD functionality for the records so that they can be created/edited/deleted etc.
- adding user account recovery in the event of a forgotten/lost password
- adding integration with the actual source database that the data comes from - currently the records have been imported from a export of the database, so the data will get unavoidably get "stale"