diff --git a/remember_laravel/app/Http/Controllers/GalleryController.php b/remember_laravel/app/Http/Controllers/GalleryController.php
new file mode 100644
index 0000000000000000000000000000000000000000..dff9d02c60e345b4318ced9b999d6157b692c065
--- /dev/null
+++ b/remember_laravel/app/Http/Controllers/GalleryController.php
@@ -0,0 +1,72 @@
+<?php
+
+namespace App\Http\Controllers;
+
+use Illuminate\Http\Request;
+use Illuminate\Support\Facades\File;
+use App\Http\Requests\ImageRequest;
+use App\Http\Requests\UpdateImageRequest;
+use App\Image;
+
+class GalleryController extends Controller
+{
+    public function index()
+    {
+        $images = Image::all();
+        return view('dashboard.galeria.index')->with(['images' => $images]);
+    }
+    
+    public function create()
+    {
+        return view('dashboard.galeria.create');
+    }
+    
+    public function store(ImageRequest $request)
+    {
+        $image = Image::create([
+            'title' => $request['title'],
+            'description' => $request['description'],
+            /* Cadastra a imagem em storage/app/public/images/ e devolve o caminho como public/images/nomeImagem.extensao
+            depois remove o public/images/, deixando apenas o nome da imagem */
+            'path' => str_replace("public/images/galeria/", "", ($request->file('image')->store('public/images/galeria'))),
+        ]);
+
+        $image->save();
+
+        return redirect('dashboard/galeria');
+    }
+    
+    public function show($id)
+    {
+        $image = Image::findOrFail($id);
+        
+        return view('dashboard.galeria.show')->with(['image' => $image]);
+    }
+    
+    public function edit($id)
+    {
+        $image = Image::findOrFail($id);
+        
+        return view('dashboard.galeria.edit')->with(['image' => $image]);
+    }
+    
+    public function update(UpdateImageRequest $request, $id)
+    {
+        $image = Image::findOrFail($id);
+        
+        $image->title = $request->title;
+        $image->description = $request->description;
+        
+        $image->update();
+        
+        return redirect('dashboard/galeria');
+    }
+    
+    public function destroy($id)
+    {
+        $image = Image::findOrFail($id);
+        File::delete('storage/images/galeria/' . $image->path);
+        Image::destroy($id);
+        return redirect('dashboard/galeria');
+    }
+}
diff --git a/remember_laravel/app/Http/Requests/ImageRequest.php b/remember_laravel/app/Http/Requests/ImageRequest.php
new file mode 100644
index 0000000000000000000000000000000000000000..057cb35da0effad370413f5869a2d5d70f8a4422
--- /dev/null
+++ b/remember_laravel/app/Http/Requests/ImageRequest.php
@@ -0,0 +1,32 @@
+<?php
+
+namespace App\Http\Requests;
+
+use Illuminate\Foundation\Http\FormRequest;
+
+class ImageRequest extends FormRequest
+{
+    /**
+     * Determine if the user is authorized to make this request.
+     *
+     * @return bool
+     */
+    public function authorize()
+    {
+        return true;
+    }
+
+    /**
+     * Get the validation rules that apply to the request.
+     *
+     * @return array
+     */
+    public function rules()
+    {
+        return [
+            'title' => 'required|string|max:100',
+            'description' => 'string|max:200',
+            'image' => 'required|file|image|max:4096'
+        ];
+    }
+}
diff --git a/remember_laravel/app/Http/Requests/UpdateImageRequest.php b/remember_laravel/app/Http/Requests/UpdateImageRequest.php
new file mode 100644
index 0000000000000000000000000000000000000000..7d6b26e09aa6f081e48bed88036dff059349220f
--- /dev/null
+++ b/remember_laravel/app/Http/Requests/UpdateImageRequest.php
@@ -0,0 +1,31 @@
+<?php
+
+namespace App\Http\Requests;
+
+use Illuminate\Foundation\Http\FormRequest;
+
+class UpdateImageRequest extends FormRequest
+{
+    /**
+     * Determine if the user is authorized to make this request.
+     *
+     * @return bool
+     */
+    public function authorize()
+    {
+        return true;
+    }
+
+    /**
+     * Get the validation rules that apply to the request.
+     *
+     * @return array
+     */
+    public function rules()
+    {
+        return [
+            'title' => 'required|string|max:100',
+            'description' => 'string|max:200'
+        ];
+    }
+}
diff --git a/remember_laravel/app/Image.php b/remember_laravel/app/Image.php
new file mode 100644
index 0000000000000000000000000000000000000000..b871b573b1370aa73b737458144af4589ab5b7f4
--- /dev/null
+++ b/remember_laravel/app/Image.php
@@ -0,0 +1,12 @@
+<?php
+
+namespace App;
+
+use Illuminate\Database\Eloquent\Model;
+
+class Image extends Model
+{
+    protected $fillable = [
+        'title', 'description', 'path'
+    ];
+}
diff --git a/remember_laravel/database/migrations/2019_03_04_135050_create_images_table.php b/remember_laravel/database/migrations/2019_03_04_135050_create_images_table.php
new file mode 100644
index 0000000000000000000000000000000000000000..90241af4eb85c0d34e6c9d0f39de0681e7e1ab2d
--- /dev/null
+++ b/remember_laravel/database/migrations/2019_03_04_135050_create_images_table.php
@@ -0,0 +1,34 @@
+<?php
+
+use Illuminate\Support\Facades\Schema;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Database\Migrations\Migration;
+
+class CreateImagesTable extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::create('images', function (Blueprint $table) {
+            $table->increments('id');
+            $table->string('title');
+            $table->text('description');
+            $table->string('path');
+            $table->timestamps();
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::dropIfExists('images');
+    }
+}
diff --git a/remember_laravel/public/css/dashboard/dashboard.css b/remember_laravel/public/css/dashboard/dashboard.css
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..6a432db1c2b04137f9c7850186322219fdbdabc5 100644
--- a/remember_laravel/public/css/dashboard/dashboard.css
+++ b/remember_laravel/public/css/dashboard/dashboard.css
@@ -0,0 +1,40 @@
+#image-preview {
+    max-width: 260px;
+}
+
+.options-dropdown-btn {
+    background:none!important;
+    border:none; 
+    font: inherit;
+    cursor: pointer;
+    display: block;
+    padding: 6px 20px!important;
+    clear: both;
+    font-weight: 400;
+    line-height: 1.42857143;
+    color: #f05050;
+    white-space: nowrap;
+    width: 100%;
+    text-align: left;
+}
+
+.options-dropdown-btn:hover {
+    text-decoration: none;
+    background-color: #f5f5f5!important;
+}
+
+.dropdown-btn:hover {
+    color: #262626;
+    text-decoration: none;
+    background-color: #f5f5f5!important;
+}
+
+.thumb-gallery {
+    width: 100%;
+    max-width: inherit;
+    height: 150px;
+}
+
+.img-show {
+    width: 100%;
+}
\ No newline at end of file
diff --git a/remember_laravel/resources/views/dashboard/galeria/create.blade.php b/remember_laravel/resources/views/dashboard/galeria/create.blade.php
new file mode 100644
index 0000000000000000000000000000000000000000..d6f1eb27f06d4c5ef2e0c3935b34b5f6b6f52dba
--- /dev/null
+++ b/remember_laravel/resources/views/dashboard/galeria/create.blade.php
@@ -0,0 +1,100 @@
+@extends('dashboard.layout.base')
+
+@section('content')
+<div class="row">
+    <div class="col-sm-12">
+        <h4 class="page-title">Galeria</h4>
+        <ol class="breadcrumb">
+            <li><a href="{{ route('dashboard') }}">Dashboard</a></li>
+            <li><a href="{{ route('gallery') }}">Galeria</a></li>
+            <li class="active">Nova imagem</li>
+        </ol>
+    </div>
+</div>
+
+<div class="col-xs-12">
+    <div class="card-box">
+      <h4 class="m-t-0 m-b-30 header-title"><b>Nova Imagem</b></h4>
+      <form role="form" method="POST" action="{{ action('GalleryController@store') }}" enctype="multipart/form-data">
+        @csrf
+        <div class="row">
+          <div class="col-xs-12 col-md-3">
+            <label for="image-input">
+              <div class="form-group{{ $errors->has('thumbnail') ? ' has-error' : '' }}">
+                <label for="image-input">Upload da imagem</label>
+                <div class="image-placeholder outer-container cursor-pointer">
+                  <img id="image-preview" class="img-rounded hidden" src="">
+                  <div id="image-preview-empty">
+                    <b><i class="fa fa-arrow-up fa-3x"></i></b>
+                  </div>
+                </div>
+              </div>
+            </label>
+            <div class="form-group{{ $errors->has('image') ? ' has-error' : '' }}">
+              <input id="image-input" type="file" name="image" value="{{ old('image') }}" class="hidden" autofocus required>
+
+              @if ($errors->has('image'))
+                <span class="help-block">
+                  <strong>{{ $errors->first('image') }}</strong>
+                </span>
+              @endif
+            </div>
+          </div>
+          <div class="col-xs-12 col-md-9">
+            <div class="form-group{{ $errors->has('title') ? ' has-error' : '' }}">
+              <label for="title">Título da imagem</label>
+              <input id="title" type="text" class="form-control" name="title" value="{{ old('title') }}" autofocus required>
+              <div>
+                @if ($errors->has('title'))
+                  <span class="help-block">
+                    <strong>{{ $errors->first('title') }}</strong>
+                  </span>
+                @endif
+              </div>
+            </div>
+            <div class="form-group{{ $errors->has('description') ? ' has-error' : '' }}">
+              <label for="description">Descrição curta da imagem</label>
+              <input id="description" type="text" class="form-control" name="description" value="{{ old('description') }}" autofocus required>
+              <div>
+                @if ($errors->has('description'))
+                  <span class="help-block">
+                    <strong>{{ $errors->first('description') }}</strong>
+                  </span>
+                @endif
+              </div>
+            </div>
+          </div>
+          <div class="col-xs-12">
+            <div class="form-group text-right m-b-0">
+              <button type="submit" class="btn btn-primary waves-effect waves-light" autofocus>Cadastrar</button>
+              <a href="{{ route('gallery') }}" class="btn btn-white waves-effect waves-light m-l-5">Cancelar</a>
+            </div>
+          </div>
+        </div>
+      </form>
+    </div>
+  </div>
+@endsection
+
+@section('bottomJs')
+<script type="text/javascript">
+    function readURL(input) {
+      if (input.files && input.files[0]) {
+        var reader = new FileReader();
+
+        reader.onload = function (e) {
+          $('#image-preview').attr('src', e.target.result);
+          $('#image-preview').removeClass('hidden');
+          $('#image-preview').next().addClass('hidden');
+          $('#image-preview').parent().css('border', 'none');
+        }
+
+        reader.readAsDataURL(input.files[0]);
+      }
+    }
+
+    $("#image-input").change(function(){
+      readURL(this);
+    });
+</script>
+@endsection
\ No newline at end of file
diff --git a/remember_laravel/resources/views/dashboard/galeria/edit.blade.php b/remember_laravel/resources/views/dashboard/galeria/edit.blade.php
new file mode 100644
index 0000000000000000000000000000000000000000..3f985b65febb66896ebac49a1d593077591b27a3
--- /dev/null
+++ b/remember_laravel/resources/views/dashboard/galeria/edit.blade.php
@@ -0,0 +1,66 @@
+@extends('dashboard.layout.base')
+
+@section('content')
+<div class="row">
+    <div class="col-sm-12">
+        <h4 class="page-title">Galeria</h4>
+        <ol class="breadcrumb">
+            <li><a href="{{ route('dashboard') }}">Dashboard</a></li>
+            <li><a href="{{ route('gallery') }}">Galeria</a></li>
+            <li class="active">Editar {{ $image->title }}</li>
+        </ol>
+    </div>
+</div>
+
+<div class="col-xs-12">
+    <div class="card-box">
+      <h4 class="m-t-0 m-b-30 header-title"><b>Editar informações de {{ $image->title }}</b></h4>
+      <form role="form" method="POST" action="{{ action('GalleryController@update', $image->id) }}" enctype="multipart/form-data">
+        @method('PUT')
+        @csrf
+        <div class="row">
+          <div class="col-xs-12 col-md-3">
+            <div class="form-group{{ $errors->has('thumbnail') ? ' has-error' : '' }}">
+              <div class="image-placeholder outer-container cursor-pointer">
+                <img id="image-preview" class="image-rounded" src="{{ asset('storage/images/galeria/' . $image->path) }}"/>
+              </div>
+            </div>
+          </div>
+          <div class="col-xs-12 col-md-9">
+            <div class="form-group{{ $errors->has('title') ? ' has-error' : '' }}">
+              <label for="title">Título da imagem</label>
+              <input id="title" type="text" class="form-control" value="{{ $image->title }}" name="title" autofocus required>
+              <div>
+                @if ($errors->has('title'))
+                  <span class="help-block">
+                    <strong>{{ $errors->first('title') }}</strong>
+                  </span>
+                @endif
+              </div>
+            </div>
+            <div class="form-group{{ $errors->has('description') ? ' has-error' : '' }}">
+              <label for="description">Descrição curta da imagem</label>
+              <input id="description" type="text" class="form-control" value="{{ $image->description }}" name="description" autofocus required>
+              <div>
+                @if ($errors->has('description'))
+                  <span class="help-block">
+                    <strong>{{ $errors->first('description') }}</strong>
+                  </span>
+                @endif
+              </div>
+            </div>
+          </div>
+          <div class="col-xs-12">
+            <div class="form-group text-right m-b-0">
+              <button type="submit" class="btn btn-primary waves-effect waves-light" autofocus>Atualizar</button>
+              <a href="{{ route('gallery') }}" class="btn btn-white waves-effect waves-light m-l-5">Cancelar</a>
+            </div>
+          </div>
+        </div>
+      </form>
+    </div>
+  </div>
+@endsection
+
+@section('bottomJs')
+@endsection
\ No newline at end of file
diff --git a/remember_laravel/resources/views/dashboard/galeria/index.blade.php b/remember_laravel/resources/views/dashboard/galeria/index.blade.php
new file mode 100644
index 0000000000000000000000000000000000000000..6cda3a5154ab6d450cc92d70a1f1ecfcc3a005ee
--- /dev/null
+++ b/remember_laravel/resources/views/dashboard/galeria/index.blade.php
@@ -0,0 +1,39 @@
+@extends('dashboard.layout.base')
+
+@section('content')
+<div class="row">
+    <div class="col-sm-12">
+        <div class="btn-group pull-right m-t-15">
+            <button type="button" class="btn btn-default dropdown-toggle waves-effect waves-light" data-toggle="dropdown" aria-expanded="false">Opções <span class="m-l-5"><i class="fa fa-cog"></i></span></button>
+            <ul class="dropdown-menu drop-menu-right" role="menu">
+                <li><a href="{{ route('upload') }}">Nova imagem</a></li>
+            </ul>
+        </div>
+
+        <h4 class="page-title">Galeria</h4>
+        <ol class="breadcrumb">
+            <li><a href="{{ route('dashboard') }}">Dashboard</a></li>
+            <li class="active">Galeria</li>
+        </ol>
+    </div>
+</div>
+
+<div class="row port m-b-20">
+    <div class="portfolioContainer">
+        @foreach ($images as $image)
+        <div class="col-sm-6 col-lg-3 col-md-4">
+            <div class="gal-detail thumb">
+                <a href="{{ route('show-image', $image->id) }}" class="image-popup" title="{{ $image->description }}">
+                    <img src="{{ asset('storage/images/galeria/' . $image->path) }}" class="thumb-img thumb-gallery" alt="work-thumbnail">
+                </a>
+                <h4>{{ $image->title }}</h4>
+            </div>
+        </div>
+        @endforeach
+    </div>
+</div> <!-- End row -->
+@endsection
+
+@section('bottomJs')
+
+@endsection
\ No newline at end of file
diff --git a/remember_laravel/resources/views/dashboard/galeria/show.blade.php b/remember_laravel/resources/views/dashboard/galeria/show.blade.php
new file mode 100644
index 0000000000000000000000000000000000000000..d358ed6f573b3dec737cf1e3a655cacf3054eef3
--- /dev/null
+++ b/remember_laravel/resources/views/dashboard/galeria/show.blade.php
@@ -0,0 +1,40 @@
+@extends('dashboard.layout.base')
+
+@section('content')
+<div class="row">
+    <div class="col-sm-12">
+        <div class="btn-group pull-right m-t-15">
+            <button type="button" class="btn btn-default dropdown-toggle waves-effect waves-light" data-toggle="dropdown" aria-expanded="false">Opções <span class="m-l-5"><i class="fa fa-cog"></i></span></button>
+            <ul class="dropdown-menu drop-menu-right" role="menu">
+                <li><a href="{{ route('edit', $image->id) }}">Editar</a></li>
+                <form role="form" method="POST" action="{{ action('GalleryController@destroy', $image->id) }}" enctype="multipart/form-data">
+                  @method('DELETE')
+                  @csrf
+                  <li class="dropdown-btn"><a>
+                    <button class="options-dropdown-btn" type="submit">Delete</button>
+                  </a></li>
+                </form>
+            </ul>
+        </div>
+      
+        <h4 class="page-title">Galeria</h4>
+        <ol class="breadcrumb">
+            <li><a href="{{ route('dashboard') }}">Dashboard</a></li>
+            <li><a href="{{ route('gallery') }}">Galeria</a></li>
+            <li class="active">{{$image->title}}</li>
+        </ol>
+    </div>
+</div>
+
+<div class="col-xs-12">
+    <div class="card-box">
+      <h4 class="m-t-0 m-b-10 header-title" align="center"><b>Título:</b> {{ $image->title }}</h4>
+      <p class="m-b-30"><b>Descrição: </b>{{ $image->description }}</p>
+      <img class="img-responsive img-show" src="{{ asset('storage/images/galeria/' . $image->path) }}"/>
+    </div>
+  </div>
+@endsection
+
+@section('bottomJs')
+
+@endsection
\ No newline at end of file
diff --git a/remember_laravel/resources/views/dashboard/layout/navbar.blade.php b/remember_laravel/resources/views/dashboard/layout/navbar.blade.php
index fca4d61e8b15c72123d2553e8243d4167c423a04..40acdb0bc970bb6ee31c90683504f9262713cdb5 100644
--- a/remember_laravel/resources/views/dashboard/layout/navbar.blade.php
+++ b/remember_laravel/resources/views/dashboard/layout/navbar.blade.php
@@ -5,7 +5,7 @@
 
             <!-- Logo container-->
             <div class="logo">
