Skip to content

Commit

Permalink
Merge branch 'master' into background-jobs
Browse files Browse the repository at this point in the history
# Conflicts:
#	package-lock.json
#	package.json
#	src/languages/en.js
  • Loading branch information
louislam committed Oct 16, 2021
2 parents 03b0773 + 2e24312 commit cb43ecb
Show file tree
Hide file tree
Showing 58 changed files with 2,215 additions and 560 deletions.
1 change: 1 addition & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ install.sh
SECURITY.md
tsconfig.json
.env
/tmp

### .gitignore content (commented rules are duplicated)

Expand Down
3 changes: 1 addition & 2 deletions .github/ISSUE_TEMPLATE/ask-for-help.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,8 @@ assignees: ''
**Is it a duplicate question?**
Please search in Issues without filters: https://github.com/louislam/uptime-kuma/issues?q=


**Describe your problem**

Please describe what you are asking for

**Info**
Uptime Kuma Version:
Expand Down
53 changes: 27 additions & 26 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ The project was created with vite.js (vue3). Then I created a sub-directory call

The frontend code build into "dist" directory. The server (express.js) exposes the "dist" directory as root of the endpoint. This is how production is working.

# Key Technical Skills
## Key Technical Skills

- Node.js (You should know what are promise, async/await and arrow function etc.)
- Socket.io
Expand All @@ -15,7 +15,7 @@ The frontend code build into "dist" directory. The server (express.js) exposes t
- Bootstrap
- SQLite

# Directories
## Directories

- data (App data)
- dist (Frontend build)
Expand All @@ -25,50 +25,50 @@ The frontend code build into "dist" directory. The server (express.js) exposes t
- src (Frontend source code)
- test (unit test)

# Can I create a pull request for Uptime Kuma?
## Can I create a pull request for Uptime Kuma?

Generally, if the pull request is working fine and it do not affect any existing logic, workflow and perfomance, I will merge into the master branch once it is tested.

If you are not sure, feel free to create an empty pull request draft first.

## Pull Request Examples
### Pull Request Examples

### ✅ High - Medium Priority
#### ✅ High - Medium Priority

- Add a new notification
- Add a chart
- Fix a bug
- Translations

### *️⃣ Requires one more reviewer
#### *️⃣ Requires one more reviewer

I do not have such knowledge to test it.

- Add k8s supports

### *️⃣ Low Priority
#### *️⃣ Low Priority

It changed my current workflow and require further studies.

- Change my release approach

### ❌ Won't Merge
#### ❌ Won't Merge

- Duplicated pull request
- Buggy
- Existing logic is completely modified or deleted
- A function that is completely out of scope

# Project Styles
## Project Styles

I personally do not like something need to learn so much and need to config so much before you can finally start the app.

- Easy to install for non-Docker users, no native build dependency is needed (at least for x86_64), no extra config, no extra effort to get it run
- Single container for Docker users, no very complex docker-composer file. Just map the volume and expose the port, then good to go
- Single container for Docker users, no very complex docker-compose file. Just map the volume and expose the port, then good to go
- Settings should be configurable in the frontend. Env var is not encouraged.
- Easy to use

# Coding Styles
## Coding Styles

- 4 spaces indentation
- Follow `.editorconfig`
Expand All @@ -80,20 +80,20 @@ I personally do not like something need to learn so much and need to config so m
- SQLite: underscore_type
- CSS/SCSS: dash-type

# Tools
## Tools

- Node.js >= 14
- Git
- IDE that supports ESLint and EditorConfig (I am using Intellji Idea)
- A SQLite tool (SQLite Expert Personal is suggested)

# Install dependencies
## Install dependencies

```bash
npm ci
```

# How to start the Backend Dev Server
## How to start the Backend Dev Server

(2021-09-23 Update)

Expand All @@ -103,7 +103,7 @@ npm run start-server-dev

It binds to `0.0.0.0:3001` by default.

## Backend Details
### Backend Details

It is mainly a socket.io app + express.js.

