unicodeveloper / laravel-hackathon-starter
使用 Laravel 构建 MVP 网络应用程序并在黑客马拉松中取得领先
Requires
- php: >=5.5.9
- aloha/twilio: ^2.0
- dandelionmood/lastfm: ^0.6.0
- fabpot/goutte: ^3.1
- graham-campbell/github: ^4.2
- hownowstephen/php-foursquare: 1.2.*
- jaapz/tumblr: dev-master
- jrm2k6/cloudder: ^0.2.2
- laravel/framework: 5.2.*
- laravel/socialite: ^2.0
- linkedinapi/linkedin: ^1.1
- lob/lob-php: ^1.6
- mjerwin/clockwork-sms: ^0.9.1
- socialiteproviders/foursquare: ^1.1
- socialiteproviders/instagram: ^1.1
- socialiteproviders/linkedin: ^1.1
- thujohn/twitter: ^2.1
- vinkla/facebook: ^2.0
- vluzrmos/slack-api: ^0.4.6
Requires (Dev)
- fzaninotto/faker: ~1.4
- mockery/mockery: 0.9.*
- phpunit/phpunit: ~4.0
- symfony/css-selector: 2.8.*|3.0.*
- symfony/dom-crawler: 2.8.*|3.0.*
This package is auto-updated.
Last update: 2024-09-19 21:40:59 UTC
README
Laravel Hackathon Starter - SUSUMU 進
如果你参加过任何黑客马拉松,那么你知道启动一个项目需要多少时间:决定要构建什么,选择编程语言,选择网络框架,选择 CSS 框架。过了一段时间,你可能在 GitHub 上有一个初始项目,然后其他团队成员才能开始贡献。或者,如何简单地实现 通过 Facebook 登录 验证?如果你不熟悉 OAuth 2.0 的工作原理,你可能要花费几个小时。
即使你不使用它来参加黑客马拉松,Laravel Hackathon Starter 也一定能为你节省几个小时甚至几天的时间,并可以作为网络开发者的学习指南。
Laravel 是一个具有表达性和优雅语法的网络应用程序框架。Laravel 通过简化大多数网络项目中常用的常见任务,例如身份验证、路由、会话、排队和缓存,来减轻开发过程中的痛苦。
Laravel Hackathon Starter 是一个使用 Laravel 5.2 开发的样板应用程序,旨在让你在黑客马拉松中领先。
现代主题
API 示例
目录
- 特性
- 先决条件
- 入门
- 生成器
- 获取 API 密钥
- 项目结构
- 包列表
- 有用的工具和资源
- 推荐的设计资源
- 推荐的 Laravel 库
- 专业提示
- 常见问题解答
- 它如何工作
- Laravel Eloquent 快速参考
- 部署
- 更改日志
- 贡献
- 许可
特性
- 本地身份验证 使用电子邮件和密码
- 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 等。
- 自动文档
先决条件
- Mysql 或 Postgresql
- 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
- 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
- 授权重定向URI:http://localhost:3000/auth/google/callback
- 点击创建Client ID按钮
- 将Client ID和Client secret键复制并粘贴到
.env
注意:当您准备部署到生产环境时,别忘了将新的URL添加到授权JavaScript源和授权重定向URI中,例如:http://my-awesome-app.herokuapp.com
和http://my-awesome-app.herokuapp.com/auth/google/callback
。对其他提供者也是如此。
- 访问Facebook开发者
- 点击我的应用,然后从下拉菜单中选择*添加新应用
- 选择网站平台并输入您应用的名称
- 点击创建新的Facebook App ID按钮
- 选择最能描述您的应用的类别
- 点击创建App ID按钮
- 在右上角点击跳过快速启动
- 将App ID和App Secret键复制并粘贴到
.env
- 注意:App ID是clientID,App Secret是clientSecret
- 在左侧导航中点击设置标签,然后点击+ 添加平台
- 选择网站
- 在网站URL下输入
http://localhost:3000
注意:成功使用Facebook登录后,用户将被重定向回主页,URL中附加了哈希#_=_
。这不是错误。请参阅此Stack Overflow讨论以了解如何处理它。
- 转到账户设置
- 从侧边栏中选择应用
- 然后在开发者应用中点击注册新应用
- 输入应用程序名称和主页URL
- 授权回调URL:http://localhost:3000/auth/github/callback
- 点击注册应用
- 现在将Client ID和Client Secret键复制并粘贴到
.env
文件中
- 在https://apps.twitter.com/上登录
- 点击创建新应用
- 输入您的应用程序名称、网站和描述
- 回调URL:http://127.0.0.1:3000/auth/twitter/callback
- 转到设置标签
- 在应用程序类型下选择读写访问
- 勾选复选框允许此应用程序用于通过Twitter登录
- 点击更新此Twitter的应用程序设置
- 将Consumer Key和Consumer Secret键复制并粘贴到
.env
文件中
- 在LinkedIn开发者网络上登录
- 从账户名下拉菜单中选择API密钥
- 可能会要求您再次登录
- 点击 添加新应用 按钮
- 填写所有 必填 字段
- OAuth 2.0 重定向 URL: http://localhost:3000/auth/linkedin/callback
- JavaScript API 域名: http://localhost:3000
- 对于 默认应用权限,请确保以下至少一项被勾选
r_basicprofile
- 完成操作后,点击 添加应用 按钮
- 将 API 密钥 和 密钥 复制并粘贴到
.env
文件中 - API 密钥 是您的 clientID
- 密钥 是您的 clientSecret
- 访问 PayPal 开发者
- 登录您的 PayPal 账户
- 在导航栏中点击 应用 > 创建应用
- 输入 应用名称,然后点击 创建应用
- 将 Client ID 和 Secret 密钥复制并粘贴到
.env
文件中 - App ID 是 client_id,App Secret 是 client_secret
- 如果您想对生产环境进行测试并使用实时凭据,请将 host 更改为 api.paypal.com
- 转到 foursquare for Developers
- 在顶部菜单中点击 我的应用
- 点击 创建新应用 按钮
- 输入 应用名称、欢迎页面 URL,
- 对于 重定向 URI: http://localhost:3000/auth/foursquare/callback
- 点击 保存更改
- 将 Client ID 和 Client Secret 密钥复制并粘贴到
.env
文件中
- 转到 http://www.tumblr.com/oauth/apps
- 登录后,点击 +注册应用
- 填写所有详细信息
- 对于 默认回调 URL: http://localhost:3000/auth/tumblr/callback
- 点击 ✔注册
- 将 OAuth 消费者密钥 和 OAuth 消费者密钥 复制并粘贴到
.env
文件中
- 转到 http://steamcommunity.com/dev/apikey
- 使用现有的 Steam 账户登录
- 输入您的 域名,然后点击 注册
- 将 Key 复制并粘贴到
.env
文件中
- 转到 https://sendgrid.com/user/signup
- 注册并通过 激活电子邮件 确认您的账户
- 然后输入您的 SendGrid 用户名 和 密码 到
.env
文件中
- 转到 http://www.mailgun.com
- 注册并添加您的 域名
- 从域名概览中,复制并粘贴默认 SMTP 登录名 和 密码 到
.env
文件中
- 转到 http://mandrill.com
- 注册并添加您的 域名
- 从仪表板中,点击 获取 SMTP 凭据
- 将默认 SMTP 登录名 和 密码 复制并粘贴到
.env
文件中
- 转到 https://test.bitgo.com/
- 注册一个账户。
- 登录仪表板后,前往右上角的选择器并点击“账户设置”
- 在开发者选项卡下,创建您的访问令牌并将其复制粘贴到
.env
文件中
- 访问 https://www.twilio.com/try-twilio
- 注册一个账户。
- 登录仪表板后,展开“显示API凭证”链接
- 复制您的Account Sid和认证令牌
运行 php artisan vendor:publish
项目结构
包列表
有用的工具和资源
- Laravel Daily - 每日提供优秀的Laravel技巧
- Laravel News - Laravel和PHP教程。
- Goodheads - Laravel、PHP和JS教程
- Favicon Generator - 为PC、Android、iOS、Windows 8生成favicon。
推荐的设计资源
- Code Guide - 开发灵活、耐用和可持续的HTML和CSS的标准。
- Bootsnipp - Bootstrap代码片段。
- UIBox - 精选HTML、CSS、JS、UI组件。
- Bootstrap Zero - 免费Bootstrap模板主题。
- Google Bootstrap - Bootstrap的Google风格主题。
- Font Awesome Icons - 它已经包含在Hackathon Starter中,因此请以此页为参考。
- Colors - 更好的网页调色板。
- Creative Button Styles - 优秀的按钮样式。
- Creative Link Effects - CSS中的美丽链接效果。
- Medium Scroll Effect - 当您滚动时,淡入/淡出页眉背景图像。
- GeoPattern - SVG背景图案生成器。
- Trianglify - SVG低多边形背景图案生成器。
推荐的 Laravel 库
- laravel-medialibrary - 容易将媒体文件与Eloquent模型关联。
- laravel-emoji - 在您的应用中使用表情符号
- laravel-quotes - 在您的应用中使用各种引用,特别是DJKHALED
启用自动文档
使用 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。所有安全漏洞都将得到及时解决。
致谢
- Sahat Yalkabov - 精彩
如何感谢您呢?
为什么不在github仓库上star它?我很希望得到关注!为什么不在Twitter或HackerNews上分享这个仓库的链接?传播一下!
别忘了在我的twitter上 关注我!
谢谢!Prosper Otemuyiwa。
许可
MIT许可证(MIT)。有关更多信息,请参阅 许可证文件。