First Steps

Moving your TNT-Powered project into development.

Now that you have created your TNT-Powered project, you can start building your application. Here are some resources to help you get started:

Database

MySQL, PostgreSQL, or SQLite

If you have chosen to use a database with your project, you need to populate the DATABASE_URL environment variable in your .env file.

.env
# The connection string should look something like this:
DATABASE_URL="mysql://user:password@localhost:3306/database"

You can choose to run your database locally, using a service like Docker, or use a cloud service like Neon. Alternatively, you can use SQLite for local development. SQLite is the default database for TNT-Powered projects, and no additional setup is required to get started.

Prisma

We recommend using Prisma to interact with your database. Prisma is a modern database toolkit that makes it easy to interact with your database using TypeScript. If you chose to include Prisma ensure you run the following commands.

pnpm db:push && pnpm postinstall

The above command will:

  • Push your prisma schema to your database, creating the necessary tables and relationships.
  • Generate the Prisma client, which is used to interact with your database in your application code, in a type-safe manner.

The postinstall script in your package.json runs prisma generate, and will automatically run after installing dependencies.

Drizzle

Drizzle is not yet available in TNT-Powered projects.

Drizzle will be available in the future to help you manage your database schema and migrations. Drizzle cannot be used at the same time as Prisma, so you will need to choose one or the other.

Authentication

Auth.js and Better Auth

For authentication, you can choose between the two below libraries. Both libraries are great options, but they have different features and capabilities.

Auth.js is a great option if you want a simple and easy-to-use authentication library. It has a lot of built-in providers and is easy to set up. Better Auth is a more customizable option that allows you to extend your authentication flow with many different plugins.

A list of all the providers for both libraries can be found below:

Note

Better Auth does not have a dedicated page for providers, but you can find them in the docs under the Authentication section in the sidebar.

Setup

The setup for both libraries is the same

By default, create-tnt-stack will set up Discord as the authentication provider, so:

  1. Of course, you need a Discord account, so register one if you don't already have one.
  2. Navigate to the Discord Developer Portal and create a new application, by clicking on the "New Application" button.
  3. Give your application a name and click Create.
  4. Head to the OAuth2 section and copy the Client ID to your .env file.
  5. Next click Reset Secret, then copy the Client Secret to your .env file.
  6. Next, click Add Redirect and type the URL of you application followed by /api/auth/callback/discord.
    • In development, this will be http://localhost:3000/api/auth/callback/discord.
    • In production, this will be https://yourdomain.com/api/auth/callback/discord.
  7. Finally, save your changes.

Now you should be able to sign in with Discord.

Extensions

We recommend using the following extensions for an optimal development experience.

Start Building

  • Take a look around the project structure and familiarize yourself with the codebase.
  • Read the docs to learn more details about the project and how to use it.
  • Start building your application!