An interactive timeline exploring Israeli hip‑hop artists and key events across years and decades. Built with Next.js (App Router), React, TypeScript, and Tailwind CSS.
The goal of this project is to document and visualize how Israeli hip‑hop intersects with key sociopolitical events, especially periods of conflict. The timeline aims to:
- Provide a clear, chronological view of artists, releases, public statements, and notable events by decade.
- Offer neutral, contextual metadata such as stated or perceived political affiliations, when relevant.
- Make exploration accessible in multiple languages through locale‑aware routing.
- Encourage community contributions to expand coverage and improve accuracy.
Where possible, entries should be concise, sourced, and written in a neutral tone. See the Timeline Content Model section below for how data is structured.
- Next.js 15 (App Router) with Turbopack
- React 19
- TypeScript 5.x
- Tailwind CSS v4
- ESLint 9
- Convex (Database & Backend)
Project structure follows src/ with @/* path alias.
src/app/timeline/— timeline routes and data per artist/decade[lang]/— language-aware segment (middleware-based detection)favicon.ico, globals, route files
src/data/— shared data (if any)src/middleware.ts— locale middleware and routing helperspublic/— static assets (icons, svgs)
- Install dependencies
npm install- Start the Convex development server (required)
npx convex devThis will:
- Create a Convex deployment (or connect to existing)
- Generate type-safe API code
- Set up environment variables
- Watch for changes to Convex functions
Keep this terminal running.
- Migrate data to Convex (first time only)
In a new terminal:
npm run migrateThis populates your Convex database with existing songs and events data.
- Start the Next.js dev server
In another terminal:
npm run devNote: The Convex dev server must be running for the app to work.
npm run dev— start development servernpm run build— production build (Next.js with Turbopack)npm run start— start production servernpm run lint— run ESLint onsrcnpm run migrate— migrate data to Convex databasenpx convex dev— start Convex development servernpx convex dashboard— open Convex dashboard in browser
Timeline data is now stored in Convex database with two main tables:
- songs — Song entries with artist, date, lyrics, links
- events — Conflict/event entries with dates, descriptions, effects
You can view and manage data at https://dashboard.convex.dev
convex/schema.ts— Database schema definitionconvex/songs.ts— Song queriesconvex/events.ts— Event queriesconvex/mutations.ts— Data mutations
Original data files are kept in src/app/timeline/ for reference and migration:
src/app/timeline/tuna/2010s.tssrc/app/timeline/subliminal/2010s.tssrc/app/timeline/conflicts.ts
Metadata like political affiliation is still in:
src/app/timeline/atrist-political-affiliation.ts
For detailed migration information, see CONVEX_MIGRATION.md
The app uses a [lang] segment and middleware (src/middleware.ts) to support locale-aware routing.
Tailwind CSS v4 is configured. Use utility classes in your components; global styles live under src/app/ as needed.
The app is ready for deployment on platforms like Vercel. Build with:
npm run build && npm run startSee Next.js deployment docs for details: https://nextjs.org/docs/app/building-your-application/deploying
- Create a feature branch.
- Make changes with type-safe timeline entries in
src/app/timeline/. - Run
npm run lintandnpm run buildto verify. - Open a PR.
License not specified.