Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
68 commits
Select commit Hold shift + click to select a range
c7df11b
Replaces logo image
mxskylar May 4, 2025
de76d77
Adds zip publisher dependency
mxskylar May 4, 2025
a09e3d5
Packages app with icon
mxskylar May 4, 2025
0735ae5
Packages db file
mxskylar May 4, 2025
22bc6bf
Updates scripts
mxskylar May 4, 2025
3f86b40
Puts assets in its own dir
mxskylar May 4, 2025
996966f
Attempts to open DB
mxskylar May 4, 2025
bab540f
Revert "Attempts to open DB"
mxskylar May 4, 2025
b59faac
Refactors vars and removes console log
mxskylar May 4, 2025
a9f5a5e
Updates icon
mxskylar May 4, 2025
aa5baf5
Updates icon
mxskylar May 4, 2025
aad1c5e
Updates icon
mxskylar May 4, 2025
b0dd73e
Updates icon
mxskylar May 4, 2025
4ac3210
Updates navbar font
mxskylar May 4, 2025
936bf5d
Updates attribution doc
mxskylar May 4, 2025
d27c51c
Updates attribution doc
mxskylar May 4, 2025
81ad44f
Adds script for electron-builder
mxskylar May 5, 2025
7fae84b
Adds distribution CI & attempts to add publish CI
mxskylar May 5, 2025
573a4a3
Removes publish pipeline
mxskylar May 5, 2025
50beecf
Updates distribution CI
mxskylar May 6, 2025
8f7cb06
Moves CI to script file
mxskylar May 6, 2025
19d89a7
Updates script
mxskylar May 6, 2025
5aa4f8f
Updates comment
mxskylar May 6, 2025
f4f8ec1
Adds attribution footer
mxskylar May 6, 2025
e29b0d4
Adjusts footer styling
mxskylar May 6, 2025
d9a481f
Adds install details to the doc
mxskylar May 6, 2025
df4f10d
Updates tagline
mxskylar May 6, 2025
587dcd3
Adds demo gif
mxskylar May 6, 2025
87b79c6
Uses demo video
mxskylar May 6, 2025
6f263ce
Revert "Uses demo video"
mxskylar May 6, 2025
59cba51
Udates gif
mxskylar May 6, 2025
6eab083
Adds github pages theme
mxskylar May 6, 2025
f39f681
Fixes typo
mxskylar May 6, 2025
7a6f50a
Moves config file
mxskylar May 6, 2025
1710d6f
Adds custom scss file
mxskylar May 6, 2025
04bbf51
Adds favicon
mxskylar May 6, 2025
9f27bfb
Adds logo
mxskylar May 6, 2025
9322a15
Adds info to regular README
mxskylar May 6, 2025
8e9a657
Adds custom layout
mxskylar May 6, 2025
077e71a
Adds favicon
mxskylar May 6, 2025
83c90dd
Removes duplicate tag line
mxskylar May 6, 2025
e1f28e4
Moves layouts to correct dir
mxskylar May 6, 2025
757ec7b
Updates README
mxskylar May 6, 2025
c47220b
Rewords README
mxskylar May 6, 2025
805d924
Updates titles
mxskylar May 6, 2025
fdc68c9
Updates footer
mxskylar May 6, 2025
75119af
Shows download
mxskylar May 6, 2025
9383cfe
Adds period
mxskylar May 6, 2025
a7ee616
Updates links in header
mxskylar May 6, 2025
fd56e06
Moves to assets dir and adds style
mxskylar May 6, 2025
39cd9a8
Resets demo gif location
mxskylar May 6, 2025
80f82f6
Updates location of assets
mxskylar May 6, 2025
21a459f
Sets fonts
mxskylar May 6, 2025
de33e49
Moves styling
mxskylar May 6, 2025
cad3ec5
Revert "Moves styling"
mxskylar May 6, 2025
782c738
Adds custom css
mxskylar May 6, 2025
bc48095
Makes link hover font weright default
mxskylar May 6, 2025
d44f60e
Removes header margin bottom
mxskylar May 6, 2025
4a880c9
Makes logo size smaller
mxskylar May 6, 2025
23722d1
Makes footer a single paragraph
mxskylar May 6, 2025
d050f9c
Adds FAQ link
mxskylar May 6, 2025
027d30e
Fixes typo
mxskylar May 6, 2025
42b224a
Removes link hover effect override
mxskylar May 6, 2025
9c505fd
Rewords install instructions for mac
mxskylar May 6, 2025
91c3a9d
Updates FAQ
mxskylar May 6, 2025
fee044f
Adds links to description in header
mxskylar May 6, 2025
f274188
Updates readme
mxskylar May 6, 2025
ec2d50f
Updates links
mxskylar May 6, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,6 @@ node_modules
build
installed-resources
installed-data
.DS_Store
.DS_Store
dist
assets
68 changes: 61 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,17 +1,23 @@
# Phlexicon

