This page is intended to give new contributors an overview of Passit.
Passit is comprised of several Git repos, stored in our GitLab group. You can find more specific and complete documentation in each project, but here is a summary of the key repositories that make Passit work:
- passit-backend - Python/Django - This provides an API and basic storage services for user data. The backend does no crypto, except in unit tests. It does provide basic group access control list features. Even if we didn’t encrypt user data, the backend would provide a traditional server that ensures users are only allowed to create, edit, and view what they should have access to.
- passit-frontend - TypeScript, Angular, and ngrx/store (Redux) - This project is our user interface. It powers our web and browser extensions. It also serves as the basis of our mobile app by reusing bits of code such as smart containers, reducers, and actions.
- passit-sdk-js - TypeScript - This project abstracts the passit-backend API and crypto interaction. This is where Passit employs its end-to-end encryption strategy. It uses simple-asymmetric-js, a wrapper that lets us use libsodium.
- passit-mobile - NativeScript - This is our mobile app. It reuses code from passit-frontend. Think of it as providing “dumb components” that render native elements instead of HTML. It also features native-specific extensions not found on the Web.
We also have a diagram of our basic security model.
If you have a bug or feature request to report - you may report it gitlab project where the issue is found. If the issue involves multiple parts or you don’t know where it belongs - you may report it to the Passit meta repo.
Making a good bug report
Include steps to reproduce the issue, what you expected to happen, and what happened instead.
Making a good merge request
Passit has pretty good test coverage. When you make a change or fix a bug, you should add or modify a unit test to show how your change works. For example if you fixed a bug - the unit test should fail before your patch and pass after it.
What if I’m not a programmer?
If you want to work on Passit but nothing above sounds interesting or accessible to you, that’s okay! There are ways you could get involved:
Auditing/penetration testing is really great for us; the more we get, the more secure and reputable we will be.
We’d be interested in help with regards to UX design in particular. If you have a good sense of what makes a web app work well and you’re good at expressing those ideas through wireframing, we’d be interested in your help.
If you would like to be a public advocate for Passit, get in touch with us and we’ll see what we can work out.
If you’d like to help us test future releases, all you’d need is the ability to access the Internet and a willingness to meticulously work through a spreadsheet.