# 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'] } ```