Beginner-friendly phonetic keyboards for spoken & sign languages on desktop Mac, Windows, & Linux.
A catalog of [phonemes](https://en.wikipedia.org/wiki/Phoneme) in hundreds of languages, dialects, and lexicons—both [signed](https://www.signwriting.org/about/) and [spoken](https://en.wikipedia.org/wiki/International_Phonetic_Alphabet).

Type [phonemes](https://en.wikipedia.org/wiki/Phoneme) using the [International Phonetic Alphabet (IPA)](https://en.wikipedia.org/wiki/International_Phonetic_Alphabet)
for spoken languages and [SignWriting](https://www.signwriting.org/about/) for sign languages.
Choose from a list of phonemes used by a particular dialect or optionally, all phonemes in the IPA or SignWriting.
![Demo of Phlexicon app](docs/demo.gif)

The application is still under development and is only available for developers to build from scratch.
The [user guide](https://mxskylar.github.io/phlexicon/) will be updated when Phlexicon is available for installation.
See the [user guide](https://mxskylar.github.io/phlexicon/) for details about the app.
Read the reast of this README for technical details.

> Phlexicon would be nothing without the open source data and frameworks it depends on.
> Read more about those [here](https://mxskylar.github.io/phlexicon/attribution).

## Install

Download the [latest release](https://github.com/mxskylar/phlexicon/releases/latest) for your operating system:

- **macOS:** If your Mac uses an M1 chip, download an `arm64` file. Download either a `zip` or `dmg` file.
- **Windows:** Download the `exe` installer.
- **Linux:** Download an `rpm`, `deb`, `AppImage`, `pacman` file.

## Development

Phlexicon is an [Electron](https://www.electronjs.org/) app built with [Node](https://nodejs.org/) `v23.10.0`.
Expand Down Expand Up @@ -103,10 +109,58 @@ npm run compile-react

---

Creates the database from scratch, inserts data, transpiles Typescript into JavaScript, then bundles the application with [Webpack](https://webpack.js.org/).

```bash
npm run build
```

*Deletes cache?* **Yes**, deletes the bundle for the previous version of the app, if it exists, then re-creates it.

---

Launches the Electron application.

```bash
npm run electron
```

*Deletes cache?* **No**, launches the app using its existing bundle.
*Deletes cache?* **No**, launches the app using its existing bundle.

---

Packages app distribution for macOS. Only works when run on macOS.

```bash
npm run dist-mac
```

*Deletes cache?* **Partially**, replaces files for previous app macOS distribution, if they exist.

---

Packages app distribution for Windows.

```bash
./electron-builder-docker win
npm run dist-win
```

These commands may give the following, expected error while still succeeding to package the app for Windows.

```
0024:err:environ:run_wineboot failed to start wineboot 1
```

*Deletes cache?* **Partially**, replaces files for previous app Windows distributions, if they exist.

---

Packages app distribution for Linux.

```bash
./electron-builder-docker linux
npm run dist-linux
```

*Deletes cache?* **Partially**, replaces files for previous app Linux distributions, if they exist.
9 changes: 5 additions & 4 deletions ci/app/init.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import * as fs from 'fs';
import { BUILD_DIR, DATABASE_FILE_PATH } from '../../src/build-constants';
import { ASSETS_DIR, BUILD_DIR, DATABASE_RELATIVE_FILE_PATH } from '../../src/build-constants';
import { Database } from '../../src/db/database';
import {
CONSONANTS_TABLE,
Expand Down Expand Up @@ -32,8 +32,9 @@ import { SpokenDialectParser } from './spoken/spoken-dialect-parser';
import { SignWritingFontParser } from './sign/sign-writing-font-parser';
import { SignPhonemeParser } from './sign/sign-phoneme-parser';

// STEP 1: Prep the build directory
// STEP 1: Prep the build & assets directories
recreateDirectory(BUILD_DIR);
recreateDirectory(ASSETS_DIR);

// Installed Resources
console.log(`Copying contents of ${INSTALLED_RESOURCES_DIR} to ${BUILD_DIR}`);
Expand All @@ -45,8 +46,8 @@ console.log(`Copying contents of ${CUSTOM_RESOURCES_DIR} to ${BUILD_DIR}`);
fs.cpSync(CUSTOM_RESOURCES_DIR, BUILD_DIR, {recursive: true});

// Database
console.log(`Creating database: ${DATABASE_FILE_PATH}`);
const db = new Database(DATABASE_FILE_PATH);
console.log(`Creating database: ${DATABASE_RELATIVE_FILE_PATH}`);
const db = new Database(DATABASE_RELATIVE_FILE_PATH);

// STEP 2: Insert data into the database
// SPOKEN DIALECTS
Expand Down
2 changes: 1 addition & 1 deletion ci/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,6 @@ export const recreateDirectory = (path: string) => {
recursive: true,
force: true
});
fs.mkdirSync(path);
}
fs.mkdirSync(path);
};
15 changes: 15 additions & 0 deletions custom-resources/app.css
Original file line number Diff line number Diff line change
@@ -1,3 +1,18 @@
body {
height: 100vh;
}

#navigation-bar .navbar-brand {
font-family: 'Merriweather', serif;
}

footer {
position: fixed;
left: 0;
bottom: 0;
background: #ffffff;
padding: 5px;
text-align: center;
font-size: 10px;
width: 100%;
}
Binary file added custom-resources/icon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 0 additions & 1 deletion custom-resources/logo.svg

This file was deleted.

18 changes: 6 additions & 12 deletions docs/README.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,9 @@
# Phlexicon
![Demo of Phlexicon app](demo.gif)

Beginner-friendly phonetic keyboards for spoken & sign languages on desktop Mac, Windows, & Linux.
## Install

Type [phonemes](https://en.wikipedia.org/wiki/Phoneme) using the [International Phonetic Alphabet (IPA)](https://en.wikipedia.org/wiki/International_Phonetic_Alphabet)
for spoken languages and [SignWriting](https://www.signwriting.org/about/) for sign languages.
Choose from a list of phonemes used by a particular dialect or optionally, all phonemes in the IPA or SignWriting.
Download the [latest release](https://github.com/mxskylar/phlexicon/releases/latest) for your operating system:

The application is still under development and is only available for developers to [build from scratch](https://github.com/mxskylar/phlexicon).
This user guide will be updated when Phlexicon is available for installation.

---

Phlexicon would be nothing without the open source data and frameworks it depends on.
Read more about those [here](./attribution.md).
- **macOS:** If your Mac uses an M1 chip, download an `arm64` file. Download either a `zip` or `dmg` file.
- **Windows:** Download the `exe` installer.
- **Linux:** Download an `rpm`, `deb`, `AppImage`, `pacman` file.
6 changes: 6 additions & 0 deletions docs/_config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# https://github.com/pages-themes/minimal
remote_theme: pages-themes/minimal@v0.2.0
plugins:
- jekyll-remote-theme
title: Phlexicon
logo: "logo.png"
55 changes: 55 additions & 0 deletions docs/_layouts/default.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
<!DOCTYPE html>
<html lang="{{ site.lang | default: "en-US" }}">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" type="image/x-icon" href="favicon.ico">

{% seo %}
<link rel="stylesheet" href="{{ "/assets/css/style.css?v=" | append: site.github.build_revision | relative_url }}">
<link rel="stylesheet" href="style.css">
<!--[if lt IE 9]>
<script src="https://cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv.min.js"></script>
<![endif]-->
{% include head-custom.html %}
</head>
<body>
<div class="wrapper">
<header>
<h1><a href="{{ "/" | absolute_url }}">{{ site.title }}</a></h1>

{% if site.logo %}
<img src="{{site.logo | relative_url}}" alt="Logo" id="logo" />
{% endif %}

<p>
A catalog of <a href="https://en.wikipedia.org/wiki/Phoneme">phonemes</a>&nbsp;
in hundreds of languages, dialects, and lexicons—both <a href="https://www.signwriting.org/about/">signed</a>&nbsp;
and <a href="https://en.wikipedia.org/wiki/International_Phonetic_Alphabet">spoken</a>.
</p>

{% if site.github.is_project_page %}
<p class="view">
<a href="https://mxskylar.github.io/phlexicon/faq">FAQ</a>&nbsp;•&nbsp;
<a href="{{ site.github.repository_url }}">Source Code</a>&nbsp;•&nbsp;
<a href="{{ site.github.repository_url }}/releases/latest">Download App</a>
</p>
{% endif %}
</header>
<section>

{{ content }}

</section>
<footer>
<p><small>
Phlexicon would be nothing without the open source data and frameworks it depends on.
Read more about those <a href="https://mxskylar.github.io/phlexicon/attribution">here</a>.
Website hosted on GitHub Pages. Theme by <a href="https://github.com/orderedlist">orderedlist</a>.
</small></p>.
</footer>
</div>
<script src="{{ "/assets/js/scale.fix.js" | relative_url }}"></script>
</body>
</html>
25 changes: 14 additions & 11 deletions docs/attribution.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,17 @@
# Attribution

Phlexicon would be nothing without the open source data and frameworks it depends on:
- [PBase](https://pbase.phon.chass.ncsu.edu/): Phonetic data for spoken languages
- [SignWriting](https://www.signwriting.org/) & [SignPuddle](https://signpuddle.org/): Writing system & phonetic data for sign languages
- [International SignWriting Alphabet 2010](https://www.signbank.org/iswa/): Font for writing phonemes in sign language
- [SIL ISO 639-3](https://iso639-3.sil.org/): Language names & identifiers
- [Charis SIL](https://software.sil.org/charis/): Font that supports International Phonentic Alphabet (IPA) symbols
- [Bootstrap](https://getbootstrap.com/): UI framework & [icons](https://icons.getbootstrap.com/)
- [Bootswatch](https://bootswatch.com/): Theme for Bootstrap
- [React](https://react.dev/): Framework for web development
- [Webpack](https://webpack.js.org/): JavaScript bundler
- [Electron](https://www.electronjs.org/): Framework to distribute web apps as desktop apps
- [Node.js](https://nodejs.org/): JavaScript development tool

| | Description | License |
|---|---|---|
| [PBase](https://pbase.phon.chass.ncsu.edu/) | Phonetic data for spoken languages | [Attribution-NonCommercial-ShareAlike 4.0 International](https://creativecommons.org/licenses/by-nc-sa/4.0/) |
| [International SignWriting Alphabet 2010](https://www.signbank.org/iswa/), [SignWriting](https://www.signwriting.org/), & [SignPuddle 3.0](https://signpuddle.org/) | Writing system, font, & phonetic data for sign languages | [Attribution-ShareAlike 3.0 Unported](https://creativecommons.org/licenses/by-sa/3.0/) |
| [SIL ISO 639-3](https://iso639-3.sil.org/) | Language names & identifiers | |
| [Charis SIL](https://software.sil.org/charis/) | Font that supports International Phonetic Alphabet (IPA) symbols | |
| [Bootstrap](https://getbootstrap.com/) | UI framework | [MIT](https://github.com/twbs/bootstrap/blob/main/LICENSE) |
| [Bootstrap Icons](https://icons.getbootstrap.com/) | Icon symbols | [MIT](https://github.com/twbs/icons/blob/main/LICENSE) |
| [Bootswatch](https://bootswatch.com/) | Theme for Bootstrap | [MIT](https://github.com/thomaspark/bootswatch/blob/v5/LICENSE) |
| [React](https://react.dev/) | Framework for web development | [MIT](https://github.com/facebook/react/blob/main/LICENSE) |
| [Webpack](https://webpack.js.org/) | JavaScript bundler | [MIT](https://github.com/webpack/webpack/blob/main/LICENSE) |
| [Electron](https://www.electronjs.org/) | Framework to distribute web apps as desktop apps | [MIT](https://github.com/electron/electron/blob/main/LICENSE) |
| [Node.js](https://nodejs.org/) | JavaScript development tool | [MIT](https://github.com/nodejs/node/blob/main/LICENSE) |
Binary file added docs/demo.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
31 changes: 31 additions & 0 deletions docs/faq.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# FAQ

## Where does Phlexicon get its data?

Spoken phonemes are pulled from [PBase](https://pbase.phon.chass.ncsu.edu/)
and the handshapes of sign languages are pulled from [SignPuddle 3.0](https://signpuddle.org/)
and the [one-dimensional font](https://www.sutton-signwriting.io/#fonts) for [SignWriting](https://www.signwriting.org/about).

These datasets are normalized and parsed by Phlexicon.
Some granular data may be excluded or simplified, but the data in the app
should not meaningfully differ from original datasets,
unless there is a [bug](https://github.com/mxskylar/phlexicon/issues).

See the [data parsing source code](https://github.com/mxskylar/phlexicon/blob/main/ci/app/init.ts)
to better understand how the original datasets are normalized, simplified, and parsed.

## What fonts does Phlexicon use?

The [Charis SIL font](https://software.sil.org/charis/) for spoken phonemes in the
[International Phonetic Alphabet (IPA)](https://en.wikipedia.org/wiki/International_Phonetic_Alphabet)
and the [one-dimensional font for SignWriting](https://www.sutton-signwriting.io/#fonts),
which can be used to write sign languages.

Some characters in the IPA use are in a [Unicode private use area](https://en.wikipedia.org/wiki/Private_Use_Areas),
which means that the Charis font or another IPA-compatible font will need to be used to properly render them.
The SignWriting font must be used to render all symbols in the SignWriting system.

## Where can I find symobls for movement, location, expressions, etc. in sign languages?

For now, only oriented handshapes are supported by Phlexicon. The [SignMaker tool](https://www.signbank.org/signmaker/#)
can be used to find symbols for other phonemic parameters in the [SignWriting](https://www.signwriting.org/about) system.
Binary file added docs/favicon.ico
Binary file not shown.
Binary file added docs/logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
16 changes: 16 additions & 0 deletions docs/style.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
header, footer {
text-align: center;
}

header h1 {
font-family: 'Merriweather', serif;
margin-bottom: 0;
}

#logo {
height: 150px;
}

a {
color: #2fa4e7;
}
18 changes: 18 additions & 0 deletions electron-builder-docker
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
#!/bin/bash
# https://www.electron.build/multi-platform-build#build-electron-app-using-docker-on-a-local-machine

IMAGE_VERSION=""
if [[ "$1" == "win" ]]; then
IMAGE_VERSION=":wine"
fi

set -o xtrace
docker run --rm -ti \
--env-file <(env | grep -iE 'DEBUG|NODE_|ELECTRON_|YARN_|NPM_|CI|CIRCLE|TRAVIS_TAG|TRAVIS|TRAVIS_REPO_|TRAVIS_BUILD_|TRAVIS_BRANCH|TRAVIS_PULL_REQUEST_|APPVEYOR_|CSC_|GH_|GITHUB_|BT_|AWS_|STRIP|BUILD_') \
--env ELECTRON_CACHE="/root/.cache/electron" \
--env ELECTRON_BUILDER_CACHE="/root/.cache/electron-builder" \
-v ${PWD}:/project \
-v ${PWD##*/}-node-modules:/project/node_modules \
-v ~/.cache/electron:/root/.cache/electron \
-v ~/.cache/electron-builder:/root/.cache/electron-builder \
electronuserland/builder$IMAGE_VERSION
Loading