Giter VIP home page Giter VIP logo

web-client's Introduction

Cryptee Logo 2021

 


 

Hello there 👋

If you've found your way here, that means you're serious about your security and privacy! ~ or maybe just want to copy paste some code. Either way, you're welcome awesome human. Thanks for checking out Cryptee's source code.

First, let's get a few things out of the way.

 

Security & Issues

If you find any critical security issues, please reach out to us using security @ crypt [dot] ee.

Otherwise, feel free to throw in your bug reports and issues here on github! The issues section is meme & emoji friendly. Please use fun GIFs. It will cheer everyone up. We have been through a pandemic ffs, we can all use a good laughter. So issues/bug-reports/feature suggestions with relevant & fun memes and gifs will win some free storage on the house.

Needless to say, this doesn't mean Cryptee isn't a serious product or company, it just means you can relax, smile and take things easy. We're all humans.

humans

 


 

Thoughts on frameworks

Chances are some of you will look at this source code and think "WTF JQUERY!? CODEKIT!?" or "Y U NO ANGULAR!? WHY NOT REACT? NO GRUNT!?". That's okay. Take a deep breath, calm down.

When you are a small company, living frugal to ship as quickly yet as reliably as possible, when your livelihood depends on how quickly you can ship new features, and building a product that is used by thousands and thousands of others every day to gain some level of security / privacy online, one thing becomes clear:

You don't want to depend on ever-changing massive frameworks, backwards compatibility issues, or fucking creepy licenses.

So yeah Cryptee uses Codekit and JQuery syntax. ~~zepto ... if we're being specific, and it's tiny, around ~9kb, to make coding easier~~.

(Did you feel that? All of Silicon Valley just shuddered in disgust.)

 


 

