offPIM

offPIM

A PIM. A personal information management system.

Use now
Download
Source

Getting started

offPIM

offPIM - A PIM - A Personal information management system

Use as a Progressive Web App (PWA).

Or on the desktop. Supports Windows Windows, Mac Mac OS, Linux Linux, and Android Get it on Google Play

Quick access offpim.app

offPIM architecture diagram

Screenshots

Material design

Dashboard screenshot

Dark mode & mobile ready

Dark apps screenshot

Description

An easily deployable PIM made for the CouchDB ecosystem. In an age where everything is about collaboration and sharing… This is a counterweight to that. Not everything needs to be shared. Something is just personal.

Features

Features under development:

Getting started

Getting offPIM up and running can be done in several ways.

Four flavors are currently available

The very easy way - Use now - Official offpim.app

Use a live version of offPIM (or use it permanently, as it works just as it will anywhere else). You may close the browser and tabs. Your data will still be stored in your browser.

Host Build status
Netlify Netlify Status

The easy way - Desktop app

  1. Download the app for your operating system Windows
  2. Double-click offpim_desktop.exe to install
  3. Open the app from the start menu. Linux
  4. Make it executable $ chmod a+x path-to-file/offpim_desktop.AppImage
  5. and run! $ ./path-to-file/offpim_desktop.AppImage Mac
  6. Currently no app for Mac OS

Note: “offPIM-Electron” is currently only built and tested on Windows(10) and Linux(Ubuntu), though it is possible to build for another OS yourself.

The still-easy-but-requires-a-few-more-steps way (for techies)

  1. Download self-hosted offPIM
  2. Copy contents of the zip-file into a directory (or root) to an HTTP-server of your choosing. offPIM uses relative paths, so any directory should work

Note: A HTTP-server is not necessary, as offPIM has a “simple” tech stack, making it runnable can be run from a directory on the desktop

The hard way - Build it yourself

  1. Clone the repository
  2. install dependencies npm install
  3. run npm run build for self-hosted, or npm run electron:build for desktop app

Example

$ cd /home/user/folder
$ git clone https://github.com/lybekk/offPIM.git
$ npm install
$ npm run electron:build

Self-hosted - tested setups / Deployment options

offPIM is run successfully on the following deployment setups

CouchDB+Apache (Ubuntu)

CouchDB HTTP server

Added bonus: Turning on CORS is not necessary if put directly in CouchDB’s www folder.

Python HTTPServer

import http.server
import socketserver
import webbrowser

PORT = 8000
# Binds to localhost only. Use "" for exposing this to network interfaces
HOST = "localhost" 

# Launches the server in current working directory in the default web browser
url = 'http://' + HOST + ":" + str(PORT)
webbrowser.open_new_tab(url)

# Magic
Handler = http.server.SimpleHTTPRequestHandler

with socketserver.TCPServer((HOST, PORT), Handler) as httpd:
    print("serving at port", PORT)
    httpd.serve_forever()

Download

Linux Linux Windows Windows Mac OS Mac OS Self-hosted Self-hosted Get it on Google Play

Note: The downloadable versions may be a bit behind the offpim.app version. A better way to build and distribute is on the drawing board

Requirements

Desktop app

Self-hosted

Synchronization

The following setups have been tested successfully

Installation instructions for CouchDB

If need for customization, or self-building:

Usage

For local customization and development, run npm install first.

Tests on mid-end devices with 30 000+ documents (5K in offPIM, while the rest is archived on Remote DB) performs well. Index optmizations are done now and then (tips welcome).

Compiles and hot-reloads for development

npm run serve
or
electron:serve

Compiles and minifies for production

npm run build
or
npm run electron:build

Build for Android

  1. Build web assets with npm run capacitor:build:android
  2. Build in Android Studio- Build/Build Bundle or Generate Signed Bundle
  3. Find the finished build in offPIM/android/app/release/app-release.aab

Customization

See documentation for customization options.

Security

offPIM doesn’t include any built-in security features (i.e. local encryption), and relies entirely on the surrounding environment. With this in mind, it’s a good idea to keep an eye open on where your data travels. Using HTTPS, enforcing database permissions and other security best practices are recommended. Authentication when syncing with an external database is done through PouchDB.

Contributing

Contributions in any form will be appreciated.

Commits to github will be instantly reflected on offpim.app. PWA Service workers may need 24 hours to update to the newest version automatically. A manual cache refresh will force download the newest version.

Sponsoring

Using, and downloading Brave Browser from this link gets me a cup of coffee.

Android app (Capacitor)

When building the app, add a file named capacitor.config.json in the root of offPIM’s project folder.

Example config:

{"appId":"tech.lybekk.offpim","appName":"offPIM","bundledWebRuntime":false,"webDir":"/home/username/development/offPIM/dist/bundled"}

Design choices

Name

Formerly known as pimpim (rebranded as not to be confused with a “male performance product” solving a different problem)

Frontend only

No backend is provided or required. For synchronization, a CouchDB/PouchDB/Cloudant database is needed.

UI (CSS)

The choice of UI/CSS frameworks landed on Vuetify. Feature-rich and integrates exceptionally well with Vue.

Vue Single File Components

Vue’s sexy Single File Components (SFC) provides an excellent separation of concerns and does a good job in helping reduce inevitable spaghetti code.

The drawback to SFC, some would say, is the reliance on Webpack. The advantages one gets by utilizing Vue’s entire ecosystem (Vue CLI, SFC, Router, Vuex) makes it worth it, however.

Roadmap

On the horizon

Time permitting

Credits

Creators and maintainers of:

License

MIT