Lexify is a desktop application designed to help users learn and manage vocabulary effectively. It combines the simplicity of a local desktop application with the functionality of cloud-based user synchronization.
Note
This is an course-design project for 2024 Fall Python Programming by student ID: 547a1ec97aff5d1cc4d5c510fcd126a8
, 344790860170dfd0e32af844eff9dac1
, 7f7948923fe752064204c07ee5e6524e
, c7ca6a04c927df019ffb5e48374635f7
(MD5 Hash).
-
Vocabulary Learning: Memorize and review words.
-
User Accounts: Register, log in, and synchronize learning progress.
-
Predefined Libraries: Includes common word libraries such as TOEFL, GRE, and more. (Future support for Japanese word libraries, such as JLPT N1 - N5 is planned.)
- Frontend: PySide6 for the desktop application.
- Backend: Flask for user authentication and data synchronization.
- Database: SQLite for local and server-side data storage, with SQLAlchemy ORM for managing data models and queries.
frontend/
: Desktop application source code.backend/
: API and server-side logic.dict/
: Code used for importing the dataset of words. More below.
Follow these steps to set up.
git clone https://github.com/martin-cao/Lexify.git
cd lexify
This project requires Python 3.12 or higher. It's recommended to use a virtual environment to manage dependencies.
python3 -m venv venv
source venv/bin/activate
python -m venv venv
venv\Scripts\activate
then,
pip install -r requirements.txt
cd frontend
python3 Lexify.py
cd backend
python3 app.py
Or you can use Docker Compose
docker-compose up --build -d
If you want to import the dictionary data by your self, follow the instructions below.
Remove all elements in the words
, libraries
and library_words
tables in frontend/database/database_fe.db
and backend/app/database/database_be.db
. These are two SQLite databases. You can use Navicat or other tools to remove the data.
Then, clone the DictionaryData repository into Lexify/dict, and run dict/load_data.py
.
cd dict
python3 load_data.py
At last, you need to run this SQL query in order to remove all words without corresponding definitions.
DELETE FROM words WHERE definition = ''
The dictionary data used in this project comes from DictionaryData, which is licensed under the Apache-2.0 Licence. Special thanks to the authors for making this data publicly available.
Warning
As this is a course design project, please DO NOT make any pull request. If you have any suggestion with this project, please create an issue.
For more information, please contact [email protected].
Stay tuned for updates!