meo is a personal information manager for recording and improving my life. It starts with a geo-aware journal where each entry captures your geo-location and whatever you want to note about that moment. You can use hashtags and mentions to better organize your information. You can also track your tasks and habits.
Here's how that currently looks like:
Packaged binaries allow you to install the application without having to build it yourself:
All of these provide auto-update functionality, which can be accessed through "Check for Updates" in the application menu. In addition, checks for a newer version run once every 24 hours.
See this blog post for the background. More blog posts to follow.
meo consists of a Clojure and ClojureScript system spanning an Electron application and a backend that runs on the JVM. There's also a mobile companion app written in ClojureScript on top of React Native, see
./rn-app in this repository. All subsystems in meo make use of the systems-toolbox for its architecture.
Here's how the app currently looks like:
There is a
Makefile that contains all the build targets. You will obviously need GNU make to run the targets. Alternatively, you can run the commands in there individually. Please have a look at the
Makefile to see what the commands are.
To prepare your environment and install the required dependencies on a Mac, you can run
$ make install-mac
For Ubuntu, run
$ make install-mac
If anything is missing, please submit a pull request. And have a look at what the script for your platform does before blindly running it, and typing in your superuser password, which is required for
apt in the Linux version.
Afterwards, if all you want to do is create a packaged version of meo, you can run
$ make package-only
This will build and package the entire application, both the JVM and the Electron parts.
$ yarn install
cljs profile. Using this profile keeps the size of the uberjar for the JVM-based backend smaller. I usually run one or more of these in different terminals or split views:
$ lein with-profile cljs cljsbuild auto main $ lein with-profile cljs cljsbuild auto renderer-dev $ lein with-profile cljs cljsbuild auto updater
Alternatively, you use these aliases (see project.clj);
$ lein cljs-main-dev $ lein cljs-renderer-dev $ lein cljs-updater-dev
These need to be running in separate terminals, as they watch the file system for changes in auto mode.
Next, you need to compile the SCSS files into CSS:
$ lein sass4clj auto
Once you have completed all the steps in the previous section, all you need to do is:
$ lein run $ npm start
You can also package the application using the publish script:
$ ./publish.sh -m beta
This script will completely build and package the meo desktop application. It will try to upload the application into an S3 bucket if credentials are in the environment. But even without valid credentials, you will still find the packaged application under
$ lein test
$ lein test2junit
How to help
Contributions and pull requests are very welcome. Please check the open issues for where help is required the most, and file issues for anything that you find.
Copyright © 2016-2018 Matthias Nehlsen. Distributed under the GNU AFFERO PUBLIC LICENSE, Version 3. See separate LICENSE file.