Se você já participou de algum hackathon no passado, então sabe quanto tempo leva para iniciar um projeto: decidir o que construir, escolher uma linguagem de programação, escolher um framework web, escolher um framework CSS. Um tempo depois, você poderá ter um projeto inicial no GitHub e só então outros membros da equipe poderão começar a contribuir. Ou que tal fazer algo tão simples como Entrar com autenticação do Facebook ? Você pode gastar horas nisso se não estiver familiarizado com o funcionamento do OAuth 2.0.
Mesmo se você não estiver usando isso para um hackathon, o Laravel Hackathon Starter certamente economizará horas ou até dias de desenvolvimento para qualquer desenvolvedor e pode servir como um guia de aprendizado para desenvolvedores web.
Laravel é um framework de aplicação web com sintaxe expressiva e elegante. O Laravel tenta aliviar o desenvolvimento, facilitando tarefas comuns usadas na maioria dos projetos web, como autenticação, roteamento, sessões, enfileiramento e cache.
Laravel Hackathon Starter é um aplicativo padrão desenvolvido com Laravel 5.2 para mantê-lo à frente em hackathons.
xcode-select --install
)sudo apt-get install build-essential
sudo dnf groupinstall "Development Tools"
sudo zypper install --type pattern devel_basis
npm install -g @useoptic/cli
(necessário para documentação automática)Nota: Se você é novo no Laravel, recomendo assistir ao screencast do Laravel From Scratch de Jeffery Way que ensina o Laravel 5 do zero. Alternativamente, aqui está outro ótimo tutorial para construir um aplicativo de gerenciamento de projetos para desenvolvedores iniciantes/intermediários - Como construir um aplicativo de gerenciamento de projetos no 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
Primeiro, baixe o instalador do Laravel Hackathon Starter Pack usando o Composer:
composer global require "unicodeveloper/hackathon-installer"
Certifique-se de colocar o diretório ~/.composer/vendor/bin
(ou o diretório equivalente para seu sistema operacional) em seu PATH para que o executável larathon
possa ser localizado em seu sistema.
Uma vez instalado, o larathon new
criará uma nova instalação do Laravel Hackathon Starter Pack no diretório que você especificar. Por exemplo, larathon new mvp
criará um diretório chamado mvp
contendo uma nova instalação do Laravel Hackathon Starter Pack com todas as suas dependências já instaladas. Este método de instalação é muito mais rápido do que instalar via Composer:
larathon new mvp
Alternativamente, você também pode instalar o Laravel Hackathon Starter Pack emitindo o comando create-project
do Composer em seu terminal:
composer create-project --prefer-dist unicodeveloper/laravel-hackathon-starter hotel
Este pacote inicial inclui as seguintes APIs. Você precisará obter credenciais apropriadas, como ID do cliente, segredo do zClient, chave de API ou nome de usuário e senha, passando por cada provedor e gerando novas credenciais.
.env
Observação: quando estiver pronto para implantar em produção, não se esqueça de adicionar seu novo URL às origens Javascript autorizadas e ao URI de redirecionamento autorizado , por exemplo, http://my-awesome-app.herokuapp.com
e http://my-awesome-app.herokuapp.com/auth/google/callback
respectivamente. O mesmo vale para outros provedores.
.env
http://localhost:3000
em URL do site Observação: após um login bem-sucedido no Facebook, o usuário será redirecionado de volta à página inicial com o hash #_=_
anexado ao URL. Não é um bug. Consulte esta discussão sobre Stack Overflow para saber como lidar com isso.
.env
.env
r_basicprofile
.env
.env
.env
.env
.env
.env
.env
.env
.env
.env
execute php artisan vendor:publish
Nome | Descrição |
---|---|
configuração /app.php | Configuração para provedores de serviços e fachadas |
configuração /auth.php | Configuração para redefinições de senha |
configuração /broadcasting.php | Configuração para transmissão |
configuração /cache.php | Configuração para geração e armazenamento de cache |
configuração /cloudder.php | Configuração para nuvem |
configuração /compile.php | Configuração para compilação |
config /database.php | Configuração para drivers de banco de dados |
configuração /filesystems.php | Configuração para diferentes sistemas de arquivos |
configuração /github.php | Configuração para API do GitHub |
configurar /mail.php | Configuração para e-mails |
config /queue.php | Configuração para fila |
configuração /services.php | Configuração para diversos serviços como mailgun etc. |
configuração /sessão.php | Configuração para sessões |
config /ttwitter.php | Arquivo de configuração da API do Twitter |
configuração /twilio.php | Arquivo de configuração da API Twilio |
configuração /view.php | Configuração para localização de visualizações e cache de visualizações |
controladores /AccountController.php | Controlador para gerenciamento de contas |
controladores /AviaryController.php | Controlador para funcionalidade da API Aviary |
controladores /ClockworkController.php | Controlador para funcionalidade da API Clockwork |
controladores /ContactController.php | Controlador para página de contato |
controladores /Controller.php | Controlador Base |
controladores /GithubController.php | Funcionalidade do controlador para API do Github |
controladores /LastFmController.php | Controlador para funcionalidade da API LastFM |
controladores /LobController.php | Controlador para funcionalidade da API Lob. |
controladores /NytController.php | Controlador para funcionalidade da API do New York Times |
controladores /OauthController.php | Controlador para autenticação |
controladores /PaypalController.php | Controlador para funcionalidade da API Paypal |
controladores /SteamController.php | Controlador para funcionalidade da API Stream |
controladores /StripeController.php | Funcionalidade do controlador para Stripe API |
controladores /TwilioController.php | Controlador para funcionalidade da API Twilio |
controladores /TwitterController.php | Controlador para funcionalidade da API do Twitter |
controladores /WebScrapingController.php | Controlador para Web Scraping. |
controladores /YahooController.php | Controlador para funcionalidade da API do Yahoo |
controladores /user.js | Controlador para gerenciamento de contas de usuários. |
modelos /User.php | Modelo para usuário. |
público / | Ativos estáticos (fontes, css, js, img). |
público / css /main.css | Folha de estilo principal do seu aplicativo. |
recursos/visualizações/conta / | Modelos para login, redefinição de senha, inscrição, perfil . |
visualizações/api / | Modelos para exemplos de API. |
visualizações/parciais /alerts.blade.php | Notificações flash de erro, informação e sucesso. |
visualizações/parciais /navbar.blade.php | Modelo parcial da barra de navegação. |
visualizações /layouts**/master.blade.php | Modelo básico. |
visualizações /apidashboard.blade.php | Modelo de painel de API. |
visualizações /contact.blade.php | Modelo de página de contato. |
visualizações /welcome.blade.php | Modelo de página inicial. |
.travis.yml | Integração Travis CI. |
.env.exemplo | Suas chaves de API, tokens, senhas e URI do banco de dados. |
compositor.json | Arquivo para carregar todos os pacotes php. |
pacote.json | Arquivo para carregar todos os módulos de nó necessários. |
artesão | Arquivo para permitir a execução de comandos |
Pacote | Descrição |
---|---|
socialite | Faça login com Facebook, Twitter e Github |
provedores de socialite | Faça login com LinkedIn, Instagram |
nuvem | Carregar imagens para Cloudinary |
laravel github | Biblioteca de APIs do Github |
mecanismo de relógio | Biblioteca de API Clockwork SMS. |
gota | Raspe páginas da web usando sintaxe no estilo jQuery. |
estrutura laravel | Estrutura web PHP |
Biblioteca API do Twitter | |
Twilio | Biblioteca de API Twilio |
lob-php | Biblioteca de API Lob |
lastfm-api-wrapper | Biblioteca de API Lastfm |
phpunit | Biblioteca de testes PHP |
beber http | Biblioteca simplificada de solicitações HTTP |
Usando o Optic, você pode usar sua API normalmente, documentando automaticamente as mudanças de comportamento. Para habilitar isso, primeiro você precisa baixar o Optic.
npm install -g @useoptic/cli
Depois de instalar o Optic, você pode começar a documentar suas solicitações executando api start
. A execução deste comando criará uma versão proxy de sua API, disponível em localhost:4000 - agora, você pode usar a API normalmente aqui, e o Optic notará automaticamente diferenças no comportamento documentado, permitindo que você crie documentação automaticamente conforme sua API muda .
Para visualizar a documentação atual da API, execute api spec
no diretório raiz.
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
Para mais informações sobre Óptica, confira a documentação.
Token Mismatch Exception
ao enviar um formulário?Você precisa adicionar o seguinte elemento de entrada oculto ao seu formulário. Isso foi adicionado à base de código existente como parte da proteção CSRF.
{!! csrf_field() !!}
Provavelmente, você não gerou a chave do aplicativo, então execute php artisan key:generate
. Provavelmente, você não colocou suas credenciais no arquivo .env.
Esta seção tem como objetivo fornecer uma explicação detalhada sobre como funciona uma funcionalidade específica. Talvez você esteja apenas curioso para saber como funciona, ou talvez esteja perdido e confuso ao ler o código, espero que ele forneça alguma orientação para você.
As mensagens Flash permitem exibir uma mensagem no final da solicitação e acessá-la na próxima solicitação e somente na próxima solicitação. Por exemplo, em uma tentativa de login malsucedida, você exibiria um alerta com alguma mensagem de erro, mas assim que atualizar a página ou visitar uma página diferente e voltar à página de login, essa mensagem de erro desaparecerá. Ele é exibido apenas uma vez. Todas as mensagens flash estão disponíveis em suas visualizações por meio de sessões laravel.
Uma maneira mais correta de dizer "Como faço para criar uma nova rota". O arquivo principal routes.php
contém todas as rotas. Cada rota possui uma função de retorno de chamada associada a ela. Às vezes você verá 3 ou mais argumentos para rotas. Em casos como esse, o primeiro argumento ainda é uma string de URL, enquanto os argumentos do meio são chamados de middleware. Pense no middleware como uma porta. Se esta porta impedir que você continue em frente, você não acessará a função de retorno de chamada. Um exemplo é uma rota que requer autenticação.
Route:: get ( ' /account ' , ' UserController@getAccount ' );
Sempre vai da esquerda para a direita. Um usuário visita a página /account
. Em seguida, o middleware de auth
verifica se você está autenticado:
Route:: get ( ' /account ' , [
' uses ' => ' AccountController@getAccountPage ' ,
' as ' => ' account.dashboard ' ,
' middleware ' => [ ' auth ' ]
]);
Se você estiver autenticado, deixe esse visitante passar pela sua "porta" chamando return $next($request);
no middleware de autenticação e se estiver autenticado, você será redirecionado para a página Gerenciamento de contas , caso contrário, será redirecionado para a página de Login .
Aqui está um fluxo de trabalho típico para adicionar novas rotas ao seu aplicativo. Digamos que estamos construindo uma página que lista todos os livros do banco de dados.
Passo 1. Comece definindo uma rota.
Route:: get ( ' /books ' , ' BookController@getBooks ' );
Passo 2. Crie um novo modelo Book.php
dentro do diretório do aplicativo . Você pode simplesmente executar php artisan make:model Book
namespace App ;
class Book
{
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $ fillable = [
' name ' , ' isbn ' ,
];
}
Etapa 3. Crie um arquivo de migração assim: 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 ' );
}
}
Etapa 4. Crie um novo arquivo de controlador chamado BookController
dentro do diretório app/Http/Controllers . Você pode simplesmente executar 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 );
}
}
Etapa 5. Crie o modelo 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
É isso!
Quando estiver pronto para implantar seu aplicativo, você precisará criar uma conta em uma plataforma em nuvem para hospedá-lo. Essas não são as únicas opções, mas são minhas principais escolhas. Pela minha experiência, Heroku é o mais fácil de começar, implantações e suporte de domínio personalizado em contas gratuitas.
heroku login
e insira suas credenciais do Herokuheroku create
web: vendor/bin/heroku-php-nginx public
ou web: vendor/bin/heroku-php-apache2 public
se você preferir usar o nginx.heroku addons:add heroku-postgresql:dev
para adicionar um banco de dados Postgres ao seu aplicativo heroku a partir do seu terminalgit push heroku master
. Feito!heroku run php artisan migrate
Nota: Para instalar complementos do Heroku, sua conta deve ser verificada.
git push -f openshift master
-f
(forçar) porque o OpenShift cria um servidor fictício com a página de boas-vindas quando você cria um novo aplicativo Node.js. Passar o sinalizador -f
substituirá tudo no repositório do projeto Hackathon Starter . Não execute git pull
pois isso criará conflitos de mesclagem desnecessários.git remote add azure [Azure Git URL]
git push azure master
Nota: Orientações alternativas, incluindo como configurar o projeto com um pipeline DevOps estão disponíveis em http://ibm.biz/hackstart. Uma versão mais longa destas instruções com capturas de tela está disponível em http://ibm.biz/hackstart2. Além disso, não deixe de conferir o vídeo Inicie seus esforços de hackathon com DevOps Services e Bluemix.
Obrigado por considerar contribuir com o Laravel Hackathon Starter. O guia de contribuição pode ser encontrado no Arquivo de Contribuição
Se você descobrir uma vulnerabilidade de segurança no Laravel Hackathon Starter, envie um e-mail para Prosper Otemuyiwa em [email protected]. Todas as vulnerabilidades de segurança serão prontamente resolvidas.
Por que não marcar o repositório do github com estrela? Eu adoraria a atenção! Por que não compartilhar o link deste repositório no Twitter ou no HackerNews? Espalhe a palavra!
Não se esqueça de me seguir no twitter!
Obrigado! Próspero Otemuyiwa.
A licença MIT (MIT). Consulte Arquivo de licença para obter mais informações.