From 367d3602c8edfee84c5bb44fa99667e21ebb6dc5 Mon Sep 17 00:00:00 2001 From: Alex Holliday Date: Fri, 10 Jan 2025 13:23:19 -0800 Subject: [PATCH 01/13] add array of all monitors to response for search --- Server/db/mongo/modules/monitorModule.js | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/Server/db/mongo/modules/monitorModule.js b/Server/db/mongo/modules/monitorModule.js index b191bd1bc..df80855bd 100644 --- a/Server/db/mongo/modules/monitorModule.js +++ b/Server/db/mongo/modules/monitorModule.js @@ -545,6 +545,15 @@ const getMonitorsByTeamId = async (req) => { }, ], monitors: [ + { $sort: sort }, + { + $project: { + _id: 1, + name: 1, + }, + }, + ], + filteredMonitors: [ ...(filter !== undefined ? [ { @@ -657,20 +666,21 @@ const getMonitorsByTeamId = async (req) => { { $project: { summary: { $arrayElemAt: ["$summary", 0] }, + filteredMonitors: 1, monitors: 1, }, }, ]); - let { monitors, summary } = results[0]; - monitors = monitors.map((monitor) => { + let { monitors, filteredMonitors, summary } = results[0]; + filteredMonitors = filteredMonitors.map((monitor) => { if (!monitor.checks) { return monitor; } monitor.checks = NormalizeData(monitor.checks, 10, 100); return monitor; }); - return { monitors, summary }; + return { monitors, filteredMonitors, summary }; }; /** From cd14659a59a9f2865e7713da91a953aa45a5c0f6 Mon Sep 17 00:00:00 2001 From: Alex Holliday Date: Fri, 10 Jan 2025 13:23:32 -0800 Subject: [PATCH 02/13] Use all monitors for search component instead of filtered monitors --- Client/src/Components/Inputs/Search/index.jsx | 1 - Client/src/Pages/Infrastructure/index.jsx | 2 +- Client/src/Pages/PageSpeed/index.jsx | 4 ++-- .../src/Pages/Uptime/Home/UptimeDataTable/index.jsx | 4 +++- Client/src/Pages/Uptime/Home/index.jsx | 11 +++++++---- 5 files changed, 13 insertions(+), 9 deletions(-) diff --git a/Client/src/Components/Inputs/Search/index.jsx b/Client/src/Components/Inputs/Search/index.jsx index 2491020f0..46c46de3e 100644 --- a/Client/src/Components/Inputs/Search/index.jsx +++ b/Client/src/Components/Inputs/Search/index.jsx @@ -56,7 +56,6 @@ const Search = ({ disabled, }) => { const theme = useTheme(); - return ( { field: null, order: null, }); - if (res?.data?.data?.monitors) { - setMonitors(res.data.data.monitors); + if (res?.data?.data?.filteredMonitors) { + setMonitors(res.data.data.filteredMonitors); setSummary(res.data.data.summary); } } catch (error) { diff --git a/Client/src/Pages/Uptime/Home/UptimeDataTable/index.jsx b/Client/src/Pages/Uptime/Home/UptimeDataTable/index.jsx index 31b6182fc..a184eb09f 100644 --- a/Client/src/Pages/Uptime/Home/UptimeDataTable/index.jsx +++ b/Client/src/Pages/Uptime/Home/UptimeDataTable/index.jsx @@ -88,6 +88,7 @@ const UptimeDataTable = ({ isAdmin, isLoading, monitors, + filteredMonitors, monitorCount, sort, setSort, @@ -274,7 +275,7 @@ const UptimeDataTable = ({ )} { // Redux state const rowsPerPage = useSelector((state) => state.ui.monitors.rowsPerPage); // Local state - const [monitors, setMonitors] = useState([]); const [sort, setSort] = useState({}); const [search, setSearch] = useState(""); const [page, setPage] = useState(0); const [isSearching, setIsSearching] = useState(false); const [isLoading, setIsLoading] = useState(false); const [monitorUpdateTrigger, setMonitorUpdateTrigger] = useState(false); + const [monitors, setMonitors] = useState([]); + const [filteredMonitors, setFilteredMonitors] = useState([]); const [monitorsSummary, setMonitorsSummary] = useState({}); // Utils @@ -100,11 +101,12 @@ const UptimeMonitors = () => { field: config.sort.field, order: config.sort.order, }); - const { monitors, summary } = res.data.data; - const mappedMonitors = monitors.map((monitor) => + const { monitors, filteredMonitors, summary } = res.data.data; + const mappedMonitors = filteredMonitors.map((monitor) => getMonitorWithPercentage(monitor, theme) ); - setMonitors(mappedMonitors); + setMonitors(monitors); + setFilteredMonitors(mappedMonitors); setMonitorsSummary(summary); } catch (error) { createToast({ @@ -199,6 +201,7 @@ const UptimeMonitors = () => { Date: Sat, 11 Jan 2025 01:09:50 +0000 Subject: [PATCH 03/13] Update eslint monorepo to v9.18.0 --- Server/package-lock.json | 141 ++++++--------------------------------- 1 file changed, 21 insertions(+), 120 deletions(-) diff --git a/Server/package-lock.json b/Server/package-lock.json index b6d9c3ca3..de0a4ef1d 100644 --- a/Server/package-lock.json +++ b/Server/package-lock.json @@ -229,10 +229,11 @@ "dev": true }, "node_modules/@eslint/core": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.9.1.tgz", - "integrity": "sha512-GuUdqkyyzQI5RMIWkHhvTWLCyLo1jNK3vzkSyaExH5kHPDHcuL2VOpHjmMY+y3+NC69qAKToBqldTBgYeLSr9Q==", + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.10.0.tgz", + "integrity": "sha512-gFHJ+xBOo4G3WRlR1e/3G8A6/KZAH6zcE/hkLRCZTi/B9avAG365QhFA8uOGzTMqgTghpn7/fSnscW++dpMSAw==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@types/json-schema": "^7.0.15" }, @@ -323,10 +324,11 @@ "dev": true }, "node_modules/@eslint/js": { - "version": "9.17.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.17.0.tgz", - "integrity": "sha512-Sxc4hqcs1kTu0iID3kcZDW3JHq2a77HO9P8CP6YEA/FpH3Ll8UXE2r/86Rz9YJLKme39S9vU5OWNjC6Xl0Cr3w==", + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.18.0.tgz", + "integrity": "sha512-fK6L7rxcq6/z+AaQMtiFTkvbHkBLNlwyRxHpKawP0x3u9+NC6MQTnFW+AdpwC6gfHTW0051cokQgtTN2FqlxQA==", "dev": true, + "license": "MIT", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } @@ -341,11 +343,13 @@ } }, "node_modules/@eslint/plugin-kit": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.4.tgz", - "integrity": "sha512-zSkKow6H5Kdm0ZUQUB2kV5JIXqoG0+uH5YADhaEHswm664N9Db8dXSi0nMJpacpMf+MyyglF1vnZohpEg5yUtg==", + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.5.tgz", + "integrity": "sha512-lB05FkqEdUg2AA0xEbUz0SnkXT1LcCTa438W4IWTUh4hdOnVbQyOJ81OrDXsJk/LSiJHubgGEFoR5EHq1NsH1A==", "dev": true, + "license": "Apache-2.0", "dependencies": { + "@eslint/core": "^0.10.0", "levn": "^0.4.1" }, "engines": { @@ -3067,18 +3071,19 @@ } }, "node_modules/eslint": { - "version": "9.17.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.17.0.tgz", - "integrity": "sha512-evtlNcpJg+cZLcnVKwsai8fExnqjGPicK7gnUtlNuzu+Fv9bI0aLpND5T44VLQtoMEnI57LoXO9XAkIXwohKrA==", + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.18.0.tgz", + "integrity": "sha512-+waTfRWQlSbpt3KWE+CjrPPYnbq9kfZIYUqapc0uBXyjTp8aYXZDsUH16m39Ryq3NjAVP4tjuF7KaukeqoCoaA==", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.12.1", "@eslint/config-array": "^0.19.0", - "@eslint/core": "^0.9.0", + "@eslint/core": "^0.10.0", "@eslint/eslintrc": "^3.2.0", - "@eslint/js": "9.17.0", - "@eslint/plugin-kit": "^0.2.3", + "@eslint/js": "9.18.0", + "@eslint/plugin-kit": "^0.2.5", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.1", @@ -3212,21 +3217,6 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/eslint/node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -3238,74 +3228,12 @@ "concat-map": "0.0.1" } }, - "node_modules/eslint/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/eslint/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/eslint/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/eslint/node_modules/debug": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", - "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", - "dev": true, - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/eslint/node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/eslint/node_modules/glob-parent": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, + "license": "ISC", "dependencies": { "is-glob": "^4.0.3" }, @@ -3313,15 +3241,6 @@ "node": ">=10.13.0" } }, - "node_modules/eslint/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/eslint/node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -3335,24 +3254,6 @@ "node": "*" } }, - "node_modules/eslint/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, - "node_modules/eslint/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/esm": { "version": "3.2.25", "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz", From c61f08b31c0ab553df61386f9a9f3c95b1eb3565 Mon Sep 17 00:00:00 2001 From: Alex Holliday Date: Fri, 10 Jan 2025 20:06:01 -0800 Subject: [PATCH 04/13] Add a default sort order if a field to sort by is not specified --- Server/db/mongo/modules/monitorModule.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Server/db/mongo/modules/monitorModule.js b/Server/db/mongo/modules/monitorModule.js index df80855bd..4c60e0f22 100644 --- a/Server/db/mongo/modules/monitorModule.js +++ b/Server/db/mongo/modules/monitorModule.js @@ -501,7 +501,10 @@ const getMonitorsByTeamId = async (req) => { limit = parseInt(limit); page = parseInt(page); rowsPerPage = parseInt(rowsPerPage); - + if (field === undefined) { + field = "name"; + order = "asc"; + } // Build the match stage const matchStage = { teamId: ObjectId.createFromHexString(req.params.teamId) }; if (type !== undefined) { @@ -511,7 +514,6 @@ const getMonitorsByTeamId = async (req) => { const skip = page && rowsPerPage ? page * rowsPerPage : 0; const sort = { [field]: order === "asc" ? 1 : -1 }; - const results = await Monitor.aggregate([ { $match: matchStage }, { From 4a655b0328d45648ddb21f3960d63a063923bf21 Mon Sep 17 00:00:00 2001 From: "Gorkem Cetin (BWL)" <167266851+gorkem-bwl@users.noreply.github.com> Date: Fri, 10 Jan 2025 23:48:24 -0500 Subject: [PATCH 05/13] Newreleases.io + fix star numbers --- README.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 8e9f34fb7..260e34196 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,9 @@ # **We're opening our $5000 grant funding announcement soon, in partnership with [UpRock](https://uprock.com) - check [our web page](https://checkmate.so) for preliminary details.** -**If you would like to support us, please consider giving it a ⭐ and click on "watch" so you can latest news from us. Need support or have a suggestion? Check our [Discord channel](https://discord.gg/NAb6H3UTjK) or [Discussions](https://github.com/bluewave-labs/checkmate/discussions) forum.** +- If you would like to support us, please consider giving it a ⭐ and click on "watch". +- Need support or have a suggestion? Check our [Discord channel](https://discord.gg/NAb6H3UTjK) or [Discussions](https://github.com/bluewave-labs/checkmate/discussions) forum. +- Need a ping when there's a new release? Use [Newreleases](https://newreleases.io/), a free service to track releases. ![Frame 34](https://github.com/user-attachments/assets/00db1520-24b6-42f2-aca2-a1c9794677da) @@ -14,7 +16,6 @@ ![](https://img.shields.io/github/issues-pr/bluewave-labs/checkmate) [![OpenSSF Best Practices](https://www.bestpractices.dev/projects/9901/badge)](https://www.bestpractices.dev/projects/9901) -

Checkmate

An open source uptime and infrastructure monitoring application

@@ -83,11 +84,12 @@ If you have any questions, suggestions or comments, please use our [Discord chan - [MUI (React framework)](https://mui.com/) - [Node.js](https://nodejs.org/en) - [MongoDB](https://mongodb.com) +- [Recharts](https://recharts.org) - Lots of other open source components! ## 🤝 Contributing -We pride ourselves on building strong connections with contributors at every level. Despite being a young project, Checkmate has already earned 2700 stars and attracted almost 40 contributors from around the globe. So, don’t hold back — jump in, contribute and learn with us! +We pride ourselves on building strong connections with contributors at every level. Despite being a young project, Checkmate has already earned 3300 stars and attracted 40+ contributors from around the globe. So, don’t hold back — jump in, contribute and learn with us! Here's how you can contribute: From 4fab3f871371a9a7b1416048747141ac8f7eed25 Mon Sep 17 00:00:00 2001 From: "Gorkem Cetin (BWL)" <167266851+gorkem-bwl@users.noreply.github.com> Date: Sat, 11 Jan 2025 02:32:49 -0500 Subject: [PATCH 06/13] Delete grant_funding.md as we are referencing to https://checkmate.so --- grant_funding.md | 83 ------------------------------------------------ 1 file changed, 83 deletions(-) delete mode 100644 grant_funding.md diff --git a/grant_funding.md b/grant_funding.md deleted file mode 100644 index e53698b4a..000000000 --- a/grant_funding.md +++ /dev/null @@ -1,83 +0,0 @@ -

Announcing USD 5K Grant Prize for Distributed Uptime Management Development

- -### January 9, 2025, [Checkmate](https://github.com/bluewave-labs/checkmate) & [UpRock](https://uprock.com/) - - -**Checkmate** and **UpRock** are excited to announce a USD 5,000 grant prize funding opportunity to support the development of the next-generation distributed uptime manager. UpRock, a DePIN platform with over 2 million devices worldwide, provides the foundation for Checkmate to monitor server uptime from across the globe effectively. - -This grant funding aims to empower developers to contribute innovative solutions to enhance Checkmate's functionality and usability for distributed uptime management, powered by **UpRock**. - -## Program details - -* **Submission start date:** January 9, 2025 -* **Submission deadline:** January 20, 2025 -* **Announcement of prewinners:** January 25, 2025 -* **Total prize pool:** USD 5,000 (subject to change depending on the quality or number submissions) -* **Completion timeline:** A maximum of 30 days after pre-selection - -## What we’re looking for - -* Participants are encouraged to submit ideas and features that: -* Enhance Checkmate & UpRock's distributed uptime monitoring capabilities. -* Simplify deployment for businesses and scale effectively. -* Deliver innovative value-adds to Checkmate and UpRock platform. -* Improve UI/UX consistency, performance, and monitoring reliability. - -Here are some of the sample ideas you can select from, or come up with your own. - -* **Project 1 (DePIN sourced intelligence):** Build a global internet speed survey using 3M devices. This dashboard will implement the underlying Checkmate & UpRock infrastructure and build maps and tables for: 1. Upload speed, 2. Download speed, 3. Ping numbers. -* **Project 2:** Build a notification system that will cover Discord, Slack, Telegram and webhooks. -* **Project 3:** Implement a i18n library for Checkmate. The translation framework will include modifying the source code and using an open source translation manager online so other translators can also contribute. This will help reach out to more developers to build DePIN features on top of Checkmate. -* **Project 4:** A plugin system and implementation for Checkmate to help add more UpRock platform functionality. This plugin system will also be used to add more plugins/features on top of Checkmate easily. -* **Project 5 (Checkmate CLI):** When installed via brew or curl, this CLI will help admins manage the monitoring setup directly from the command line. Admin will be able to list, check, trigger the monitors from the command line easily or change password of the users, or create/invite a new user. -* **Project 6:** Ability to tag or group monitors. Each monitor will have its own tagging, and the admin will be able to filter monitors in the table. -* **Project 7:** Deploy Checkmate and write a blog post about it on dev.to or Hackernoon. Bonus points if you market it on social media. - -## How to participate - -1. **Submit your ideas:** Fill out our online form to propose enhancements and features for Checkmate powered by UpRock, until January 20, 2025. You can submit a project based on the ideas above, or you can also come up with your own enhancement projects. -2. S**election criteria:** Prewinners will be selected based on functionality, design and impact. -3. **Implementation phase:** Prewinners will have 21 days to develop and submit their code contributions starting from January 25, 2025. -4. **Quality requirements:** Submitted code must: - - Be high quality and free from bugs. - - Pass extensive QA testing - - Adhere to Checkmate’s UI design and development standards. -5. **Grant disbursement:** Upon code acceptance via pull, winners will receive USD 1,000 each, sent to their bank account or Paypal. - -## Timeline - -- **January 10, 2025:** Grant announcement and form open for submissions. -- **January 20, 2025:** Submission deadline -- **January 25, 2025:** Winners announced. -- **21 days post-selection:** Code development and submission period. -- **Grant payment:** Issued in 14 days upon PR acceptance. - -## Rules - -- **Cap enforcement:** All projects submitted to the Checkmate & UpRock grant program will be subject to a strict funding cap of $1000 per project. This rule ensures that funding is distributed fairly among contributors, encouraging a diverse range of submissions. Applicants are encouraged to scope their projects accordingly to stay within this limit. Proposals exceeding this amount may either be revised or considered for partial funding. -- **Multiple submissions:** Contributors are welcome to submit multiple projects, provided each submission adheres to the specified funding cap and size criteria. This approach allows developers to showcase various ideas, features, and improvements without being constrained to a single proposal. Each project will be evaluated independently, ensuring fair consideration regardless of other submissions by the same contributor. -- **Partial funding:** In cases where a proposal exceeds the budget limit or includes additional features that extend beyond the core requirements, partial funding may be offered. Contributors will receive feedback and recommendations to adjust their project scope to align with the funding guidelines. This flexibility ensures that high-value features and enhancements can still be supported, even if full funding is not feasible. -- **Feedback process:** To support continuous improvement, contributors will receive constructive feedback on their submissions, whether accepted or not. Feedback will focus on areas such as code quality, design patterns, documentation and usability. Developers can use this input to refine their proposals, submit follow-ups, or enhance their future contributions. -- **Final review and recognition:** A portion of the total funding, $500 (10%), will be reserved for recognizing outstanding contributions across all categories. This award, labeled the "Best Overall Contribution" prize, will be given to a project that demonstrates exceptional innovation, technical quality, and impact. The selection process will be based on the same evaluation criteria as other submissions, with additional emphasis on originality and long-term value to the Checkmate & UpRock ecosystem. - -## Funding tiers -- **4-5 small size projects** - - Examples: Usability fixes, UI enhancements, updating test cases, writing command line interfaces or documentation updates. - - Reward: $100–$300 -- **4-5 medium size projects** - - Examples: New monitoring modules/additions, API enhancements, performance improvements or feature additions. - - Reward: $300–$600 -- **1-2 large projects** - - Examples: Integrations with 3rd party / external tools, major scalability enhancements, advanced analytics features, complex monitoring capabilities, better graphics/charts. - - Reward: $600–$1000 - -## Evaluation criteria - -- **Innovation (30%):** Uniqueness and creativity of the solution. -- **Contribution value (30%):** Impact on usability, performance, or scalability. -- **Code quality & design (40%):** Clean, documented and tested code with working examples showing screenshots and/or videos. - -## Ready to innovate for distributed uptime? - -Don’t miss this opportunity to shape the future of distributed uptime monitoring with Checkmate and UpRock! Submit your ideas today and join us in building cutting-edge solutions for global server management. -Visit Link to submit your entry. From 65428526347d212a3fbd5882bc9d09d5faed3132 Mon Sep 17 00:00:00 2001 From: "Gorkem Cetin (BWL)" <167266851+gorkem-bwl@users.noreply.github.com> Date: Sat, 11 Jan 2025 03:34:25 -0500 Subject: [PATCH 07/13] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 260e34196..0927290b1 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ -# **We're opening our $5000 grant funding announcement soon, in partnership with [UpRock](https://uprock.com) - check [our web page](https://checkmate.so) for preliminary details.** +# **Announcing $5000 grant funding in partnership with [UpRock](https://uprock.com) - check [our web page](https://checkmate.so) for funding ideas** - If you would like to support us, please consider giving it a ⭐ and click on "watch". - Need support or have a suggestion? Check our [Discord channel](https://discord.gg/NAb6H3UTjK) or [Discussions](https://github.com/bluewave-labs/checkmate/discussions) forum. From 3b9c747b7606f8d2ce4c7cb1eeaf9df26eac6b22 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Sat, 11 Jan 2025 22:16:36 +0000 Subject: [PATCH 08/13] Update dependency eslint-plugin-react-refresh to v0.4.18 --- Client/package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Client/package-lock.json b/Client/package-lock.json index 272af35dd..d14da647e 100644 --- a/Client/package-lock.json +++ b/Client/package-lock.json @@ -3619,9 +3619,9 @@ } }, "node_modules/eslint-plugin-react-refresh": { - "version": "0.4.16", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.16.tgz", - "integrity": "sha512-slterMlxAhov/DZO8NScf6mEeMBBXodFUolijDvrtTxyezyLoTQaa73FyYus/VbTdftd8wBgBxPMRk3poleXNQ==", + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.18.tgz", + "integrity": "sha512-IRGEoFn3OKalm3hjfolEWGqoF/jPqeEYFp+C8B0WMzwGwBMvlRDQd06kghDhF0C61uJ6WfSDhEZE/sAQjduKgw==", "dev": true, "license": "MIT", "peerDependencies": { From 2f2977cface8a3dfc6281f7e3fdfb7fbc83d4e40 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Sun, 12 Jan 2025 16:54:16 +0000 Subject: [PATCH 09/13] Update dependency bullmq to v5.34.9 --- Server/package-lock.json | 8 ++++---- Server/package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Server/package-lock.json b/Server/package-lock.json index b6d9c3ca3..2062e5c45 100644 --- a/Server/package-lock.json +++ b/Server/package-lock.json @@ -11,7 +11,7 @@ "dependencies": { "axios": "^1.7.2", "bcrypt": "5.1.1", - "bullmq": "5.34.8", + "bullmq": "5.34.9", "cors": "^2.8.5", "dockerode": "4.0.3", "dotenv": "^16.4.5", @@ -1744,9 +1744,9 @@ } }, "node_modules/bullmq": { - "version": "5.34.8", - "resolved": "https://registry.npmjs.org/bullmq/-/bullmq-5.34.8.tgz", - "integrity": "sha512-id5mmPg3K8tNXQ9VVlmUxBSeLmliIWUrB8Hd5c62PFrIiHywz4TN1PEqU6OWvYXEvoFCr8/BlnbE4JCrGqPVmg==", + "version": "5.34.9", + "resolved": "https://registry.npmjs.org/bullmq/-/bullmq-5.34.9.tgz", + "integrity": "sha512-olCiFMy9o+pUpBcb/RguS5uUwbma+E80cYgDcG5p7ksvWpoyoEmxq5FOUQcobeTQwO7R9PEIvVsel5yewt0mlw==", "license": "MIT", "dependencies": { "cron-parser": "^4.9.0", diff --git a/Server/package.json b/Server/package.json index 222f95f16..1937f9ca1 100644 --- a/Server/package.json +++ b/Server/package.json @@ -18,7 +18,7 @@ "dependencies": { "axios": "^1.7.2", "bcrypt": "5.1.1", - "bullmq": "5.34.8", + "bullmq": "5.34.9", "cors": "^2.8.5", "dockerode": "4.0.3", "dotenv": "^16.4.5", From ef4b11c72b39f6ffbf7f6327e1c440a9407ba88f Mon Sep 17 00:00:00 2001 From: Alex Holliday Date: Sun, 12 Jan 2025 09:51:25 -0800 Subject: [PATCH 10/13] fix error handler --- Client/src/Pages/Uptime/Home/index.jsx | 2 +- Client/src/Utils/NetworkService.js | 32 ++++++-------------------- 2 files changed, 8 insertions(+), 26 deletions(-) diff --git a/Client/src/Pages/Uptime/Home/index.jsx b/Client/src/Pages/Uptime/Home/index.jsx index e61adc397..097603bae 100644 --- a/Client/src/Pages/Uptime/Home/index.jsx +++ b/Client/src/Pages/Uptime/Home/index.jsx @@ -110,7 +110,7 @@ const UptimeMonitors = () => { setMonitorsSummary(summary); } catch (error) { createToast({ - body: "Error fetching monitors", + body: error.message, }); } finally { setIsLoading(false); diff --git a/Client/src/Utils/NetworkService.js b/Client/src/Utils/NetworkService.js index a47ed5221..c73890218 100644 --- a/Client/src/Utils/NetworkService.js +++ b/Client/src/Utils/NetworkService.js @@ -27,7 +27,13 @@ class NetworkService { this.axiosInstance.interceptors.response.use( (response) => response, (error) => { - this.handleError(error); + if (!error.request && error.response && error.response.status === 401) { + dispatch(clearAuthState()); + dispatch(clearUptimeMonitorState()); + navigate("/login"); + } else if (error.request && !error.response) { + return Promise.reject(error); + } return Promise.reject(error); } ); @@ -37,30 +43,6 @@ class NetworkService { this.axiosInstance.defaults.baseURL = url; }; - handleError(error) { - if (error.response) { - const status = error.response.status; - if (status === 401) { - this.dispatch(clearAuthState()); - this.dispatch(clearUptimeMonitorState()); - this.navigate("/login"); - } else if (status >= 500) { - // Display toast for server errors to all users - createToast({ - variant: "error", - body: "Checkmate server is not running or has issues. Please check.", - }); - } - } else if (error.request) { - // Show a toast informing the user the server didn't respond - createToast({ - variant: "error", - body: "The server did not respond. Please check your network or try again later.", - }); - } - } - - cleanup() { if (this.unsubscribe) { this.unsubscribe(); From a7c99fcd58ddefccb766d43c31c9ef092f85ca31 Mon Sep 17 00:00:00 2001 From: Alex Holliday Date: Sun, 12 Jan 2025 17:18:50 -0800 Subject: [PATCH 11/13] fix hasMonitors logic --- Client/src/Pages/Uptime/Home/index.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Client/src/Pages/Uptime/Home/index.jsx b/Client/src/Pages/Uptime/Home/index.jsx index e61adc397..73301ac7a 100644 --- a/Client/src/Pages/Uptime/Home/index.jsx +++ b/Client/src/Pages/Uptime/Home/index.jsx @@ -140,7 +140,7 @@ const UptimeMonitors = () => { setMonitorUpdateTrigger((prev) => !prev); }, []); const totalMonitors = monitorsSummary?.totalMonitors ?? 0; - const hasMonitors = monitorsSummary?.totalMonitors ?? 0; + const hasMonitors = totalMonitors > 0; const canAddMonitor = isAdmin && hasMonitors; return ( From 701bcf3b68166b2b9fb5377e3ad2aac4a38d30a4 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Mon, 13 Jan 2025 08:21:44 +0000 Subject: [PATCH 12/13] Update dependency eslint-plugin-react to v7.37.4 --- Client/package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Client/package-lock.json b/Client/package-lock.json index d14da647e..cc28bd223 100644 --- a/Client/package-lock.json +++ b/Client/package-lock.json @@ -3573,9 +3573,9 @@ } }, "node_modules/eslint-plugin-react": { - "version": "7.37.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.3.tgz", - "integrity": "sha512-DomWuTQPFYZwF/7c9W2fkKkStqZmBd3uugfqBYLdkZ3Hii23WzZuOLUskGxB8qkSKqftxEeGL1TB2kMhrce0jA==", + "version": "7.37.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.4.tgz", + "integrity": "sha512-BGP0jRmfYyvOyvMoRX/uoUeW+GqNj9y16bPQzqAHf3AYII/tDs+jMN0dBVkl88/OZwNGwrVFxE7riHsXVfy/LQ==", "dev": true, "license": "MIT", "dependencies": { From c46ef40cb7547ebb1461d28f5122ca1aa4ac8c1a Mon Sep 17 00:00:00 2001 From: "Gorkem Cetin (BWL)" <167266851+gorkem-bwl@users.noreply.github.com> Date: Mon, 13 Jan 2025 16:22:47 -0500 Subject: [PATCH 13/13] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 0927290b1..82123ca6f 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,8 @@ -# **Announcing $5000 grant funding in partnership with [UpRock](https://uprock.com) - check [our web page](https://checkmate.so) for funding ideas** +## **Announcing $5000 grant funding in partnership with [UpRock](https://uprock.com) to build distributed uptime monitoring - check [our web page](https://checkmate.so) for funding ideas** - If you would like to support us, please consider giving it a ⭐ and click on "watch". -- Need support or have a suggestion? Check our [Discord channel](https://discord.gg/NAb6H3UTjK) or [Discussions](https://github.com/bluewave-labs/checkmate/discussions) forum. +- Have a question or suggestion for the roadmap/featureset? Check our [Discord channel](https://discord.gg/NAb6H3UTjK) or [Discussions](https://github.com/bluewave-labs/checkmate/discussions) forum. - Need a ping when there's a new release? Use [Newreleases](https://newreleases.io/), a free service to track releases. ![Frame 34](https://github.com/user-attachments/assets/00db1520-24b6-42f2-aca2-a1c9794677da)