unicodeveloper/laravel-hackathon-starter

使用 Laravel 构建 MVP 网络应用程序并在黑客马拉松中取得领先

1.0.0 2016-02-28 12:20 UTC

README

Laravel Hackathon Starter - SUSUMU 進

Build Status Quality Score

如果你参加过任何黑客马拉松,那么你知道启动一个项目需要多少时间:决定要构建什么,选择编程语言,选择网络框架,选择 CSS 框架。过了一段时间,你可能在 GitHub 上有一个初始项目,然后其他团队成员才能开始贡献。或者,如何简单地实现 通过 Facebook 登录 验证?如果你不熟悉 OAuth 2.0 的工作原理,你可能要花费几个小时。

即使你不使用它来参加黑客马拉松,Laravel Hackathon Starter 也一定能为你节省几个小时甚至几天的时间,并可以作为网络开发者的学习指南。

Laravel 是一个具有表达性和优雅语法的网络应用程序框架。Laravel 通过简化大多数网络项目中常用的常见任务,例如身份验证、路由、会话、排队和缓存,来减轻开发过程中的痛苦。

Laravel Hackathon Starter 是一个使用 Laravel 5.2 开发的样板应用程序,旨在让你在黑客马拉松中领先。

现代主题

API 示例

目录

特性

  • 本地身份验证 使用电子邮件和密码
  • OAuth 1.0a 验证 通过 Twitter
  • OAuth 2.0 验证 通过 Facebook、Google、GitHub、LinkedIn、Instagram
  • 闪光通知
  • MVC 项目结构
  • Bootstrap 3
  • 联系表单(由 Mailgun、Sendgrid 或 Mandrill 提供)
  • 账户管理
  • Gravatar
  • 个人资料详细信息
  • 更改密码
  • 忘记密码
  • 重置密码
  • 删除账户
  • CSRF 保护
  • API 示例:Facebook、Foursquare、Last.fm、Tumblr、Twitter、Stripe、LinkedIn 等。
  • 自动文档

先决条件

  • MysqlPostgresql
  • PHP 5.4+
  • 命令行工具
  •  Mac OS X: Xcode (或 OS X 10.9+: xcode-select --install)
  •  Windows: Visual Studio
  •  Ubuntu /  Linux Mint: sudo apt-get install build-essential
  •  Fedora: sudo dnf groupinstall "Development Tools"
  •  OpenSUSE: sudo zypper install --type pattern devel_basis
  •  Optic: npm install -g @useoptic/cli (needed for automatic documentation)

注意:如果您是 Laravel 新手,我建议您观看 Jeffery Way 的 Laravel 从零开始 视频教程,该教程从零开始教授 Laravel 5。或者,这里还有一个针对初学者/中级开发者的优秀教程,用于在 Laravel 5 中构建项目管理应用程序 - 如何在 Laravel 5 中构建项目管理应用程序

入门

通过克隆仓库

# Get the project
git clone https://github.com/unicodeveloper/laravel-hackathon-starter.git hackathon-starter-pack

# Change directory
cd hackathon-starter-pack

# Copy .env.example to .env
cp .env.example .env

# Create a database (with mysql or postgresql)
# And update .env file with database credentials
# DB_CONNECTION=mysql
# DB_HOST=127.0.0.1
# DB_DATABASE=laravelhackathon
# DB_USERNAME=root
# DB_PASSWORD=root

# Install Composer dependencies
composer install 

# Generate application secure key (in .env file)
php artisan key:generate

# Generate application secure key (in .env file)
php artisan key:generate

php artisan serve

通过安装程序

首先,使用 Composer 下载 Laravel Hackathon Starter Pack 安装程序

composer global require "unicodeveloper/hackathon-installer"

确保将 ~/.composer/vendor/bin 目录(或您操作系统中的等效目录)放置在您的 PATH 中,以便系统可以找到 larathon 可执行文件。

安装完成后,larathon new 命令将在您指定的目录中创建一个新的 Laravel Hackathon Starter Pack 安装。例如,larathon new mvp 将创建一个名为 mvp 的目录,其中包含已安装所有依赖项的新 Laravel Hackathon Starter Pack 安装。此安装方法比通过 Composer 安装更快。

larathon new mvp

通过 Composer Create-Project 命令安装

或者,您也可以通过在终端中发出 Composer 的 create-project 命令来安装 Laravel Hackathon Starter Pack

