Skip to content

Commit f098ded

Browse files
authored
Merge pull request #77 from fccview/develop
Lift off
2 parents b2dc0a3 + 3ac9a5c commit f098ded

83 files changed

Lines changed: 1899 additions & 1253 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

Dockerfile

Lines changed: 14 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,7 @@
1-
FROM node:20-slim AS base
2-
3-
RUN apt-get update && apt-get install -y \
4-
pciutils \
5-
curl \
6-
iputils-ping \
7-
util-linux \
8-
ca-certificates \
9-
gnupg \
10-
lsb-release \
11-
&& rm -rf /var/lib/apt/lists/*
12-
13-
RUN curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg \
14-
&& echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null \
15-
&& apt-get update \
16-
&& apt-get install -y docker-ce-cli \
17-
&& rm -rf /var/lib/apt/lists/*
1+
FROM node:20-alpine AS base
182

193
FROM base AS deps
4+
RUN apk add --no-cache libc6-compat
205
WORKDIR /app
216

227
COPY package.json yarn.lock* package-lock.json* pnpm-lock.yaml* ./
@@ -42,26 +27,27 @@ WORKDIR /app
4227
ENV NODE_ENV=production
4328
ENV NEXT_TELEMETRY_DISABLED=1
4429

45-
RUN groupadd --system --gid 1001 nodejs
46-
RUN useradd --system --uid 1001 nextjs
30+
RUN apk add --no-cache su-exec docker-cli pciutils curl iputils util-linux ca-certificates
31+
32+
RUN addgroup --system --gid 1001 nodejs
33+
RUN adduser --system --uid 1001 nextjs
4734

4835
RUN mkdir -p /app/scripts /app/data /app/snippets && \
4936
chown -R nextjs:nodejs /app/scripts /app/data /app/snippets
5037

51-
COPY --from=builder /app/public ./public
52-
53-
COPY --from=builder --chown=nextjs:nodejs /app/.next ./.next
38+
RUN mkdir -p /app/.next/cache && \
39+
chown -R nextjs:nodejs /app/.next
5440

55-
COPY --from=builder --chown=nextjs:nodejs /app/app ./app
41+
COPY --from=builder --chown=nextjs:nodejs /app/.next/standalone ./
42+
COPY --from=builder --chown=nextjs:nodejs /app/.next/static ./.next/static
5643

57-
COPY --from=builder /app/package.json ./package.json
58-
COPY --from=builder /app/yarn.lock ./yarn.lock
59-
60-
COPY --from=deps --chown=nextjs:nodejs /app/node_modules ./node_modules
44+
COPY --from=builder /app/public ./public
6145

6246
EXPOSE 3000
6347

6448
ENV PORT=3000
6549
ENV HOSTNAME="0.0.0.0"
6650

67-
CMD ["yarn", "start"]
51+
USER nextjs
52+
53+
CMD ["node", "server.js"]

README.md

Lines changed: 12 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<img src="public/heading.png" width="400px">
33
</p>
44

5-
## Table of Contents
5+
## Quick links
66

77
- [Features](#features)
88
- [Quick Start](#quick-start)
@@ -18,11 +18,16 @@
1818
- [Managing Cron Jobs](#managing-cron-jobs)
1919
- [Job Execution Logging](#job-execution-logging)
2020
- [Managing Scripts](#managing-scripts)
21-
- [Technologies Used](#technologies-used)
22-
- [Contributing](#contributing)
23-
- [License](#license)
2421

25-
---
22+
23+
<div align="center">
24+
25+
| Desktop | Mobile |
26+
|---------|--------|
27+
| ![Dark Mode Desktop](screenshots/home-dark.png) | ![Dark Mode Mobile](screenshots/home-dark-mobile.png) |
28+
| ![Light Mode Desktop](screenshots/home-light.png) | ![Light Mode Mobile](screenshots/home-light-mobile.png) |
29+
30+
</div>
2631

2732
## Features
2833

@@ -51,26 +56,13 @@
5156
<br />
5257
</p>
5358

54-
---
55-
56-
<br />
57-
58-
## Before we start
59-
60-
Hey there! 👋 Just a friendly heads-up: I'm a big believer in open source and love sharing my work with the community. Everything you find in my GitHub repos is and always will be 100% free. If someone tries to sell you a "premium" version of any of my projects while claiming to be me, please know that this is not legitimate. 🚫
61-
62-
If you find my projects helpful and want to fuel my late-night coding sessions with caffeine, I'd be super grateful for any support! ☕
63-
6459
<p align="center">
6560
<a href="https://www.buymeacoffee.com/fccview">
66-
<img src="https://cdn.buymeacoffee.com/buttons/v2/default-yellow.png" alt="Buy me a coffee" width="150">
61+
<img src="https://cdn.buymeacoffee.com/buttons/v2/default-yellow.png" alt="Buy me a coffee" width="120">
6762
</a>
6863
</p>
6964

70-
<div align="center">
71-
<img width="500px" src="screenshots/home.png">
72-
<img width="500px" src="screenshots/live-running.png" />
73-
</div>
65+
---
7466

7567
<a id="quick-start"></a>
7668

@@ -93,7 +85,6 @@ services:
9385
- "40123:3000"
9486
environment:
9587
- NODE_ENV=production
96-
- DOCKER=true
9788
- NEXT_PUBLIC_CLOCK_UPDATE_INTERVAL=30000
9889
- AUTH_PASSWORD=very_strong_password
9990
- HOST_CRONTAB_USER=root
@@ -335,16 +326,6 @@ I would like to thank the following members for raising issues and help test/deb
335326
</tbody>
336327
</table>
337328

338-
<a id="license"></a>
339-
340-
## License
341-
342-
This project is licensed under the MIT License.
343-
344-
## Support
345-
346-
For issues and questions, please open an issue on the GitHub repository.
347-
348329
## Star History
349330

350331
[![Star History Chart](https://api.star-history.com/svg?repos=fccview/cronmaster&type=Date)](https://www.star-history.com/#fccview/cronmaster&Date)

app/_components/FeatureComponents/Cronjobs/CronJobList.tsx

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,16 @@ import {
99
import { Button } from "@/app/_components/GlobalComponents/UIElements/Button";
1010
import { Switch } from "@/app/_components/GlobalComponents/UIElements/Switch";
1111
import {
12-
Clock,
13-
Plus,
12+
ClockIcon,
13+
PlusIcon,
1414
Archive,
15-
ChevronDown,
16-
Code,
17-
MessageSquare,
18-
Settings,
19-
Loader2,
20-
Filter,
21-
} from "lucide-react";
15+
CaretDownIcon,
16+
CodeIcon,
17+
ChatTextIcon,
18+
GearIcon,
19+
CircleNotchIcon,
20+
FunnelIcon,
21+
} from "@phosphor-icons/react";
2222
import { CronJob } from "@/app/_utils/cronjob-utils";
2323
import { Script } from "@/app/_utils/scripts-utils";
2424
import { UserFilter } from "@/app/_components/FeatureComponents/User/UserFilter";
@@ -236,8 +236,8 @@ export const CronJobList = ({ cronJobs, scripts }: CronJobListProps) => {
236236
<CardHeader>
237237
<div className="flex flex-col sm:flex-row sm:items-center justify-between gap-4">
238238
<div className="flex items-center gap-3">
239-
<div className="p-2 bg-primary/10 rounded-lg">
240-
<Clock className="h-5 w-5 text-primary" />
239+
<div className="p-2 bg-primary/10 ascii-border">
240+
<ClockIcon className="h-5 w-5 text-primary" />
241241
</div>
242242
<div>
243243
<CardTitle className="text-xl brand-gradient">
@@ -261,7 +261,7 @@ export const CronJobList = ({ cronJobs, scripts }: CronJobListProps) => {
261261
className="btn-outline"
262262
title={t("cronjobs.filters")}
263263
>
264-
<Filter className="h-4 w-4" />
264+
<FunnelIcon className="h-4 w-4" />
265265
</Button>
266266
<Button
267267
onClick={() => setIsBackupModalOpen(true)}
@@ -276,7 +276,7 @@ export const CronJobList = ({ cronJobs, scripts }: CronJobListProps) => {
276276
onClick={() => setIsNewCronModalOpen(true)}
277277
className="btn-primary glow-primary"
278278
>
279-
<Plus className="h-4 w-4 mr-2" />
279+
<PlusIcon className="h-4 w-4 mr-2" />
280280
{t("cronjobs.newTask")}
281281
</Button>
282282
</div>
@@ -301,7 +301,7 @@ export const CronJobList = ({ cronJobs, scripts }: CronJobListProps) => {
301301
onNewTaskClick={() => setIsNewCronModalOpen(true)}
302302
/>
303303
) : (
304-
<div className="space-y-3 max-h-[55vh] min-h-[55vh] overflow-y-auto">
304+
<div className="space-y-4 max-h-[55vh] min-h-[55vh] overflow-y-auto tui-scrollbar pr-1">
305305
{loadedSettings ? (
306306
filteredJobs.map((job) =>
307307
minimalMode ? (
@@ -347,7 +347,7 @@ export const CronJobList = ({ cronJobs, scripts }: CronJobListProps) => {
347347
)
348348
) : (
349349
<div className="flex items-center justify-center h-full min-h-[55vh]">
350-
<Loader2 className="h-8 w-8 animate-spin text-primary" />
350+
<CircleNotchIcon className="h-8 w-8 animate-spin text-primary" />
351351
</div>
352352
)}
353353
</div>

app/_components/FeatureComponents/Cronjobs/Parts/CronJobEmptyState.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
"use client";
22

33
import { Button } from "@/app/_components/GlobalComponents/UIElements/Button";
4-
import { Clock, Plus } from "lucide-react";
4+
import { ClockIcon, PlusIcon } from "@phosphor-icons/react";
55

66
interface CronJobEmptyStateProps {
77
selectedUser: string | null;
@@ -15,7 +15,7 @@ export const CronJobEmptyState = ({
1515
return (
1616
<div className="text-center py-16">
1717
<div className="mx-auto w-20 h-20 bg-gradient-to-br from-primary/20 to-blue-500/20 rounded-full flex items-center justify-center mb-6">
18-
<Clock className="h-10 w-10 text-primary" />
18+
<ClockIcon className="h-10 w-10 text-primary" />
1919
</div>
2020
<h3 className="text-xl font-semibold mb-3 brand-gradient">
2121
{selectedUser
@@ -32,7 +32,7 @@ export const CronJobEmptyState = ({
3232
className="btn-primary glow-primary"
3333
size="lg"
3434
>
35-
<Plus className="h-5 w-5 mr-2" />
35+
<PlusIcon className="h-5 w-5 mr-2" />
3636
Create Your First Task
3737
</Button>
3838
</div>

0 commit comments

Comments
 (0)