Free computer-aided transcription system for stenographers

Overview

AlleyCAT

Website GitHub release Python package Documentation Build status License

AlleyCAT is a free, open-source computer-aided transcription (CAT) system for stenographers. It lets you write and edit documents such as court transcripts and translation dictionaries on both web and desktop. AlleyCAT originated as a free alternative to professional CAT software, which is proprietary and very expensive.

Screenshot of AlleyCAT running on macOS

It is not intended to replace or compete with Plover, the open-source stenography engine; instead, it connects to Plover to leverage its existing ecosystem, such as the ability to use several brands of hobbyist, student, and professional steno writers, and plugins contributed by the community.

What even is a CAT system?

TL;DR: Think of it as like a word processor, but with steno integration.

CAT software allows you to write documents, usually court transcripts, using stenography. Each steno stroke is stored in the document alongside the text it translates to. The CAT system also lets you modify the document's layout, fix spelling errors or mistranslations, create cover pages and indexes, and more.

When you write into a CAT system with a steno writer, the steno notes are immutably linked with the translations, so that even when you go back and edit the document, the original steno notes remain intact. This is especially important for court reporters, since the steno notes are considered the primary source of truth.

While CAT software is primarily used by court reporters, some of these features could still be useful to students and hobbyists: for example, having all of your notes in one document linked to the original steno is great for identifying areas of improvement after a practice session.

Why "AlleyCAT"?

She's a free-range CAT: "no owner, no home, no rules." — @stenowitch, January 2022

Installation

Pre-built binaries for the latest stable version are available on the releases page. Download the corresponding package for your platform: .msi for Windows, .dmg for macOS, and .AppImage for Linux.

You can also build a bleeding-edge version of AlleyCAT from the source code. See the Development section below for more information.

If you just want to try AlleyCAT without installing, a web version is also available at alleycat.sammdot.ca. There are couple of caveats to this:

  • Files can only be saved into your web browser's downloads folder
  • AlleyCAT will not be able to connect to the Plover instance running on your computer, for security reasons 1

Design

AlleyCAT is a hybrid web-desktop application built with Tauri, React, and TipTap. The majority of the application's code is written in TypeScript, and a smaller portion of it in Rust and Python. The core of AlleyCAT is a React application, wrapped in Tauri in order to allow it to run on a desktop. The Tauri side also allows it to perform platform-specific operations such as saving files to the disk.

A diagram of all of AlleyCAT's components

AlleyCAT can talk to Plover with AlleyCAT Link (or Link for short), which is a Plover plugin that sends stroke and translation data over a local connection, either a Unix domain socket on macOS and Linux, or TCP port 22282 on Windows.3 This lets AlleyCAT leverage Plover's existing ecosystem -- you can write into AlleyCAT with any machine Plover can support, in any system Plover can support, with your own dictionaries, and using any other plugins you may have installed. Link can be installed through pip or Plover's plugins manager.

Development

Building the desktop app from source requires Node v16+ and Rust v1.64+; the web version requires only Node. Ensure yarn (and cargo on desktop) are installed before proceeding.

In order to connect AlleyCAT with Plover, you will also need a full Plover 4.0.0-dev10+ installation.

Project Structure

The repository has four main parts:

alleycat (this repository)
 ├─ alleycat_link
 ├─ app
 │   └─ src
 ├─ public
 └─ src
  • /alleycat_link: Plover plugin
  • /app/src: Tauri application (desktop only)
  • /public: Static assets
  • /src: React application (web and desktop)

Building from Source

Clone the repository:

$ git clone https://github.com/sammdot/alleycat.git
$ cd alleycat

Install all the dependencies, including TypeScript, React, and the Tauri CLI:

$ yarn install

On Linux, you will also need to install additional dependencies:

$ sudo apt-get update
$ sudo apt-get install -y libgtk-3-dev webkit2gtk-4.0 libappindicator3-dev librsvg2-dev patchelf

Development

To start a development server for just the web version:

$ yarn start

To start the desktop version for development:

$ yarn startapp

Both of these start a web server on localhost:3000. You should be able to access the web version from a browser even when running the desktop version.

To install the Plover plugin locally:

$ plover -s plover_plugins install -e .

where plover is the path to the main Plover binary (or plover_console.exe on Windows), then make sure to enable the alleycat_link extension in Plover, and allow network connections if needed.

Production

To build the web version for production:

$ yarn build

The generated files for the web version will be in the /build directory. These files can be served statically, and should also work offline.

To build the desktop version on your machine's platform:

$ yarn buildapp