composer create-project --prefer-dist unicodeveloper/laravel-hackathon-starter hotel

此启动包包括以下 API。您需要通过每个提供程序获取适当的凭据,例如客户端 ID、客户端密钥、API 密钥或用户名和密码,方法是遍历每个提供程序并生成新的凭据。

  • Cloudder
  • Twitter
  • Twillo
  • Github
  • Slack
  • 社交ite 提供商
  • 社交ite LinkedIn

获取 API 密钥

  • 访问 Google Cloud 控制台
  • 单击 创建项目 按钮
  • 输入 项目名称,然后单击 创建 按钮
  • 然后在侧边栏中点击APIs & auth,并选择API标签
  • 社交API下点击Google+ API,然后点击启用API
  • 接下来,在侧边栏中的APIs & auth下点击Credentials标签
  • 点击创建新Client ID按钮
  • 选择Web应用并点击配置同意屏幕
  • 填写所需字段然后点击保存
  • 创建Client ID模态对话框中
  • 应用程序类型:Web应用
  • 授权JavaScript源http://localhost:3000
  • 授权重定向URIhttp://localhost:3000/auth/google/callback
  • 点击创建Client ID按钮
  • Client IDClient secret键复制并粘贴到.env

注意:当您准备部署到生产环境时,别忘了将新的URL添加到授权JavaScript源授权重定向URI中,例如:http://my-awesome-app.herokuapp.comhttp://my-awesome-app.herokuapp.com/auth/google/callback。对其他提供者也是如此。

  • 访问Facebook开发者
  • 点击我的应用,然后从下拉菜单中选择*添加新应用
  • 选择网站平台并输入您应用的名称
  • 点击创建新的Facebook App ID按钮
  • 选择最能描述您的应用的类别
  • 点击创建App ID按钮
  • 在右上角点击跳过快速启动
  • App IDApp Secret键复制并粘贴到.env
  • 注意:App IDclientIDApp SecretclientSecret
  • 在左侧导航中点击设置标签,然后点击+ 添加平台
  • 选择网站
  • 网站URL下输入http://localhost:3000

注意:成功使用Facebook登录后,用户将被重定向回主页,URL中附加了哈希#_=_。这不是错误。请参阅此Stack Overflow讨论以了解如何处理它。

  • 转到账户设置
  • 从侧边栏中选择应用
  • 然后在开发者应用中点击注册新应用
  • 输入应用程序名称主页URL
  • 授权回调URLhttp://localhost:3000/auth/github/callback
  • 点击注册应用
  • 现在将Client IDClient Secret键复制并粘贴到.env文件中

  • https://apps.twitter.com/上登录
  • 点击创建新应用
  • 输入您的应用程序名称、网站和描述
  • 回调URLhttp://127.0.0.1:3000/auth/twitter/callback
  • 转到设置标签
  • 应用程序类型下选择读写访问
  • 勾选复选框允许此应用程序用于通过Twitter登录
  • 点击更新此Twitter的应用程序设置
  • Consumer KeyConsumer Secret键复制并粘贴到.env文件中

  • LinkedIn开发者网络上登录
  • 从账户名下拉菜单中选择API密钥
  • 可能会要求您再次登录
  • 点击 添加新应用 按钮
  • 填写所有 必填 字段
  • OAuth 2.0 重定向 URLhttp://localhost:3000/auth/linkedin/callback
  • JavaScript API 域名http://localhost:3000
  • 对于 默认应用权限,请确保以下至少一项被勾选
  • r_basicprofile
  • 完成操作后,点击 添加应用 按钮
  • API 密钥密钥 复制并粘贴到 .env 文件中
  • API 密钥 是您的 clientID
  • 密钥 是您的 clientSecret

  • 注册 或登录到您的 仪表板
  • 点击您的个人资料,然后点击“账户设置”
  • 然后点击 API 密钥
  • 复制 密钥,并将其添加到 .env 文件中

  • 访问 PayPal 开发者
  • 登录您的 PayPal 账户
  • 在导航栏中点击 应用 > 创建应用
  • 输入 应用名称,然后点击 创建应用
  • Client IDSecret 密钥复制并粘贴到 .env 文件中
  • App IDclient_idApp Secretclient_secret
  • 如果您想对生产环境进行测试并使用实时凭据,请将 host 更改为 api.paypal.com

  • 转到 https://sendgrid.com/user/signup
  • 注册并通过 激活电子邮件 确认您的账户
  • 然后输入您的 SendGrid 用户名密码.env 文件中

  • 转到 http://www.mailgun.com
  • 注册并添加您的 域名
  • 从域名概览中,复制并粘贴默认 SMTP 登录名密码.env 文件中

  • 转到 http://mandrill.com
  • 注册并添加您的 域名
  • 从仪表板中,点击 获取 SMTP 凭据
  • 将默认 SMTP 登录名密码 复制并粘贴到 .env 文件中

  • 转到 https://test.bitgo.com/
  • 注册一个账户。
  • 登录仪表板后,前往右上角的选择器并点击“账户设置”
  • 在开发者选项卡下,创建您的访问令牌并将其复制粘贴到 .env 文件中

