A fully-fledged modern forum app, including @mention and private messaging, built with Laravel 5.3 and Vue 2.
This is a repository for a fully-fledged modern forum app, including private messaging, built with Laravel 5.3 and Vue 2.
User
s by email when they are mentioned in a post. Including auto link generation, when a User
uses the @mention functionality. I.e @ashmenhennett
will be converted to [@ashmenhennett](http://example.com/user/profile/@ashmenhennett)
.pusher-js
and Laravl-Echo
.admin
), Moderators (moderator
) and standard Users (user
).User
's roles.Topic
s.Post
s and Topic
s.User
s can register and create Topic
s and Post
s.User
s may subscribe to any Topic
s and may report any Topic
or Post
for moderation.Post
s.Post
s or eleveated User
s may modify or delete Post
s.admin
and moderator
accounts may delete Topic
s.User
s recieve emails, via a triggered event when a Topic
that they are subscribed to has a Post
added to it.App\Events
and App\Listeners
for further insight. See App\Providers\EventServiceProvider
's $listen
property for the association of Event
s and Listener
s.If you would like to install this project, treat it as you would any other Laravel application:
composer install
(also, npm install
, if you need)..env
(see below).php artisan key:generate
.php artisan migrate
.Make sure you configure these environment variables:
APP_URL
: the url of the application. This variable is used for linking to the application in emails.APP_NAME
: the human readable name of the application. This variable is used for refering to the application via emails. It is also used in the navbar as the application branding.MAIL_FROM_EMAIL
and MAIL_FROM_NAME
: the 'from' email address and name. This is used for sending out emails.S3_KEY
, S3_SECRET
, S3_REGION
, S3_BUCKET_NAME
and S3_IMG_BUCKET_URL
: the conncetion to Amazon S3 variables. These values are used for the avatar uploading facility built in to the application.PUSHER_APP_ID
, PUSHER_KEY
and PUSHER_SECRET
: the connection configuration for the pusher
broadcast driver.Further steps:
QUEUE_DRIVER
environment variable to database
.BROADCAST_DRIVER
environment variable to the broadcast driver to be used. Set this to pusher
if you wish to use the pusher API with Laravel Echo
.APP_ENV
environment variable to production
when the app is on a live sever, to force HTTPS connections on all routes.Laravel Echo
instance in resources/assets/js/bootstrap.js
, starting line 41.php artisan queue:work
to allow jobs, queued mail and event broadcasting to function.There are a couple of commands for use with this application:
alter:role
command via command line, after they have registered, passing in the id of the User
and the role (i.e. admin
). Eg. php artisan alter:role 1 admin
. This is currently the only logical way of elevating a specific user, when no other admin
s exist.php artisan clear:avatars
. They exist in the application storage, as they are uploaded to the applications storage, before being uploaded to Amazon's S3. They are currently not being automatically deleted from local storage after uploading to S3.
Creating a Topic
My Topics
All Topics
Single Topic
User profile view
Editing a profile
Threads
Messaging
Thanks to Pretty Routes