Why is Cryptee's backend code not open-source?

  1. The main reason why Cryptee, and most other privacy-first companies are hesitant about open sourcing their backend is because it risks exposing the tightly integrated abuse-prevention systems. Opening our backend code could quickly lead to all sorts of sign-up abuse, which isn't sustainable for a small company / startup like Cryptee. (financially or technically)

  2. There really isn't a trust benefit to open sourcing any backend code. Because:

    2a) It isn't possible to verify the code that is actually running on the backend.

    2b) This is also the reason why all the encryption happens on the front-end. So that you don't have to trust black-box servers running unverifiable code. Once you read the front-end source code, you can verify that your data never leaves your device unencrypted.

  3. Every now and then we get requests to open source our backend code so that some users can run it on their own servers. Cryptee is a project built for everyone to have a secure home for their files. And the largest majority of the internet users aren't tech-savvy, they can't (and shouldn't have to) set up their own servers, and perhaps don't even know the meaning of the word "backend" (and shouldn't have to). But they need a secure and private place for their files and digital belongings. Spending time towards open sourcing our backend and doing so in a way that it can work on any given server is a massive undertaking, and with the very limited resources Cryptee has at the moment, this is an unsustainable approach for business, growth and development.

web-client's People

Contributors

johnozbay 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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

web-client's Issues

Support secondary method of installation, without PWAs

Hey! So right now Cryptee can only be installed on desktops if you use Chrome, or light-modified Chromium variants. Popular browsers such as Firefox and Vivaldi (heavily modified chromium-base browser) do not support PWAs as of yet. I look forward to their implementation and I definitely think PWAs are the way to go, but for right now there should be another way to access Cryptee aside from using the web version, or installing Chrome(-ium) to install Cryptee.

Question: Image storage

Sorry to use the issue tracker for questions about crypt.ee :(
I wanted to create a PWA podcast application and was wondering how you handle image storage on the local device. As far as I know it's limited by the browser and there is currently no good way to actually store large files within a PWA app.

For my case that would be mp3 files.

[Feature] Custom fonts

Hey there!

I just noticed that you can only choose the standard font classes that you configured in your own browser (sans, sans-serif and monospace). Would it be possible to allow custom fonts to be used?

I guess a simple enumeration + selection would be enough. There could be a fallback behaviour to just go with the standard fonts if the selected one isn't available on the system I am currently logged in and working on,

The reason is because I would love to use FiraCode for some parts of the document. It's probably a huge request though...

Dark mode

We need a dark mode! Currently the Dark Reader extension i use gives a great experience but it's not 100% perfect so it'd be cool to have a native dark mode

Uploading multiple photos hangs

Using Windows 10, firefox v67, latest version of cryptee.

I created an album and tried uploading a handful of pictures to it, and the upload process would constantly hang in various spots. It did not seem to be any file corruption problem, because I could reload cryptee and upload the hung files individually and then they would upload successfully. The console didn't display any errors or helpful messages other than not to do anything with the console :)

If I can get you more information somehow, let me know!

cryptee upload error

[Feature] Sort folder contents by type

Currently, within folders, all items are sorted equally - alphabetically or by time, regardless of item type. This creates confusion when there are many different items in a folder. I think it would be useful if the items within a folder were basically ordered by type: i.e. first folders, then files, then pages:

Subfolder a
Subfolder b
Subfolder c
File a
File b
File c
Page a
Page b
Page c

What do you think?

[Bug] Tab key problem in justified text mode

Hi John,

Me again. When the text is left aligned, the tab key does what it should, but when text is justified, the tab key doesn't react no matter how many times you press it, but if you switch to left aligned again, all the times you pressed tab key appear. Just check the gif. Also, after you have pressed the tab key, when you switch to justify, it pushes text forward again, hiding the space you have created by the tab key.
This behavior is similar both in firefox and chromium.

crypt

[Feature] Breadcrumb navigation for Docs

At the moment when a page is open, you actually have no idea in which folder this page is located.
I think it would be very useful if a breadcrumb navigation was positioned above the editor bar.
The location would be convenient because for breadcrumb navigations mainly the width is important. The small loss of space by the height the bar is more than justified by the advantage of the useful feature, I would say.

What do you think?

[Feature] File/Folder Explorer for Docs

Heyo!

I found that the only way to upload files was to drag them into the document folders, and that tends to get very messy quickly. Not sure if this would be possible, but a File-only view could help remedy the messiness. (As in, not in a side menu, but an entire page dedicated to it).

Add Offline-First Mode to Cryptee Docs

I'm a new comer, and as i investigated with the web-client, one of the most annoying things is that it is supposed that every time the user has internet connection.
when you go offline, the directory structure disappears, and one should start by an empty space!
also, every note to be available offline, should be "toggled" one by one.
is there any good reason to not having a global "Offline" Mode, to work offline by default, and a "Sync" button to go live when needed?

Persist encryption key for longer?

Is there a way to persist the encryption key for longer? I have to re-enter it a lot at the moment. Doesn't make for the best experience. Great app though overall!

Auto-ghosted Folders

Is your feature request related to a problem? Please describe.

Needing to ghost folders by hand every time is problematic for plausible deniability, IMO.

The way I see it, if you're looking for plausible deniability, you're probably in a situation where you're not going to know if/when an adversary is going to force you to log into your account and show it to them. This means that you couldn't possibly predict when you'd need to ghost your folder(s). As a result, you need to remember to ghost your folder(s) every time you're done working with them. This is not ideal because:

  1. It's extra friction
  2. It might be a lot of work if you have numerous folders to ghost
  3. It requires you to remember to do it every time you're done
  4. It requires you to have the time and opportunity to do it every time

Why is the last one important? What happens if you're working on your document, and you get a 10-20 second warning before someone is attempting to force you to show them your account? With the right security settings, closing the window is enough to force you to re-enter your encryption key, which you would have time for, but you certainly wouldn't have time to ghost your folders.

Describe the solution you'd like

I would love to be able set folders to auto-ghost anytime there's an event that would force me to re-enter my encryption key. That would include things like:

  • signing out
  • timing out,
  • closing the window

Disclaimer: my understanding of the code and techniques being used here are somewhat rudimentary. I fully expect that it may not be as easy as just adding a flag and keeping them in an always-ghosted state on the server.

Here's my understanding of how ghosting works from reading, watching network tab, and looking at the code a bit (could be wrong):

Normally, your folders and their contents are encrypted with your key client-side, then pushed up to Firebase with an association to your user account. This allows you to pull the full list of folders tied to a user later.

When a folder is ghosted however, the folder name and contents are encrypted with the key and sent to Firebase with no association to the user. When the folder is summoned, you type the name of the folder, that folder name is encrypted with your key, which can then be used to uniquely identify and find the folder. The folder is returned to the client, which then turns around and sends the folder and its contents back to Firebase with the user association, effectively returning it to the state it was in before ghosting.

If I'm correct, I would think that it might be as simple as:

  1. Add a flag to the folder, something like autoGhost = true
  2. Do initial ghosting of the folder
  3. When summoning, never perform the final step of re-associating the folder to the user's account
  4. Remove all auto-ghost folders from the device when an event occurs that requires the user to input their encryption key again

Again, I may not be correct about how this is being done. If I'm not, please correct me as I'd love to know what's actually going on. Either way, this is an awesome project and I'd love to see auto-ghosted folders added!

Feature request: Support for Markdown tables

I would love to see support for Markdown tables that can be used inside notes. If you have a look at the markdown app "Caret" (caret.io), you can see a really nice way of how they could be implemented. Personally I love how it changes size of all rows and all that fancy extra stuff, but just being able to use tables would be awesome. :)

I tend to use them quite often in my notes.

Folder's offline-available option turns off after creating a new note

Not actually sure whether it is a bug or... a feature :)
As is:
Let say there is a folder with some notes inside, in folders's menu I tap "Docs Available Offline", menu closes and in a couple of seconds can see: (1) option is enabled in folder's menu, (2) blue dots on each note inside the folder. Then if I move some other note (not available offline) from outside of it to the inside or just create a new note inside the folder, this note does not become available offline and folder's "Docs Available Offline" option turnes off. Moving the note back outside (or deleting newly created note) turns it on.

Expected (...at least as I was expected):
Offline-enabled folder keeps all notes inside offline-enabled as far as they stay in that folder, so that
an online-available note (or new one) if moved into offline-enabled folder, becomes available offline. And vice versa - any note that was made offline-available by enabling folder's option turns online-available after moving outside of folder. But any note deliberately made offline-available by user (in note's menu) preserves that option if moved outside.

