Crazy Laravel Stack (Fantastically Powerful)

cleancodestudio image

Did you know I have a newsletter? 📬

If you want to get notified when I publish new blog posts or make major project announcements, head over to https://cleancodestudio.paperform.co/

Crazy Laravel Stack (Fantastically Powerful)

Driven by a deeply personal vendetta against college debt - I've created, shared, spoken, written, recorded, published, posted, developed, built, and invested - invested time, energy, and resources into sharing knowledge.

Nearing 500,000 global viewers, over 3000 subscribers, and with 125+ published Clean Code Studio screencasts -- I have invested the time and energy into Clean Code Studio and feel the time has finally come to do something...something that may quite possibly be - bat s*** crazy.

What's crazy you ask? Great question!

So, let me break this down first. Here's a list of several of the contributions I've made via Clean Code Studio to improve the coding and educational resources available out there and further demolish this crazy notion that going to college (to quite literally deep dive into debt more times than not) is a flat out terrible idea. After the contributions to date, we'll dive into the crazy.

Okay - so check it - here's a list of the coding and educational contributions made directly through me as Clean Code Studio, for Clean Code Studio, or because of Clean Code Studio.

  • Spoke with 2nd Year UMKC Computer Science Majors (As a 23 Year old who had dropped out of college myself, I was impressed with the offer to come share the knowledge with computer science students at the University. The professor let me in on how he knew the degree wasn't that important for computer science any more and thought I'd have a solid take on personal branding beyond the degree since I had a solid gig without the piece of paper.

There's reddit threads, Github repos, udemy courses, leetcode submissions/feedback, etc...

Buutttt - Here's the crazy part (And a sliiiggghtttly embarrassing admission)!!.

Yah, so it kinda uses Google sites right now - like the default google website builder, the one that is literally worse than any other website builder out there.

Clean Code Studio, content wise, has some great content - but the website as it is in its current state is lacking.

Thus, once we hit 3000 subscribers - I decided to adjust.

I started building out the actual Clean Code Studio Website Application earlier this week (2 days ago to be precise).

I'm a Laravel fan boy - thus I started building the application out using Laravel.

_THAT's WHEN THINGS WENT SIDEWAYS (S* BLEW UP INTO ALL TYPES OF CRAZY - CRAZY GOOD)!!_**

  • 1. I started with Laravel
  • 2. Then I noticed Laravel Spark was re-created AND re-branded
  • 3. Laravel Spark (link way below) was now Laravel Spark Classic
  • 4. Laravel Spark (link way below) is now Laravel Spark Next
  • 5. Laravel Spark Next Doesn't Care Which Front-end Preset You Use (Laravel Spark Classic was biased towards vue.js)
  • 6. Laravel Spark Next needs a front-end preset - it just doesn't care about which one it is. I pulled in Laravel Jet Stream.
  • 7. Using Laravel Jet Stream, I set up the auth, created the teams, set up team & user actions/emails/notifications, added the ability for users/teams to add profile picture updates, and configured the password to be re-settable, and for two factor authentication to be optional, etc...
  • 8. Laravel Jet Stream Configures All Of This, There was very little customization on my part (if any).
  • 9 Laravel Jet Stream Can Also Use Inertia.js (AKA Vue.js SPA front-end instead of using Live Wire with Laravel Jet Stream)
  • 10. Laravel Spark Next takes care of billing. I chose the new laravel-spark-paddle (Credit card or paypal payment optioni - super easy set up)
  • 11. At this point, I remembered how fun Laravel Nova was to use as a user (I had used Laravel nova on a few past projects - it's amazing).
  • 12. Laravel Nova is technically supposed to be used as an admin panel.
  • 13. With Laravel JetStream we have the authentication and the profile/team scaffolds. With Laravel Spark we have the Billing Scaffolds and Integration. And now - after bringing in Laravel Nova - we have an admin panel allowing us to easily connect, create, relate, destroy, search, sort, and access all of the model data from both Laravel JetStream and Laravel Spark directly from an admin panel via Laravel Nova.
  • 14. Then, there's Laravel Sanctum - Laravel JetStream let's you use Laravel Sanctum. Laravel Sanctum lets you create a publicly facing API that provides tokens with abilities for users to interact with your API.
  • 15. Laravel Sanctum allows you to create a public, user accessible, API that creates tokens that authorize api access for
    • API Token Authentication
    • SPA Authentication
    • Mobile Application Authentication
  • 16. And allows testing of APIs using the Sanctum::actingAs method that allows you to authenticate a user and specify which abilities should be granted to their token.

All together, we have

  • Laravel
    • Laravel - Framework for web artisans
  • Laravel Mix
    • Laravel Mix - Webpack Asset Compilation/Webpack Wrapper
  • Laravel Sail
    • Laravel Sail - Local Docker Environment for Laravel
  • Laravel Spark
    • Laravel Spark - SaaS App Scaffolding
    • Laravel Spark - Integrates Billing Features Into Laravel Application
    • Laravel Cashier Paddle
      • Laravel Cashier Paddle provides an expressive, fluent interface to Paddle's subscription billing services.
  • Laravel Nova
    • Laravel Nova - Admin Panel for Laravel (Eloquent Models)
    • Laravel Scout
      • Laravel Scout - Optional driver for adding full-text search to your eloquent models
  • Laravel Jet Stream
    • Jetstream - Provides the implementation for your application's login, registration, email verification, two-factor authentication, session management, API via Laravel Sanctum, and optional team management features.
    • Laravel Fortify
    • Laravel Fortify is a frontend agnostic authentication backend implementation for Laravel
  • Laravel Sanctum
    • Laravel Sanctum provides a featherweight authentication system for SPAs (single page applications), mobile applications, and simple, token based APIs. Sanctum allows each user of your application to generate multiple API tokens for their account. These tokens may be granted abilities / scopes which specify which actions the tokens are allowed to perform.
  • Laravel Forge
    • Laravel Forge - Server management and site deployment service (Deploying app to stage - then to prod)

This Laravel stack listed above is what I'm currently working with to create https://cleancode.studio - so far, I'm extremely impressed. With Laravel Spark Next being released and non being biased towards any front-end - This tech stack of more than half of Laravel's core eco system integrates all but seamlessly.

Below is the actual README.md I pulled from my Clean Code Studio private repo. Feel free to check it out!

I also highly recommend doctoc from NPM if you're starting to build out a long read me. It automatically creates a table of contents for any markdown file based on headers and sub-header relationships :)

1. Install Doctoc

npm i doctoc --save-dev

2. Open package.json and add "index-readme": "doctoc README.md" to yourscripts` object
`js
// package.json

"private": true,
"scripts": {
"dev": "npm run development",
"development": "mix",
"watch": "mix watch",
"watch-poll": "mix watch -- --watch-options-poll=1000",
"hot": "mix watch --hot",
"prod": "npm run production",
"production": "mix --production",
"index-readme": "doctoc README.md"
},
`

3. Whenever you want to generate a table of content in your README.md - simply run npm run index-readme

My Actual Clean Code Studio README.md (Pulled from my personal project this morning)

Table of Contents

Clean Code Studio

Setup Local Dev Environment

GitHub

sh
git clone https://github.com/zhorton34/cleancodestudio && cd cleancodestudio

Composer

php
composer install

.env (Environment Variables)

sh
mv .env.local .env

Database

.env (SQLite local) Settings for Database

`sh
DB_CONNECTION=sqlite

DB_HOST=127.0.0.1

DB_PORT=3306

DB_DATABASE=database

DB_USERNAME=root
DB_PASSWORD=
`

Migrate database tables and seed dummy data

php
php artisan migrate:fresh --seed

Compile Front-end Assets

js
npm install && npm watch

Boot Development Server

php
php artisan serve

Tech Stack

App APIs

--

Internal Clean Code Studio APIs

Brand

Apply Brand To...

Npm (Node Package Manager): https://npmjs.com/~zhorton999

Deployment

Stage Database

  • User: stage
  • Database: stage

Production Database

  • User: forge
  • Database: forge

Clean Code Studio ~ Content Resources

Testing

--

Posts/Videos/Screencasts & Notes (Clean Code Studio Content)

APIs to Retrieve Created Content (API Retrievable Clean Code Studio Content)

Terminal/Console/Command Line Commands

php artisan Console Commands

php artisan serve (boot local server)

php artisan route:list (see all routes)

php artisan migrate:fresh --seed (migrate tables to database and run seeders to populate database with dummy data)

npm run Console Commands

npm run dev (compile assets once for local dev)

npm run watch (compile assets and watch for changes to re-compile)

npm run production (build application for production deployment)

npm run index-readme (Adds table of contents to read me)

cleancodestudio image

Did you know I have a newsletter? 📬

If you want to get notified when I publish new blog posts or make major project announcements, head over to

24