1 of 30

Yellow Candle Library

Site With Laravel

My first fully fleshed out full-stack project

2 of 30

TABLE OF CONTENTS

Project Intro

Laravel and MVC

Features

Project management

Cyber security

SFTP vs MySQL

Future plans

Demo

04

05

06

01

02

03

07

08

How would I even go about

STARTING a project like this

My cybersecurity policy is

any restrictions slow down functionality! (not really)

How to load a lot of data that needs to be displayed in less than a second

My initial thoughts and goals when going into this project

developing an application with a Model view controller framework

Showcase of some of the features

and implementations in the project

Some stuff I would like to

achieve in the future

Feel free to click through while I am presenting!

3 of 30

What is this project

  • yellowcandlelibrary.com
  • able to read books, leave comments, and upload your own books.

4 of 30

Use cases

  • You can read on the go!
  • Community

5 of 30

Goals

Beauty

Maintainability

Usability

Originally, this project was meant to be a lot more backend focused, but then I decided I wanted this to look good. This is something that I feel needs a lot of improvement!

Being able to maintain the project code over a long period of time, with a lot of new features getting created or updated was a big factor in a lot of the decisions that I made.

I wanted this website to have seamless load times, even when loading a large amount of data.

6 of 30

MVC

7 of 30

MVC: Laravel

  • Build in packages
  • Blade Templating
  • Console command support
  • Scalability

8 of 30

MVC: Model

  • Bridge between front and back end
  • Queryable
  • Connected through databases.php and .env

9 of 30

MVC: View

  • Front end components
  • Blade templating
  • HTML/CSS/JS
  • Data from the controller

10 of 30

MVC: Controller

  • “Controls” the flow of data
  • Routes (URI) from web.php
  • The intersection between the model and the view for sending data etc.

11 of 30

Features

12 of 30

User Features

User Data

Comments

Books!

Useful user data is saved to allow for a better experience

Users can leave Comments on chapters so others know what they thought of books

At the end of the day, the purpose of this was to read books on the go.

13 of 30

Backend Features

Admin Tools

Schedules

Caching

Admin tools various jobs that needed to be done often to save time.

There is a list of scheduled “jobs” that are run every hour.

Caching (something we will get into later on the optimizing slide)

14 of 30

Project management

  • Laravel
  • Obsidian(plugins)
  • Github

15 of 30

Version & Change Control

Make changes

Test changes

Upload changes

Make new release

Previous

Versions

New

Releases

(Versioning)

16 of 30

Update History

17 of 30

Security

18 of 30

Client-side Security

Reliability

Password encryption

Accessibility

19 of 30

Server-side Security

.ENV files

Serverside

Code security

20 of 30

SFTP vs MySQL

21 of 30

SFTP Implementation

Files

code

Directories

22 of 30

MySQL database

  • Foreign keys
  • Primary keys
  • Mapping tables

23 of 30

24 of 30

25 of 30

Select statement in Laravel

Controller

View

Model

26 of 30

SFTP Pros

Easy to edit text files

Caching pages very lightweight

Not loading all file contents every time

27 of 30

MySQL Pros

Queryable

Works with models

Better data manipulation

28 of 30

Future Plans

29 of 30

Future Plans

  • Review sections
  • Spotify integration
  • letterboxd reviews (displayed like an embed on the profile page
  • Front end

30 of 30

Questions?

Thank you all for your time!

Matthew Lewis

Systems Research