PHPackages                             alemohamad/ultralight-web-kit - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Framework](/categories/framework)
4. /
5. alemohamad/ultralight-web-kit

ActiveProject[Framework](/categories/framework)

alemohamad/ultralight-web-kit
=============================

Ultralight Web Kit is a base Flight project for small websites.

v2.3.0(8y ago)126MITPHPPHP &gt;=5.4.0

Since Jan 30Pushed 8y ago2 watchersCompare

[ Source](https://github.com/alemohamad/ultralight-web-kit)[ Packagist](https://packagist.org/packages/alemohamad/ultralight-web-kit)[ Docs](https://github.com/alemohamad/ultralight-web-kit)[ RSS](/packages/alemohamad-ultralight-web-kit/feed)WikiDiscussions master Synced 2mo ago

READMEChangelog (10)Dependencies (10)Versions (12)Used By (0)

Ultralight Web Kit
==================

[](#ultralight-web-kit)

[![Ultralight Web Kit](https://camo.githubusercontent.com/0ee1691ddee669d307cad1c9ade0d4f9e46068528e6b29649177538bc3c4415d/687474703a2f2f692e696d6775722e636f6d2f6a4f44674a77632e706e67)](https://camo.githubusercontent.com/0ee1691ddee669d307cad1c9ade0d4f9e46068528e6b29649177538bc3c4415d/687474703a2f2f692e696d6775722e636f6d2f6a4f44674a77632e706e67)

Ultralight Web Kit un proyecto simple escrito en PHP, basado en el microframework **Flight**, utilizando varias librerías, como **Twig**, **Eloquent ORM** o **Phinx**. Este proyecto está preparado para funcionar en cualquier servidor web que posea **PHP 5.4** o mayor.

[![Total Downloads](https://camo.githubusercontent.com/8af52eff94a7121e11f2f1e19e41fe5fbc9d04dc4562854acaa416e67f633d19/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f616c656d6f68616d61642f756c7472616c696768742d7765622d6b69742e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/alemohamad/ultralight-web-kit)[![Latest Stable Version](https://camo.githubusercontent.com/7be8f88dfada1d6fc0cb742c9af8a7cb3dd5b5b8cb00790d05c44ca234d0f4ed/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f616c656d6f68616d61642f756c7472616c696768742d7765622d6b69742e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/alemohamad/ultralight-web-kit)[![License](https://camo.githubusercontent.com/706faf3c6258e5ede27234ce9216039023c62d2eacf33ca3e5f0ac1a5dd5475f/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f6c2f616c656d6f68616d61642f756c7472616c696768742d7765622d6b69742e7376673f7374796c653d666c61742d737175617265)](https://opensource.org/licenses/mit-license.php)

> Are you looking for an **English version**? Find the [README.en.md](README.en.md) file in the repository.

¿Por qué armé este proyecto?
----------------------------

[](#por-qué-armé-este-proyecto)

Luego de probar frameworks grandes como [Laravel](https://laravel.com), [Zend Framework](https://framework.zend.com), [Symfony](https://symfony.com), [CodeIgniter](https://www.codeigniter.com) o [CakePHP](https://cakephp.org), no encontré nada que ayude a armar sitios web pequeños (donde lo importante es tener organización y un poco de MVC) pensando en diseñadores y programadores Front End.

No me malinterpreten, me encantan los frameworks grandes para armar una web app, pero para armar una web de estructura simple, los que nombré arriba son tremendos monstruos para esta tarea.

Esto fue hasta que me crucé con el concepto de microframework y encontré [Flight](http://flightphp.com). Fue amor a primera vista. ♥️

Espero que esta configuración les sirva para poder armar una estructura simple, pero aportando la complejidad necesaria para que sea un proyecto exitoso.

Instalación con Composer
------------------------

[](#instalación-con-composer)

Este proyecto está pensado para funcionar principalmente en un servidor **Apache** con **PHP 5.4** o mayor, pero se pueden hacer algunos ajustes de configuración para que funcione en **Nginx**.

- Instalamos [Composer](https://getcomposer.org/download/):

```
$ curl -s https://getcomposer.org/installer | php

```

- Creamos un nuevo proyecto de **Ultralight Web Kit**:

```
$ php composer.phar create-project alemohamad/ultralight-web-kit path/to/install

```

Composer va a crear el proyecto en el directorio `path/to/install`. Si no pasamos este parámetro, se va a crear en la carpeta donde estemos posicionados.

Aunque aquí muestro la instalación con **Composer**, también se puede hacer un *checkout* de **Git** o descargar el código fuente desde un navegador web. Personalmente me parece más cómodo y ordenado usar Composer.

¿Cómo usar el proyecto?
-----------------------

[](#cómo-usar-el-proyecto)

Para que funcione el proyecto, tienen que renombrar el archivo `.env.example` por `.env`. Allí modificamos los valores que necesitamos para nuestro proyecto (si modifican los archivos internos, pueden remover o agregar variables).

Para ver el proyecto pueden subir los archivos a un servidor por FTP o sino probarlo de forma local con [MAMP](https://www.mamp.info), [WAMP](http://www.wampserver.com/) o con el [servidor web de PHP](http://php.net/manual/en/features.commandline.webserver.php):

```
$ php -S localhost:1234

```

Ahora pueden usar el link  para acceder al servidor local de PHP. 😉

Estructura de archivos
----------------------

[](#estructura-de-archivos)

```
.
├── app
│   ├── Auth
│   │   └── Auth.php
│   ├── Config
│   │   ├── migrations
│   │   │   └── ...
│   │   ├── seeds
│   │   │   └── ...
│   │   ├── auth.php
│   │   ├── config.php
│   │   ├── Database.php
│   │   ├── globals.php
│   │   └── twig.php
│   ├── Controllers
│   │   ├── Contacto.php
│   │   ├── Errors.php
│   │   ├── Hola.php
│   │   ├── Home.php
│   │   └── SendMails.php
│   ├── Models
│   │   ├── Message.php
│   │   └── User.php
│   ├── Views
│   │   ├── emails
│   │   │   └── mail.twig
│   │   ├── errors
│   │   │   ├── 404.twig
│   │   │   └── 500.twig
│   │   ├── layouts
│   │   │   ├── layout.twig
│   │   │   └── menu.twig
│   │   ├── contact_thanks.twig
│   │   ├── contact.twig
│   │   ├── hello.twig
│   │   └── home.twig
│   ├── helpers.php
│   └── routes.php
├── vendor
│   ├── composer
│   └── ...
├── .env.example
├── .htaccess
├── backup-project.sh
├── composer.json
├── composer.lock
├── composer.phar
├── deploy.php
├── humans.txt
├── index.php
├── LICENSE
├── phinx.php
├── README.en.md
├── README.md
├── robots.txt
├── sitemap.xml
└── web.config

```

### ¿Qué archivos NO hay que subir al servidor FTP?

[](#qué-archivos-no-hay-que-subir-al-servidor-ftp)

Cuando tenemos un proyecto como este y queremos subirlo al servidor (nuestro o del cliente) hay ciertos archivos de desarrollo que no hay que compartir (ya sea en un .zip o directamente por FTP). En este proyecto los archivos que deben ser ignorados al momento de la entrega son:

```
.env.example
.gitignore
backup-project.sh
composer.json
composer.lock
composer.phar
deploy.php
LICENSE
phinx.php
README.en.md
README.md

```

Capaz para vos es obvio que estos archivos no se tienen que compartir, pero me parece importante remarcarlo. Y si son ordenados y guardan su código modificado, por favor, no se olviden de crear un README propio. Renombren o borren el del proyecto y armen uno con información relacionada a su proyecto!

Librerías utilizadas
--------------------

[](#librerías-utilizadas)

Todo esto no sería posible sin las siguientes librerías:

- [Flight](https://github.com/mikecao/flight)
- [Twig](https://github.com/twigphp/Twig)
- [phpdotenv](https://github.com/vlucas/phpdotenv)
- [PHPMailer](https://github.com/PHPMailer/PHPMailer)
- [Valitron](https://github.com/vlucas/valitron)
- [Flash](https://github.com/joelvardy/flash)
- [Eloquent ORM](https://github.com/illuminate/database)
- [Phinx](https://github.com/cakephp/phinx)
- [Deployer](https://github.com/deployphp/deployer)

Bonus track: Desarrollo Front-end
---------------------------------

[](#bonus-track-desarrollo-front-end)

Este proyecto está pensado para un desarrollo web, y para esto conviene tener en cuenta también el armado del front-end. En mi opinión es muy cómodo usar el lenguaje [Sass](http://sass-lang.com) para armar los estilos. Y también está bueno poder tener los estilos CSS y la lógica de JavaScript en un único archivo (menos llamadas al servidor), y si podemos minimizarlo, mejor.

Para poder conseguir esto, armé una carpeta llamada `assets-dev`, en donde se encuentran paquetes de [Node.js](https://nodejs.org) y un script de [Gulp](https://gulpjs.com) para instalar y utilizar. En los archivos de Sass van a encontrar que les dejo una copia de [Reset CSS](https://meyerweb.com/eric/tools/css/reset/) y [Head.JS](http://headjs.com). Pueden removerlos si no quieren usarlos. Además el proyecto viene con una copia de [Bourbon](https://www.bourbon.io) para utilizar, el cual pueden remover en el archivo `main.scss` si no lo van a utilizar.

Para utilizar estos scripts, tenemos que utilizar los siguientes comandos para instalar lo necesario:

```
$ npm install -g npm
$ sudo gem install sass
$ npm install -g gulp-cli

```

Para instalar los paquetes necesarios, tenemos que ir a la carpeta `assets-dev` y usar el siguiente comando:

```
$ npm install

```

Luego para trabajar (también en la carpeta `assets-dev`) usamos el comando:

```
$ gulp

```

Es importante saber que si cancelamos el proceso, se va a dejar de escuchar para generar los archivos finales a usar en el proyecto.

Quiero aclarar que esta es la forma y las herramientas que a mi me gustan. No están obligados a utilizarla.

De hecho, si realizan desarrollo front-end de otra forma, lo mejor es eliminar la carpeta `assets-dev`, ya que en ese caso va a ser código basura.

Una herramienta que también pueden usar es [Prepros](https://prepros.io), aunque hay muchas otras opciones para estas tareas. 😁

Autenticación
-------------

[](#autenticación)

El proyecto tiene una clase llamada `Auth`, la cual posee lógica para poder realizar autenticación de forma simple en cualquier proyecto. Está preparada para conectarse a la base de datos, usando el modelo `User`, pero puede ser modificada por si utiliza otra forma.

Dicha clase está registrada para ser utilizada dentro de Flight, por lo que se la puede utilizar de esta forma:

```
