This project comes from Laravel Daily blog post, How to Test Junior Laravel Developer Skills: Sample Project, a challenge (sample project) for junior laravel developer.
This project built with Laravel 5.5.
- Basic Laravel Auth: ability to log in as administrator
- Use database seeds to create first user with email admin@admin.com and password “password”
- CRUD functionality (Create / Read / Update / Delete) for two menu items: Companies and Employees.
- Companies DB table consists of these fields: Name (required), email, logo (minimum 100×100), website
- Employees DB table consists of these fields: First name (required), last name (required), Company (foreign key to Companies), email, phone
- Use database migrations to create those schemas above
- Store companies logos in storage/app/public folder and make them accessible from public
- Use basic Laravel resource controllers with default methods – index, create, store etc.
- Use Laravel’s validation function, using Request classes
- Use Laravel’s pagination for showing Companies/Employees list, 10 entries per page
- Use Laravel make:auth as default Bootstrap-based design theme, but remove ability to register
- Use Datatables.net library to show table – with our without server-side rendering
- Use more complicated front-end theme like AdminLTE
- Email notification: send email whenever new company is entered (use Mailgun or Mailtrap)
- Make the project multi-language (using resources/lang folder)
- Basic testing with phpunit (I know some would argue it should be the basics, but I disagree)
- Clone the repo :
git clone https://github.com/nafiesl/Mini-CRM.git
$ cd Mini-CRM
$ composer install
$ cp .env.example .env
$ php artisan key:generate
- Create database on MySQL or SQLite
- Set database credentials on
.env
file $ php artisan migrate --seed
$ php artisan storage:link
$ php artisan serve
- Login with :
- email :
admin@admin.com
- password :
password
- email :
If you want to some demo records, we can use Laravel Tinker and Model Factories.
$ php artisan tinker
>>> factory(App\Company::class, 15)->create(['creator_id' => 1])->each(function ($u) { $u->employees()->saveMany(factory(App\Employee::class, rand(5, 12))->make(['company_id' => $u->id])); });
Then we will get some filled records like screenshots below (except the company logo).
This software is open-sourced software licensed under the MIT license.