Booj Reading List
Beware of the person of one book. -- Thomas Aquinas
Compose a site using the Laravel framework that allows the user to create a list of books they would like to read. Users should be able to perform the following actions:
- Add or remove books from the list
- Change the order of the books in the list
- Sort the list of books by their author
- Display a book detail page with a minimum of author, publication date, and title
Please use the ORM rather than crafting queries by hand.
- Deploy it for real so we can play with it! (and then tell us about how you deployed it)
- Handle image uploading while adding books to the list
- Do something fancy like integrating an external API or handling user authentication
To get started, click the Register link to create an account, or use the one provided in the Seeder file. You can create many accounts if you wish.
With an account, click the Add reading list links to create reading lists and set their name. The main page will show your reading lists. Click a reading list's title to edit the book list. Click the Edit link below the reading list name to edit the reading list's settings, such as the name. Click Delete to remove the reading list.
In the Reading List view, you can add books with the Add a book link at the bottom left. Title, Author, and Publication Date are the only required fields. Optional fields are Description, Rating, and Image. Click the Browse... button to upload an image.
After adding the book to your list, you will see it appear in the Reading List view. Click the list headings (Title, Author, Publication Date, and Description) to sort the list by that column.
Use the Edit and Delete buttons in the Controls section to edit or delete book entries.
Check out a working example!
You can deploy this Laravel site in an environment with all the required programs and credentials, which you may
specify for the database in the local
.env. See the booj-read-list-docker repo for a Dockerfile an instructions
for deployment with such a container.
If deploying in another environment, be sure to do the following:
- The storage and bootstrap/cache directories must be writeable by the web server process owner
- If using mod_proxy to proxy requests to multiple contanairs on separate ports, you must enable the
httpd_can_network_connectsebool if using SELinux.
- Use the host OS's public IP for the IP used with the
- Node.js is required to publish the frontend assets. Run
npm install && npm -g install gulp && gulpto make this happen. When developing, use the
- Be sure to publish an application key to the
APP_KEYvalue of the local
.env. Run the command
php artisan key:generateto create and assign such a key.
There are several tests using Laravel's TestCase methods for confirming the user registration operations. You can run them with
phpunit in the project root.
Note: Be mindful that running the tests will rollback all migrations.
- Laravel 5.2.*
- PHP >=5.5.9
- MySQL 5.*
- NodeJS (LTS or Stable)