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.db
and place it indata/
under the server directoryserver_configs.txt
and 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.yml
into a working directory -
Download and place
bear_words.db
indata/
in that directory -
Add
server_configs.txt
to 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.txt
from the release page into the import field - Select data type as
Tags
and import
- Go to
Settings > Import
- Paste contents of
tag_hints.txt
into the import field - Select data type as
Words
and 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
Language
table (used in source and translated words) -
Insert words:
- Source language
- Pronunciation (optional)
ModifiedAt
as 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 (
Release
configuration)
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=None
Reference: .NET MAUI publish documentation