You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
William Perron 5ac660838a
initial commit
1 month ago
static initial commit 1 month ago
.gitignore initial commit 1 month ago
Caddyfile initial commit 1 month ago
Dockerfile initial commit 1 month ago
README.md initial commit 1 month ago
fly.toml initial commit 1 month ago

README.md

Babypool.lol

An anonymous baby pool website.

How it works

You create a new new pool, choose the games you want to include and that's it. No need to register, enter an email or a password or anything like that. Each pool is given an ID that you can share with whoever you want to participate, you can optionally select a password to make sure no strangers participate, and you are given a unique token that gives you access to see the pool's entries and select a winner. For participants, you need to include an email address so that you can be contacted if you win, but there's no validation step involved, and the email addresses are purged when a pool is closed, or at most 3 months after the expected end date has passed.

Games Included

You can choose whichever games you want to include in the pool, with a minimum of one selected of course.

  • Date
  • Time of Day
  • Weight
  • Height
  • Biological Sex

Technical details

There are two tables: Pools, and Pool Entries.

Pools table:

Column Name Type Constraints
ID ULID Unique
admin token String
password bcrypt
games []String

games must a Set containing, from these possible values: DAY, TIME, WEIGHT, HEIGHT, BIOSEX.

Pool Entries:

Column Name Type Constraints
Pool ID ULID FK
email String
guesses JSON

guesses must satisfy the following schema:

[]struct{
    game string // one of DAY, TIME, WEIGHT, HEIGHT, BIOSEX
    val: date | time | { v: int, unit: string } | ['M', 'F']
}