How to deploy a full-stack application
with Hasura, Angular and Qovery
+
The perfect match 👌
What is ?
What is ?
What is ?
Github, Gitlab, Bitbucket
Developer
Qovery
AWS, GCP, Azure,...
What is ?
+
= Production-ready GraphQL API
full-stack app
+
= Production-ready GraphQL API
full-stack app
+
Deploy Hasura with PostgreSQL | Qovery
# create a directory and move into it
$ mkdir my-hasura-backend && cd my-hasura-backend
# Github, Bitbucket, Gitlab seamless authentication
$ qovery auth
Opening your browser, waiting for your authentication...
Authentication successful!
# Generate the .qovery.yml and the Dockerfile from the official Hasura template
$ qovery init -t hasura
# Git commit and push your code
$ git add --all
$ git commit -m "first commit"
$ git push -u origin master
# Your Hasura application is live!
Check the deployment progress in realtime | Qovery
$ qovery status
BRANCH NAME | STATUS | ENDPOINTS | APPLICATIONS | DATABASES
master | running | https://api.tld.com | hasura | my-psql-db
APPLICATION NAME | STATUS | DATABASES
hasura | running | my-psql-db
DATABASE NAME | STATUS | TYPE | VERSION | ENDPOINT | PORT | USERNAME | PASSWORD | APPLICATIONS
my-psql-db | running | POSTGRESQL | 11 | <hidden> | <hidden> | <hidden> | <hidden> | hasura
application:
name: hasura
project: MyProjectName
cloud_region: aws/us-east-2
databases:
- type: postgresql
version: 11
name: my-psql-db
routers:
- name: main
custom_domains:
- branch: master
domain: api.tld.com
- branch: dev
domain: api-dev.tld.com
routes:
- application_name: hasura
paths:
- /*
FROM hasura/graphql-engine:v1.2.2
EXPOSE 8080
Only three files to deploy | Qovery
.qovery.yml
Dockerfile
HASURA_GRAPHQL_DATABASE_URL=$QOVERY_DATABASE_MY_POSTGRESQL_DATABASE_CONNECTION_URI
.env
Configure the GraphQL API | Hasura
import { Apollo } from "apollo-angular";
//...
export class HomeComponent implements OnInit {
//...
ngOnInit() {
const gquery = "..."; // graphql query
this.apollo.query<any>({query: gquery}).subscribe(({ data, loading }) => {
// response with the data...
});
}
//...
}
Connect Angular to Hasura | Qovery
Query the Hasura backend
$ ng add apollo-angular
Add the
GraphQL JS client
# Open src/app/graphql.module.ts and change the value of the uri variable as follows:
const uri = "https://api.tld.com";
Setup the GraphQL server URL
Deploy Angular | Qovery
# move into my angular project
$ cd my-angular-frontend
# Generate the .qovery.yml and the Dockerfile from the official Hasura template
$ qovery init
# Git commit and push your code
$ git add .qovery.yml
$ git commit -m "update: add .qovery.yml"
$ git push -u origin master
# Your Angular application is live!
Check the deployment progress of the Angular app | Qovery
$ qovery status
BRANCH NAME | STATUS | ENDPOINTS | APPLICATIONS | DATABASES
master | running | https://api.tld.com | hasura, angular | my-psql-db
| | https://tld.com | |
APPLICATION NAME | STATUS | DATABASES
hasura | running | my-psql-db
angular | running |
DATABASE NAME | STATUS | TYPE | VERSION | ENDPOINT | PORT | USERNAME | PASSWORD | APPLICATIONS
my-psql-db | running | POSTGRESQL | 11 | <hidden> | <hidden> | <hidden> | <hidden> | hasura
application:
name: angular
project: MyProjectName
cloud_region: aws/us-east-2
routers:
- name: frontend
custom_domains:
- branch: master
domain: tld.com
routes:
- application_name: frontend
paths:
- /*
### STAGE 1: Build ###
FROM node:14.3-alpine AS build
WORKDIR /usr/src/app
COPY package.json package-lock.json ./
RUN npm install
COPY . .
RUN npm run build
### STAGE 2: Run ###
FROM nginx:1.19-alpine
EXPOSE 80
COPY --from=build /usr/src/app/dist/my-angular-app /usr/share/nginx/html
Only two files to deploy | Qovery
.qovery.yml
Dockerfile
To conclude... | Qovery
Better teamwork with isolated environments | Qovery
$ git checkout master
$ git checkout -b staging
$ git push -u origin staging
# staging environment created
$ git checkout -b feat_1
$ git push -u origin feat_1
# feat_1 environment created
And much more... | Qovery
QUESTIONS?