A modern, full-featured web interface for managing cron tasks with advanced features, built with Next.js and Python Flask.
- β Create, edit, and delete cron tasks with intuitive interface
- β Enable/disable tasks with toggle switches
- β Run tasks immediately to test them before scheduling
- β View task logs and execution results in real-time
- β Search and filter tasks with instant results
- β Backup and restore crontab files with one-click operations
- Cron Expression Generator with visual builder and helpers
- Clipboard Integration for pasting cron expressions
- Real-time Synchronization between cron expression and individual fields
- Human-readable Explanations of cron expressions
- Clear Task Logs with one-click log clearing
- Performance Optimizations with caching and rate limiting
- Security Features with input validation and sanitization
- Health Monitoring with system status checks
- Framework: Next.js 15 + React 19
- UI Components: shadcn/ui
- Icons: Lucide React
- Animations: Framer Motion
- TypeScript: Full type safety
- Package Manager: Bun or npm
- Framework: Python3 Flask with CORS support
- Cron Parsing: croniter library
- Security: Input validation and sanitization
- Performance: Caching and rate limiting
- Logging: Structured logging with file and console output
- Node.js 20+ or Bun
- Python 3.8+ with pip
- Git for cloning the repository
git clone https://github.com/ZerfyT/cron-manager.git
cd cron-manager# Install dependencies
bun install
# or
npm install
# Start development server
bun dev
# or
npm run dev# Navigate to server directory
cd server
# Install Python dependencies
pip install -r requirements.txt
# Start the Flask server
python app.py- Frontend: http://localhost:3000
- Backend API: http://127.0.0.1:5000
Frontend (.env.local):
NEXT_PUBLIC_API_URL=http://127.0.0.1:5000/apiBackend (server/.env):
# Logging
CRON_LOG_DIR=/tmp/cron-app-logs
# Security
MAX_COMMAND_LENGTH=1000
COMMAND_TIMEOUT=60
RATE_LIMIT_REQUESTS=1000
RATE_LIMIT_WINDOW=3600
# Flask
FLASK_DEBUG=False
FLASK_HOST=127.0.0.1
FLASK_PORT=5000GET /api/tasks- Get all cron tasksPOST /api/tasks- Create a new taskPUT /api/tasks/:id- Update an existing taskDELETE /api/tasks/:id- Delete a taskPOST /api/tasks/:id/toggle- Toggle task enabled/disabledPOST /api/tasks/:id/run- Run a task immediately
GET /api/logs/:id- Get task execution logDELETE /api/logs/:id- Clear task log
GET /api/crontab/backup- Download crontab backupPOST /api/crontab/restore- Upload and restore crontab
GET /api/health- Health check endpoint
- Visual Builder: Drag-and-drop interface for creating cron expressions
- Crontab Guru Style: Interactive explanation of cron expressions
- Helpers Guide: Comprehensive documentation and examples
- Real-time Preview: See when your tasks will run
- Clipboard Integration: Paste cron expressions directly from clipboard
- Real-time Sync: Changes in cron expression field sync with individual fields
- Human-readable Explanations: Understand what your cron expressions do
- Log Management: View and clear task execution logs
- Immediate Testing: Run tasks instantly to verify they work
- Input Validation: All inputs are validated and sanitized
- Rate Limiting: Prevents abuse with configurable limits
- Command Sanitization: Removes potentially dangerous characters
- Caching: Optimized performance with intelligent caching
- Error Handling: Comprehensive error handling and logging
-
Build Frontend:
bun run build
-
Deploy Backend:
cd server pip install -r requirements.txt gunicorn -w 4 -b 0.0.0.0:5000 app:app
MIT License - see LICENSE file for details.
- shadcn/ui for the beautiful UI components
- Crontab Guru for cron expression inspiration
- Next.js for the amazing React framework
- Flask for the lightweight Python web framework