An open API service indexing awesome lists of open source software.

https://github.com/aaronksaunders/react-router-node-postgres-auth-template

added authentication to the official react router / remix node postgres template
https://github.com/aaronksaunders/react-router-node-postgres-auth-template

authentication drizzle node postgres postgresql react-router remix

Last synced: 5 months ago
JSON representation

added authentication to the official react router / remix node postgres template

Awesome Lists containing this project

README

          

# React Router Node Postgres Template w/ Authentication

A modern, production-ready template for building full-stack React applications using React Router, based on the official [node-postgres template](https://github.com/remix-run/react-router-templates/tree/main/node-postgres)

## Features

- 🚀 Server-side rendering
- ⚡️ Hot Module Replacement (HMR)
- 📦 Asset bundling and optimization
- 🔄 Data loading and mutations
- 🔒 TypeScript by default
- 🎉 TailwindCSS for styling
- 💾 PostgreSQL + DrizzleORM
- 🔑 User authentication with login and registration
- 📖 [React Router docs](https://reactrouter.com/)

## Authentication

### Registration

Users can register for an account by navigating to the registration page. The registration form requires the following information:

- **Username**: A unique username for the user.
- **Email**: A valid email address (must be unique).
- **Password**: A secure password (minimum length of 6 characters).

Upon successful registration, users will be redirected to the login page.

### Login

After registration, users can log in using their credentials. The login form requires:

- **Email**: The email address used during registration.
- **Password**: The password associated with the account.

Upon successful login, users will be redirected to the home page.

## Getting Started

### Installation

Install the dependencies:

```bash
npm install
```

### Development

Copy `.env.example` to `.env` and provide a `DATABASE_URL` with your connection string.

Run an initial database migration:

```bash
npm run db:migrate
```

Start the development server with HMR:

```bash
npm run dev
```

Your application will be available at `http://localhost:5173`.

## Building for Production

Create a production build:

```bash
npm run build
```

## Deployment

### Docker Deployment

This template includes three Dockerfiles optimized for different package managers:

- `Dockerfile` - for npm
- `Dockerfile.pnpm` - for pnpm
- `Dockerfile.bun` - for bun

To build and run using Docker:

```bash
# For npm
docker build -t my-app .

# For pnpm
docker build -f Dockerfile.pnpm -t my-app .

# For bun
docker build -f Dockerfile.bun -t my-app .

# Run the container
docker run -p 3000:3000 my-app
```

The containerized application can be deployed to any platform that supports Docker, including:

- AWS ECS
- Google Cloud Run
- Azure Container Apps
- Digital Ocean App Platform
- Fly.io
- Railway

### DIY Deployment

If you're familiar with deploying Node applications, the built-in app server is production-ready.

Make sure to deploy the output of `npm run build`

```
├── package.json
├── package-lock.json (or pnpm-lock.yaml, or bun.lockb)
├── server.js
├── build/
│ ├── client/ # Static assets
│ └── server/ # Server-side code
```

## Styling

This template comes with [Tailwind CSS](https://tailwindcss.com/) already configured for a simple default starting experience. You can use whatever CSS framework you prefer.

---

Built with ❤️ using React Router.