diff --git a/.gitignore b/.gitignore
index 8d270cc..4f15e0b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,4 +3,6 @@ node_modules
build
installed-resources
installed-data
-.DS_Store
\ No newline at end of file
+.DS_Store
+dist
+assets
\ No newline at end of file
diff --git a/README.md b/README.md
index d9c1f79..293a7a7 100644
--- a/README.md
+++ b/README.md
@@ -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.
+
-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`.
@@ -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.
\ No newline at end of file
+*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.
\ No newline at end of file
diff --git a/ci/app/init.ts b/ci/app/init.ts
index 20f5730..939eb53 100644
--- a/ci/app/init.ts
+++ b/ci/app/init.ts
@@ -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,
@@ -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}`);
@@ -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
diff --git a/ci/utils.ts b/ci/utils.ts
index e4ebeef..537ab61 100644
--- a/ci/utils.ts
+++ b/ci/utils.ts
@@ -21,6 +21,6 @@ export const recreateDirectory = (path: string) => {
recursive: true,
force: true
});
- fs.mkdirSync(path);
}
+ fs.mkdirSync(path);
};
\ No newline at end of file
diff --git a/custom-resources/app.css b/custom-resources/app.css
index 1a793b0..c4694ca 100644
--- a/custom-resources/app.css
+++ b/custom-resources/app.css
@@ -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%;
}
\ No newline at end of file
diff --git a/custom-resources/icon.png b/custom-resources/icon.png
new file mode 100644
index 0000000..a6ea4c8
Binary files /dev/null and b/custom-resources/icon.png differ
diff --git a/custom-resources/logo.svg b/custom-resources/logo.svg
deleted file mode 100644
index 5a24b2b..0000000
--- a/custom-resources/logo.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/docs/README.md b/docs/README.md
index 1566753..31ad808 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -1,15 +1,9 @@
-# Phlexicon
+
-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).
\ No newline at end of file
+- **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.
\ No newline at end of file
diff --git a/docs/_config.yml b/docs/_config.yml
new file mode 100644
index 0000000..4a4e6d6
--- /dev/null
+++ b/docs/_config.yml
@@ -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"
\ No newline at end of file
diff --git a/docs/_layouts/default.html b/docs/_layouts/default.html
new file mode 100644
index 0000000..83aa3cd
--- /dev/null
+++ b/docs/_layouts/default.html
@@ -0,0 +1,55 @@
+
+
+
+
+
+
+
+
+{% seo %}
+
+
+
+ {% include head-custom.html %}
+
+
+