Skip to content

adocasts/adocasts

Repository files navigation

Adocasts

Adocasts provides education lessons, screencasts, and livestreams on AdonisJS, NodeJS, JavaScript, and more. We have a vast library of free lessons and resources that expands weekly to help get you up and running with AdonisJS.

Get even more by joining Adocasts Plus

📚 Ready to learn? Check out adocasts.com
🎉 New lessons every week!


YouTube Badge Twitter Badge Twitch Badge


Before We Start

Some portions of the Adocasts site rely on production data or external APIs & SDKs for information. The site will still function fine for you locally, but these sections may not render unless you set up an account specifically for them.

  • Trending Lessons: Relies on our Plausible API connection.
  • Billing & Plans: Relies on our Stripe connection. You can create your own Stripe account with test data to get this working.
  • Content Schedule: Relies on our Notion API connection.
  • Social Authentication: Relies on Google and GitHub services.

Prerequisites

  • PostgreSQL — We use PostgreSQL as our database driver so you'll either want it installed on your machine or a service that provides it.
  • SMTP Provider — Locally, we like to use MailTrap
  • Redis Server — We now require a Redis connection via Bentocache
  • Node v20.6+ — Recommended

Installation

  1. Clone the repository
git clone https://github.com/adocasts/adocasts.git
  1. Install NPM packages
npm i
  1. Duplicate .env.example and rename .env
  2. Fill out the .env variables

Data

We provide a StarterSeed that will populate your database with faker data to populate pages on the Adocasts site.

I haven't tested this yet since our migration from AdonisJS 5 to 6. If you run into any problems, feel free to open an issue.

  1. Migrate your database
node ace migration:run
  1. (Optional) If you'd like to start fresh (without faker data), open our StarterSeed at database/seeders/StarterSeed.ts and comment out the seedUsersAndContent() call within the run method.
public async run() {
  const trx = await Database.transaction()
  
  try {
    await this.seedRoles(trx)

    if (!Application.inTest) {
      // await this.seedUsersAndContent(trx)
    }

    await trx.commit()
  } catch (error) {
    await trx.rollback()
    console.log({ error })
  }
}
  1. Seed our faker data
node ace db:seed