An assistant to the lyricist in you!
Lyricistant is a writing app geared toward helping you write lyrics, poetry, or anything else you desire!
Unlike other apps with a focus on rhyming, Lyricistant is first and foremost a writing app. It's made for you to use to write your lyrics, while offering helpful features to keep you in the writing zone.
Its features include:
- Showing the amount of syllables per line.
- Contextually displaying rhymes as you type or select words.
- Allowing easy lookups of definitions for words, with support for synonyms and antonyms.
- Easily saving and reopening lyrics that you've made.
- Showing you the history of your file.
- [Desktop and Web] Drag and Drop support for quickly reopening lyrics.
- [Desktop only] Remembering your recently opened lyrics to help you continue where you left off.
- Both a light and dark theme that it can automatically switch between.
- Automatically updating!
- [Android 12+ only] Matching your device's theme colors to effortlessly match Material You.
- Available on your favorite platforms!
It's a combination of two words:
- Lyricist
- Assistant
Lyricistant!
It's a little outdated, but here's a blog post giving a high-level overview of Lyricistant.
The most up-to-date documentation is here
This project uses Gulp to build.
The easiest way to use Gulp is via installing Gulp globally via npm install -g gulp
, but this isn't required as Gulp
is included as a dev dependency for this project, and so doing npm install; node_modules/.bin/gulp <task>
will also
work.
How to check out and run the project:
git checkout https://github.com/wardellbagby/lyricistant.git
cd lyricistant
# Starts the Electron app for development.
gulp startElectron
# Starts the Web app for development.
gulp startWeb
# Starts the Android app for development.
gulp startAndroid
# Starts the iOS app for development.
gulp startIOS
If you use a Jetbrains IDE (WebStorm, IntelliJ IDEA, etc) or Visual Studio Code, you can build and attach a debugger for all of these tasks natively in the IDE (via either Run Configurations for Jetbrains products or Run & Debug for Visual Studio Code).
New commits to main
are automatically deployed, both on the web and as native binaries.
There are currently unit and UI tests in the project.
You can run all tests in a terminal via:
gulp testAll
# To allow attaching a debugger
node --inspect-brk ./node_modules/.bin/gulp testAll
There are various other test tasks that are named after the folder the tests are contained in. You can print a list of all test tasks by running:
gulp --tasks-simple | grep "test"
If you're using VS Code or a Jetbrains IDE, you can also see the test tasks in your Run/Debug or Run Configurations, respectively.
You can also run tests natively in your IDE using Jest, which will make it even easier to attach a debugger, as your IDE will do that for you.
It's preferred to use the various gulp
tasks to invoke tests, as they will handle any necessary prerequisites,
such as building the app before running the tests. However, feel free to use Jest on the command line or in your IDE for
better iteration, but make sure to also run the test via Gulp to verify that it works correctly!
When running the UI tests (gulp testWeb
and gulp testElectron
), you can set the environment variable PWDEBUG
to
1
in order to open the Playwright Debugger and run the tests visibly.
E.g.,
PWDEBUG=1 gulp testWeb
This also works with Jest:
PWDEBUG=1 jest --projects apps/web/test
There's a helper script at scripts/install-latest.ts
that can be used to update all dependencies in the project that
start with a specific string to a specified version.
This is very useful for updating any scoped NPM dependencies that should be updated in lockstep (i.e., @codemirror
).
Example usage:
./scripts/install-latest.ts @codemirror 0.19.0 # omit to update to latest
This project uses Commitzen and Commitlint to enforce a single commit style.
To create a commit using an interactive wizard that follows the commit standards, run git cz
We aim to be an inclusive and welcoming community. To make that explicit, we have a code of conduct that applies to this project.
This project is licensed under the GPL-3.0 License - see the LICENSE file for details