sandhill-road
Version:
A narrative-driven startup simulation game where you guide a founder from garage to exit
196 lines (140 loc) • 5.49 kB
Markdown
# Sandhill Road
[](https://www.npmjs.com/package/sandhill-road)
[](https://opensource.org/licenses/MIT)
[](./CONTRIBUTING.md)

A narrative-driven startup simulation game where you guide a founder from garage to exit, making high-stakes decisions across a branching storyline.
## Description
Sandhill Road is a text-based survival strategy game inspired by Oregon Trail, but set in the high-stakes world of startups. You'll manage resources, make critical decisions, and try to navigate the challenges of startup life. Each decision you make simulates one in-game week, affecting your startup's momentum, resources, and progress.
## Features
- Text-based adventure with ASCII graphics
- Resource management (burn rate, morale, stamina, etc.)
- Branching narrative with different outcomes
- Stat-based decision outcomes
- Multiple game stages: Garage, Demo Day, Fundraising, PMF, Scaling, Crisis, Exit
- Save/load game progress
- 20+ unique narrative events
## Installation
### Global Installation (Recommended)
```bash
npm install -g sandhill-road
```
Then run the game from anywhere:
```bash
sandhill-road
```
### Local Installation
```bash
git clone https://github.com/yourusername/sandhill-road.git
cd sandhill-road
npm install
npm start
```
## How to Play
- Choose your founder's name and company name
- Start with a certain amount of personal cash
- Make strategic decisions that affect your company's success
- Manage your resources wisely
- Try to reach a successful exit
## Game Stages
1. **Garage** - Working from your garage to build an MVP
2. **Demo Day** - Presenting your startup at a demo day
3. **Fundraising** - Meeting with investors to raise your seed round
4. **PMF** - Iterating on your product to find product-market fit
5. **Scaling** - Growing your product and team
6. **Crisis** - Facing a major challenge that threatens your company
7. **Exit** - Exploring exit opportunities for your startup
## Adding New Events
The game is designed to be easily extensible. To add new events:
1. Fork the repository
2. Open `src/data/events.json`
3. Add a new event object following this structure:
```json
{
"id": "E0XX",
"title": "Event Title",
"description": "Event description text",
"choices": [
{
"id": "C001",
"text": "Choice text",
"result": {
"founderStats.morale": -1,
"companyStats.productProgress": 5
},
"resultText": "The outcome of your choice"
}
],
"stage": "Garage",
"weight": 1
}
```
4. Submit a pull request
See [CONTRIBUTING.md](./CONTRIBUTING.md) for more details.
## Development
### Build the project
```bash
npm run build
```
### Running in development mode
```bash
npm run dev
```
### Release Process
We follow semantic versioning (SemVer) for releases. Here's the complete workflow for publishing new versions:
#### Automated Release (Recommended)
For most releases, use npm's built-in version commands:
```bash
# For bug fixes (1.0.1 → 1.0.2)
npm version patch
git push origin main --tags
npm publish
# For new features (1.0.1 → 1.1.0)
npm version minor
git push origin main --tags
npm publish
# For breaking changes (1.0.1 → 2.0.0)
npm version major
git push origin main --tags
npm publish
```
#### Manual Release Process
If you need more control over the release:
```bash
# 1. Update version in package.json manually
# 2. Commit the version change
git add package.json
git commit -m "v1.0.2: Description of changes"
# 3. Create and push git tag
git tag v1.0.2
git push origin main --tags
# 4. Build and publish to npm
npm run build
npm publish
```
#### Important Notes
- **Always include assets**: The `package.json` files array includes the `assets` folder to ensure screenshots and images are included in npm packages
- **Test before publishing**: Run `npm run build` and test locally before publishing
- **Follow commit conventions**: Use descriptive commit messages for version bumps
- **Check npm package**: After publishing, verify the package includes all necessary files
#### Release Checklist
- [ ] Update version in `package.json`
- [ ] Update `CHANGELOG.md` if applicable
- [ ] Commit version changes
- [ ] Create git tag
- [ ] Push to GitHub with tags
- [ ] Build the project (`npm run build`)
- [ ] Publish to npm (`npm publish`)
- [ ] Verify the published package contains all files
## Contributing
Contributions are welcome! Please read [CONTRIBUTING.md](./CONTRIBUTING.md) for details on the process for submitting pull requests.
## Versioning
We use [SemVer](http://semver.org/) for versioning. For the versions available, see the [tags on this repository](https://github.com/yourusername/sandhill-road/tags).
## Authors
* **Your Name** - *Initial work* - [yourusername](https://github.com/yourusername)
See also the list of [contributors](https://github.com/yourusername/sandhill-road/contributors) who participated in this project.
## License
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
## Acknowledgments
- Inspired by Oregon Trail and the incredible adventures of Nick Julian and Bobby
- Built with Node.js, TypeScript, and Inquirer