All Projects → matthiasn → Meins

matthiasn / Meins

Licence: agpl-3.0
a personal and smart journal

Programming Languages

clojure
4091 projects
clojurescript
191 projects

Projects that are alternatives of or similar to Meins

wassup
Personal assistant to help you save your personal memories and emotions together, securely
Stars: ✭ 58 (-79.86%)
Mutual labels:  journal
JBWAPI
Pure Java BWAPI Client implementation for JVM languages
Stars: ✭ 16 (-94.44%)
Mutual labels:  jvm
Akka Persistence Jdbc
Asynchronously writes journal and snapshot entries to configured JDBC databases so that Akka Actors can recover state
Stars: ✭ 271 (-5.9%)
Mutual labels:  journal
PlaceTracking
Simple and free to use API for time and location tracking
Stars: ✭ 21 (-92.71%)
Mutual labels:  time-tracker
clodl
Turn dynamically linked ELF binaries and libraries into self-contained closures.
Stars: ✭ 136 (-52.78%)
Mutual labels:  jvm
taskontable
Taskontable is To-Do List & Time keeper on Spreadsheet.
Stars: ✭ 14 (-95.14%)
Mutual labels:  time-tracker
Latte
Automatic time tracker for Linux
Stars: ✭ 29 (-89.93%)
Mutual labels:  time-tracker
Talos
Talos Particle Engine
Stars: ✭ 275 (-4.51%)
Mutual labels:  jvm
disk-lru-cache
💾 Disk LRU cache with persisted journal
Stars: ✭ 21 (-92.71%)
Mutual labels:  journal
Lwext4
ext2/ext3/ext4 filesystem library for microcontrollers
Stars: ✭ 270 (-6.25%)
Mutual labels:  journal
itrack
A simple task-based time tracker for everyday use.
Stars: ✭ 20 (-93.06%)
Mutual labels:  time-tracker
arquillian-container-was
Arquillian WebSphere Containers
Stars: ✭ 18 (-93.75%)
Mutual labels:  jvm
Monorepo Starter
Monorepo starter project for Kotlin, Python, TypeScript x React
Stars: ✭ 255 (-11.46%)
Mutual labels:  jvm
blog
日常工作中使用的技术沉淀+学习记录
Stars: ✭ 41 (-85.76%)
Mutual labels:  jvm
Ferrugo
Ferrugo is a JVM implementation written in Rust
Stars: ✭ 272 (-5.56%)
Mutual labels:  jvm
yarrow
[yarrow] JVMCI based optimizing compiler for HotSpot VM
Stars: ✭ 21 (-92.71%)
Mutual labels:  jvm
tom
Command line tool to track time and to simplify related office work (reporting, invoicing)
Stars: ✭ 16 (-94.44%)
Mutual labels:  time-tracker
Jikesrvm
Jikes RVM (Research Virtual Machine)
Stars: ✭ 281 (-2.43%)
Mutual labels:  jvm
Maxine Vm
Maxine VM: A meta-circular research VM
Stars: ✭ 274 (-4.86%)
Mutual labels:  jvm
Bistoury
Bistoury是去哪儿网的java应用生产问题诊断工具,提供了一站式的问题诊断方案
Stars: ✭ 3,198 (+1010.42%)
Mutual labels:  jvm

meins

The open-source application meins is an experimentation toolkit for designing your life. It helps you collect relevant information, design, and then implement change. Most importantly, it does so without leaking data, because everything stays within your realm of control, and you can always verify this claim in the source code. Please have a look at the manual to find out more about what it does. The same text is available in the application under the help menu.

Here's how that currently looks like:

screenshot

Installers

You can download a beta version of the application for Linux, Mac, and Windows on GitHub, where you want the highest existing version for your platform. The Mac version is usually the newest, and the others can lag. You only have to download the binary once, as there are automatic updates. You can also build the application yourself, with a simple make command, plus an unknowable amount of time for getting your development environment right.

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.

Motivation

See this blog post for the background. Back then it was called meo, but has since been renamed to meins.

Components

meins 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 meins make use of the systems-toolbox for their architecture.

Here's how the app currently looks like:

screenshot

Installation

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.

You also need JDK 10+, for example OpenJDK 11. Please make sure that the $JAVA_HOME is set up and that you can run link from the command line.

Then you need Node.js. I use nvm. After installing it, run

$ nvm install 8

To install the required global npm dependencies on a Mac, you can run

$ make deps-mac

For Ubuntu, run

$ make deps-ubuntu

If anything is missing or redundant, please submit a pull request, I am not running these often. Leiningen itself is missing, not sure how to best install that from here. Maybe it's best to just use the commands in the install targets as a template for what you need to install. Please have a look at what the target for your platform does before blindly running it.

Once all the dependencies installed already, you can create a packaged version of meins running

$ make package 

This will download dependencies, both Clojure and npm, and then run tests, build, and package the entire application for the platform you are running on. This will take The backend of the application is a standalone uberjar that runs with a packaged custom Java runtime that is generated when building meins using jlink. The resulting runtime is only a fraction of the size of a JDK. Packaging the runtime is more reliable than trying to rely on a recent JRE on a non-developer machine. This packaging mechanism is provided by Project Jigsaw,

Icons

Convert using electron-icon-generator, then copy to build/ and rename.

$ npm install -g electron-icon-generator
$ electron-icon-generator ~/Downloads/Logo_meins_RZ.png

Development

For development, you need to install the JavaScript dependencies:

$ yarn install

Then, you need to build the JavaScript for both the Electron Main and Render processes:

$ shadow-cljs watch main
$ shadow-cljs watch renderer

The task above need to be running in separate terminals, as they watching the file system for changes. 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 the following, once again in separate terminals:

$ lein run
$ npm start

Now you should have an environment running where any change in the code (including the SCSS) reloads the content of the Electron application.

Packaging

meins is released as follows:

$ make release

This will package and sign the application, for the platform it runs on. Then, it will upload the resulting package(s) to the releases section on the project page. Note that the proper GH_TOKEN environment variable must be set for this.

Tests

$ lein test

or

$ 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 else that you find.

License

Copyright © 2016-2019 Matthias Nehlsen. Distributed under the GNU AFFERO PUBLIC LICENSE, Version 3. See separate LICENSE file.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].