Si ha asistido a algún hackathon en el pasado, entonces sabe cuánto tiempo lleva comenzar un proyecto: decidir qué construir, elegir un lenguaje de programación, elegir un marco web, elegir un marco CSS. Un tiempo después, es posible que tengas un proyecto inicial en GitHub y solo entonces otros miembros del equipo podrán comenzar a contribuir. ¿O qué tal hacer algo tan sencillo como iniciar sesión con autenticación de Facebook ? Puede dedicarle horas si no está familiarizado con el funcionamiento de OAuth 2.0.
Incluso si no está utilizando esto para un hackathon, Laravel Hackathon Starter seguramente le ahorrará horas o incluso días de tiempo de desarrollo a los desarrolladores y puede servir como una guía de aprendizaje para los desarrolladores web.
Laravel es un marco de aplicación web con una sintaxis elegante y expresiva. Laravel intenta aliviar el dolor del desarrollo facilitando las tareas comunes utilizadas en la mayoría de los proyectos web, como autenticación, enrutamiento, sesiones, colas y almacenamiento en caché.
Laravel Hackathon Starter es una aplicación estándar desarrollada con Laravel 5.2 para mantenerte a la vanguardia en los 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
(necesario para la documentación automática)Nota: Si eres nuevo en Laravel, te recomiendo ver el screencast de Laravel From Scratch de Jeffery Way que enseña Laravel 5 desde cero. Alternativamente, aquí hay otro excelente tutorial para crear una aplicación de gestión de proyectos para desarrolladores principiantes/intermedios: Cómo crear una aplicación de gestión de proyectos en 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
Primero, descargue el instalador del paquete de inicio de Laravel Hackathon usando Composer:
composer global require "unicodeveloper/hackathon-installer"
Asegúrese de colocar el directorio ~/.composer/vendor/bin
(o el directorio equivalente para su sistema operativo) en su RUTA para que su sistema pueda ubicar el ejecutable larathon
.
Una vez instalado, el larathon new
creará una instalación nueva de Laravel Hackathon Starter Pack en el directorio que especifique. Por ejemplo, larathon new mvp
creará un directorio llamado mvp
que contiene una nueva instalación del Laravel Hackathon Starter Pack con todas sus dependencias ya instaladas. Este método de instalación es mucho más rápido que la instalación mediante Composer:
larathon new mvp
Alternativamente, también puedes instalar Laravel Hackathon Starter Pack emitiendo el comando create-project
de Composer en tu terminal:
composer create-project --prefer-dist unicodeveloper/laravel-hackathon-starter hotel
Este paquete de inicio incluye las siguientes API. Deberá obtener las credenciales adecuadas, como ID de cliente, secreto de zClient, clave API o nombre de usuario y contraseña, consultando cada proveedor y generando nuevas credenciales.
.env
Nota: Cuando esté listo para implementar en producción, no olvide agregar su nueva URL a Orígenes de Javascript autorizados y URI de redireccionamiento autorizado , por ejemplo http://my-awesome-app.herokuapp.com
y http://my-awesome-app.herokuapp.com/auth/google/callback
respectivamente. Lo mismo ocurre con otros proveedores.
.env
http://localhost:3000
en URL del sitio Nota: Después de iniciar sesión correctamente en Facebook, el usuario será redirigido a la página de inicio con el hash #_=_
agregado en la URL. No es un error. Consulte esta discusión sobre Stack Overflow para conocer formas de manejarlo.
.env
.env
r_basicprofile
.env
.env
.env
.env
.env
.env
.env
.env
.env
.env
ejecutar php artisan vendor:publish
Nombre | Descripción |
---|---|
configuración /aplicación.php | Configuración para proveedores de servicios y fachadas. |
configuración /auth.php | Configuración para restablecimiento de contraseña |
configuración /broadcasting.php | Configuración para retransmisión |
configuración /cache.php | Configuración para generación y almacenamiento de caché. |
configuración /cloudder.php | Configuración para cloudinary |
configuración /compile.php | Configuración para compilación |
configuración /base de datos.php | Configuración de controladores de base de datos |
configuración /sistemas de archivos.php | Configuración para diferentes sistemas de archivos. |
configuración /github.php | Configuración para la API de github |
configuración /correo.php | Configuración para correos |
configuración /cola.php | Configuración para cola |
configuración /servicios.php | Configuración para varios servicios como mailgun, etc. |
configuración /sesión.php | Configuración para sesiones |
configuración /ttwitter.php | Archivo de configuración de la API de Twitter |
configuración /twilio.php | Archivo de configuración de la API de Twilio |
configuración /view.php | Configuración para la ubicación de vistas y caché de vistas |
controladores /AccountController.php | Controlador de gestión de cuentas |
controladores /AviaryController.php | Controlador para la funcionalidad API de Aviary |
controladores /ClockworkController.php | Controlador para la funcionalidad API Clockwork |
controladores /ContactController.php | Controlador para página de contacto |
controladores /Controlador.php | Controlador base |
controladores /GithubController.php | Controlador para la funcionalidad API de Github |
controladores /LastFmController.php | Controlador para la funcionalidad API de LastFM |
controladores /LobController.php | Controlador para la funcionalidad Lob API. |
controladores /NytController.php | Controlador para la funcionalidad API del New York Times |
controladores /OauthController.php | Controlador de autenticación |
controladores /PaypalController.php | Controlador para la funcionalidad API de Paypal |
controladores /SteamController.php | Controlador para la funcionalidad Stream API |
controladores /StripeController.php | Controlador para la funcionalidad API de Stripe |
controladores /TwilioController.php | Controlador para la funcionalidad API de Twilio |
controladores /TwitterController.php | Controlador para la funcionalidad API de Twitter |
controladores /WebScrapingController.php | Controlador para Web Scraping. |
controladores /YahooController.php | Controlador para la funcionalidad API de Yahoo |
controladores /user.js | Controlador para la gestión de cuentas de usuarios. |
modelos /Usuario.php | Modelo para Usuario. |
público / | Activos estáticos (fuentes, css, js, img). |
público / css /main.css | Hoja de estilo principal para su aplicación. |
recursos/vistas/cuenta / | Plantillas para iniciar sesión, restablecer contraseña, registrarse, perfil . |
vistas/api / | Plantillas para ejemplos de API. |
vistas/parciales /alerts.blade.php | Notificaciones flash de error, información y éxito. |
vistas/parciales /navbar.blade.php | Plantilla parcial de barra de navegación. |
vistas /layouts**/master.blade.php | Plantilla básica. |
vistas /apidashboard.blade.php | Plantilla de panel de API. |
vistas /contacto.blade.php | Plantilla de página de contacto. |
vistas /bienvenido.blade.php | Plantilla de página de inicio. |
.travis.yml | Integración de Travis CI. |
.env.ejemplo | Sus claves API, tokens, contraseñas y URI de la base de datos. |
compositor.json | Archivo para cargar todos los paquetes php. |
paquete.json | Archivo para cargar todos los módulos de nodo necesarios. |
artesano | Archivo para permitir la ejecución de comandos |
Paquete | Descripción |
---|---|
mundano | Inicia sesión con Facebook, Twitter y Github |
proveedores de alta sociedad | Iniciar sesión con LinkedIn, Instagram |
nuboso | Subir imágenes a Cloudinary |
laravel github | Biblioteca API de Github |
aparato de relojería | Biblioteca API de SMS mecánica. |
gota | Raspe páginas web usando sintaxis estilo jQuery. |
marco laravel | Marco web PHP |
gorjeo | Biblioteca API de Twitter |
tilio | Biblioteca API de Twilio |
lob-php | Biblioteca API Lob |
contenedor-api-lastfm | Biblioteca API de Lastfm |
unidad php | biblioteca de prueba PHP |
tragar http | Biblioteca de solicitudes HTTP simplificada |
Con Optic, puede utilizar su API como de costumbre, documentando automáticamente los cambios en el comportamiento. Para habilitar esto, primero deberá descargar Optic.
npm install -g @useoptic/cli
Una vez que haya instalado Optic, puede comenzar a documentar sus solicitudes ejecutando api start
. Al ejecutar este comando, se creará una versión proxy de su API, disponible en localhost:4000. Ahora puede usar la API como de costumbre aquí y Optic notará automáticamente las diferencias en el comportamiento documentado, lo que le permitirá crear documentación automáticamente a medida que cambie su API. .
Para ver la documentación actual de la API, ejecute api spec
en el directorio raíz.
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 obtener más información sobre Optic, consulte los documentos.
Token Mismatch Exception
al enviar un formulario?Debe agregar el siguiente elemento de entrada oculto a su formulario. Esto se ha agregado en el código base existente como parte de la protección CSRF.
{!! csrf_field() !!}
Lo más probable es que no hayas generado la clave de la aplicación, así que ejecuta php artisan key:generate
. Lo más probable es que no haya puesto sus credenciales en su archivo .env.
Esta sección está destinada a brindarle una explicación detallada sobre cómo funciona una funcionalidad en particular. Tal vez solo tengas curiosidad sobre cómo funciona, o tal vez estés perdido y confundido mientras lees el código, espero que te sirva de guía.
Los mensajes flash le permiten mostrar un mensaje al final de la solicitud y acceder a él en la siguiente solicitud y solo en la siguiente solicitud. Por ejemplo, en un intento fallido de inicio de sesión, mostraría una alerta con algún mensaje de error, pero tan pronto como actualice esa página o visite una página diferente y regrese a la página de inicio de sesión, ese mensaje de error desaparecerá. Sólo se muestra una vez. Todos los mensajes flash están disponibles en sus vistas a través de sesiones de laravel.
Una forma más correcta de ser es decir "¿Cómo creo una nueva ruta?". El archivo principal routes.php
contiene todas las rutas. Cada ruta tiene una función de devolución de llamada asociada. A veces verás 3 o más argumentos para las rutas. En casos como ese, el primer argumento sigue siendo una cadena URL, mientras que los argumentos intermedios son lo que se llama middleware. Piense en el middleware como una puerta. Si esta puerta le impide continuar hacia adelante, no accederá a la función de devolución de llamada. Un ejemplo de ello es una ruta que requiere autenticación.
Route:: get ( ' /account ' , ' UserController@getAccount ' );
Siempre va de izquierda a derecha. Un usuario visita la página /account
. Luego, el middleware auth
comprueba si está autenticado:
Route:: get ( ' /account ' , [
' uses ' => ' AccountController@getAccountPage ' ,
' as ' => ' account.dashboard ' ,
' middleware ' => [ ' auth ' ]
]);
Si está autenticado, permite que este visitante pase por su "puerta" llamando return $next($request);
en el middleware de autenticación y, si está autenticado, será redirigido a la página de Administración de cuentas ; de lo contrario, será redirigido a la página de Inicio de sesión .
A continuación se muestra un flujo de trabajo típico para agregar nuevas rutas a su aplicación. Digamos que estamos creando una página que enumera todos los libros de la base de datos.
Paso 1. Comience por definir una ruta.
Route:: get ( ' /books ' , ' BookController@getBooks ' );
Paso 2. Crea un nuevo modelo Book.php
dentro del directorio de la aplicación . Simplemente puede ejecutar php artisan make:model Book
namespace App ;
class Book
{
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $ fillable = [
' name ' , ' isbn ' ,
];
}
Paso 3. Cree un archivo de migración como este: 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 ' );
}
}
Paso 4. Cree un nuevo archivo de controlador llamado BookController
dentro del directorio app/Http/Controllers . Simplemente puede ejecutar 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 );
}
}
Paso 5. Crea la plantilla 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
¡Eso es todo!
Una vez que esté listo para implementar su aplicación, deberá crear una cuenta en una plataforma en la nube para alojarla. Estas no son las únicas opciones, pero son mis mejores opciones. Según mi experiencia, Heroku es el más fácil para comenzar, implementaciones y soporte de dominio personalizado en cuentas gratuitas.
heroku login
e ingrese sus credenciales de Herokuheroku create
web: vendor/bin/heroku-php-nginx public
o web: vendor/bin/heroku-php-apache2 public
si prefiere usar nginx.heroku addons:add heroku-postgresql:dev
para agregar una base de datos Postgres a su aplicación heroku desde su terminalgit push heroku master
. ¡Hecho!heroku run php artisan migrate
Nota: Para instalar complementos de Heroku, su cuenta debe estar verificada.
git push -f openshift master
-f
(forzar) porque OpenShift crea un servidor ficticio con la página de bienvenida cuando crea una nueva aplicación Node.js. Pasar el indicador -f
anulará todo lo relacionado con el repositorio de su proyecto Hackathon Starter . No ejecute git pull
ya que creará conflictos de fusión innecesarios.git remote add azure [Azure Git URL]
git push azure master
Nota: Las instrucciones alternativas, incluido cómo configurar el proyecto con una canalización de DevOps, están disponibles en http://ibm.biz/hackstart. Hay una versión más larga de estas instrucciones con capturas de pantalla disponible en http://ibm.biz/hackstart2. Además, asegúrese de ver el vídeo Impulsa tus esfuerzos de hackathon con DevOps Services y Bluemix.
Gracias por considerar contribuir a Laravel Hackathon Starter. La guía de contribución se puede encontrar en el Archivo de Contribución.
Si descubre una vulnerabilidad de seguridad dentro de Laravel Hackathon Starter, envíe un correo electrónico a Prosper Otemuyiwa a [email protected]. Todas las vulnerabilidades de seguridad se abordarán de inmediato.
¿Por qué no destacar el repositorio de github? ¡Me encantaría la atención! ¿Por qué no compartir el enlace de este repositorio en Twitter o HackerNews? ¡Corre la voz!
¡No olvides seguirme en Twitter!
¡Gracias! Próspero Otemuyiwa.
La Licencia MIT (MIT). Consulte el archivo de licencia para obtener más información.