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/
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)!!.
Clean Code Studio - the website - source of the Clean Code Clean Life ~ Simplify brand - the center piece of our online presence....
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::actingAsmethod that allows you to authenticate a user and specify which abilities should be granted to their token.
All together, we have
- Laravel - Framework for web artisans
- Laravel Mix - Webpack Asset Compilation/Webpack Wrapper
- Laravel Sail - Local Docker Environment for Laravel
- 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 - 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 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 - 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
package.json and add
"index-readme": "doctoc README.md" to yourscripts` object
"dev": "npm run development",
"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
Table of Contents
Clean Code Studio
- Setup Local Dev Environment
- .env (Environment Variables)
- Compile Front-end Assets
- Boot Development Server
- Tech Stack
- PHP 8.0+
- Laravel 8.0
Vue JS 3.05
- Admin panel
- (Uses Laravel Nova v3.27.0)
- (Uses Laravel Spark Next)
- (Uses Paddle Payment Gateway Via Spark Next)
- (Uses Laravel Jetstream)
- (Uses Tailwind CSS)
- (Using Tailwind within Laravel Jetstream)
- (Uses Vue.js Front-end)
- (Uses Inertia.js for development)
- Webpack (JS/CSS/ASSET Bundler)
- (Uses Laravel Mix Wrapper To Simplify Webpack)
- App APIs
Public User Accessable APIs
- (Public API's Authenticate User Tokens Via Laravel Sanctum)
- API Token Authentication
- SPA Token Authentication
- Private Broadcast Channel Authentication
- Testing User Accessible APIs (Laravel Sanctum Testing)
- Internal Clean Code Studio APIs
- Clean Code Studio Branding
- Apply Brand To...
Clean Code Studio Online Presence
- Website: https://cleancode.studio
- Youtube: https://youtube.com/c/cleancodestudio
- LeetCode: https://leetcode.com/zhorton34/
- Github: https://github.com/zhorton34
- DevTo: https://dev.to/cleancode.studio
- Twitter: https://twitter.com/cleancodestudio
- Reddit: https://reddit.com/user/cleancodestudio
- TikTok: https://www.tiktok.com/@cleancodestudio
- Instagram: https://www.instagram.com/cleancodestudio
- Facebook: https://www.facebook.com/CleanCodeStudio
- Packagist: https://packagist.org/packages/clean-code-studio
- LinkedIn: https://www.linkedin.com/company/cleancodestudio
- Npm (Node Package Manager): https://npmjs.com/~zhorton999
- Stack Overflow: https://stackoverflow.com/users/8541350/clean-code-studio
- Laravel Forge (Server management & site deployment)
- Staging Site
- Production Site
- Clean Code Studio ~ Content Resources
- Billing Tests (Laravel Spark)
- Public Facing API Tests (Laravel Sanctum)
- Posts/Videos/Screencasts & Notes (Clean Code Studio Content)
- FAANG Notes (Google Drive)
- RESUME Notes (Google Drive)
- DEV To (Written Blog Posts)
- YouTube Videos (Screencasts)
- YouTube Playlists (Screencasts)
- Youtube Community (Comments & Posts)
- YouTube About (With Links To Socials)
- APIs to Retrieve Created Content (API Retrievable Clean Code Studio Content)
- Terminal/Console/Command Line Commands
php artisanConsole Commands
npm runConsole Commands
git clone https://github.com/zhorton34/cleancodestudio && cd cleancodestudio
mv .env.local .env
php artisan migrate:fresh --seed
npm install && npm watch
php artisan serve
Npm (Node Package Manager): https://npmjs.com/~zhorton999
Stack Overflow: https://stackoverflow.com/users/8541350/clean-code-studio
- User: stage
- Database: stage
- User: forge
- Database: forge
php artisan migrate:fresh --seed (migrate tables to database and run seeders to populate database with dummy data)
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