Cannot upload multiple images on Android

To Reproduce
Steps to reproduce the behavior:

  1. Install the PWA
  2. Go to photos, enter the encryption key and click on a created album
  3. Click the upload button to add new images
  4. The prompt shows File upload and allows me to click a new image from the camera, or upload from the default file manager.
  5. Select the files option, and try to select multiple images. It prevents selecting multiple images.

Expected behavior
A clear and concise description of what you expected to happen.

Screenshots
If applicable, add screenshots to help explain your problem.

Smartphone (please complete the following information):

  • Device: Google Pixel 2
  • OS: Android 10
  • Browser: Mozilla Firefox
  • Version 68.3

Additional context
Great app. I was trying to upload multiple images to an album, however, the PWA was only allowing uploading files one by one. On Firefox desktop however, this was not a problem as I was able to upload multiple images.

[Feature Request] Heading 3 button

Is your feature request related to a problem? Please describe.
In the keyboard shortcuts, there is a little hint reffering to the fact there is a "third heading" in terms of markdown syntax, however it does not exist within the formatting bar. Literally all other formatting has clickable icons.

Describe the solution you'd like
Simply put, a H3 button in the formatting bar.

Additional context
N/A

[Bug] Large Images Cannot Be Resized.

Heyo,
I've found images over a certain resolution (Over 1000x1000 as an example) are not able to be resized on the web without zooming out. On mobile, it's just plain impossible.

cryptee should work completely without google

If a service describes itself as "privacy focused", I would think it uses it's own secure infrastructure and certainly does not require something like a contact to a google server in order to log-in.

Unfortunately there is a connection to google necessary, if someone tries to use cryptee. It just makes no sense to me, how "privacy focused" and the biggest data collecting company in history go together. It would be nice if this service was offered completely without google.

