From de52ce4738f8e2b0230e7f6c45868e245bf80b01 Mon Sep 17 00:00:00 2001 From: Vikram Rangnekar Date: Wed, 17 Apr 2019 23:35:08 -0400 Subject: [PATCH] Fix demo to run as memory only --- README.md | 8 ++- demo | 2 +- docs/.vuepress/config.js | 7 ++- docs/.vuepress/public/logo.png | Bin 0 -> 18255 bytes docs/README.md | 2 +- docs/prez/test.slide | 36 ------------ rails-app/demo.yml | 2 + slides/overview.slide | 101 +++++++++++++++++++++++++++++++++ 8 files changed, 115 insertions(+), 43 deletions(-) create mode 100644 docs/.vuepress/public/logo.png delete mode 100644 docs/prez/test.slide create mode 100644 slides/overview.slide diff --git a/README.md b/README.md index 6f3b4eb..bd0db45 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,10 @@ -# Super Graph +# Super Graph - Instant GraphQL API for Rails -## Instant GraphQL API for Rails. Zero code. +![MIT license](https://img.shields.io/github/license/dosco/super-graph.svg) +![Docker build](https://img.shields.io/docker/cloud/build/dosco/super-graph.svg) +![Cloud native](https://img.shields.io/badge/cloud--native-enabled-blue.svg) -Get an high-performance GraphQL API for your Rails app in seconds. Super Graph will auto-learn your database structure and relationships. Built in support for Rails authentication and JWT tokens. +Get an high-performance GraphQL API for your Rails app in seconds without writing a line of code. Super Graph will auto-learn your database structure and relationships. Built in support for Rails authentication and JWT tokens. ![Super Graph Web UI](docs/.vuepress/public/super-graph-web-ui.png?raw=true "Super Graph Web UI for web developers") diff --git a/demo b/demo index d16ce79..1a14e4b 100755 --- a/demo +++ b/demo @@ -1,7 +1,7 @@ #!/bin/bash if [ "$1" == "setup" ]; then - docker-compose -f rails-app/demo.yml run web rake db:drop db:create db:migrate db:seed + docker-compose -f rails-app/demo.yml run web rake db:create db:migrate db:seed elif [ "$1" == "run" ]; then docker-compose -f rails-app/demo.yml up else diff --git a/docs/.vuepress/config.js b/docs/.vuepress/config.js index f63f12a..212c29e 100644 --- a/docs/.vuepress/config.js +++ b/docs/.vuepress/config.js @@ -3,12 +3,15 @@ module.exports = { description: 'Get an instant GraphQL API for your Rails apps.', themeConfig: { - logo: '/hero.png', + logo: '/logo.png', nav: [ { text: 'Guide', link: '/guide' }, { text: 'Install', link: '/install' }, { text: 'Github', link: 'https://github.com/dosco/super-graph' }, { text: 'Docker', link: 'https://hub.docker.com/r/dosco/super-graph/builds' }, - ] + ], + serviceWorker: { + updatePopup: true + } } } diff --git a/docs/.vuepress/public/logo.png b/docs/.vuepress/public/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..6d5a812ca970d49074124dc35b5c2b331b822904 GIT binary patch literal 18255 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 SFX&MK0000