A Flask web application that acts as a webhook receiver, storing and displaying JSON data in a human-readable format.
- Webhook Endpoint: Receive and store JSON data
- Data Organization: Organize submissions by sender with timestamps and titles
- Human-Friendly Display: View JSON data in a formatted, readable way
- Tab Navigation: Switch between different views and data representations
- Simple File System: Browse data organized like a file system
- Dropbox Storage: Uses Dropbox as the primary storage for data
- Copy Buttons: Easily copy JSON data, API endpoints, and examples
- Keep-Alive Service: Prevents Render free tier instances from shutting down due to inactivity
- Clone this repository
- Create and activate a virtual environment:
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate - Install dependencies:
pip install -r requirements.txt - Run the application:
python app.py - Visit
http://localhost:5000in your browser
This application is designed to be deployed to Render's free tier:
- Fork or push this repository to GitHub
- Create a new Web Service on Render
- Connect your GitHub repository
- Use the following settings:
- Build Command:
pip install -r requirements.txt - Start Command:
gunicorn app:app - Environment Variables:
RENDER=true- Enables Render-specific featuresKEEP_ALIVE_ENABLED=true- Enables the keep-alive serviceKEEP_ALIVE_INTERVAL_MINUTES=10- Sets ping interval (1-14 minutes)
- Build Command:
Send JSON data to the webhook endpoint with a POST request:
curl -X POST \
-H "Content-Type: application/json" \
-d '{
"sender": "example-user",
"title": "Example Submission",
"data": {
"key1": "value1",
"key2": "value2"
}
}' \
https://your-app-url.onrender.com/api/webhookThe webhook accepts any valid JSON data. Including a sender and title field is recommended for better organization.
- Visit the application's home page
- Browse data by sender
- View individual submissions in either formatted or raw view
- Use the tab navigation to switch between different perspectives
The application uses Dropbox as its primary storage location, with these features:
- All webhook data is saved to Dropbox first, then synced locally
- Manual sync controls are available in the Dropbox Sync tab
- You can specify sync direction (to Dropbox, from Dropbox, or both)
- Force sync and verification options are available
To prevent Render free tier instances from shutting down after 15 minutes of inactivity:
- The application includes a built-in keep-alive service
- A background thread sends periodic requests to keep the application active
- View the status at
/keep-alive/status - Configure via environment variables:
KEEP_ALIVE_ENABLED=true- Enable the serviceKEEP_ALIVE_INTERVAL_MINUTES=10- Set ping interval (1-14 minutes)
The following API endpoints are available:
POST /api/webhook- Submit new dataGET /api/data- List all sendersGET /api/data/<sender>- List all submissions for a senderGET /api/data/<sender>/<submission_id>- Get a specific submissionPOST /api/dropbox/sync- Trigger a manual Dropbox syncGET /api/dropbox/sync/status- View Dropbox sync statusGET /health- Health check endpointGET /keep-alive/status- View keep-alive service status
This project is available as open source under the terms of the MIT License.