Paperwork - OpenSource note-taking & archiving alternative to Evernote, Microsoft OneNote & Google Keep
http://paperwork.rocks
Paperwork is an open-source, self-hosted alternative to services like Evernote ®, Microsoft OneNote ® or Google Keep ®.
If you were looking for the Laravel-based version 1 of Paperwork, please check out this branch.
However, originally the tech that was used to build the very first version on top (mainly PHP 5, MySQL, Laravel 4, Angular & Bootstrap) was chosen to keep things simple and allow iterating quickly. The primary goal for the project was the actual result, rather than any sort of technological finesse.
Over the time, two observations concerning the chosen technology were made:
With the effort to revamp Paperwork in its current form (e.g. clean the code on the front- and the back-end, upgrade to the latest Laravel version, upgrade to the latest PHP version, clean the database schema, refactor the API, ...) being significant and a clear force on the JavaScript-side of the project being observable, it seems to make more sense to rebuild Paperwork from ground up, on top of an architecture that allows for more flexibility, quicker iteration, a better structure and ultimately a higher ease of use/contribute.
Everyone who is interested in getting their feet wet is highly welcome to join the discussion and planning around Paperwork 2.
Feel free to actively participate in the chatroom or shoot an email to the Paperwork dev mailinglist.
The compose-setup depends on an encrypted overlay network to be created. For that, your docker environment needs to have swarm activated. You can do so by running:
There is no need to join any more members to it. Only with swarm enabled the
After the
This allows running each service either as fully built docker container or as development instance. For example,
In order to make a local service available inside docker, the
The root password is
Paperwork
OpenSource note-taking & archiving
Join the chatPaperwork is an open-source, self-hosted alternative to services like Evernote ®, Microsoft OneNote ® or Google Keep ®.
Version 2
This branch contains the second iteration of Paperwork, which is a complete rewrite. Not only is it based on another framework - it is based on a completely different technology stack. It is in its very early development phase and not yet usable.If you were looking for the Laravel-based version 1 of Paperwork, please check out this branch.
Background
The very first version of Paperwork was started in July 2014 as a pet-project by this guy, mainly out of frustration about the existing services (Evernote & others), fear ignited by the Snowden revelations and curiosity about whether the effort would lead to something people would be interested in. And apparently it did. :) Soon, more great people joined the project and contributed.However, originally the tech that was used to build the very first version on top (mainly PHP 5, MySQL, Laravel 4, Angular & Bootstrap) was chosen to keep things simple and allow iterating quickly. The primary goal for the project was the actual result, rather than any sort of technological finesse.
Over the time, two observations concerning the chosen technology were made:
- The percentage of code share between PHP (as in the Laravel back-end) and JavaScript (as in the Angular front-end) shifted from an initial 80:20-ratio to roughly 50:50 by today
- Most of the time, the biggest pain-points during the implementation of new features were not within the front-end but rather on the back-end side
With the effort to revamp Paperwork in its current form (e.g. clean the code on the front- and the back-end, upgrade to the latest Laravel version, upgrade to the latest PHP version, clean the database schema, refactor the API, ...) being significant and a clear force on the JavaScript-side of the project being observable, it seems to make more sense to rebuild Paperwork from ground up, on top of an architecture that allows for more flexibility, quicker iteration, a better structure and ultimately a higher ease of use/contribute.
So, what now?
This branch contains a very first suggestion, of how the second iteration of Paperwork could look like. As you might notice, one major change is the clear separation of components, making this branch (and hopefully soon the whole repository) only one piece of the puzzle. Currently, it only contains of the back-end component — or better, one of them — and does not include front-end components whatsoever. The idea is to build the second iteration in a more modular and diversified manner, picking the right tool for the task rather than building a monolith that is harder to maintain the bigger it grows.Everyone who is interested in getting their feet wet is highly welcome to join the discussion and planning around Paperwork 2.
Okay, cool. But what took you so long to get to this point?
Funding. Basically this point was planned and headed towards sometime in mid 2016. Since then, different attempts were made to get funding for this project, through individuals but also programs like Prototypefund. The general idea was to accelerate development by paying you, the contributors, using a bounty-source-like approach. Unfortunately none of the attempts led to an actual funding or investment whatsoever. At this point putting the effort into the actual development, instead of pursuing further discussions and applications for such programs seems to make more sense.I would love to help!
Feel free to check out this branch and get involved with what's there already to get an idea of where Paperwork is heading. Also check out the project board to see what needs to be done or suggest what and how should be done.Feel free to actively participate in the chatroom or shoot an email to the Paperwork dev mailinglist.
Usage
This repository is structuring and unifying all required components for Paperwork.$ git clone git@github.com:twostairs/paperwork.git
Docker Compose
The setup is split into separate compose files that can be run individually of each other. In order for theservice
compose-files to work, the infrastructure
compose-file needs to be running, though.The compose-setup depends on an encrypted overlay network to be created. For that, your docker environment needs to have swarm activated. You can do so by running:
$ docker swarm init
infrastructure
can be launched:$ docker-compose -f ./docker-compose.infrastructure.yml up --build
infrastructure
is up and running all the services can be started individually.Users Service
In order to start the users service (service-users
), run the following docker-compose
command:$ docker-compose -f ./docker-compose.service-users.yml up --build
service-users
could also be run locally, via npm run dev
, alongside the infrastructure
compose-file. This would make service-kong
(inside infrastructure
) reach out to the local development instance of service-users
and allow for easy development on individual services.In order to make a local service available inside docker, the
devproxy
is being required. The devproxy
automatically runs inside the infrastructure
, exposes port 2222
on the host and provides a way to forward local development ports into the docker environment. In order to forward the local service-users
port into the docker environment, an SSH port forward is required:$ ssh -o "UserKnownHostsFile /dev/null" -o "StrictHostKeyChecking=no" -p 2222 -R 3000:127.0.0.1:3000 root@127.0.0.1
root
. This forwards the local port 3000
into the devproxy
, so that service-kong
could reach service-users
through devproxy:3000
. In order to do so, the locally running service-users
needs to have the SERVICE_USERS_URL
environment variable set to http://devproxy:3000
, as it uses this variable to set up the kong upstream for service-users
.
No comments:
Post a Comment