Windows-GPU-UNLOCK
RTX3090 UEFI 포트, 한국어 무리셋 윈도우 부팅 가이드, 검증된 소스와 벤치마크 제공
🚃 TrainLCD is a mobile application that simulates Japanese railway company LCDs, providing real-time navigation and station information for train passengers.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
TrainLCD is a mobile application that simulates Japanese railway company LCDs, providing real-time navigation and station information for train passengers.
This app recreates the authentic experience of Japanese train travel by displaying station information in the same style as actual train LCD screens. Whether you're a tourist visiting Japan, a daily commuter, or simply fascinated by Japanese railway systems, TrainLCD offers an immersive and practical navigation experience.
Screenshots and demo videos coming soon...README 전문 보기 ↗TrainLCD is a mobile application that simulates Japanese railway company LCDs, providing real-time navigation and station information for train passengers.
This app recreates the authentic experience of Japanese train travel by displaying station information in the same style as actual train LCD screens. Whether you're a tourist visiting Japan, a daily commuter, or simply fascinated by Japanese railway systems, TrainLCD offers an immersive and practical navigation experience.
Screenshots and demo videos coming soon...
Before you begin, ensure you have met the following requirements:
.nvmrc; run nvm use to switch automatically)engines + engine-strict=true block npm install on other versions)Clone the repository:
git clone https://github.com/TrainLCD/MobileApp.git
cd MobileApp
Check out the font submodule (maintainers only):
git submodule update --init --recursive
The station numbering icons and the LED theme use commercially licensed
typefaces, so they are kept in a private submodule (android/app/src/main/assets/fonts,
ios/Fonts) that cannot be redistributed. The app builds and runs without it —
those glyphs simply fall back to the system font — so outside contributors can
skip this step and should expect the numbering to render in a different
typeface than the released builds.
Install dependencies:
npm install
Note: Configure GQL_API_URL before running npm run gql:codegen to regenerate GraphQL types.
To start the development server:
npm run start
npm run iosnpm run androidnpm run android:localnpm run webnpm run android installs the dev flavor (me.tinykitten.trainlcd.dev), which is the
same application ID as the Canary build distributed through the stores, so it replaces an
installed Canary build. npm run android:local installs the local flavor
(me.tinykitten.trainlcd.local, shown as TrainLCD Local) instead, which coexists with
both store builds. It points at the same staging backends as Canary.
If you like this project, join our Discord community!
NOTE: English is welcome, but in the community, we usually use Japanese for discussions, announcements, etc.
https://discord.gg/tsemdME9Nz
src/
├── components/ # Reusable UI components
├── screens/ # Screen components
├── hooks/ # Custom React hooks
├── store/ # Jotai atoms and selectors
├── stacks/ # React Navigation stack definitions
├── providers/ # Context providers and integration wrappers
├── lib/ # API clients and shared integrations
├── config/ # Static configuration helpers
├── constants/ # Shared constants
├── utils/ # Utility functions and test helpers
├── test/ # Testing utilities and e2e harness
├── __mocks__/ # Jest mocks
├── __fixtures__/ # Test fixtures
├── @types/ # Global TypeScript declarations
├── models/ # Data models
├── index.tsx # App entry point
├── translation.ts # i18n resources
└── lineSymbolImage.ts # Line symbol metadata
android/ # Native Android project
ios/ # Native iOS project
docs/ # Architectural notes and runbooks
assets/ # Static media bundled with the app
utils/ # Tooling scripts and codegen helpers
npm run start - Start the Expo development servernpm run android / npm run ios - Build and launch native binariesnpm run android:local - Build and launch the Android local flavor, which can be installed alongside the store buildsnpm run web - Serve the Expo web buildnpm run lint - Run Biome linternpm run format - Format code with Biomenpm test - Run Jest testsnpm run typecheck - Run TypeScript type checkingnpm run watch:test - Run tests in watch modenpm run gql:codegen - Regenerate GraphQL types after schema or documents change (requires GQL_API_URL)This project uses Jest for testing. Run the test suite with:
npm test
For watch mode during development:
npm run watch:test
The backend Worker (TTS synthesis, session issuance, feedback triage, review notifiers, the AI destination agent) lives in TrainLCD/functions, and the GraphQL API is served directly by TrainLCD/StationAPI. Neither is part of this repository. The GraphQL BFF that used to sit between the app and StationAPI has been retired.
Voice announcements (TTS) use a different engine per platform:
/tts endpoint and played back with expo-audio. When synthesis is unavailable — no signal, a tunnel, or an API outage — that announcement falls back to the on-device synthesizer so it is never silently dropped. See the spec for the wire contract.expo-speech.Both paths share the same announcement text pipeline; the SSML fragments emitted by the templates are converted to plain text before reaching either engine (src/utils/speakableText.ts), because neither engine interprets SSML.
We welcome contributions from the community! Here's how you can help:
git checkout -b feature/amazing-featurenpm testnpm run lintgit commit -m 'Add some amazing feature'git push origin feature/amazing-featureIf you encounter any bugs or have feature requests:
This project adheres to a code of conduct that we expect all contributors to follow. Please be respectful and professional in all interactions.
TrainLCD is built with:
For professional support or custom development, please contact the maintainers.
Thanks goes to these wonderful people (emoji key):
This project follows the all-contributors specification. Contributions of any kind welcome!
This project is licensed under the MIT License - see the LICENSE file for details.