Shiny application for processing and donating social media platform data
Find a file
2026-03-23 09:01:20 +01:00
.gitignore Cleanups. 2026-03-18 10:34:23 +01:00
.Rbuildignore Fix README 2026-03-18 10:32:36 +01:00
app.R German locale 2026-03-18 13:27:56 +01:00
backend.R Fix tibble not returned bug. 2026-03-23 09:01:20 +01:00
dd-shiny.Rproj Current state 2025-12-11 20:45:40 +01:00
file_input_area.R Current state 2025-12-11 20:45:40 +01:00
LICENSE.md Fix README 2026-03-18 10:32:36 +01:00
messages_de.R German locale 2026-03-18 13:57:45 +01:00
messages_en.R Move all translation strings to dedicated messages_en.R file 2026-03-18 12:45:32 +01:00
README.md Make small note. 2026-03-18 11:14:02 +01:00
thankyou.md Add selective data donation with thank you page 2026-03-18 09:24:22 +01:00
thankyou_de.md German locale 2026-03-18 13:27:56 +01:00
welcome.md Add TikTok data donation Shiny app with analytics 2026-03-18 08:06:50 +01:00
welcome_de.md German locale 2026-03-18 13:57:45 +01:00

Platform Data Donation App

A Shiny application for processing and donating social media platform data with selective activity controls and anonymous user identification.

Features

  • Selective Donation: Choose which activity types to donate via checkboxes
  • Anonymous User ID: Automatically generated from file hash (overrideable via URL)
  • Multiple Data Types: Processes video browsing, search history, likes, and comments
  • Data Preview: Collapsible sections showing sample data before donation
  • Privacy-focused: All data saved anonymously with configurable user IDs

Installation

# Install required packages
install.packages(c("shiny", "bslib", "markdown", "shinyjs", "tidyverse"))

# Run the app
shiny::runApp()

Usage

  1. Upload: Drop your TikTok JSON file in the file input area
  2. Review: Browse the available data types in the "Select Data" tab
  3. Select: Check/uncheck activities you want to donate
  4. Donate: Click "Donate Selected Data" to save your contribution

User ID System

  • Default: Generated from file hash (10-character anonymous ID)
  • Override: Use ?id=YOUR_ID URL parameter to specify custom ID
  • Format: Files saved as data/{user_id}_activities.tsv

File Requirements

  • TikTok JSON export files
  • Use jq 'paths as $p | getpath($p) | select(type == "array" and length > 0) | ($p | join("."))' user_data.json to get the currently valid field names.

Output

Data is saved in TSV format with the following structure:

  • timestamp: Activity timestamp
  • activity: Activity type name
  • content_id: Content identifier (when applicable)
  • Additional fields specific to each activity type

Privacy & Security

  • Files are processed locally in the browser
  • User IDs are anonymized hashes, not personal information
  • Data is only saved upon explicit user consent
  • No external connections or third-party services

Development

# For development with hot reload
shiny::runApp(reload = TRUE)

# Test with custom user ID
# Navigate to: http://localhost:8000/?id=test_user_123

License

License: MIT. Developed by the Computational Communication Research Group, JGU Mainz.