运行 php artisan vendor:publish

项目结构

包列表

有用的工具和资源

推荐的设计资源

推荐的 Laravel 库

启用自动文档

使用 Optic,您可以使用API,同时自动记录行为变化。要启用此功能,您首先需要下载Optic。

    npm install -g @useoptic/cli

安装Optic后,您可以通过运行 api start 开始记录您的请求。运行此命令将创建API的代理版本,可在 localhost:4000 上找到 - 现在,您在此处可以像平常一样使用API,Optic将自动检测记录的行为差异,允许您在API更改时自动创建文档。

要查看API的当前文档,请在根目录下运行 api spec

有用的命令

    api start # use this to start monitoring your API
    api spec # use this to inspect the current documentation of your API
    api generate:oas # generates an OpenAPI specification for your currently documented API

有关Optic的更多信息,请查看文档

常见问题解答

为什么我在提交表单时得到 Token Mismatch Exception 异常?

您需要将以下隐藏的输入元素添加到您的表单中。这已经在现有的代码库中作为CSRF保护的一部分添加。

{!! csrf_field() !!}

我在部署应用时遇到了“whoops”错误,为什么?

可能你没有生成应用密钥,所以运行 php artisan key:generate。可能你没有在你的 .env 文件中放入凭证。

它的工作原理(简要指南)

本节旨在为你详细解释某个功能是如何工作的。也许你只是好奇它是如何工作的,也许你在阅读代码时感到迷茫和困惑,我希望它能为你提供一些指导。

在这个项目中闪存消息是如何工作的?

闪存消息允许你在请求结束时显示一条消息,并在下一个请求中访问它,并且只在下一次请求中。例如,在登录失败尝试中,你会显示一个带有某些错误消息的警告,但当你刷新该页面或访问不同的页面然后回到登录页面时,该错误消息将消失。它只显示一次。所有闪存消息都可通过laravel会话在你的视图中使用。

我该如何创建一个新页面?

更准确的说法可能是“我该如何创建一个新路由”。主文件 routes.php 包含了所有路由。每个路由都与一个回调函数相关联。有时你会在路由中看到3个或更多的参数。在这种情况下,第一个参数仍然是一个URL字符串,而中间参数被称为中间件。将中间件想象成一扇门。如果这扇门阻止你继续前进,你就无法到达回调函数。一个这样的例子是需要身份验证的路由。

Route::get('/account', 'UserController@getAccount');

它始终从左到右进行。用户访问 /account 页面。然后 auth 中间件检查你是否已登录

 Route::get('/account', [
        'uses' => 'AccountController@getAccountPage',
        'as'   => 'account.dashboard',
        'middleware' => ['auth']
]);

如果你已登录,你将调用 return $next($request); 在 auth 中间件中让这个访客通过你的“门”,如果你已登录,你将被重定向到 账户管理 页面,否则你将被重定向到 登录 页面。

以下是向你的应用程序添加新路由的典型工作流程。假设我们正在构建一个从数据库中列出所有书籍的页面。

步骤 1. 首先定义一个路由。

Route::get('/books', 'BookController@getBooks');

步骤 2.app 目录中创建一个新的模型 Book.php。你可以简单地运行 php artisan make:model Book

namespace App;

class Book
{
    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = [
        'name', 'isbn',
    ];
}

步骤 3. 创建一个迁移文件,如下所示:php artisan make:migration create_books_table

use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateBooksTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('books', function (Blueprint $table) {
            $table->increments('id');
            $table->string('name');
            $table->string('isbn');
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::drop('books');
    }
}

