
AdonisJs is a JavaScript framework for building web apps and APIs with convention over configuration, featuring Lucid ORM, routing, migrations, authentication, and protection against cross site request forgery.
Compare AdonisJs to Express, contrasting its batteries-included approach with minimalist frameworks, and highlight its modular service providers and flexible boilerplates for full stack, slim, or API-only projects.
Build a podcast platform with sign up, podcast creation, category selection, logo and description, episode uploads, playback, editing, and email notifications for new episodes.
Identify the prerequisites for this course, including basic JavaScript knowledge, npm, the command line, and compatible versions, and prepare your system with downloads for your operating system.
Install the Adonis CLI globally with npm, then use the CLI to run commands like up and make, and generate migrations for models and controllers.
Create an AdonisJs application by selecting a boilerplate, naming the app podcasts, installing dependencies, and starting the development server as you review the project structure in the next lesson.
Explore the AdonisJs directory structure, including app with modules, controllers, and middleware, config, database migrations, public assets, and resources/views; learn bootstrapping and environment setup to run the dev server.
Explore the MVC pattern—Model, View, and Controller—showing how it separates business logic from the user interface, standardizes project structure, and enables backend focus on models and controllers.
Configure and initialize your database for AdonisJs using the Sequoia pool, set the database user and password, and install the database driver.
Install and configure Laravel Mix to compile assets, copy the example mix file, add npm scripts for development and watch, and prepare production deployment by compiling and minimizing assets.
Install Bulma css as a development dependency to prototype quickly, then set up a sass-based assets directory, define custom color variables, and configure remix to compile assets into public.
Explore Lucid orm in AdonisJs, using an active record style to interact with relational databases, perform insert, update, select, delete, and transactions, and define relationships through conventional models like User.
Create application models and migrations in AdonisJs, defining category, podcast, episode, and subscription schemas with user relationships and constraints, then run migrations and update the database.
Define and implement AdonisJs model relationships with Lucid, including one-to-one, one-to-many, and many-to-many associations, inverse relations, and a subscriptions join table for user podcasts.
Use AdonisJs seed commands to create and run seeds that populate the categories table with initial data in the database.
Explore Edge, the blazing fast AdonisJs templating engine, which lets you write almost all JavaScript expressions in templates, supports layouts, components, and views stored as .edge files.
Create a master layout in the AdonisJs app, add a footer partial with Font Awesome, and conditionally display links based on login status; extend this layout in the welcome view.
Build a user sign up flow in AdonisJs by creating a register controller and view, validating a unique name, hashing the password, and storing the user with CSRF protection.
Sign users out in AdonisJs by implementing a logout via a post request, wiring a logout controller method, and submitting a logout form with a JavaScript on-click to prevent default.
Master AdonisJs user authentication, including sign up, log in, and log out. Implement remember me, password setup, and registration flow with flash messages and session handling.
Implement password reset in AdonisJs by validating the email, locating the user, deleting prior resets, generating a new token, and sending a reset link email via an event.
Master the password reset flow in AdonisJs, including decoding reset tokens, validating new passwords, updating the database, and sending email notifications.
Build and implement user account editing in AdonisJs by updating the accounts controller, using method spoofing for put requests, validating name and unique email, and displaying an account updated message.
Implement a change password flow in AdonisJs, verifying the current password and confirming the new password, with validation and user feedback.
Learn to create a podcast in AdonisJs by building the store method, validating inputs, uploading logos, assigning categories, generating a unique slug, and persisting to the database.
update the homepage to display podcasts by descending id, load each broadcast's category, and render a card-based view with podcast logos, art, and a no-broadcast message when none exist.
Learn to build a user podcast dashboard that lets authenticated users manage their podcasts, display existing podcasts or link to create one, and upload an episode.
edit a podcast by updating its data via a put request, with category selection, validation, and ownership checks that only the author can update.
Add a delete option for podcasts in an AdonisJs app, using method spoofing and a destroy method. Ensure users can only delete their own podcasts and display appropriate messages.
Add a show method in the podcast controller to fetch a podcast by slug, load its owner, and render the description and owner in the view from the dashboard.
Browse podcasts by category in an AdonisJs app by fetching a category by slug, loading its podcasts in descending order, and rendering a two-column view with category counts and podcasts.
Enable authenticated users to subscribe to podcasts by adding a subscribe button and a method that attaches the podcast to the user via a many-to-many subscriptions relationship, with self-subscription checks.
Learn how to add unsubscribe functionality to a podcast using AdonisJs by checking the authenticated user's subscriptions, displaying the unsubscribe button when subscribed, and detaching the subscription to unsubscribe.
Fetch and display a user's podcast subscriptions, show them in a table with links and an unsubscribe option, and display a message when none exist.
Learn how to upload podcast episodes in an AdonisJs app, including creating episodes via the episode controller, handling multipart forms, storing audio files, incrementing episode counts, and notifying subscribers.
Learn to play and download podcast episodes in an AdonisJs app by updating the podcast show method, displaying latest episodes, and handling empty states, and enabling episode download.
Apply authentication middleware to protect routes meant for logged-in users, such as the podcast creation pages, and redirect unauthorized users to the login page using the global exception handler.
Learn how to create a guest middleware in AdonisJs, guard routes by checking if the user is logged in with a try/catch block, and redirect authenticated users to the homepage.
Learn how to enforce a single podcast per user in an AdonisJs app by checking for existing podcasts, displaying a warning, and preventing duplicate creation.
Learn how to build a pagination component in an AdonisJs app by displaying a configurable number of podcasts or episodes per page, and updating the index method to enable navigation.
AdonisJs is a Node.js MVC framework and I’ve been using it since the early days of version 3. Over the years I’ve written various tutorials as well as recorded screencasts on the framework. I have put this course together to help you learn AdonisJs the most efficient way. This is a project-based course, so you'll get to learn AdonisJs by building a production-ready application completely from scratch.
Together we'll build Podcast, a podcast platform where users can signup and create their own podcast channel, and upload episodes to the podcast. Other users will be able to subscribe to podcast channels and be notified via email once new episodes are uploaded.