Skip to content

Latest commit

 

History

History
110 lines (75 loc) · 6.3 KB

File metadata and controls

110 lines (75 loc) · 6.3 KB

ResilientMind - Android (web game, TypeScript, Node.js, Vite)

CI Deploy CodeQL TypeScript Vite Node.js Tests Zero Dependencies License

Project

App Survival ResilientMind - Android is a web-based simulation game inspired by real Android production incidents. It compresses production constraints into a playable loop: design an architecture graph, ship under pressure, and maintain user sentiment, reliability, security, and compliance simultaneously.

Inspired by Server Survival by pshenok at https://pshenok.github.io/server-survival/ This project is an original implementation and is not affiliated with the original author. No code or assets were copied from the original project.

Live demo https://pzverkov.github.io/app-survival-android/

Hosting

Production is served from GitHub Pages at the live demo URL above, deployed by .github/workflows/deploy.yml on every push to main.

Per-PR previews are served from Cloudflare Workers Static Assets (configured in wrangler.jsonc). The Cloudflare project's "Production branch" is intentionally set to a non-existent branch so only PR builds publish; production deploys are owned by GitHub Pages. Each PR gets a unique preview URL posted as a status check on the PR by the Cloudflare GitHub App.

Table of contents

  • Purpose
  • Quick start
  • How to play (short)
  • Docs
  • Security/Contributing /License

Purpose

This project is designed to be usable for Android developer skill evaluation, with emphasis on Senior, Staff, and Principal-level production thinking. It targets real-world trade-offs across performance, reliability, background execution, security and privacy, accessibility, observability, incident response, and multi-region policy pressure.

The simulation core is written in TypeScript and intentionally kept separate from UI rendering so it can be ported to Kotlin and Android implementation later.

Quick start

Prerequisites Node.js 22 LTS or newer is recommended

Install npm install

Run npm run dev

Build npm run build

Tests npm run test:unit (unit) and npm run test:e2e:ci (E2E + DOM validation)

How to play (short)

  1. Pick a preset (Junior Mid/Senior/Staff/Principal), then press Start.
  2. Place components, link dependencies, upgrade, and fix tickets to keep the app alive.
  3. Expect incidents. Stabilize without tanking privacy, accessibility, security, coverage, and regional compliance.
  4. Try a Release Trains scenario for a scripted, repeatable shift — each one ends with a postmortem grade (S → D).

More details: see docs/GAMEPLAY.md and docs/SCENARIOS.md

Docs

  • Gameplay (seeds, scoring, incidents, postmortems, profile & achievements): GAMEPLAY.md
  • Scenarios (Release Trains launch drills): SCENARIOS.md
  • Roadmap (Phase 2 Cloudflare Worker scoreboard, Phase 3 hardening): ROADMAP.md
  • Systems (concepts + realism layers): SYSTEMS.md
  • Architecture rules and refactor roadmap: ARCHITECTURE_RULES.md
  • Evaluation exercise + level differentiation lens: EVALUATION.md
  • Testing and CI notes (Vitest + Playwright + E2E marker): TESTING.md
  • UI notes (Material 3, sparklines, accessibility): UI.md
  • Developer guide (adding components, incidents, achievements, translations): DEVELOPER_GUIDE.md
  • Learning resources (Android + KMP): LEARNING.md
  • Optional code task ideas: OPTIONAL_TASKS.md

Security

See SECURITY.md for reporting guidance. Do not include secrets in issues or pull requests.

Contributing

See CONTRIBUTING.md for setup instructions and contribution expectations.

Code of conduct

See CODE_OF_CONDUCT.md for community standards.

License

Apache License 2.0. See LICENSE and NOTICE files.

Disclaimer

This software is provided "as is", without warranty of any kind, express or implied, including but not limited to the warranties of merchantability, fitness for a particular purpose, and noninfringement. In no event shall the authors or copyright holders be liable for any claim, damages, or other liability, whether in an action of contract, tort, or otherwise, arising from, out of, or in connection with the software or the use or other dealings in the software.

This project is an educational simulation game. Nothing in this repository constitutes professional advice of any kind, including but not limited to engineering advice, security advice, legal advice, compliance advice, or architectural guidance. The simulation mechanics, incident scenarios, scoring systems, and game content are fictional abstractions designed for entertainment and learning purposes only. They do not represent real-world best practices, standards, or recommendations.

Users who download, fork, deploy, or otherwise use this software do so entirely at their own risk and assume full responsibility for any consequences arising from such use. The authors make no representations regarding the accuracy, completeness, or suitability of any information or functionality provided by this software.