Home

Awesome

next-postgres-with-typescript

This is a fork of the wonderful next-postgres repo by @jimmylee with additional support for Typescript and Jest. This should compile successfully as is, but it still relies on many 'any' types. To use, refer to the Setup instructions below.

Changes

Remaining issues

Contributions

Any help is welcome to make this repo more type safe. Feel free to submit PRs!


next-postgres

This is an example of a full stack web application with...

It is configured to be deployed to Zeit but I also provide Heroku deployment steps.

It is code you can use without attribution, please enjoy. 🙏

Production Examples:

Preview:

Stack

Why is this useful? Why should I care?

Setup: Prerequisites

I use Homebrew to manage dependencies on a new laptop... You're welcome to use something else.

Setup: Quick newbies guide to Postgres

postgres -D /usr/local/var/postgres -p 5432

First time Postgres instructions.

# Enter Postgres console
psql postgres

# Create a new user for yourself
CREATE ROLE yourname WITH LOGIN PASSWORD 'yourname';

# Allow yourself to create databases
ALTER ROLE yourname CREATEDB;

# Exit Postgres console
\q

# Log in as your new user.
psql postgres -U yourname

# Create a database named: sampledb.
# If you change this, update config.js
CREATE DATABASE sampledb;

# Give your self privileges
GRANT ALL PRIVILEGES ON DATABASE sampledb TO yourname;

# List all of your databases
\list

# Connect to your newly created DB as a test
\connect sampledb

# Exit Postgres console
\q

I also use a GUI called TablePlus if you don't like command line.

Setup: Run locally

In the root directory run these commands:

npm install
npm install -g babel-cli
npm install -g sequelize-cli
sequelize db:migrate
npm run dev

Visit localhost:8000 in a browser to start development locally. You will need postgres running.

Deploy Heroku (Alternative choice)

To deploy with Heroku, please follow the instructions here.

There are very specific details you must pay attention to.

Deploy Zeit

Deploying with now-cli is as simple as

now

Do you have a custom domain? You can use an alias

# after the deploy, alias to your domain, add "alias" to now.json first
now alias

Make sure you configure your alias for zeit.world. Also make sure you add the secrets you need or delete the ones you aren't using from now-secrets.json.

Database + Secrets

You can use a service like https://compose.io to get a hosted Postgres database.

Then update production secrets using now secrets. You must do this or else your website can't connect to the production database.

now secrets add production-username   xxxxxxxxxxxxxxx
now secrets add production-password   xxxxxxxxxxxxxxx
now secrets add production-database   xxxxxxxxxxxxxxx
now secrets add production-host       xxxxxxxxxxxxxxx
now secrets add production-port       xxxxxxxxxxxxxxx
now secrets add production-secret     xxxxxxxxxxxxxxx

Questions?

Feel free to slang any feels to @wwwjim.