completed on 1.04.2021 as a practical assignment for INVO LLC accepted on 26.03.2021
Live link for online demonstration Books
Refer to the screenshots table for interface instructions
- Clone this repo
- Download this db dump
- Change db credentials in
/config/db.php
- Books
- Authors
- Books-Authors Relation (ONE to MANY)
- Users
- You can register as a new user, without admin access
- Or login as admin (
admin/123456
) or as user (user/123456
) - All users has access to read data
- Create books (along with choosing/creating authors)
- Update books (along with creating/changing authors and updating book-author relation)
- Delete books (along with deletion of relations of deleted book)
- Authors CRUD is not implemented as a separate functionality, but author creation has pretty strict logic to prevent duplication in databases
- Application is based on simple MVC pattern and popular routing logic, all pages and functions work on url
.../controller/action
logic - The interface might have obvious wrong parts, they are created on purpose for demonstration of some functionality, like denied access etc.
- Validation rules are simple, just for demonstration
- I could write a simple solution and complete the task quickly, but I dived into process and tried to do my best working on this project
- I tried to use/implement/show some technologies and functionality to demonstrate and prove my skills, even my English
- During work I tried to keep track on working process using
git
to show the whole process
- Admin dashboard template is taken from Theme Forest - Atlant
- Database dummy data is generated using Fill Database
Refering back to our interview I want to mention some points
- Encapsulation is realized in Router class getUri method which is private, and can be called only inside the Router class
- Polimorfism is realized in Router class run method, which takes a request string and generates controllers and methods names
- Password Hashing is realized in User model register and login methods using
password_hash()
andpassword_validate()
functions