shell-talk
v1.0.6
Published
Production-ready CLI chat app with React Ink - terminal-based messaging with Firebase
Maintainers
Readme
Shell Talk
A production-ready CLI chat application built with React Ink and Firebase Firestore.
Features
- Terminal-based chat interface with keyboard-only navigation
- User authentication with 4-digit passcode (bcrypt hashed)
- Direct messaging between users
- Real-time message updates via Firestore listeners
- Message pagination with cursor-based loading
- Persistent sessions with Zustand
- Local caching for offline-like experience
- Clean TUI design with zero clutter
Installation
npm install -g shell-talkOr run without installing:
npx shell-talkUsage
shell-talkNavigation
| Key | Action | |-----|---------| | Up/Down | Navigate list | | Enter | Select/Submit | | Esc | Back | | Tab | Switch field | | / | Search chats | | c | Create new chat | | q | Quit/Logout |
First Time Setup
- Create a Firebase project at https://console.firebase.google.com
- Enable Firestore database
- Copy your Firebase config to a
.envfile in your working directory:
FIREBASE_API_KEY=your-api-key
FIREBASE_AUTH_DOMAIN=your-project.firebaseapp.com
FIREBASE_PROJECT_ID=your-project-id
FIREBASE_STORAGE_BUCKET=your-project.appspot.com
FIREBASE_MESSAGING_SENDER_ID=your-sender-id
FIREBASE_APP_ID=your-app-idOr set these as environment variables.
Default Test User
For testing, you can create a test user through the registration screen.
Configuration Storage
- Session: Stored in
~/.shell-talk/session/ - Cache: Stored in
~/.shell-talk/data/ - Firebase Config: Via env vars or
.envfile
Security
- Passcodes are hashed with bcrypt (never stored in plain text)
- Firebase Firestore security rules required for production
- Sessions expire after 7 days
Development
git clone <repo>
cd shell-talk
npm install
npm run build
npm link
shell-talkLicense
MIT