The generated files for the desktop version will be in the /app/target/release directory. This may include a standalone application binary, an application bundle, and/or an installer package, depending on the platform. These files can be installed on your system or distributed.

Footnotes

  1. Remote websites running inside a browser environment are typically blocked from connecting to anything running locally. I had originally implemented this using a WebSocket, but that only works when the website is also local.

  2. ACAT on a phone keypad 😄

  3. Windows does support named pipes, and more recent versions of Windows also support Unix domain sockets, but the tooling for working with both asynchronously (asyncio on the Python side, and Tokio on the Rust side) is not nearly as developed.

You might also like...

PEARL (Planetary Computer Land Cover Mapping) Platform API and Infrastructure

PEARL (Planetary Computer Land Cover Mapping) Platform API and Infrastructure

PEARL API & Infrastructure PEARL is a landcover mapping platform that uses human in the loop machine learning approach. This repository contains the A

Dec 23, 2022

API4AI is cloud-native computer vision & AI platform for startups, enterprises and individual developers

API4AI is cloud-native computer vision & AI platform for startups, enterprises and individual developers

API4AI is cloud-native computer vision & AI platform for startups, enterprises and individual developers. This repository contains sample mini apps that utilize Brand Recognition API provided by API4AI.

May 24, 2022

A simple menubar app for GNOME Shell that tracks how long you've been using your computer uninterruptedly

A simple menubar app for GNOME Shell that tracks how long you've been using your computer uninterruptedly

Welcome to Since Indicator 👋 🏠 Homepage Since Indicator is a simple menubar app for GNOME Shell that tracks how long you've been using your computer

Oct 20, 2022

A web-based 3D visualization tool for 3D computer vision.

A web-based 3D visualization tool for 3D computer vision.

Wis3D: A web-based 3D visualization tool for 3D computer vision Online Demo | Installation | Tutorial | Documentation Wis3D is a web-based 3D visualiz

Dec 27, 2022

A browser-based emulator for Zeal 8-bit Computer

A browser-based emulator for Zeal 8-bit Computer

Zeal 8-bit Computer emulator This project is a software emulator for Zeal 8-bit Computer: a homebrew 8-bit computer based on a Z80 CPU. Click here for

Nov 27, 2022

Easiest 1-click way to install and use Stable Diffusion on your own computer. Provides a browser UI for generating images from text prompts and images. Just enter your text prompt, and see the generated image.

Easiest 1-click way to install and use Stable Diffusion on your own computer. Provides a browser UI for generating images from text prompts and images. Just enter your text prompt, and see the generated image.

Stable Diffusion UI Easiest way to install and use Stable Diffusion on your own computer. No dependencies or technical knowledge required. 1-click ins

Dec 30, 2022

A public board for all the Computer Society and Students to display their profile. An online year-book for you to display your profile in the most creative manner

A public board for all the Computer Society and Students to display their profile. An online year-book for you to display your profile in the most creative manner

Student's Yearbook by IEEE Computer Society Student's yearbook is an open-source project which intends to dispaly the students who will be graduating

Dec 18, 2022

Project of "Web Development" course for the Bachelor's degree in Computer Engineering, taken at the University of Pisa. Final evaluation: 30/30.

La battaglia della Meloria Welcome! This is the 🇬🇧 version of the README file. Click here for 🇮🇹 version. Introduction Historical reinterpretation

Oct 6, 2022

The repository shows the compiler (simulator) of the Little Man Computer, which also contains some programs in the LMC programming language for implementing different functions.

Little Man Computer The repository shows the compiler (simulator) of the Little Man Computer, which also contains some programs in the LMC programming

