# Installation
You can install Twill on an existing Laravel application or a new one.
# Composer
Twill package can be added to your application using Composer:
composer require area17/twill:"^2.0"
# Artisan
Run the twill:install
Artisan command:
php artisan twill:install
WARNING
This command will migrate your database.
Make sure to setup your .env file with your database credentials and to run it where your database is accessible (ie. inside Vagrant if you are using Laravel Homestead).
Twill's install
command consists of:
- creating an
admin.php
routes files in your application'sroutes
directory. This is where you will declare your own admin console routes. - migrating your database with Twill's migrations.
- publishing Twill's configuration files to your application's
config
directory. - publishing Twill's assets for the admin console UI.
- prompting you to create a superadmin user.
# .env
By default, Twill's admin console is available at admin.domain.test
. This is assuming that your .env APP_URL
variable does not include a scheme (http
/https
):
APP_URL=domain.test
In development, make sure that the admin
subdomain is available and pointing to your app's public
directory.
If you are a Valet user, this is already done for you (any subdomain is linked to the same directory as the linked domain).
If you are a Homestead user, make sure to add the subdomain to your /etc/hosts
file too:
# this is an example, use your own IP and domain
192.168.10.10 domain.test
192.168.10.10 admin.domain.test
Optionally, you can specify a custom admin console url using the ADMIN_APP_URL
variable. For example:
ADMIN_APP_URL=manage.domain.test
As well as a path using the ADMIN_APP_PATH
variable. For example, to have the admin console available on a subdirectory of your app (domain.test/admin
):
APP_URL=domain.test
ADMIN_APP_URL=domain.test
ADMIN_APP_PATH=admin
When running on 2 different subdomains (which is the default configuration as seen above), you want to share cookies between both domains so that publishers can access drafts on the frontend. Use the SESSION_DOMAIN
variable with your domain, prefixed by a dot, like in the following example:
SESSION_DOMAIN=.domain.test
# Accessing the admin console
At this point, you should be able to login at admin.domain.test
, manage.domain.test
or domain.test/admin
depending on your environment configuration. You should be presented with a dashboard with an empty activities list, a link to open Twill's media library and a dropdown to manage users, your own account and logout.
# Setting up the media library
From there, you might want to configure Twill's media library's storage provider and its rendering service. By default, Twill is configured to store uploads on AWS S3
and to render images via Imgix (opens new window). Provide the following .env variables to get up and running:
S3_KEY=S3_KEY
S3_SECRET=S3_SECRET
S3_BUCKET=bucket-name
IMGIX_SOURCE_HOST=source.imgix.net
If you are not ready to use those third party services yet, can't use them, or have very limited image rendering needs, Twill also provides a local storage driver as well as a locale image rendering service powered by Glide (opens new window). The following .env variables should get you up and running:
FILE_LIBRARY_ENDPOINT_TYPE=local
MEDIA_LIBRARY_ENDPOINT_TYPE=local
MEDIA_LIBRARY_IMAGE_SERVICE=A17\Twill\Services\MediaLibrary\Glide
See the media library's configuration documentation for more information.
# A note about the frontend
On your frontend domain (domain.test
), nothing changed, and that's ok! Twill does not make any assumptions regarding how you might want to build your own applications. It is up to you to setup Laravel routes that queries content created through Twill's admin console. You can decide to use server side rendering with Laravel's Blade templating and/or to define API endpoints to build your frontend application using any client side solution (eg. Vue, React, Angular, ...).
On a clean Laravel install, you should still see Laravel's welcome screen. If you installed Twill on an existing Laravel application, your setup should not be affected. Do not hesitate to reach out on GitHub (opens new window) if you have a specific use case or any trouble using Twill with your existing application.