GameNight! You In? (no longer just an invite tracker) (17 Viewers)

Starting to really come together now. I got the auto reminders up and working,

As of now, you will get notified when invited to an event.

2 days before, and 12 hours before you will get a reminder using the users preferred notification method (email, sms, whats app).

any feedback on this schedule... should i make it admin adjustable?

Speaking of notification methods, Email, SMS, and WhatsApp. should i add any others? adding SMS is a tough one since here in the US you need a 10DLC to be able to send SMS messaging. I was able to get one for my needs using "https://surge.app/", but anyone else wanting to host this on their own will need to get their own 10dlc number.

The folks at surge.app were very helpful in getting me though the 10dlc process. I will share my emails with them, so that future people can perhaps find this process helpful. (also, don't mention its for "poker")

SURGE:
Hey <isorg>,

Sorry I didn't look at your website closely enough before sending this through. I thought that you had built GameNight as a platform for other people to be able to set up game nights, but upon re-reading, it looks like it's just a platform for you and your friends, right? The carriers unfortunately don't allow application-to-person SMS routes to be used for personal use cases.

We could potentially get this approved if you wanted to change it to be more of a platform for people to host game nights, or if you position it as a business hosting game nights, but if this is just for personal game nights, we won't be able to get it through. If you want to try to reposition it, we can give you pointers on what that would entail. Otherwise though, we would be happy to give you a full refund.

Just let us know what you'd like to do.

ME:

Its an open sourced application project that i am working on, if i wanted to be able to send sms messages what are my options? It will be a platform for a gaming league with regular games. It Is a platform that others will be able to use to setup gaming nights.

SURGE:

I think the big thing the carriers will want to see is more of a marketing site. The site right now appears to be an initial post that gets included with a self-hosted software when you set it up, but it doesn't show much about what the site will actually do.

If you had a more typical landing page geared toward people who would want to host gaming nights and leagues and listed off the features of the platform and stuff, that would be helpful. So headlines like "Manage your gaming league with ease" and stuff like that. If you just set up a SaaS landing page like this, that would make it look a lot more like a (potential) business rather than just a personal project.

I revamped the GamnNight Landing page to look more like some type of SAAS page, (you can turn this feature ON/OFF in the admin portal), and once I did that 2 days later, I got my 10DLC number!
 
Don't know if you have done this yet, but in Invite Tracker, which is what I have been using, for invites there is A list, B list, C list for people, so when you send out invites, you can choose who get the invites first. You start out with A list invites. Then after they decline or don't fill up the spots, it will send out B list. Then C list and so on. If you haven't done that yet, this would be a great addition for inviting people.
 
I have been keeping the Git repository up to date. that's the most current one.

i have been building it with docker container and an nginx proxy server for ports 80/43 traffic.

Some really short and sweet install instructions here in the readme.
This may seem easy to set up to you, as a programmer, but to me, it is greek. Any way you could please work on a self installer to a server for us non techies?
 
This may seem easy to set up to you, as a programmer, but to me, it is greek. Any way you could please work on a self installer to a server for us non techies?

I want to put out a video, but it does require some setup. I don't think this can be turned into a installable program that you can just download and run. but... let me think on it.

You need a server to install it on. ( i am using a VPS that I pay $20 a year to host.) I use RackNerd.com

There will be some command line cmds that need to be ran.

You will need your own domain name to be able to get to the server.
 
2 days before, and 12 hours before you will get a reminder using the users preferred notification method (email, sms, whats app).

any feedback on this schedule... should i make it admin adjustable?
Yes, please make it adjustable.

Did you see my post about A, B, C list?
 
You need a server to install it on. ( i am using a VPS that I pay $20 a year to host.) I use RackNerd.com

honestly, this is nice enough that you could set it up on your server and sell cheap subscriptions instead of making it open source. i don't know how any of that works though.
 
Last edited:
I agree. I would pay $5 a month for something like this. Or a yearly fee of $30 or so would be good too. You could keep it open source still too.
 
What just started out as a “it would be cool if I could do….” project has turned into something that is really interesting.

I got a framework for adding league support. That way I can silo invites and events based off of league membership. Even could allow users to be members of multiple leagues.

Even got the domain name https://gamenight.poker.

So far this has just been a passion project :cool
 
What just started out as a “it would be cool if I could do….” project has turned into something that is really interesting.

I got a framework for adding league support. That way I can silo invites and events based off of league membership. Even could allow users to be members of multiple leagues.

Even got the domain name https://gamenight.poker.

So far this has just been a passion project :cool

they say “do what you love” - passion is love-ish. makes for a good side-gig!
 
What just started out as a “it would be cool if I could do….” project has turned into something that is really interesting.

I got a framework for adding league support. That way I can silo invites and events based off of league membership. Even could allow users to be members of multiple leagues.

Even got the domain name https://gamenight.poker.

So far this has just been a passion project :cool
That site looks cool. So if I create a free account, I can start using the features of game night for my events? Or do I still need a SMS number? It looks like you took out the need to self host it.
 
That site looks cool. So if I create a free account, I can start using the features of game night for my events? Or do I still need a SMS number? It looks like you took out the need to self host it.
The site is very much still a beta product. Heavy changes are happening.

So I think I will be moving more towards a service based site.

I plan on adding the following.

1. Leagues. Leagues will have a multilevel of management. League managers and league members.
2. Users can create their private events. Or if a league manager can create league events.
3. Allow users to be members of multiple leagues???? Not sure on this one yet.
4. This way each league gets their own calendar and users can have their own calendar too.


Currently sitting in a major traffic jam brainstorming.
 
Not everyone has a server to host files.

You could sell subscriptions on your server for hosting files for $x/month or year. Could offset your server costs.
 
Leagues.... we have leagues now!

1776380151625.webp

  • major revamp. Events are no longer public, but tied to leagues, or a private event.
  • logged in users only see their league events, and their private events.
  • League owner's can select a member and promote to league manager.
  • League User management.
  • import/export users
  • Shareable invite link. https://gamenight.poker/s/kfrfke
  • Creating an event now pulls invites from your league membership, not the entire registered users database.
  • Leagues can be hidden from the browse league.
  • leagues can be auto join, or moderated join.
 
and the league Owner/Managers screen....
1776465572481.webp
 
this seems like it would be a good candidate for patreon. charge something super cheap like $2/month i bet you get pretty heavy volume.

enjoying the updates!
 
this seems like it would be a good candidate for patreon. charge something super cheap like $2/month i bet you get pretty heavy volume.

enjoying the updates!
thought about doing all that, but just to keep things simple, I am just going to toss up a donation bucket.

1776465813204.webp
 
For A, B, and C lists invites - say you have 8 seats at your cash game. You have 10 of your favorite peeps. You put them on A list. Then you have your next 8 favorite peeps. You put them on B list. And etc. with C list.
Then you tell Game Night, send out invites. It starts with A list. It waits a certain amount of time that you put in, and it shares that deadline with the A list peeps that they have that much time to respond. If they decline, or don't respond, then Game Night sends out the invites to B list. Same time to respond. And then C list. and then D list, etc.

I could be wrong, but I think a lot of hosts have certain players/friends they want to extend invites to first, before going farther down the list.
 
By the way, it all sounds great, but if I can't try it, then it's all popcorn. I'm not sure how to install it, or if I could.
 
By the way, it all sounds great, but if I can't try it, then it's all popcorn. I'm not sure how to install it, or if I could.
The original idea and intent was to make an open source invite tracker/poker management tool for people to run and host their own private games.

I have made a pivot towards gamenight being more of a general league management tool that can host multiple leagues and I’m going to run the https://gamenight.poker website and open it up for public use.

The non league version can still be downloaded from git. But like you said. You need the ability to run your own web server.
For A, B, and C lists invites - say you have 8 seats at your cash game. You have 10 of your favorite peeps. You put them on A list. Then you have your next 8 favorite peeps. You put them on B list. And etc. with C list.
Then you tell Game Night, send out invites. It starts with A list. It waits a certain amount of time that you put in, and it shares that deadline with the A list peeps that they have that much time to respond. If they decline, or don't respond, then Game Night sends out the invites to B list. Same time to respond. And then C list. and then D list, etc.

I could be wrong, but I think a lot of hosts have certain players/friends they want to extend invites to first, before going farther down the list.
i came up with a straight priority list. You create an event and you set the number of seats/tables. You can add the invites. You drag/drop the invites in the order of preferred invite order. Invites are auto sent based on this order unit seat limit is reached. As users decline the rsvp the waitlist are invited. You can set a Time out feature to start sending waitlist invites.
 
well... just learned something new can't send a SMS using my 10dlc that contains the word "poker". LOL well, that's what URL shortners are for!
 
ok, lots of tweaks over the weekend. Got to sit down with a friend of mine who runs a bar league, and really pick his brain. He uses Tournament Director, while I am not looking to replace that, he had some great ideas.

GameNight Changelog, Recent Releases

  • v0.12000 Reusable payout structures. Tournament payouts can be saved as named structures (any split, any number of places) and reused across sessions. Scoped Personal / League / Global. Default "Standard (50/30/20)" seeded on first run.
  • v0.11000 League-scoped blind presets. League owners and managers publish blind structures that auto-appear in the timer dropdown for all league members. Grouped under "League: {name}" alongside Default, Global, and My Presets.
  • v0.10000 Personal contacts. Private per-user address book at /contacts.php. Spreadsheet grid with inline edit, CSV import/export, auto-link on signup, auto-add on invite. Event invite picker scoped to personal contacts (non-league) or league roster plus personal contacts (league events).
  • v0.09000 Removed the "Checked In" column from Manage Game. Buying in now implicitly admits the player. Removed the checkbox, stat tile, compact stat, status badge, and backend toggle action.
  • v0.08900 Edit-to-view navigation fix. Closing an edit modal opened from the view modal now returns to view instead of calendar.
  • v0.08800 Timer player panel sort fix. Single continuous alphabetical list (non-eliminated first, eliminated at bottom) instead of clustering by RSVP status.
  • v0.08701 Ghost league memberships on user delete fixed. Deleting a user cleans up league_members, league_join_requests, and queued notifications. If they owned leagues, ownership auto-transfers to the longest-tenured manager (or oldest member); orphan leagues cascade-delete.
  • v0.08700 Fire-and-forget notification queue drain. Event save no longer blocks on SMTP/SMS/shortener calls. Background PHP drains the queue immediately. Cron interval 30min to 5min.
    • Waitlist default OFF for new events.
    • Mobile invite arrows use up/down glyphs.
  • v0.08600 Event save hang fix. Invites queued in pending_notifications and sent async instead of blocking on serial API calls. 200-invitee saves now return instantly.
  • v0.08500 Per-event waitlist toggle.
    • Short.io URL shortener integration.
    • League badge in event view.
    • Admin-configurable donation banner.
    • Event editor converted to full-screen modal.
    • RSVP badges in invite editor.
    • Landing page refreshed.
    • Nav reorder (Leagues after Home).
 
Great, It looks like if someone declines, then the next person in the wait list gets invited, until they respond in or out?
that is correct!

also after the time out period, unfilled slots next in line will get invites. added a on/off for the waitlist feature.
 
That is great!! : ).

I would still add a A list/B list/C list feature, so that after a few players decline, the invites go out to a lot more than only one. This way, when the invite is like a week out, time doesn't disappear while waiting for one or two to respond in the waitlist.
 
so right now, reminders are sent out 2 days before and 12 hours before... "every approved invitee on that event (email / SMS / WhatsApp per their preferred_contact). Waitlisted and pending invitees are excluded."

users on a wait list become eligible to get a invite, when the following happens.
1. someone says "no" next on waitlist gets bumped to invite
2. the event time out period hits and waitlist are then sent invites

ok, this needs some tweaking... let me think on it.
 
ok made some backend changes on how this invite/waitlist system works now.

How invites + waitlist work today
Invite sending (event create/save)
1. You save an event with invitees.
- calendar.php (add or edit action) writes the event row, then calls $save_invites() which writes each invitee into event_invites with
a sort_order (the drag-ordered priority) and approval_status.
- For poker events with waitlist enabled, anyone whose sort_order exceeds tables × seats (the capacity) is marked approval_status =
'waitlisted'. Priority invitees (up to capacity) get approved.
- For poker events with waitlist disabled OR non-poker events, everyone who's not pending gets approved.
- If requires_approval = 1, self-signups and walk-ins land as pending instead of approved.

2. An invite row per invitee is queued.
- notify_new_invitees() (for new invitees only; existing ones don't re-invite) queues one pending_notifications row per person,
notify_type='invite'.
- Immediately after enqueue, drain_queue_async() spawns cron_drain.php & in the background so the save POST can return.

3. Drain delivers.
- cron_drain.php picks up unsent rows, claims each with attempted_at = now, attempts++, then calls dispatch_queued_notification() which
builds the invite email/SMS/WhatsApp body (with the event link) and calls send_notification() routed to the user's preferred_contact.
- Success → attempts = 0 (row stays as a sent-history record).
- Failure → attempted_at = NULL, attempts stays incremented, retries on next drain up to 3 times.

4. The recipient can RSVP three ways:
- Click the link in the email → /calendar.php?m=...&open=<id> → log in → RSVP button.
- Click the one-click RSVP token in the email → /rsvp.php?token=... (no login needed).
- Reply to the SMS/WhatsApp with "YES", "NO", "MAYBE" → sms_webhook.php / wa_webhook.php updates the rsvp column.

5. When the RSVP changes, a rsvp_to_creator row is queued so the event creator gets notified.

---
Waitlist

Setup:
- A poker event has a capacity = num_tables × seats_per_table.
- The waitlist_enabled toggle (per event) controls whether the system manages overflow.
- Invitees are ordered by sort_order (drag-and-drop in the event editor). First N = priority; everyone past N = waitlist.

Entry paths:
- On event create/edit: any invitee with sort_order > capacity starts as approval_status='waitlisted'.
- RSVP deadline: if the event has rsvp_deadline_hours set and that deadline passes, priority invitees who never RSVPed get demoted to
waitlisted automatically. They get a rsvp_deadline_demoted queue row.

Promotion (seat opens up):
- Triggers: any path where a seat opens — priority invitee RSVPs "No", the RSVP-deadline demoter runs, an event's capacity increases,
or a waitlist-enabled event is edited.
- Function: maybe_promote_waitlisted($db, $event_id) in db.php:
a. Counts currently-approved invitees who haven't declined.
b. Computes openSeats = capacity - currentFilled.
c. Pulls the top N from the waitlist ordered by sort_order.
d. Updates their approval_status='approved'.
e. Queues a waitlist_promoted notification for each ("A seat opened up").

Visibility:
- Waitlisted invitees can't RSVP (blocked in the UI and the backend).
- Event view shows them "You're on the waitlist (position #N)".
- My Events shows a "Waitlisted" badge.

Flipping the waitlist off on a saved event auto-approves any currently-waitlisted invitees (they stop being limbo).

Flipping it on re-applies capacity: invitees past sort_order > capacity get bumped to waitlisted.
 

Create an account or login to comment

You must be a member in order to leave a comment

Create account

Create an account and join our community. It's easy!

Log in

Already have an account? Log in here.

Back
Top Bottom