Nov 17, 2022
Comments
  • Correcting certain strokes while connected to Plover causes input to jump to beginning of document

    Correcting certain strokes while connected to Plover causes input to jump to beginning of document

    While connected to Plover with translations enabled, certain strokes cause the input to jump to the beginning of the document, output part of the stroke, and jump back at the next stroke. For example, stroking burial PWU/REU/A*L with the misstroke and correction AL/*/A*L outputs PWU -> bury -> bury al -> bury -> ial bury.

    Windows 10, AlleyCAT 0.4.3

    Steps to reproduce:

    1. Open a new document in AlleyCAT.
    2. Connect to Plover and enable translations.
    3. Stroke PWU/REU/AL/*/A*L. (The stroke might be different, as I'm using Aerick's Lapwing dictionaries.)
    4. You should see ial bury.

    The stroke that outputs "ial" actually appears at the top of AlleyCAT's paper tape.

    image

    This does not happen with:

    • PWR*EU/KWRAL burial
    • TROR/KWRAOEUZ terrorize
    • PWU/REU/KWRAOEUZ buryize
    • PWU/REU/KWRAEUT buryiate
    • TROR/A*L terroral
    • TER/TOER/A*L territorial (each stroked with AL/* before the last stroke)

    It does occur with:

    • TER/TOER/KWRAL (TER/TOER/AL/*/KWRAL)

    image

    https://user-images.githubusercontent.com/18739767/186326474-f57374ed-0c78-46b6-b96c-2ec884cc2553.mp4

    opened by Codebreakerblue 0
  • AlleyCAT opens blank window and can't be closed after clicking

    AlleyCAT opens blank window and can't be closed after clicking "New" in menu bar

    After opening a new document and then clicking "New" in the menu bar, AlleyCAT opened a new blank window titled tao window. The program wasn't unresponsive or anything, it just wouldn't close with the normal X or via alt+f4. It closed when stopped via task manager.

    Windows 10, AlleyCAT-win v0.4.3 https://user-images.githubusercontent.com/18739767/186309961-0c36910b-1635-4b4f-b043-14f9b24b20d0.mp4

    Edit: This also happens when opening an existing file from the same menu bar. Opening documents and creating new documents from the main screen works as expected.

    opened by Codebreakerblue 0
  • No link from AlleyCAT to Plover, couldn't find the plugin.

    No link from AlleyCAT to Plover, couldn't find the plugin.

    I don't know if it should be posted here: Just after I read (17th Aug 2022) the news on Mirabai's Opensteno blog, immediately I had downloaded the newest/latest Plover and AlleyCAT to my Xubuntu Linux szmirlap 5.15.0-46-generic #49~20.04.1-Ubuntu SMP Thu Aug 4 19:15:44 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux. I started Plover, then AlleyCAT. Could not find in Plugin's Manager the plugin for AlleyCAT (nothing like alleycat-link). Plover works great. AlleyCAT works great. But they don't work together. I'm not a programmer, just a user.

    opened by flamenco108 6
Releases(v0.4.4)
Owner
Sammi De Guzman
Software Engineer, Amateur Stenographer, Transit Enthusiast 🇵🇭🇭🇰🇨🇦 she/her
Sammi De Guzman
Hemsida för personer i Sverige som kan och vill erbjuda boende till människor på flykt

Getting Started with Create React App This project was bootstrapped with Create React App. Available Scripts In the project directory, you can run: np

null 4 May 3, 2022
Kurs-repo för kursen Webbserver och Databaser

Webbserver och databaser This repository is meant for CME students to access exercises and codealongs that happen throughout the course. I hope you wi

null 14 Jan 3, 2023
The Frontend of Escobar's Inventory Management System, Employee Management System, Ordering System, and Income & Expense System

Usage Create an App # with npx $ npx create-nextron-app my-app --example with-javascript # with yarn $ yarn create nextron-app my-app --example with-

Viver Bungag 4 Jan 2, 2023
Open-source NFID SDK for Internet Identity, a blockchain authentication system for the Internet Computer.

NFID-SDK is an open source software development kit that contains examples and packages for developers to integrate NFID into your application

Internet Identity Labs 15 Dec 23, 2022
Mekna'7, a subsidiary of the ONCF group, which provides bus services to cities not served by train, needs to set up a computer system by creating a database for managing customer reservations.

Online-bus-ticket-reservation Introduction Hello everyone, this is a project that I have done for assignment. This project is a simple online bus tick

Hala Ziani 5 Oct 25, 2022
Papers from the computer science community to read and discuss.

Papers We Love (PWL) is a community built around reading, discussing and learning more about academic computer science papers. This repository serves

Papers We Love 66.8k Dec 31, 2022
The new BASIC computer that runs in your browser!

atto The new BASIC computer that runs in your browser! Try it live: jamesl.me/atto What is atto? atto is a virtual fantasy computer system that's desi

James Livesey 34 Dec 29, 2022
An interpreter for College Board's specified pseudocode for the AP Computer Science Principles Exam.

College Board Pseudocode Interpreter A playground for this interpreter is up on my website. This project is a mostly-functioning interpreter for Colle

Daniel 7 Nov 16, 2022
The ICPverse service to extract the metadata from an existing NFT project on the Internet Computer.

Infinity_Rank The ICPverse service to extract the metadata from an existing NFT project on the Internet Computer. Requirements for Use: npm installed

ICPverse 10 Nov 5, 2022
Scans your computer for node modules that are potentially vulnerable to supply chain attacks

Scans your computer for node modules that are potentially vulnerable to supply chain attacks. You still need to review the code of modules that are not vulnerable, but this helps.

Brandon Nozaki Miller 4 Apr 11, 2022