Skip to content

MilesPong/indigo

Repository files navigation

Indigo

README | 简体中文

A blog application built with Laravel, Materialize and Vue.js.

Indigo is a project I mainly learn to how to develop a Laravel application in the right way, include using design patterns, modern coding tricks, and other useful skills.

There is an introduction(Chinese) about this project as well, you can access it here.

Screenshot

screenshot

Features

  • Basic blog features like post, page, archives, search, etc.
  • Material UI (responsive layout)
  • Disqus comment integrated
  • Repositories pattern
  • Markdown editor
  • Trash support
  • Counter with multiple drivers support
  • Backup with Google Drive storage support
  • Multiple Mix for compiling backend and frontend
  • Deployer integration

More features can be found in CHANGELOG.md

Server Requirements

Basic requirements are listed in the official document.

Also, additional services below may be used and recommended

  • Redis
  • Algolia
  • Google Drive
  • Slack
  • Disqus
  • Youdao Translate

Installation

Use Docker

To avoid some deployment issues, you can run this application in Docker as well. Please check this document for more details.

Configuration

$ git clone https://github.com/MilesPong/indigo.git
$ cd indigo
$ cp .env.example .env
$ composer install
$ php artisan key:generate

Change your DB settings and other services' configurations

# For Chinese translation in slug
YOUDAO_APP_KEY=
YOUDAO_APP_SECRET=

# Google Analytics
GOOGLE_ANALYTICS_ID=

# Visitor log
ENABLE_VISITOR_LOG=false

# Comment
COMMENT_DRIVER=
DISQUS_SHORT_NAME=

FILESYSTEM_DRIVER=public

# For receiving feedback while failed in backup
ADMIN_EMAIL=

MAIL_FROM_ADDRESS=
MAIL_FROM_NAME=

# Search
SCOUT_QUEUE=false
SCOUT_DRIVER=null

Change log channel in case you are not using slack channel which is enabled in stack channel by default, such as LOG_CHANNEL=single.

Create a symbolic link for public driver of filesystem

$ php artisan storage:link

Schedule are required by default, set it up as follow

$ crontab -e
# Append this to the end
# * * * * * php /path/to/project/artisan schedule:run >> /dev/null 2>&1

Auto backup is enabled by default, you may have a look about the configuration under config/backup.php

Migration

$ php artisan migrate --seed

Create the first user (admin) by using command below:

$ php artisan user:add

Fake data is support for development, just seed the database:

$ php artisan db:seed --class=FakeDataSeeder

Compiling Assets

$ npm install
$ npm run dev # Frontend
$ npm run admin-dev # Backend

Note: Code is open-sourced and you know what to do when "Something went wrong".

Changelog

Refer to the CHANGELOG.md for a full history of the project.

TODO

Check this out in Gist.

Links

Contributing

Any bug report or pull request is welcome.

License

The project is open-sourced software licensed under the MIT license.