Welcome to the Dealer Inspire PHP Code challenge.
First thing's first - you'll need to fork this git repository to somewhere else. Make sure that your source code is publicly available in a git repository when you're done. (Like Bitbucket or GitHub. If you're super-nerdy and host your own public repo, just make sure the server is up 24/7 - our code-review monkeys like to work in the middle of the night.)
You don't have to host a working copy of the code, we'll be checking it out locally to review it. That's a good reminder - we'll be testing your code by running the following commands:
cd your-repo-checkout
phpunit
php -S 127.0.0.1:9999 -t public
Our working directory will be your git repo checkout. We'll run PHPUnit in that directory.
If all the tests pass, we may browse to it using the built-in PHP server, expecting
your publicly browsable code in the public
folder.
We've provided this repository for you to fork. Inside, you'll find a Bootstrap-based template HTML file with a placeholder for your challenge. You are not expected to make any design changes or add anything to the template. However, we'd expect that the code challenge part (it's a form) at least matches the style of this website. (The styling is built into the template.)
Please create a contact form in the contact form page of the website template. Your contact form should contain the following required fields:
- Full Name
- Message
You should also have the following non-required fields:
- Phone
Once valid information is received from the form, two processes should occur.
First, email a copy of the contact request to guy-smiley@example.com
Second, keep a copy of the contact form in a database so that we can review the contact form later. You do not need to provide an interface to access that data (for example, there will be no admin login).
Your contact form should be in valid HTML in our template. It should match the style of the template.
Your back-end processing should be done in PHP. You may use a framework, or plain PHP - either is fine.
Your contact form data should be validated.
One copy of the data should be emailed to the owner (listed above). You can choose either HTML or plaintext email (or a combination).
One copy of the data should be kept in a MySQL, MongoDB or Postgres database.
Some indication that the contact form has been sent should be given.
You should have PHPUnit-compatible unit tests for your application.
Provide either a database schema file or a programmatic way of creating your database / tables.
The completed work is available in a public git repository for us to checkout and review.