Skip to content

Build accurate rankings through fast, decisive 1v1 battles.

License

Notifications You must be signed in to change notification settings

martinezharo/rankmaker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

20 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

RANKMAKER Logo

RANKMAKER

Rank your stuff β€” no tiers, no noise, just accurate 1v1 rankings.

Features β€’ Demo β€’ Tech Stack β€’ Getting Started β€’ Project Structure β€’ Deployment β€’ Contributing β€’ License


What is RANKMAKER?

RANKMAKER is a web application that lets users build precise, personalized rankings through fast 1-on-1 matchups. Instead of dragging items into broad tiers, users are presented with head-to-head battles and their choices are compiled into an ordered ranking using an efficient sorting algorithm.

Pick a template β€” movies, music, sports, anime, food, and many more β€” and let the battles decide what really comes out on top.

Demo

Live site: rankmaker.net

Features

  • 1v1 Battle System β€” Fast, tap-friendly matchup interface that minimizes decision fatigue.
  • Smart Sorting Algorithm β€” Generates accurate rankings from the fewest comparisons possible.
  • Pre-built Templates β€” Across 18 categories: Movies, Music, Sports, Games, TV, Anime, Food, and more.
  • Full-text Search β€” Search templates by title, description, or individual options.
  • Podium & Full Results β€” Animated podium for the top 3 plus a complete ordered list.
  • Share & Export β€” Download your ranking as an image, share the template link, or post to X (Twitter).
  • Battle History β€” Review every matchup you made during a ranking session.
  • Undo & Finish Early β€” Changed your mind? Undo the last matchup or finish early at any time.
  • Manual Reorder β€” Fine-tune your final ranking by dragging items into position.
  • Internal Tracking β€” Anonymous tracking of ranking starts for internal analytics and future features.
  • Responsive Design β€” Fully responsive, looks great on phones, tablets, and desktops.
  • View Transitions β€” Smooth page transitions powered by Astro's View Transitions API.
  • SEO Optimized β€” Dynamic sitemap, proper meta tags, and semantic HTML.
  • Cookie Consent β€” GDPR-compliant cookie consent banner.

Tech Stack

Layer Technology
Framework Astro 5 (static output)
Styling Tailwind CSS 4
Language TypeScript
Fonts Outfit (Google Fonts)
Icons Font Awesome 6
Data Source Local JSON file (src/data/templates.json)
Storage Cloudflare KV (Internal Tracking)
Hosting Cloudflare Pages via @astrojs/cloudflare adapter
Package Manager pnpm

Getting Started

Prerequisites

  • Node.js β‰₯ 18
  • pnpm β‰₯ 8 (install with npm install -g pnpm if needed)

Installation

# Clone the repository
git clone https://github.com/martinezharo/rankmaker.git
cd rankmaker

# Install dependencies
pnpm install

Development

# Start the dev server (http://localhost:4321)
pnpm dev

Build

# Build for production
pnpm build

# Preview the production build locally
pnpm preview

Project Structure

rankmaker/
β”œβ”€β”€ public/                     # Static assets (logos, favicon, images)
β”‚   β”œβ”€β”€ images/                 # Template cover images
β”‚   β”œβ”€β”€ RANKMAKER-logo.webp
β”‚   β”œβ”€β”€ robots.txt
β”‚   └── ...
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ components/
β”‚   β”‚   β”œβ”€β”€ ranking/            # Battle & results components
β”‚   β”‚   β”‚   β”œβ”€β”€ BattleView.astro
β”‚   β”‚   β”‚   β”œβ”€β”€ ResultsView.astro
β”‚   β”‚   β”‚   β”œβ”€β”€ FinishEarlyModal.astro
β”‚   β”‚   β”‚   └── BattleHistoryModal.astro
β”‚   β”‚   β”œβ”€β”€ Header.astro
β”‚   β”‚   β”œβ”€β”€ Footer.astro
β”‚   β”‚   β”œβ”€β”€ TemplateCard.astro
β”‚   β”‚   β”œβ”€β”€ CategorySection.astro
β”‚   β”‚   β”œβ”€β”€ SEOContent.astro
β”‚   β”‚   β”œβ”€β”€ SmartImage.astro
β”‚   β”‚   └── CookieConsent.astro
β”‚   β”œβ”€β”€ data/
β”‚   β”‚   └── templates.json      # All template data (auto-generated)
β”‚   β”œβ”€β”€ layouts/
β”‚   β”‚   └── Layout.astro        # Base HTML layout
β”‚   β”œβ”€β”€ pages/
β”‚   β”‚   β”œβ”€β”€ index.astro         # Homepage with category sections
β”‚   β”‚   β”œβ”€β”€ search.astro        # Template search & filter page
β”‚   β”‚   β”œβ”€β”€ about.astro         # About page
β”‚   β”‚   β”œβ”€β”€ contact.astro       # Contact page
β”‚   β”‚   β”œβ”€β”€ api/
β”‚   β”‚   β”‚   └── track.ts        # Server-side API for ranking tracking
β”‚   β”‚   β”œβ”€β”€ template/
β”‚   β”‚   β”‚   └── [slug].astro    # Dynamic template page (battle + results)
β”‚   β”‚   β”œβ”€β”€ sitemap.xml.ts      # Dynamic XML sitemap
β”‚   β”‚   └── ...                 # Legal pages (privacy, terms, cookies, etc.)
β”‚   β”œβ”€β”€ styles/
β”‚   β”‚   └── global.css          # Global styles & Tailwind config
β”‚   └── env.d.ts                # TypeScript definitions for Cloudflare runtime
β”œβ”€β”€ astro.config.mjs            # Astro configuration
β”œβ”€β”€ wrangler.jsonc              # Cloudflare Workers config
β”œβ”€β”€ tsconfig.json
β”œβ”€β”€ package.json
β”œβ”€β”€ pnpm-lock.yaml

Internal Tracking & Future Features

We have implemented a Server-Side API (/api/track) that logs anonymous ranking events to Cloudflare KV whenever a user clicks "Start Ranking".

  • Why? This is currently used for internal control to see which templates are most popular.
  • Future Plans: This data will be used to implement a real-time "Times Ranked" counter on the frontend for each template card and detail page.

Deployment

RANKMAKER is configured to deploy on Cloudflare Pages using the @astrojs/cloudflare adapter.

Deploy with Wrangler

# Build the project
pnpm build

# Deploy to Cloudflare
npx wrangler pages deploy dist

Deploy via Cloudflare Dashboard

  1. Connect your GitHub repository in the Cloudflare Pages dashboard.
  2. Set the build command to pnpm build.
  3. Set the output directory to dist.
  4. Add your environment variables if needed.

Contributing

Contributions are welcome! Please read the Contributing Guide before submitting a pull request.

License

This project is licensed under the MIT License β€” see the LICENSE file for details.


Made with ❀️ by Oli

About

Build accurate rankings through fast, decisive 1v1 battles.

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors