Skip to content

Apollo Server 4 with Subscriptions support and Kysely for Postgres SQL Management

Notifications You must be signed in to change notification settings

LFSCamargo/graphql.boilerplate

Folders and files

NameName
Last commit message
Last commit date

Latest commit

917d170 · Jul 18, 2024

History

3 Commits
Jul 18, 2024
Jul 18, 2024
Jul 18, 2024
Jul 18, 2024
Jul 18, 2024
Jul 18, 2024
Jul 18, 2024
Jul 18, 2024
Jul 18, 2024
Jul 18, 2024
Jul 18, 2024
Jul 18, 2024

Repository files navigation

Apollo Server 4 Boilerplate Typescript

This is a boilerplate for Apollo Server 4 with Typescript, Kysely, Apollo Server, Express, and Postgres.

This boilerplate offers the three main features of GraphQL: Queries, Mutations, and Subscriptions.

How to run the project

Requirements: Docker, PNPM, Node.JS

  1. Clone the repository
  2. Cpoy the .env.example file to .env and fill in the environment variables
  3. Run pnpm install
  4. Run docker-compose up -d to start the Postgres database
  5. Run pnpm dev to start the server

Database Migrations

To run the database migrations, run the following command:

pnpm db:migrate:up # To run the migrations
pnpm db:migrate:down # To run the migrations

To Create a new migration:

touch src/db/migrations/number.quick-name-description.ts
# Example of a migration file 0001.create-users-table.ts

This will be the content of the migration file:

import { Kysely, sql } from 'kysely';

export async function up(db: Kysely<any>): Promise<void> {
  sql`
  
  `.execute(db);
}

export async function down(db: Kysely<any>): Promise<void> {
  sql`

  `.execute(db);
}

Folder Structure

It follows a modular structure, where each module has its own folder with the following structure:

src
├── modules
│   ├── module-name
│   │   ├── resolvers.module-name.ts
│   │   ├── types.module-name.ts
│   │   ├── index.ts

Contributing

Feel free to contribute to this project by creating a pull request, or creating an issue. If you want to fork this project, please give credit to the original author.

Linting and Formatting

  • ESLint is used for linting
  • Prettier is used for formatting
  • Typescript is used for type checking

To run the linting and formatting, run the following command:

pnpm lint # eslint
pnpm format # prettier
pnpm check-types # typescript type checking

About

Apollo Server 4 with Subscriptions support and Kysely for Postgres SQL Management

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published