-                <a href="index.html" class="logo"><span>RememberPET</span></a>
+                <a href="{{ route('dashboard') }}" class="logo"><span>RememberPET</span></a>
             </div>
             <!-- End Logo container-->
 
@@ -46,8 +46,10 @@
                         <a href="#"><i class="md md-dashboard"></i>Galeria</a>
                         <ul class="submenu">
                             <li>
-                                <a href="/dashboard">Lista de imagens</a>
-                                <a href="/dashboard">Nova imagem</a>
+                                <a href="{{ route('gallery') }}">Lista de imagens</a>
+                            </li>
+                            <li>
+                                <a href="{{ route('upload') }}">Nova imagem</a>
                             </li>
                         </ul>
                     </li>
diff --git a/remember_laravel/routes/web.php b/remember_laravel/routes/web.php
index f733d9b5ea5af25c5773cdec4ef0e8a7099af652..a8e1363de8b9d82c094079a7e5bad907a58becdb 100644
--- a/remember_laravel/routes/web.php
+++ b/remember_laravel/routes/web.php
@@ -21,7 +21,17 @@ Route::get('/', 'HomeController@index')->name('home');
 Route::group(['prefix' => 'dashboard', 'middleware' => ['web', 'auth']], function () {
     Route::get('/', function () {
         return view('dashboard.home');
-    })->name('dashboard-home');
+    })->name('dashboard');
+    
+    Route::group(['prefix' => 'galeria'], function () {
+       Route::get('/', 'GalleryController@index')->name('gallery');
+       Route::get('/upload', 'GalleryController@create')->name('upload');
+       Route::post('/upload', 'GalleryController@store');
+       Route::get('/{id}', 'GalleryController@show')->name('show-image');
+       Route::get('/{id}/editar', 'GalleryController@edit')->name('edit');
+       Route::put('/{id}/editar', 'GalleryController@update');
+       Route::delete('/{id}/deletar', 'GalleryController@destroy')->name('delete-image');
+    });
 });
 
 Route::get('login', 'Auth\LoginController@showLoginForm')->name('login');