步骤 4.app/Http/Controllers 目录中创建一个新的控制器文件,名为 BookController。你可以简单地运行 php artisan make:controller BookController

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Book;
use App\Http\Requests;
use App\Http\Controllers\Controller;

class BookController extends Controller
{
    /**
     * Return all books
     * @return mixed
     */
    public function getBooks()
    {
        $books = Book::all();

        return view('books')->withBooks($books);
    }
}

步骤 5. 创建 books.blade.php 模板。

@extends('layouts.master')

@section('content')
    <div class="main-container">
        @include('layouts.partials.alerts')

        <div class="page-header">
            <h2><i style="color: #f00" class="fa fa-book"></i>All Books</h2>
        </div>

        <ul>
        @foreach ($books as $book)
            <li> {{ $book->name }} </li>
        @endforeach
        </div>
    </div>
@stop

就是这样!

Laravel Eloquent 快速参考

部署

一旦你准备好部署你的应用,你需要在一个云平台上创建一个账户来托管它。这些不是唯一的选择,但它们是我最喜欢的。根据我的经验,Heroku 是最容易开始的,支持免费账户的部署和自定义域名。

Heroku 的一步部署

  • 下载并安装 Heroku 工具包
  • 在终端中运行 heroku login 并输入你的 Heroku 凭证
  • 你的应用程序 目录运行 heroku create
  • 在你的应用程序根目录中创建一个 Procfile。这个文件只需包含 web: vendor/bin/heroku-php-nginx public 或如果你更喜欢使用 nginx,则为 web: vendor/bin/heroku-php-apache2 public
  • 在终端中运行 heroku addons:add heroku-postgresql:dev 以将 Postgres 数据库添加到你的 Heroku 应用
  • 最后,运行 git push heroku master。完成!
  • 在 Heroku 上运行 artisan 命令,如下所示 heroku run php artisan migrate

注意:要安装 Heroku 扩展,你的账户必须经过验证。

  • 最后,你现在可以通过运行 git push -f openshift master 将你的代码推送到 OpenShift。
  • 注意: 第一次运行此命令时,您必须传递 -f(强制)标志,因为OpenShift在您创建新的Node.js应用程序时将创建一个带有欢迎页面的虚拟服务器。传递 -f 标志将用您的 Hackathon Starter 项目仓库覆盖所有内容。请不要 运行 git pull,因为它将创建不必要的合并冲突。
  • 完成啦!

  • 登录到 Windows Azure 管理门户
  • 点击门户左下角的 + NEW 按钮
  • 点击 COMPUTE,然后 WEB APP,然后 QUICK CREATE
  • URL 输入一个名称,并选择您的网站的数据中心 REGION
  • 点击 创建WEB APP 按钮
  • 当网站状态变为 运行中 时,点击网站名称以访问仪表板
  • 在快速入门页面的右下角,选择 从源控制设置部署
  • 从列表中选择 本地Git仓库,然后点击箭头
  • 为了启用Git发布,Azure将要求您创建用户名和密码
  • 当Git仓库准备就绪后,您将看到一个 GIT URL
  • 在您的 Hackathon Starter 目录中,运行 git remote add azure [Azure Git URL]
  • 要推送您的更改,只需运行 git push azure master
  • 注意: 您将需要输入您之前创建的密码
  • 在您的 Windows Azure Web App 的 部署 选项卡中,您将看到部署历史记录

注意: 其他说明,包括如何使用DevOps管道设置项目,可在 http://ibm.biz/hackstart 找到。带有截图的更详细说明可在 http://ibm.biz/hackstart2 找到。此外,请务必查看 使用DevOps服务和Bluemix启动您的Hackathon工作 视频。

贡献

感谢您考虑为Laravel Hackathon Starter做出贡献。贡献指南可在 贡献文件 中找到

安全漏洞

如果您在Laravel Hackathon Starter中发现安全漏洞,请向Prosper Otemuyiwa发送电子邮件至 prosperotemuyiwa@gmail.com。所有安全漏洞都将得到及时解决。

致谢

如何感谢您呢?

为什么不在github仓库上star它?我很希望得到关注!为什么不在Twitter或HackerNews上分享这个仓库的链接?传播一下!

别忘了在我的twitter上 关注我

谢谢!Prosper Otemuyiwa。

许可

MIT许可证(MIT)。有关更多信息,请参阅 许可证文件