Expand All @@ -116,24 +116,26 @@ express.js is just used for serving the frontend built files (index.html, .js an
- scoket-handler (Socket.io Handlers)
- server.js (Server main logic)

# How to start the Frontend Dev Server
## How to start the Frontend Dev Server

1. Set the env var `NODE_ENV` to "development".
2. Start the frontend dev server by the following command.

```bash
npm run dev
```

It binds to `0.0.0.0:3000` by default.

You can use Vue.js devtools Chrome extension for debugging.

## Build the frontend
### Build the frontend

```bash
npm run build
```

## Frontend Details
### Frontend Details

Uptime Kuma Frontend is a single page application (SPA). Most paths are handled by Vue Router.

Expand All @@ -143,24 +145,23 @@ As you can see, most data in frontend is stored in root level, even though you c

The data and socket logic are in `src/mixins/socket.js`.


# Database Migration
## Database Migration

1. Create `patch-{name}.sql` in `./db/`
2. Add your patch filename in the `patchList` list in `./server/database.js`

# Unit Test
## Unit Test

It is an end-to-end testing. It is using Jest and Puppeteer.

```
```bash
npm run build
npm test
```

By default, the Chromium window will be shown up during the test. Specifying `HEADLESS_TEST=1` for terminal environments.

# Update Dependencies
## Update Dependencies

Install `ncu`
https://github.com/raineorshine/npm-check-updates
Expand All @@ -170,10 +171,10 @@ ncu -u -t patch
npm install
```

Since previously updating vite 2.5.10 to 2.6.0 broke the application completely, from now on, it should update patch release version only.
Since previously updating vite 2.5.10 to 2.6.0 broke the application completely, from now on, it should update patch release version only.

Patch release = the third digit
Patch release = the third digit ([Semantic Versioning](https://semver.org/))

# Translations
## Translations

Please read: https://github.com/louislam/uptime-kuma/tree/master/src/languages
12 changes: 8 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

<a target="_blank" href="https://github.com/louislam/uptime-kuma"><img src="https://img.shields.io/github/stars/louislam/uptime-kuma" /></a> <a target="_blank" href="https://hub.docker.com/r/louislam/uptime-kuma"><img src="https://img.shields.io/docker/pulls/louislam/uptime-kuma" /></a> <a target="_blank" href="https://hub.docker.com/r/louislam/uptime-kuma"><img src="https://img.shields.io/docker/v/louislam/uptime-kuma/latest?label=docker%20image%20ver." /></a> <a target="_blank" href="https://github.com/louislam/uptime-kuma"><img src="https://img.shields.io/github/last-commit/louislam/uptime-kuma" /></a> <a target="_blank" href="https://opencollective.com/uptime-kuma"><img src="https://opencollective.com/uptime-kuma/total/badge.svg?label=Backers&color=brightgreen" /></a>


<div align="center" width="100%">
<img src="./public/icon.svg" width="128" alt="" />
</div>
Expand All @@ -17,17 +16,20 @@ Try it!

https://demo.uptime.kuma.pet

It is a 5 minutes live demo, all data will be deleted after that. The server is located at Tokyo, if you live far away from here, it may affact your experience. I suggest that you should install to try it.
It is a 10 minutes live demo, all data will be deleted after that. The server is located at Tokyo, if you live far away from here, it may affact your experience. I suggest that you should install to try it.

VPS is sponsored by Uptime Kuma sponsors on [Open Collective](https://opencollective.com/uptime-kuma)! Thank you so much!

## ⭐ Features

* Monitoring uptime for HTTP(s) / TCP / Ping / DNS Record.
* Monitoring uptime for HTTP(s) / TCP / Ping / DNS Record / Push.
* Fancy, Reactive, Fast UI/UX.
* Notifications via Telegram, Discord, Gotify, Slack, Pushover, Email (SMTP), and [70+ notification services, click here for the full list](https://github.com/louislam/uptime-kuma/issues/284).
* Notifications via Telegram, Discord, Gotify, Slack, Pushover, Email (SMTP), and [70+ notification services, click here for the full list](https://github.com/louislam/uptime-kuma/tree/master/src/components/notifications).
* 20 seconds interval.
* [Multi Languages](https://github.com/louislam/uptime-kuma/tree/master/src/languages)
* Simple Status Page
* Ping Chart
* Certificate Info

## 🔧 How to Install

Expand Down Expand Up @@ -116,9 +118,11 @@ If you love this project, please consider giving me a ⭐.
## 🗣️ Discussion

### Issues Page

You can discuss or ask for help in [Issues](https://github.com/louislam/uptime-kuma/issues).

### Subreddit

My Reddit account: louislamlam
You can mention me if you ask question on Reddit.
https://www.reddit.com/r/UptimeKuma/
Expand Down
19 changes: 17 additions & 2 deletions SECURITY.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,27 @@
Use this section to tell people about which versions of your project are
currently being supported with security updates.

### Uptime Kuma Versions

| Version | Supported |
| ------- | ------------------ |
| 1.7.X | :white_check_mark: |
| < 1.7 ||
| 1.8.X | :white_check_mark: |
| <= 1.7.X ||

### Upgradable Docker Tags

| Tag | Supported |
| ------- | ------------------ |
| 1 | :white_check_mark: |
| 1-debian | :white_check_mark: |
| 1-alpine | :white_check_mark: |
| latest | :white_check_mark: |
| debian | :white_check_mark: |
| alpine | :white_check_mark: |
| All other tags ||

## Reporting a Vulnerability

Please report security issues to [email protected].

Do not use the issue tracker or discuss it in the public as it will cause more damage.
4 changes: 4 additions & 0 deletions babel.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,8 @@ if (process.env.TEST_FRONTEND) {
config.presets = ["@babel/preset-env"];
}

if (process.env.TEST_BACKEND) {
config.plugins = ["babel-plugin-rewire"];
}

module.exports = config;
5 changes: 5 additions & 0 deletions config/jest-backend.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
module.exports = {
"rootDir": "..",
"testRegex": "./test/backend.spec.js",
};

2 changes: 1 addition & 1 deletion jest-frontend.config.js → config/jest-frontend.config.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
module.exports = {
"rootDir": ".",
"rootDir": "..",
"testRegex": "./test/frontend.spec.js",
};

File renamed without changes.
2 changes: 1 addition & 1 deletion jest.config.js → config/jest.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ module.exports = {
"__DEV__": true
},
"testRegex": "./test/e2e.spec.js",
"rootDir": ".",
"rootDir": "..",
"testTimeout": 30000,
};

14 changes: 7 additions & 7 deletions vite.config.js → config/vite.config.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import legacy from "@vitejs/plugin-legacy"
import vue from "@vitejs/plugin-vue"
import { defineConfig } from "vite"
import legacy from "@vitejs/plugin-legacy";
import vue from "@vitejs/plugin-vue";
import { defineConfig } from "vite";

const postCssScss = require("postcss-scss")
const postcssRTLCSS = require('postcss-rtlcss');
const postCssScss = require("postcss-scss");
const postcssRTLCSS = require("postcss-rtlcss");

// https://vitejs.dev/config/
export default defineConfig({
Expand All @@ -20,5 +20,5 @@ export default defineConfig({
"map": false,
"plugins": [postcssRTLCSS]
}
},
})
},
});
13 changes: 13 additions & 0 deletions db/patch-http-monitor-method-body-and-headers.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
-- You should not modify if this have pushed to Github, unless it does serious wrong with the db.
BEGIN TRANSACTION;

ALTER TABLE monitor
ADD method TEXT default 'GET' not null;

ALTER TABLE monitor
ADD body TEXT default null;

ALTER TABLE monitor
ADD headers TEXT default null;

COMMIT;
File renamed without changes.
6 changes: 3 additions & 3 deletions dockerfile → docker/dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@ WORKDIR /app
ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=1

COPY . .
RUN npm install --legacy-peer-deps && \
RUN npm ci && \
npm run build && \
npm prune --production && \
npm ci --production && \
chmod +x /app/extra/entrypoint.sh


Expand Down Expand Up @@ -47,5 +47,5 @@ RUN chmod +x /app/extra/upload-github-release-asset.sh

# Dist only
RUN cd /app && tar -zcvf $DIST dist
RUN /app/extra/upload-github-release-asset.sh github_api_token=$GITHUB_TOKEN owner=louislam repo=uptime-kuma tag=$VERSION filename=$DIST
RUN /app/extra/upload-github-release-asset.sh github_api_token=$GITHUB_TOKEN owner=louislam repo=uptime-kuma tag=$VERSION filename=/app/$DIST

4 changes: 2 additions & 2 deletions dockerfile-alpine → docker/dockerfile-alpine
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@ WORKDIR /app
ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=1

COPY . .
RUN npm install --legacy-peer-deps && \
RUN npm ci && \
npm run build && \
npm prune --production && \
npm ci --production && \
chmod +x /app/extra/entrypoint.sh


Expand Down
6 changes: 6 additions & 0 deletions ecosystem.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
module.exports = {
apps: [{
name: "uptime-kuma",
script: "./server/server.js",
}]
}
Loading

0 comments on commit cb43ecb

Please sign in to comment.