Giter VIP home page Giter VIP logo

paperparrot's Introduction

Paperparrot

Paperparrot is and will be available for Apple Devices (iPhone, iPad and Mac) only.
Get Paperparrot on the App Store
There is also a Discord now to discuss the app: Join here

What is this app?

Paperparrot originated as a client for the awesome Paperless-ng(x), a document management system that you can host on your own infrastructure like a NAS, homeserver or a server you rent in the cloud. During early development, I have realized that setting up and maintaining a server is prohibitively complicated and requires quite a big time investment. Thus, I have put more and more time and effort into making the app work offline, completely without a server.

At this point, almost the full functionality of Paperless-ng(x) is available locally, without the need for a server. Setup is as simple as downloading the app and adding documents. Still, all documents and custom attributes are available on all of your devices via iCloud.

Of course, the integration with a Paperless-ng(x) server is still a major part of the app. Users can simply enter the credentials to their servers and be ready to go, it even offers functionality some of the other client apps don't have, like spotlight integration, keeping documents available offline or support for saved views. For a deeper dive into available features, read #Features below.

Why the name?

Even though I do plan on making the source code publicly available at a later point, Paperparrot is not and will never be free software or open source. Despite being fully compatible to Paperless-ng(x), I want to clearly separate Paperparrot from Paperless in both name and branding as both provide similar but distinct features, in parts target a different audience and follow different development philosophies.

What does it do?

Let me start off by telling you what it doesn't do:
Paperparrot is not a backup solution. While I put great care into keeping Paperparrot reliable and safe, it does not replace keeping a separate backup of your important files.

Now that we got that out of the way, what does Paperparrot do?

Paperparrot makes the handling and organization of both physical (paper) and digital documents easier. It does this by offering a selection of custom attributes, like tags, document types or correspondents, you can apply to your documents. Documents can be searched and sorted by any of these attributes. When adding a document to Paperparrot, it's content is scanned and analyzed (locally, on your device) and attributes are assigned automatically based on your preferences. Once you have everything set up, the workflow for adding a document can be as simple as pressing the button and scanning the document. There's an example in the wiki if you would like one.

What if I have an issue with Paperparrot?

Please create a bug report at issues. Follow the guidelines for creating an issue and provide as much information as possible without revealing any personal data. Please check if a bug has already been reported before creating a new issue.

It would be nice if Paperparrot could...

I collect feature requests and ideas for improvement in the discussion section of the repository. You can create feature requests and vote on other ideas here. Please check if a similar feature has been requested before and vote on that instead of creating a duplicate.

What exactly is a...

Generally, there are no rules for what attributes to apply how. If you need some inspiration, this is how the attributes where designed to be used:

  • Correspondent: The person or institution that is either recipient or issuer of a document.

  • Document Type: The document type describes what kind of document it's applied to. This could be something like "Paycheck", "Certificate"...

  • Tag: A tag can contain all kinds of information, a single tag can be assigned to many documents and a single document can have many tags. You can use tags to store all the important information that doesn't fit the correspondent or document type attributes.

  • Created At: The date a document was originally issued at.

  • ASN: The archive serial number (short: ASN) is a unique identifier for the document. This can help you to make sorting and archival of physical documents easier.

paperparrot's People

Contributors

leoklaus avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

paperparrot's Issues

Use the default files app for local storage of documents

Edit: I feel like this isn't necessary. Move to feature idea and definitely make this optional, for security reasons alone. Using the sharing api from within the app is easier to implement and makes interaction more consistent with how other apps work on iOS.

Original:
Paperless documents should appear in the native files app by default.

Implement add document view

Should have the option to select a document from files app (potentially other sources like alternative file managers or even remote servers?) <- This is not mandatory. Uploading through the share extension (#12 ) would be enough at first.

Fields for tags, date, correspondent,..

Implement Paperless share extension

When sharing a document from another app (like files or a messenger), Paperless should be available as a target.

Sharing to Paperless should open directly to the add document screen to quickly add documents to Paperless.

Expand Document View

Implement View for multi-page documents.

Implement fields for tags, correspondent, date,..

Implement Edit button

Implement Download button

Support handoff

Allow users to switch between devices using handoff. IMO, this is a very small improvement.

Rewrite ApiHandler

Don’t create copy of all documents in memory on initial load (this is ridiculous!) Best way to do this is probably removing the return entirely and converting Document to CD_Document on the fly.

Specify API version

Check compatibility with self signed certificates

Check if the app can accept self signed certificates (on iOS, self signed certificates can be added through Settings->General->VPN & Device Management or by accessing the website once and accepting the certificate).

ISO8601DateFormatter can't handle the time format the api returns

The Paperless API returns date/time in the format "2022-04-20T10:57:26.413878+02:00" (which is conform to ISO8601).
The built in ISO8601-Formatter of Swift still returns nil when called with these values.
Calling it without the decimals places (i.e. "2022-04-20T10:57:26+02:00") yields correct results.

Investigate!

See CDTestView:72

Add support for multiple instances

Allow users to connect the app to multiple server instances. Each instance should have its own core data database, login information and settings.

Implement settings view

Implement a settings view with both client and (if applicable) server side configuration.

Items for local settings should include:

  • Log out of app (basically resets entire app, deleting local data)
  • Delete local data
  • Change instance (keep local data, just change server and login information)
  • Offline mode toggle

Store settings in userdefaults

Stage uploads when device is offline

Allow users to queue uploads while the device is offline.
This only applies when the app is connected to a server, thus it's low priority for now.

Offline Mode/Local Database

Implement some sort of offline caching for documents.

Options to enable/disable, set max cache size, cache only previews/full documents.

Documents are loaded in the wrong order

On first load, documents are stored by age in ascending order (newest documents first). When updating, new documents are (obviously) added last.
This leads to new documents being last.

Implement search view

Implement a search view.

MVP should be a search bar with a button, later add option for tags, correspondents,..

https rewrite for API response

The paperless api uses http for links instead of https. The documents api for example would return
"http://paperless.example.com/..." as value for key "next", even if the API is accessed through "https://paperless.example.com/..."

This can be handled in two ways:

  • Enable insecure connections for the entire app (I would prefer not to do this). This would allow all configurations to work, but will use plain text connections for some requests, potentially leaking credentials. It could be combined with HTTPS rewrites if HTTPS is used on initial configuration to make use of HTTPS when available. This configuration is very likely to leak data due to errors in the code. Apple may also enforce HTTPS for all connections in the future.

  • Do a manual rewrite from http to https for api responses (how it currently works). This requires the instance to be configured to use HTTPS and provide a valid certificate, which may prevent some configurations from working (i.e. only locally accessible through http, remote connection via VPN). See LeoKlaus/Paperless-App#5

Home screen widgets

Add widget support to Paperparrot. Widgets could show:

  • Documents in a user-defined saved view
  • All documents in inbox
  • Number of documents for tag/document type/correspondent (gimmick)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.