Introduction

TimeTiles

Note: TimeTiles is under active development.

TimeTiles is an open-source platform for creating interactive chronicles of geospatial events. Designed for journalists, researchers, activists, and the general public, TimeTiles transforms datasets with location, time, and metadata into compelling, explorable stories that anyone can understand.

What Makes TimeTiles Unique

Unlike traditional dashboards or complex GIS tools, TimeTiles focuses on narrative-driven exploration of geo-temporal data. Think of it as Datawrapper for maps, or a self-hosted alternative to Forensic Architecture's Timemap - purpose-built for turning raw data into accessible, interactive chronicles.

Perfect For

  • Journalists investigating incidents across time and space (police shootings, environmental disasters, conflicts)
  • Researchers exploring large datasets from investigations (100k+ data points)
  • Activists making complex issues accessible to the public
  • NGOs documenting human rights violations or social issues
  • Anyone who needs to tell a story with location-based data

Key Features

  • No-code data import: CSV, Excel, JSON, API endpoints, or manual entry
  • Interactive map exploration: Pan, zoom, and filter to discover patterns
  • Rich metadata support: victim information, categories, tags, ages, descriptions
  • Multi-dataset management: Handle multiple unrelated chronicles in one instance
  • Public and private modes: Share with the world or keep for internal analysis
  • Ready-to-deploy: Complete web application plus customizable library components

Quick Start

# Clone and setup
git clone <repository-url>
cd timetiles
pnpm install
 
# Start database
make up
 
# Run migrations
cd apps/web && pnpm payload:migrate
 
# Start development
pnpm dev

Visit http://localhost:3000 (opens in a new tab) to see the application.

High-Performance Architecture

TimeTiles is built to handle large datasets, including those with over 100,000 or even millions of data points. To achieve this, we leverage server-side clustering and computation to ensure the application remains fast and responsive. As much computation as possible is pushed to the database layer, for example, for histogram calculations. This approach minimizes the amount of data transferred to the client and offloads heavy processing to the backend, making for an efficient and scalable solution.

Technology Stack

  • Frontend: Next.js 15, React 19, TypeScript, Zustand
  • CMS: Payload CMS with PostgreSQL
  • UI: shadcn/ui, Tailwind CSS
  • Database: PostgreSQL with PostGIS
  • Monorepo: Turborepo with pnpm

State Management

TimeTiles utilizes Zustand for managing global application state that does not need to be reflected in the URL. This includes UI-specific states like modal visibility, temporary form inputs, or data that is frequently updated and doesn't require direct URL sharing. Zustand is chosen for its simplicity, small bundle size, and excellent performance, providing an intuitive and less verbose API.

For state that needs to be synchronized with URL query parameters, Nuqs is employed. This is crucial for features where the application state should be shareable, bookmarkable, and persist across page reloads, such as map filtering, search queries, and pagination. Nuqs offers a type-safe and efficient way to manage this URL-driven state.

Features

  • Dynamic Map Filtering: Filter data interactively by panning and zooming the map viewport.
  • Event data import system (CSV/Excel)
  • Background job processing
  • Geocoding integration
  • Spatial data management
  • Admin interface with Payload CMS

Ready to get started? Check out the development setup guide.