Serverless forum software
Table of contents
-
Clone
git clone git@github.com:JustServerless/discuss.git
to your local machine. -
Run
cd discuss
to change directory. -
Run
npm install
to install all necessary NPM dependencies for the Serverless project. -
Run
serverless project init
to initialize the Serverless project. -
Add the following environment variables to the JSON array of the corresponding file in
_meta/variables
. (e.g. in_meta/variables/s-variables-common.json
)
{
...
"authTokenSecret": "STRONGVALUE"
}
-
Run
cd backend/lib && npm install && cd ../../
to install the NPM dependencies for the GraphQL backend. -
Run
serverless dash deploy
and select endpoint and function to deploy the CORS enabled endpoint and function.
-
Run
cd client/src && npm install
tin install the NPM dependencies for the client. -
Replace the
API_URL
inclient/src/app/js/actions/index.js
with your deployed endpoint (the root of the endpoint) without thegraphql
string at the end. -
Run
npm start
(in the client/src folder) to run the client locally. The client is available in your browser athttp://localhost:8080/
-
Edit
s-project.json
and changebucketName
. Runnpm run build
to build the client -
Run
serverless client deploy
to host the frontend with the help of an S3 bucket
Connect to the graphql
endpoint of the API (e.g. http://example.com/graphql
) and a run the query as the query
parameter against it.
mutation signUp {
signUp (
email: "test@example.com"
username: "test"
password: "12345678"
)
{
id
email
username
createdAt
updatedAt
}
}
mutation signIn {
signIn (
email: "test@example.com"
password: "12345678"
)
{
id
email
username
createdAt
updatedAt
jwt
}
}
{
users {
id
email
username
createdAt
updatedAt
}
}
{
user(id: "id") {
id
email
username
createdAt
updatedAt
}
}
mutation updateCurrentUser {
updateCurrentUser(
email: "new@example.com"
username: "New username"
password: "New password"
jwt: "jwtToken"
)
{
id
username
email
createdAt
updatedAt
}
}
mutation deleteCurrentUser {
deleteCurrentUser (
jwt: "jwtToken"
)
{
id
username
email
createdAt
updatedAt
}
}
mutation createPost {
createPost (
title: "Title"
body: "Body"
jwt: "jwtToken"
)
{
id
title
body
createdAt
updatedAt
author {
id
username
email
createdAt
updatedAt
}
comments {
id
body
createdAt
updatedAt
author {
id
username
email
createdAt
updatedAt
}
}
}
}
{
posts {
id
title
body
createdAt
updatedAt
author {
id
username
email
createdAt
updatedAt
}
comments {
id
body
createdAt
updatedAt
author {
id
username
email
createdAt
updatedAt
}
}
}
}
{
post(id: "id") {
id
title
body
createdAt
updatedAt
author {
id
username
email
createdAt
updatedAt
}
comments {
id
body
createdAt
updatedAt
author {
id
username
email
createdAt
updatedAt
}
}
}
}
mutation updatePost {
updatePost(
id: "id"
title: "New title"
body: "New body"
jwt: "jwtToken"
)
{
id
title
body
createdAt
updatedAt
author {
id
username
email
createdAt
updatedAt
}
comments {
id
body
createdAt
updatedAt
author {
id
username
email
createdAt
updatedAt
}
}
}
}
mutation deletePost {
deletePost (
id: "id"
jwt: "jwtToken"
)
{
id
title
body
createdAt
updatedAt
author {
id
username
email
createdAt
updatedAt
}
comments {
id
body
createdAt
updatedAt
author {
id
username
email
createdAt
updatedAt
}
}
}
}
mutation createComment {
createComment (
body: "Body"
postId: "postId"
jwt: "jwtToken"
)
{
id
body
createdAt
updatedAt
author {
id
username
email
createdAt
updatedAt
}
}
}
{
comments {
id
body
createdAt
updatedAt
author {
id
username
email
createdAt
updatedAt
}
}
}
{
comment(id: "id") {
id
body
createdAt
updatedAt
author {
id
username
email
createdAt
updatedAt
}
}
}
mutation updateComment {
updateComment(
id: "id"
body: "New body"
jwt: "jwtToken"
)
{
id
body
createdAt
updatedAt
author {
id
username
email
createdAt
updatedAt
}
}
}
mutation deleteComment {
deleteComment (
id: "id"
jwt: "jwtToken"
)
{
id
body
createdAt
updatedAt
author {
id
username
email
createdAt
updatedAt
}
}
}