Bear Words is a cross-platform dictionary app with tagging support, dark mode, and export/import capabilities.
This app features a sync system backed by a lightweight self-hosted server,
allowing sharing of bookmarks across devices.
The project already includes a set of words in en, ja, ru, and zh-hans. Translations are provided in en, ja, and zh-hans.
See DatabaseMigration/data/README.md for details of dictionary source.
-
Bookmark words and phrases with tag support
-
Sync bookmarks across devices via self-hosted server
-
Dark mode support
-
Import/export data (e.g., bookmarks, phrases and tags)
-
Cross-platform support:
- Server: Windows, Docker (ASP.NET Core Container)
- App: Windows, Android
- iOS/macOS app is theoretically supported but not published due to Apple Developer account requirements ($99 per year by the way)
To use Bear Words—even without syncing—you must run the server at least once to initialize and sync dictionary data.
Recommended for single-device initialization use.
-
Download:
server x64.zip(server)bear_words.dband place it indata/under the server directoryserver_configs.txtand place it in the server directory
-
Edit
server_configs.txt:- Add a 256-bit
issuer_key(you can generate one online) - Add or modify users
- Add a 256-bit
-
Run
BearWordsAPI.exe -
The server will be available at
http://<your-server-ip>:8080
Note
The server_configs.txt file uses the Bear Markup Language syntax.
You can find its grammar and structure in the the documentation.
-
Copy
BearWordsAPI/docker-compose.ymlinto a working directory -
Download and place
bear_words.dbindata/in that directory -
Add
server_configs.txtto the working directory -
Edit
server_configs.txt:- Add a 256-bit
issuer_key - Add or modify users
- Add a 256-bit
-
Start the server:
docker-compose up
-
Access the app at
http://<your-server-ip>:8080
Note
To enable TLS, provide a .pfx certificate and uncomment the relevant lines in the Docker Compose file.
- Download and install the APK.
- You may need to allow installation from unknown sources.
- Download the Windows x64 app from the release page.
- Enter your server’s address and port (e.g.,
http://192.168.1.100:8080) - Enter a username (default:
admin) - If sync fails at initialization, you can change the endpoint in Settings and retry in the Sync page.
- Go to
Settings > Import - Paste contents of
en_roots.txtfrom the release page into the import field - Select data type as
Tagsand import
- Go to
Settings > Import - Paste contents of
tag_hints.txtinto the import field - Select data type as
Wordsand import
See more in the Special Functions section below.
When you bookmark a word, relevant tags can be automatically applied based on hints.
To add or modify tag hints:
-
Create a new phrase with the following properties:
-
Language:
@none -
Tag:
@Tag Hint -
Title: any (e.g., "Root Hint 1")
-
Content: JSON format:
{ "tag": ["word1", "word2"] }
-
Note
The tag must be created or the hint of it will be ignored.
You can build and import your own dictionary to the database (bear_words.db)
- ORM schema:
DatabaseMigration/data_context.py - Migration logic:
DatabaseMigration/DatabaseMigration.py
-
Add languages to the
Languagetable (used in source and translated words) -
Insert words:
- Source language
- Pronunciation (optional)
ModifiedAtas a UNIX timestamp (helper function provided inhelpers.py)
-
Insert translations:
- Target word's ID
- Translation language
ModifiedAt
You can find the sample data in the DatabaseMigration/data/ directory.
- Build using the Dockerfile
- Or build in Visual Studio (
Releaseconfiguration)
To correctly publish a release version for Windows:
dotnet publish -f net9.0-windows10.0.19041.0 -c Release -p:RuntimeIdentifierOverride=win10-x64 -p:WindowsPackageType=NoneReference: .NET MAUI publish documentation