pREST (PostgreSQL REST), simplify and accelerate development, instant, realtime, high-performance on any Postgres application, existing or new
PostgreSQL version 9.5 or higher
Contributor License Agreement -
There is PostgREST written in Haskell, but keeping Haskell software in production is not an easy job. With this need prestd was born. Read more.
To simplify the process of bringing up the test environment we will use docker-compose
# Download docker compose file
wget https://raw.githubusercontent.com/prest/prest/main/docker-compose-prod.yml -O docker-compose.yml
# Up (run) PostgreSQL and prestd
docker-compose up
# Run data migration to create user structure for access (JWT)
docker-compose exec prest prestd migrate up auth
# Create user and password for API access (via JWT)
## user: prest
## pass: prest
docker-compose exec postgres psql -d prest -U prest -c "INSERT INTO prest_users (name, username, password) VALUES ('pREST Full Name', 'prest', MD5('prest'))"
# Check if the user was created successfully (by doing a select on the table)
docker-compose exec postgres psql -d prest -U prest -c "select * from prest_users"
# Generate JWT Token with user and password created
curl -i -X POST http://127.0.0.1:3000/auth -H "Content-Type: application/json" -d '{"username": "prest", "password": "prest"}'
# Access endpoint using JWT Token
curl -i -X GET http://127.0.0.1:3000/prest/public/prest_users -H "Accept: application/json" -H "Authorization: Bearer {TOKEN}"
Want to contribute to the project and don't know where to start? See our contribution guide here.
Deploy to Heroku and instantly get a realtime RESTFul API backed by Heroku Postgres:
https://docs.prestd.com/ (content source and template source)
You can use the db from our docker-compose.yml
file and disable the prestd image pull, then just use the following commands:
$ prest git:(main) cd cmd/prestd
$ prestd git:(main) PREST_CACHE=false \
PREST_PG_HOST=localhost \
PREST_SSL_MODE=disable \
PREST_JWT_DEFAULT=false \
PREST_PG_PORT=5432 \
PREST_PG_PASS=prest \
PREST_PG_USER=prest \
PREST_DEBUG=true \
go run main.go