Skip to content

Templates

Reusable templates for common documents and processes.

Pull Request Template

Save as .github/pull_request_template.md in your repository:

## Description

<!-- What does this PR do? Reference the Jira ticket. -->

[ABC-123](https://futured.atlassian.net/browse/ABC-123)

## Changes

-

## How to Test

<!-- Steps for the reviewer to verify this PR. -->

1.

## Checklist

- [ ] Self-reviewed on GitHub
- [ ] CI checks pass
- [ ] Tests added/updated for new functionality
- [ ] No secrets or credentials committed

Project README Template

# Project Name

Brief description of what this project does.

## Tech Stack

- **Backend**: NestJS, TypeScript, PostgreSQL
- **Frontend**: Vue 3 / Nuxt 4, TypeScript
- **Infrastructure**: Docker, GitHub Actions, GCP / Digital Ocean

## Quick Start

### Prerequisites

- Node.js (see `.nvmrc`)
- Docker Desktop or OrbStack

### Setup

1. Clone the repository
2. `cp docker-compose.dist.yml docker-compose.yml`
3. Fill in environment variables (ask a team member for values)
4. `docker compose up -d`
5. `docker compose exec api yarn migrate`
6. `docker compose exec api yarn seed`

### Development

- **API**: http://localhost:8080
- **Frontend**: http://localhost:3000
- **API docs**: http://localhost:8080/api/docs

### Scripts

| Script | Description |
|---|---|
| `yarn dev` | Start dev server with hot reload |
| `yarn build` | Build for production |
| `yarn test` | Run tests |
| `yarn lint` | Lint and format |

## Environment Variables

| Variable | Description | Required |
|---|---|---|
| `DATABASE_URL` | PostgreSQL connection string | Yes |
| `JWT_SECRET` | Secret for signing tokens | Yes |

## Deployment

Deployed via GitHub Actions. See `.github/workflows/` for pipeline configuration.

- **Dev**: Deploys on merge to `develop`
- **Production**: Deploys on merge to `main`

Docker Compose Template

Starting point for new project infrastructure:

# docker-compose.dist.yml
services:
  api:
    build:
      context: .
      dockerfile: dev.Dockerfile
    ports:
      - "8080:8080"
    volumes:
      - ./src:/app/src
    environment:
      NODE_ENV: development
      DATABASE_URL: postgresql://myapp:localdev@postgres:5432/myapp
      JWT_SECRET: local-dev-secret-change-in-production
      REDIS_HOST: cache
      REDIS_PORT: 6379
    depends_on:
      - postgres
      - cache

  postgres:
    image: postgres:18-alpine
    environment:
      POSTGRES_DB: myapp
      POSTGRES_USER: myapp
      POSTGRES_PASSWORD: localdev
    ports:
      - "5432:5432"
    volumes:
      - pgdata:/var/lib/postgresql/data

  cache:
    image: redis:7-alpine
    ports:
      - "6379:6379"

volumes:
  pgdata: