7.0 KiB
I need help creating a prompt for Gemini CLI to develop a simple app for me. Here is what I have so far:
Create a web application where users can create a lobby and invite their friends to track which persons turn it is in a game. The app should show the current users turn and the turn order. Lobbies should have invite links to join. The user that creates the lobby should be able to have "admin" control to invite people, change the turn order, or change whos turn it is. The app should be a progressive web application with a backend that tracks the state using SQLite or something equally as light, and the front end should be setup to check the server for if its the persons turn every so often (this should be configurable) and give the user a notification. There should be basic login and password, without email, just a username and a password. There should be a "super" admin that can change peoples passwords if someone loses it. The app should be easily runnable in a docker container.
Please ask me follow up questions to clarify the point of the app, how it works, and its infrastructure to help me improve the prompt. This will be a self hosted app ran on my own hardware using nginx proxy manager to link it to a domain name with SSL, so no cloud setup.
That's a great start to your prompt! To help me refine it further and ensure the Gemini CLI can generate the most accurate and useful application for you, let's clarify a few points about the app's purpose, how it works, and its infrastructure.
Here are some follow-up questions:
About the Game & Turn Tracking:
What kind of "game" is this primarily intended for? Is it for board games, video games, tabletop role-playing games, or perhaps even real-life activities like taking turns doing chores? Knowing the context will help tailor the UI.
How many players do you typically expect in a lobby? (e.g., 2-4, 5-10, 10+). This impacts UI layout and performance considerations.
How does a turn typically "end" in your envisioned game?
Does the current player click a "Next Turn" button?
Does the lobby admin manually advance the turn?
Is there a timer that automatically advances the turn?
What kind of notification do you envision when it's a user's turn? (e.g., a browser push notification, an audible alert, an in-app visual alert, or a combination?)
What's a reasonable range for the "check the server every so often" interval? (e.g., every 5 seconds, every 30 seconds, every minute, every 5 minutes?)
Lobby & User Management:
How should the invite links work?
Should they be unique, one-time use links?
Should they be permanent links to a specific lobby that anyone with the link can join?
Do users need to be logged in before joining via an invite link, or can they create an account/log in as part of the joining process?
What happens when a user leaves a lobby? Should their name be removed from the turn order immediately, or should there be an option for the admin to remove them?
Can a single user be a member of multiple lobbies simultaneously? If so, how should the UI handle switching between them?
Admin Controls:
When an admin "changes the turn order," how granular should this control be?
Should they be able to drag-and-drop players in a list?
Should they be able to swap the positions of two specific players?
Should they be able to move a player to a specific position (e.g., "move John to position 3")?
For "changing whose turn it is," is this a direct jump to a specific player, or simply moving that player to the front of the queue?
Are there any other "admin" controls you anticipate needing for lobbies? (e.g., renaming the lobby, setting a lobby password, kicking a player, pausing the turn order?)
Authentication & Super Admin:
How will the "super admin" account be initially created or managed? (e.g., hardcoded in an environment variable, created via a special setup script, or the very first user registered becomes the super admin?)
If a user forgets their password and there's no super admin available, is there any fallback mechanism? (The prompt currently implies the super admin is the only way, just confirming this is the desired behavior).
Technical & Infrastructure:
Regarding "SQLite or something equally as light," are you open to other embedded database solutions like IndexedDB (for client-side PWA storage) or a simple file-based JSON database for the backend if it simplifies development?
When you say "Progressive Web Application," are you looking for all PWA features (offline support, installability to home screen, push notifications via service workers) or just some aspects like responsiveness and web app manifest?
For Docker, do you have a preference for a single container (backend and frontend served from the same container) or separate containers for the backend API and the frontend static files?
Your answers will help create a much more precise and effective prompt!
-
We are doing this for civilization 6 play by cloud, but the UI should be somewhat generic and friendly if there ends up being other reasons to use it.
-
between 2 and 10 people
-
The person should be able to just press a button that says their turn is over; the lobby admin can manually advance things also if things get messed up
-
a browser push notification should work great
-
Every 5 minutes
-
The invite links should be unique per lobby, but not one time use. They need to create an account or login before being able to join a lobby
-
When a user leaves a lobby, they should still show up in the turn order, but they will be skipped over. The admin can remove them also
-
A single user can be a member or start as many lobbies as they want
-
A lobby admin should be able to drag and drop the users in the turn order
-
For changing whose turn it is, the turn order of users should be drag and drop for the admin, and then there should be an arrow on the side pointing to whose turn it is, and the admin can drag and drop that also to point to whose turn it is.
-
Admins should be able to rename the lobby, setting a lobby password, or kick a player
-
The super admin can be set with environmental variables through the docker container
-
No
-
For client side storage indexeddb is great, for the backend a json file is totally fine, but it definitely needs to store to disk not just in memory in case my server gets restarted.
-
For the progressive web app I am looking for installability on the home screen and push notifications via service workers. The notifications are the most important part of this application.
-
I would prefer one simple container
That's excellent, this level of detail is exactly what's needed! I've incorporated all your clarifications into a refined prompt for the Gemini CLI. This should give it a much clearer picture of what to build.
Here's the improved prompt: Refined Prompt for Turn Tracker Web Application Jul 21, 6:06 PM
This prompt is now much more comprehensive and leaves less room for ambiguity. Let me know if you think of any other details!