Files
Checkmate/docs/quickstart.md
2024-10-04 16:14:18 +00:00

7.8 KiB
Raw Blame History

icon
icon
sign-posts-wrench

Installing Uptime Manager

Quickstart for users (quick method)

  1. Download our Docker compose file
  2. Run docker compose up to start the application
  3. Now the application is running at http://localhost

Quickstart for developers

{% hint style="info" %} Make sure you change the directory to the specified directories, as paths in commands are relative. {% endhint %}

Cloning and initial setup

  1. Clone this repository.
  2. Checkout the develop branch git checkout develop

Setting up Docker images

  1. Change directory to the Docker/dev directory
  2. Run docker run -d -p 6379:6379 -v $(pwd)/redis/data:/data --name uptime_redis uptime_redis
  3. Run docker run -d -p 27017:27017 -v $(pwd)/mongo/data:/data/db --name uptime_database_mongo uptime_database_mongo

Server setup

  1. CD to Server directory, and run npm install
  2. While in Server directory, create a .env file with the required environmental variables
  3. While in the Server directory, run npm run dev

Client setup

  1. CD to Client directory run npm install
  2. While in the Client directory, create a .env file with the required environmental variables
  3. While in the Client cirectory run npm run dev

Access the application

  1. Client is now running at localhost:5173
  2. Server is now running at localhost:5000

Manual installation

Client installation

  1. Change directory to the Client directory
  2. Install all dependencies by running npm install

Environment variables

ENV Variable Name Required/Optional Type Description Accepted Values
VITE_APP_API_BASE_URL Required string Base URL of server {host}/api/v1
VITE_APP_LOG_LEVEL Optional string Log level "none"|"error" | "warn" |
VITE_APP_DEMO Optional boolean Demo server or not true|false |

Starting the development server

  1. Run npm run dev to start the development server.

Server Installation

  1. Change the directory to the Server directory
  2. Install all dependencies by running npm install

Environment variables

Configure the server with the following environmental variables:

ENV Variable NameRequired/OptionalTypeDescriptionAccepted Values
CLIENT_HOSTRequiredstringFrontend Host
JWT_SECRETRequiredstringJWT secret
DB_TYPEOptionalstringSpecify DB to useMongoDB | FakeDB
DB_CONNECTION_STRINGRequiredstringSpecifies URL for MongoDB Database
PORTOptionalintegerSpecifies Port for Server
LOGIN_PAGE_URLRequiredstringLogin url to be used in emailing service
REDIS_HOSTRequiredstringHost address for Redis database
REDIS_PORTRequiredintegerPort for Redis database
TOKEN_TTLOptionalstringTime for token to liveIn vercel/ms format https://github.com/vercel/ms
PAGESPEED_API_KEYOptionalstringAPI Key for PageSpeed requests
SYSTEM_EMAIL_HOSTRequiredstringHost to send System Emails From
SYSTEM_EMAIL_PORTRequirednumberPort for System Email Host
SYSTEM_EMAIL_ADDRESSRequiredstringSystem Email Address
SYSTEM_EMAIL_PASSWORDRequiredstringSystem Email Password

Databases

This project requires two databases:

  1. Main application database: The project uses MongoDB for its primary database, with a MongoDB Docker image provided for easy setup.
  2. Redis for queue management: A Redis database is used for the PingServices queue system, and a Redis Docker image is included for deployment.

You may use the included Dockerfiles to spin up databases quickly if you wish.

(Optional) Dockerised databases

Dockerfiles for the server and databases are located in the Docker directory

MongoDB Image

Location: Docker/mongoDB.Dockerfile

The Docker/mongo/data directory should be mounted to the MongoDB container in order to persist data.

From the Docker directory run

  1. Build the image: docker build -f mongoDB.Dockerfile -t uptime_database_mongo .
  2. Run the docker image: docker run -d -p 27017:27017 -v $(pwd)/mongo/data:/data/db --name uptime_database_mongo uptime_database_mongo
Redis Image

Location Docker/redis.Dockerfile

the Docker/redis/data directory should be mounted to the Redis container in order to persist data.

From the Docker directory run

  1. Build the image: docker build -f redis.Dockerfile -t uptime_redis .
  2. Run the image: docker run -d -p 6379:6379 -v $(pwd)/redis/data:/data --name uptime_redis uptime_redis

Starting the development derver

  • run npm run dev to start the development server

or,

  • run node index.js to start server

API documentation

Our API is documented in accordance with the OpenAPI spec.

You can see the documentation on your local development server at http://localhost:{port}/api-docs

You can also view the documentation on our demo server at https://uptime-demo.bluewavelabs.ca/api-docs

Error handling

Errors are returned in a standard format:

{"success": false, "msg": "No token provided"}

Errors are handled by error handling middleware and should be thrown with the following parameters

Name Type Default Notes
status integer 500 Standard HTTP codes
message string "Something went wrong" An error message
service string "Unknown Service" Name of service that threw the error

Example:

const myRoute = async(req, res, next) => {
  try{
    const result = myRiskyOperationHere();
  }
  catch(error){
    error.status = 404
    error.message = "Resource not found"
    error.service = service name
    next(error)
    return;
  }
}

Errors should not be handled at the controller level and should be left to the middleware to handle.