As a sidenote "privacy focused" and being on github do not match either.

[Discussion] Encryption Key Reset

Description: Add encryption key reset capabilities (with optional opt-out)
How? So, I would propose utilizing the original password with some other known data similar to security questions. In theory you could automatically generate a new password based on this, within the browser (fully offline).

Some apps are already working on similar things like MasterPassword and LessPass.

I would assume other options are possible.

[Feature] Download Album Button

The posability to download a hole photo album from the overview with one click without needing to select all photos inside of it.

[Feature] Word count

I think its pretty simple put a word count somewhere, bonus points if it also shows the count of words you have currently selected with your cursor, kinda like google docs do.

I'd also suggest putting it somewhere in this menu:
Screenshot_2020-03-30_03-35-43

Username not showing up when logged in

I think this is system-wide, tested on Firefox v68 on Windows, OS X, Android, and Safari on OS X.

I use a personal email with Cryptee, and it flashes on the home screen for a moment then disappears when I'm logged in. Screenshot:
Screen Shot 2019-07-13 at 2 01 24 PM

[Design / Bug] Photos - Album created for the first time is not visible

When we use the Photo function for the first time, we are prompted to upload photos ("Let's get started").
After uploading by drag and drop, the thumbnails of the uploaded photos appear, but they are apparently not in any album.
If we create a new album by clicking "New Album" (only now we see that link!), photos will be uploaded to this album and we can give the album a name.
Still the first uploaded photos are apparently not in any album. In order to achieve this, we need to create a new album and move the first uploaded photos to this new album.

I don't think that this behavior is intended.

The problem could be solved if the function "Let's get started" would trigger the same action as "New Album".

new_photo_album_01
new_photo_album_02
new_photo_album_03
new_photo_album_04
new_photo_album_05
new_photo_album_06
new_photo_album_07

[Bug] Unable to export documents to pdf

Firefox isn't able to export documets to pdfs instead it opens print options.
To Reproduce
Steps to reproduce the behavior:

  1. Go to 'Documents Ations'
  2. Click export
  3. Select pdf
  4. Printer menu is now open

Expected behavior

  1. Go to 'Documents Ations'
  2. Click export
  3. Select pdf
  4. Pdf export menu is open

Here's what happens in chrome:
gifout

Screenshots
gifout

System Information:

  • Device: Desktop PC, Phone [Sony F8331]
  • OS: elementaryOS 5.1, Windows 10 and Android 6.0
  • Browser: Windows [Firefox], ElementaryOS [Firefox, Epiphany (webkit-based)] and Chrome on Android
  • Browser Version: Windows [Firefox 74] ElementaryOS [Firefox 74, Epiphany 3.28.6], Android [Chrome 80]
  • Browser Extensions / Add-ons / Content Blockers: ElementaryOS Firefox[Enchanced Tracking Protection, uBlock Origin, Privacy Badger, HTTPS Everywhere, Decentraleyes, Multi-Account Containers (only use it for Facebook, Google, Reddit, Twitter)]; ElementaryOS Epiphany [none]; Windows [Enchanced Tracking Protection only]; Android [none],
  • Do you have any DNS-based content blockers? No
  • Are you on a managed network? No

Additional context
Doesn't happen on the same computer (ElementaryOS) with Chromium (v80.0.3987.87).

I think it's a problem with Firefox and Android. It may be posible to contact Mozilla and Google, although, I'm not sure this is entirely Firefoxs fault. As with Android I think it needs testing on newer devices, maybe it is fixed. Although, again, I'm not sure it's only Androids fault.

Support for better syntax highlighter in code blocks (Docs)

In my opinion the syntax highlighting of the code blocks are not too sophisticated, and in many cases not syntactically correct either. I'm wondering if it would be possible to integrate a syntax highlighter eg. highlight.js. I feet it would seriously improve the usefulness of the service.

If you agree it is a reasonable feature to have, but you don't have capacity to address the issue if you give me some pointers how I could contribute I might find bandwidth to implement.

