Official Backend for Quash
Welcome to the Quash Backend repository, part of the Quash project. This repository contains the code for the Quash Web Backend, a crucial component of your ultimate in-app bug reporting tool. Built by developers for developers, this backend supports the web dashboard in capturing everything you need to start fixing issues right away, including crash logs, session replays, network logs, device information, and much more.
Reporting 🗒️ | Resolution ✅ | Collaboration 🤝🏻 |
---|---|---|
Raise comprehensive tickets with minimal effort | Know exactly where the bug is - and how to fix it | Manage all your testing workflows in a single place |
The project is structured into the following layers:
- Controller
- Service
- Repository
- Model
- DTO
- Utility
This guide will provide you steps to setup and configure the Backend for Quash.
Quash Backend is built using the following technologies:
- Spring Boot
- MongoDB
- Maven
- JWT Authentication
# Move to your workspace
cd your-workspace
# Clone the parent repository
git clone https://github.com/Oscorp-HQ/quash-max.git
# Move to the backend directory
cd quash-max/backend
# Run this maven command
mvn clean install
Navigate to the resources directory and open the
application.properties
file. Here you will add your database connection strings, access tokens, secret keys for different integrations and services.
MongoDB Connection String for Database
spring.data.mongodb.uri=mongodb_connection_string
JWT configurations -
jwt.secret='your_secret'
jwt.expirationMs='expiration_time'
token.signing.key='jwt_singing_key'
Set a Jasypt Password Encryption Key
jasypt.encryption.password='encryption_password'
Add your Frontend URL
spring.frontend.url='your_frontend_url'
Add your Spring Base URL
spring.url='your_spring_url'
Set Access and Refresh Token expiry time
# Access Token expiry - 6 days
token.accessToken.expiration=518400000
# Refresh Token expiry - 8 days
token.refreshToken.expiration=691200000
Some extra properties
spring.servlet.multipart.enabled=true
spring.servlet.multipart.max-file-size=15MB
spring.servlet.multipart.max-request-size=15MB
management.endpoints.web.exposure.include=*
spring.main.lazy-initialization=true
Mail Service Setup a mail service and get required credentials
spring.mail.host='email_host'
spring.mail.username='email_username'
spring.mail.password='email_password'
spring.mail.properties.mail.transport.protocol=smtp
spring.mail.properties.mail.smtp.port='mail_port'
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true
from.email.address='[email protected]'
Google OAuth
spring.security.oauth2.client.registration.google.client-id='google_client_id'
spring.security.oauth2.client.registration.google.client-secret='google_client_secret'
Below are some integrations where you can export your tickets to. Configure the integration of your choice by adding the required credentials mentioned.
spring.atlassian.jira.client_id='jira_client_id'
spring.atlassian.jira.client_secret='jira_client_secret'
spring.atlassian.jira.auth_endpoint=https://auth.atlassian.com/oauth/token
spring.atlassian.jira.accessible_resource_endpoint=https://api.atlassian.com/oauth/token/accessible-resources
Add your Slack account credentials
spring.slack.clientId='slack_client_id'
spring.slack.clientSecret='slack_client_secret'
spring.slack.quash.redirectUri='slack_redirect_uri'
Add your Linear account credentials
spring.linear.redirect_uri='linear_redirect_uri'
spring.linear.auth_endpoint='auth_endpoint'
spring.linear.client_id='linear_client_id'
spring.linear.client_secret='linear_client_secret'
Add your Github account credentials
spring.github.client_id='github_client_id'
spring.github.client_secret='github_client_secret'
Run the QuashApplication
File
mvn spring-boot:run
This backend repository is part of the larger Quash project, located in the parent repository at https://github.com/Oscorp-HQ/quash-max. The parent repository contains multiple components of the Quash project, including this backend.
For information on other components and how they interact, please refer to the main README in the parent repository.
For contribution guidelines, please refer to the CONTRIBUTING.md file in the parent repository.
This project is licensed under the terms specified in the LICENSE file in the parent repository.