Skip to content

A typing-as-reading web app, mimics typing in a docs editor while progressively revealing the content of a local txt file. The file and progress are both stored locally.

License

Notifications You must be signed in to change notification settings

ChanfeiLi/SlackOffDocs

 
 

Repository files navigation

FishDoc

FishDoc is a “typing-as-reading” web app. It mimics typing in a docs editor while progressively revealing the content of a local .txt file. No upload is required; the file and progress are both stored locally.

Features

  • Import local .txt and read without uploading
  • Progressive reveal engine (per-keystroke); Backspace/Delete steps backward
  • Google Docs–like UI (toolbar, ruler, centered paper)
  • Local persistence of reading progress and settings (IndexedDB + Zustand)
  • Remove current document & resume later

Tech Stack

  • Vite + React + TypeScript
  • Native contenteditable + custom reveal logic
  • Zustand for state + IndexedDB for large text (via simple helpers)

Project Structure

FishDoc/
  ├─ index.html
  ├─ public/              # static assets (favicon, etc.)
  ├─ src/
  │   ├─ components/
  │   │   ├─ Toolbar.tsx  # header + menus + formatting wrapper + ruler
  │   │   ├─ Editor.tsx   # contenteditable viewer with reveal logic
  │   │   └─ Ruler.tsx
  │   ├─ lib/
  │   │   └─ sourceStore.ts
  │   ├─ store/
  │   │   └─ useDocStore.ts
  │   ├─ App.tsx
  │   ├─ main.tsx
  │   └─ index.css
  ├─ package.json
  └─ vite.config.ts

Development

npm install
npm run dev

Open the printed local URL in your browser.

Build

npm run build

This produces a static bundle in dist/.

Contribution

Contributions are welcome! 🎉

  • Open an issue for feedback or feature requests.
  • Fork the repo, create a branch, and submit a pull request for changes.

About

A typing-as-reading web app, mimics typing in a docs editor while progressively revealing the content of a local txt file. The file and progress are both stored locally.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 97.8%
  • HTML 1.3%
  • Other 0.9%