Skip to content
This repository has been archived by the owner on Jun 1, 2019. It is now read-only.


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


Build Status

This web application shows people who have contributed to Rust.


You need stable Rust to run Thanks.

Get the app set up. You'll need postgres installed. And sqlite3 headers I think.

Clone it:

$ git clone
$ cd thanks

Set up the database URL. Replace this with whatever credentials you need.

$ cp .env.sample .env

Inspect it to make sure it's set up the right way; only you can know what's up with your local postgres install.

Build it:

$ cargo install diesel_cli --no-default-features --features postgres
$ diesel setup
$ cargo build

Clone down the Rust repository somewhere. I put mine in ~/src:

$ cd ~/src
$ git clone

Import data from the repo:

$ cd - # go back to our app
$ cargo run --bin populate -- \
    --name Rust \
    --github rust-lang/rust \
    --url \
    --path ~/src/rust # or wherever you put the Rust source

This will take a few minutes. At the time of writing, Rust has about 61,000 commits that will need to be processed.

Run the server:

$ cargo run --bin thanks

Open your browser to the URL shown.

Other stuff

To access the database from the commannd line:

psql -p 5432 -h localhost -U postgres -d thanks

If you have the database with the old name (rust_contributors or any other), you have two options:

  • use the old name in the above command, or:
  • run psql -p 5432 -h localhost -U postgres, rename the database by running ALTER DATABASE rust_contributors RENAME TO thanks and edit .env file to use the new name.

If you're working on the populate binary, it's useful to be able to quickly drop your local database:

$ cargo run --bin the-big-red-button -- --all

You can also delete only one project by passing --name NAME option.

When it's time for a new release,

$ cargo run --bin new-release -- --name Rust --version 1.15.0 --path ~/src/rust # or wherever your Rust is --link http://link/to/changelog

As often as you want to update, run

$ cargo run --bin update-commit-db

This will hit GitHub's API instead of using a local checkout of Rust, as it is assumed that this will run on the server, and we don't want to do a full git checkout there.

To hide someone from the page, you can run opt-out binary (append an extra --opt-in option to that if you want to revert the change)):

cargo run --bin opt-out -- --email


The first version of, succeeded by rust-lang/thanks




Apache-2.0, MIT licenses found

Licenses found


Security policy





No releases published


No packages published