Parse PDFs and learn vocabulary using a modern web interface.
Report Bug
·
Request Feature
Table of Contents
This project aims to provide a modern and simple way to learn and memorize vocabulary. Built using React and Tailwind CSS
(+ shadcn UI), it offers a compelling and responsive UI.
In order to provide accurate and atomatic definitions and synonyms for the vocuabulry, voakbel utilizes the BigHugeThesaurus API as well as the Free Dictionary API .
To get a local copy up and running follow these simple steps.
- At least Java 17
- Run
git clone https://github.com/oskarkraemer/vocabonline.git
- Create
.env
file with the following environment variables: DB_URL = "<postgres dbURL">"
DB_USER = "<postgres user string>"
DB_PASSWORD = "<postgres user password"
BHT_API_KEY = "<BigHugeThesaurus API key>"
Obtain hereAUTH_SALT = "<random string to use for password hash salt>"
- Run
docker compose up
in directory
- Run
java -jar ./out/artifacts/vocabonline_jar/vocabonline.jar
- Create Admin user: Currently only possible manually: Add entry to
user_account
table with password hash being a SHA1 hash, salted usingAUTH_SALT
env. - Import PDF: Press Import PDF and upload. The PDF is parsed for vocabulary and their corresponding translation. A new list is created.
- Open List: Click on the newly created and you are presented with the parsed vocabulary, including synonym annotations.
- Learn List: Click Learn All to learn all words in the list; click Learn Hard to only learn difficult words (often answered wrongly).
After a new PDF is parsed, a list is created and the following steps are executed:
- BigHugeThesaurus is queried in order to obtain synonyms and antonyms.
- Free Dictionary API is queried to obtain definitions, phonetics, examples and the part of speech
- The data is inserted into the PostgreSQL database, visualized using the following model.
Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature
) - Commit your Changes (
git commit -m 'Add some AmazingFeature'
) - Push to the Branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
Oskar Krämer - [email protected]