Thanks a lot for this otherwise amazing product!

[Bug] Improvements for images in documents

  1. It would be useful if we could select, copy, cut and paste images in documents - just like text, both via context menu and standard shortcuts.

  2. An image embedded in a document has handles that can be used to change the visual size of the image. The maximum size is limited by the width of the document. However, there is no limit to the minimum size of an image, which means that you can use the handles to reduce an image so that it disappears completely. Since this makes no sense, I suggest setting a default limit for the minimum size of an image. Because of the fixed radius of the round corners of images, a size below 100 pixels width makes little sense anyway, so this could be the limit.

[Feature] Enable 2FA/MFA for login

In order to protect access to my account I would like to have the ability to enable multi factor authentication options on my account such as totp and webauthn. Is this already on your roadmap ?

[Feature] [docs] A4 doc representation

Is your feature request related to a problem? Please describe.
I'm using Cryptee doc to write letters. However, as cryptee does not display the document as a "A4 paper", I don't know if the content of my letter is filling one or two pages.
I have to export the document in PDF to know how many A4 paper my letter is filling, which is not convenient.

Describe the solution you'd like
Something like Google doc, i.e. displaying an A4 representation of the document.

can't sign in on iOS

Describe the bug
A clear and concise description of what the bug is.
try to sign in on ios platform after having installed the app as described on the website but it tells me that there is an error when I try to sign in.

Expected behavior
A clear and concise description of what you expected to happen.
should be able to signe in and have the screen with the encryption key
Screenshots
If applicable, add screenshots to help explain your problem.

Smartphone (please complete the following information):

  • Device: [e.g. iPhone6] iphone 11 and iphone XR
  • OS: [e.g. iOS8.1] iOS 13.3.1
  • Browser [e.g. stock browser, safari] safari and app installed

No longer able to access large notes.

I have some large notes (from around 100kb to 1mb), I was able to load them before the big update, but now they just crash my browser. Tried on Linux/Firefox/latest and Linux/Chromium/latest.

No server code

There is no server for cryptee, i'm sad, the project is realy interesting but I can't run it on my personal machine

[Feature] Node-based graph / visual search for Docs

Hello everyone,

First of all Thanks for this awesome PWA :D

I'm using Cryptee for store all my notes and guides and i have a little "issue."

The search is very limited if you have alot of documents and you need to search one espicific thing.

I thing that one method to inprove the search is making a Graph with the notes that have relation and the same tags.

If you want to test the idea I think that ROAM reserch APP have this issue solved very well.

image

If you thing that is not necessary for your workflow, how organize you the files?

PD: Sorry for my english and thanks for all.

BR

INFO LINKS:
roamresearch.co

https://www.nateliason.com/blog/roam

[Request] Open-source Backend

Feature: It appears that only Cryptee's front end is open source.
Please consider opening up the back-end as well. This would greatly improve transparency.

[Bug] Issues with Justified Text

When in justify mode, the space between the words disappears once you start typing. This problem is unique to justify mode only. Please check the short gif to reproduce.
Thank you for this excellent service.

crypt

Add Google-less Sign-up

It seems that the only way to sign up in web-client is through googleapis.
as google can block users (an is doing right now for some countries), is there any way/plan to go out of it's territory?

[Feature] [docs] default home page to reduce the time to load the page

Is your feature request related to a problem? Please describe.

I'm using cryptee on both my computer and my phone. However, I have some documents with extensive content (images, ...). In my computer, decrypting the document is fast, but my phone is not as performant as my computer, so the decryption can take a while (and can fail if the document is too large for my phone to handle).

Currently, cryptee docs loads the last opened document, so if I opened my "large" document in my computer, then later in the day, I open cryptee doc in my phone because I want to read another document, I have to wait the latest opened document to be loaded before I can find another document.

Describe the solution you'd like

Have a default home page on cryptee doc instead of loading the latest opened doc.
The default home page will be as lightweight as possible and will not decrypt any document content to reduce the time to load the page.

or

Always open the "Home document" by default (can be configured in the account settings).

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.