A public, read-only version of the internal Pokémon-inspired sprint naming tool I built to make sprint planning more engaging for engineering teams.
This demo is designed to be safe to publish: it runs as a static site, loads demo data from JSON, and intentionally disables write operations. Forks can enable persistence by configuring their own Firebase project and rules.
Read-only demo: write features are intentionally disabled in this repository and in the hosted demo
The app generates sprint names using data from the PokéAPI and generates randomized names directly in the browser.
In this public demo, teams and sprint history are loaded from local JSON files and all write actions (e.g., saving, renaming, deleting) are disabled in this version to prevent misuse. Forks of the project can re-enable them by changing the configuration and rules in Firebase.
sprint-name-generator/
├── public/
│ ├── data/
│ │ ├── teams.json
│ │ └── sprint_history.json
│ ├── config.example.js
│ ├── favicon.png
│ └── index.html
├── docs/
│ └── images/
│ └── app.png
├── .github/
│ ├── ISSUE_TEMPLATE/
│ ├── workflows/
│ ├── dependabot.yml
│ └── pull_request_template.md
├── firebase.rc
├── firebase.json
├── firestore.rules
├── firestore.rules.example
├── LICENSE
└── CHANGELOG.md
└── README.md
This repo runs as a static site. Demo mode uses PokéAPI plus local JSON data under public/data/.
-
Clone the repository
git clone https://github.com/akikoiwamizu/sprint-name-generator.git cd sprint-name-generator -
Copy the example config
cp public/config.example.js public/config.js
-
Serve locally
python3 -m http.server 8080
Then open http://localhost:8080.
-
Try it out
You should see a list of demo teams and a sample sprint history.
- First select a team
- Click Generate to create a new sprint name
- Attempting a write action will show a read-only alert
The public demo uses static JSON so it can run without a database:
public/data/teams.jsonpublic/data/sprint_history.json
Forks can replace these files with their own internal data or switch to Firestore for persistence.
Team Mode lets you pick a team (for example, “Team Rocket”) so sprint names and sprint history are assigned and grouped by team. In the public demo, teams and history are read from JSON files. In a fork, Team Mode can be backed by Firestore for persistence.
If you want internal persistence, connect your fork to Firebase using the following steps:
-
Create a Firebase project
-
Enable Firestore (and Authentication if you want authenticated access)
-
Add your Firebase web config to
public/config.js:cp public/config.example.js public/config.js
-
Enable writes in your fork configuration:
window.demo = { allowWrites: true, useFirebase: true };
-
Create/Update Firestore rules
This repo includes two rules files:
firestore.rulesis intentionally read-only everywhere (default for the public demo)firestore.rules.exampleis a starter template for forks that enable persistence
To enable Team Mode writes in your Firebase project:
-
Copy
firestore.rules.exampletofirestore.rules -
Deploy rules:
firebase deploy --only firestore:rules
Rule requirements by feature:
- Create team: allow create on
/teams/{teamId} - Rename team: allow update on
/teams/{teamId}fornameonly - Save sprint history: allow create on
/sprintHistory/{historyId}
Example Firestore documents (one possible approach):
teams/{teamId} -> { "name": "Team Rocket", "createdAt": "2025-10-01T00:00:00Z" }
sprintHistory/{historyId} -> {
"pokemonId": 94,
"pokemonName": "gengar",
"pokemonSprite": "https://...",
"pokemonTypes": ["ghost", "poison"],
"teamId": "team-rocket",
"teamName": "Team Rocket",
"selectedAt": "2025-11-05T00:00:00Z"
}This public repository is intentionally structured to be safe to publish:
- No production keys are committed
public/config.jsis local-only (create it fromconfig.example.js)- Write operations are blocked by default
- Demo data lives in static JSON files under
public/data/
If you enable Firebase in a fork, use least-privilege rules and require authentication for writes.
Issues and PRs are welcome!
- Bug reports: please include repro steps and screenshots if relevant
- Feature requests: describe the intended behavior and why it matters
- Security: if you notice a security concern, please open an issue with details (avoid posting secrets)
Pokémon is a registered trademark of Nintendo and The Pokémon Company. This project is not affiliated with or endorsed by Nintendo or The Pokémon Company.
This project is non-commercial and uses data from PokéAPI for educational and demonstration purposes.
No official Pokémon media or proprietary assets are included.
Released under the MIT License.
