Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added .img/deepthought-logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
85 changes: 60 additions & 25 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,52 +1,87 @@
# DeepThought #

![DeepThought Logo](.img/deepthought-logo.png)

A knowledge management application for Android and Java to easily store all your data and quickly re-find it.

It supports:
Local data storage and sync, no external servers involved.

- a Rich Text editor
**Features**

- real time full text search engine (my one gigabyte database is searched in less than 100 milliseconds)
- local data storage
- real time full text search engine (my one gigabyte database is searched in less than 100 milliseconds.)
- cloudless data synchronization over local network
- a Rich Text editor
- extracting data from web sites (the same technique as for the Firefox reader view is used)
- extracting text from PDF files
- attaching files (including automatic file synchronization)
- tags
- RSS feed reader

- Upcoming: OCR (text extraction from images)

## Cloning and start-up
## Download

- **Android App** https://play.google.com/store/apps/details?id=net.dankito.deepthought
- **JavaFX Desktop App** (must be compiled from source, see section "Development", downloadable version coming soon)

## Firewall configuration

A couple of firewall ports have to be opened for the application to work properly.

**Data retrieval**

| Direction | Port(s) | Functionality |
| ------------- | ------------- | ------------------------ |
| OUT | TCP 80, 443 | Save webpages, RSS feeds |


**Synchronization**

All ports only need to be opened for the local network.

As DeepThought uses
a serverless multi-master synchronization, nothing outside the local network
is ever contacted.

As the synchronization layer is currently undergoing a major redesign, these ports will be significantly simplified with the upcoming 0.6.0 release.


| Direction | Port(s) | Functionality |
| ------------- | --------------------------------------- | ------------------------ |
| IN | UDP 32788 | Device discovery |
| IN | First free port starting from TCP 32789 | messaging |
| IN | First free port starting from TCP 27387 | data synchronization
| IN | TCP 32789 - 33489 | first time synchronization; only used for initial synchronization of two devices
| IN | First free port starting from TCP 60705 | file synchronization

## Development

### Getting the sourcecode

To init submodules, clone with
      git clone --recursive https://github.com/dankito/DeepThought.git

git clone --recursive https://github.com/dankito/DeepThought.git

or clone and run
      git submodule init
      git submodule update

git submodule init
git submodule update

To start the Desktop Application go to
      DeepThoughtJavaFx -> src -> main -> java -> net -> deepthought
, right click on 'DeepThoughtFx' and choose Debug or Run.
### Start the JavaFX application

For running the Java Desktop Application you at least need Java 8_u40 and the JavaFX library.

For running the Java Desktop Application you at least need Java 8_u40.
JavaFX is not bundled with OpenJDK, some distributions allow to install
it via the package manager (e.g. `apt install openjfx`).

## Firewall configuration
To start the Desktop Application go to `DeepThoughtJavaFX/src/main/kotlin/net/dankito/deepthought/javafx/`, right click on `DeepThoughtJavaFXApplication.kt` and choose Debug or Run.

### Data retrieval
If you want to save web pages or RSS feeds, you have to open the corresponding ports (usually TCP 80 and 443).

### Synchronization
All ports only need to be opened for the local network.
As DeepThought uses a serverless multi-master synchronization, nothing outside the local network is ever contacted.
or via gradle (remove the `subprojects` entry from the main gradle file):

Used ports are:
- UDP 32788 (device discovery)
- First free port starting from TCP 32789 (messaging)
- First free port starting from TCP 27387 (data synchronization)
- TCP port between 32789 - 33489 (first time synchronization; only used for initial synchronization of two devices). I admit this is really ugly.
- First free port starting from TCP 60705 (file synchronization)
cd DeepThoughtJavaFX
../gradlew build
cd build/distributions
unzip DeepThoughtJavaFX.zip
DeepThoughtJavaFX/bin/DeepThoughtJavaFX

As the synchronization layer is currently undergoing a major redesign, these ports will be significantly simplified with the upcoming 0.6.0 release.