A modern, full-stack dashboard designed to keep your free-tier servers (Render, Railway, Heroku, etc.) awake by periodically pinging them.
Free tiers often "sleep" after a period of inactivity. This application runs a background service that sends automated HTTP requests to your specified URLs at set intervals, ensuring your projects stay active and responsive.
- Background Pinging: Automated HTTP GET requests sent at user-defined intervals (1-60 minutes).
- Target Management: Add, pause, resume, and delete multiple targets.
- Detailed Descriptions: Add notes to each target to remember what they are.
- Relational Status Tracking: See the result of the last ping (200 OK, 404, or failure) and when it happened.
- Persistent State: Uses a combination of client-side sync and server-side in-memory storage to ensure timers stay active.
- Modern UI: Built with React 19, Tailwind CSS 4, and Motion for smooth animations.
- Responsive Design: Works perfectly on desktop and mobile.
- Frontend: React 19, Vite, Tailwind CSS 4, Motion, Lucide Icons.
- Backend: Express, Node.js (Full-stack ESM setup).
- Tooling: TypeScript,
tsxfor production runtime.
This project is pre-configured for easy deployment on Railway.
- A Railway account.
- This codebase pushed to a GitHub repository.
- Connect GitHub: On Railway, click "New Project" -> "Deploy from GitHub repo".
- Select Repo: Choose the repository containing this project.
- Environment Variables:
- Railway will automatically detect the
PORTvariable. - Set
NODE_ENVtoproduction.
- Railway will automatically detect the
- Build & Start:
- Railway's Nixpacks will automatically detect the
package.json. - It will run
npm run buildand thennpm start.
- Railway's Nixpacks will automatically detect the
- Profit: Once deployed, your dashboard is live! You can now add your other Render/Railway URLs to keep them awake.
-
Install dependencies:
npm install
-
Start the development server:
npm run dev
The app will be available at
http://localhost:3000.
Since this dashboard itself might be deployed on a free tier, it uses a Client-to-Server Sync Pattern. When you open the dashboard in your browser, it sends your locally saved targets to the server. The server then resumes the background ping timers if they aren't already running.
To ensure 100% uptime for your other projects, it is recommended to host this specific dashboard on a non-sleeping tier or periodically visit the dashboard page to re-trigger the timers if the container restarts.
Built by Rehan97.