Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"cSpell.words": ["jeeldobariya", "passcodes", "somepoint"]
}
78 changes: 42 additions & 36 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,18 @@
# Passcodes

[![Android CI/CD](https://github.com/JeelDobariya38/Passcodes/actions/workflows/build-apks.yml/badge.svg)](https://github.com/JeelDobariya38/Passcodes/actions/workflows/build-apks.yml)

A android app that take down the headace of remember passwords. It is open source solutions that help you in keep your passwords safe and secure in your own local storage without ever need to push them to cloud.
A android app that take down the headache of remembering passwords. It is open source solutions that help you in keeping your passwords safe and secure, in your own local storage without ever needing to push them to cloud.

> [!WARNING]
> It is just a open source project. An is current under active development.
> Please, consider using it for fun and not for real password managment. (untill, we offically release a stable release)
> Please, consider using it for fun, and not for real password managment. (untill, we offically release a stable release)

## ScreenShots

<img style="width: 40%; height: 100%; padding-right: 10px" src="https://github.com/user-attachments/assets/b6407ba3-be7f-4a5b-9e17-8e201ecf2ff3" />
<img style="width: 40%; height: 100%; padding-right: 10px" src="https://github.com/user-attachments/assets/930c18aa-7e38-4a56-a8e4-f5f1d2ee6e38" />
<img style="width: 40%; height: 100%; padding-right: 10px" src="https://github.com/user-attachments/assets/135f29cb-97ed-4cc3-acd6-4a606e9d8844" />
<img style="width: 40%; height: 100%; padding-right: 10px" src="https://github.com/user-attachments/assets/0c84450e-608d-4845-8771-2adba562e48d" />

## Compatibility

Expand All @@ -16,41 +22,41 @@ A android app that take down the headace of remember passwords. It is open sourc
Android 8+ (Minimum) [API level 26+]
Android 14 [API level 34] (we support offically)

Note: high version can still run but are not guaranteed offically.
Note: high version can still run, but are not guaranteed offically.
```

> What we think of passcodes?
> Password management is one such thing that is as simple as remember a password yet, it very important topic in term of security. So, we as developer of passcode think to streamline and securing the process as much as possible. [Read more](docs/project-overview.md)
> Password management is one such thing that is as simple as remember a password yet, it very important topic in term of security. So, we as developer of passcodes think to streamline and securing the process as much as possible. [Read more](docs/project-overview.md)

## Features

- [x] Intuitive UI.
- [ ] Update Checkers & Manager.
- [x] Password Management. (Current Priority)
- [ ] Secure File. (Least Priority, Because it include permission. Which, I am as developer not familar with 😂)
- Could be Image. (JPG. PNG ....)
- Could be Vidoe.
- Could any Binary File. (more like won't be a text file)
- [ ] Other Secret Info Management.
- Could be note. (txt file)
- Could be any info that can encode as key & value.
```json
{
"key": "SECRET API KEY",
"content": "qwerty-let-say"
"createdat": "...",
"updatedat": "..."
}
```
- [ ] NON Secret Info Store
- [ ] Encryption and Decryption.
- [ ] Backup Manager.
- [ ] Import/Export Passwords.
- [ ] Extensivity with custom database.
- [ ] Multiple Language Translation.
- [ ] Theme & Customization.
- [ ] Key Manager.
- [ ] Multi Platform Support. (KMP)
- [x] Intuitive UI.
- [ ] Update Checkers & Manager.
- [x] Password Management. (Current Priority)
- [ ] Secure File. (Least Priority, Because it include permission. Which, I am as developer not familar with 😂)
- Could be Image. (JPG. PNG ....)
- Could be Vidoe.
- Could any Binary File. (more like won't be a text file)
- [ ] Other Secret Info Management.
- Could be note. (txt file)
- Could be any info that can encode as key & value.
```json
{
"key": "SECRET API KEY",
"content": "qwerty-let-say"
"createdat": "...",
"updatedat": "..."
}
```
- [ ] NON Secret Info Store
- [ ] Encryption and Decryption.
- [ ] Backup Manager.
- [ ] Import/Export Passwords.
- [ ] Extensivity with custom database.
- [ ] Multiple Language Translation.
- [ ] Theme & Customization.
- [ ] Key Manager.
- [ ] Multi Platform Support. (KMP)

## Installation Steps

Expand All @@ -76,12 +82,12 @@ It was general, intuitive, short and sweet description, For more detailed descri

## Support Docs

you can checkout support docs provided in [docs/](docs/) Or You can even seek help on our [telegram community](https://t.me/passwordmanagercommunity)
You can checkout support docs, provided in [docs/](docs/) Or You can even seek help on our [telegram community](https://t.me/passwordmanagercommunity)

## Contribution Are Appicated!!!
## Contribution Are Appreciated!!!

By, contribuating to project you accept the [CONTRIBUTING.md](CONTRIBUTING.md) & [MIT License](LICENSE.txt).
By, contributing to project you accept the [CONTRIBUTING.md](CONTRIBUTING.md) & [MIT License](LICENSE.txt).

## Licence

Passcodes Project is licence under [MIT](LICENSE.txt) Licence. Downloading the app would mean, you are ok and have accepted the license.
Passcodes Project is license under [MIT](LICENSE.txt) License. Downloading the app would mean, you are okay and have accepted the license.
27 changes: 14 additions & 13 deletions docs/building.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
> [!warning]
> The script `installondevice.bat` itself is deprecated by developers,
> But, it still may works!! We will provide a new solution, more likely a `powershell` more robust script soon.
> Which directly integrate with morden windows 11. and has more feature.. though this script will remain as it.
> Which directly integrate with modern windows 11. and has more features.. though this script will remains as it.

Here, you will get the details about how to build the app (in recommended way).

Expand Down Expand Up @@ -52,7 +52,7 @@ OS: Windows 11 10.0 amd64

## Preparing For A Build.

Here, are the things you required, first you will need a `keystore.properties` & `passcodes.jks` in project root. So, that the script can be able to sign the apk file when generated. second thing you might need is a mobile device with usb debugging enable, connect to your machine, because script install the app dirctly using `adb`.
Here, are the things you required, first you will need a `keystore.properties` & `passcodes.jks` in project root. So, that the script can be able to sign the apk file when generated. Second thing you might need is a mobile device with USB debugging enable, connected to your machine, because script install the app directly using `adb`.

### Template For keystore.properties

Expand All @@ -68,18 +68,19 @@ storePassword=
## Deprecated: Finial Run Script For Building

> [!warning]
> the script `installondevice.bat` itself is deprecated by developers,
> but it still may works!!
> The script `installondevice.bat` itself is deprecated by developers,
> But it still may works!!

You can build the app for production and dev version.

you can build the app for production and dev version.
- Development Builds

- Development Builds
```powershell
./installondevice.bat
```

```bat
installondevice.bat
```
- Production Builds

- Production Builds
```
installondevice.bat prod
```
```powershell
./installondevice.bat prod
```
4 changes: 2 additions & 2 deletions docs/database-design-guide.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

In this file, You will find the general structure & format in which app stores users data. Also you will you will find different schema of database.

> Some feature are not supported in sqlite3 and some might be specfic to some database. but as a developer we will try our best to abstract away database concept (from frontend) as much as possible by seperating database functainality in a seperate module. and frontend will just call as simple as method like savePassword() or loadPassword() or something along that lines... to communicate with database...
> Some feature are not supported in sqlite3 and some might be specific to some database. but as a developer we will try our best to abstract away database concept (from frontend) as much as possible by separating database functionality in a separate module. and frontend will just call as simple as method like savePassword() or loadPassword() or something along that lines... to communicate with database...

> [!NOTE]
> Database schema versioning system is completely separate from the app versioning system.
Expand All @@ -13,7 +13,7 @@ In this file, You will find the general structure & format in which app stores u

**Database**: Sqlite3(`master.db`)

It is a database where user info is stored. It schema changes often between the app versions, based on changes in feature requirements. Here, in this section you will find all the version of database schema & will also find info about how we adopated to the new schema.
It is a database where user info is stored. It schema changes often between the app versions, based on changes in feature requirements. Here, in this section you will find all the version of database schema & will also find info about how we adopted to the new schema.

### Current Database Design (v1)

Expand Down
92 changes: 92 additions & 0 deletions docs/project_overiew.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
# Passcodes Project

An app that take down your headache of remembering password and auth related sensitive information in your head.. It is a secure and robust solution that not only, let you store password in a local storage. but also make the experience, much more fun and initiative..

## Outline

- [Problem Statement](#problem-statement)
- [Goals](#goals)
- [Target Users](#target-users)
- [Priority](#priority)

## Problem Statement

In modern days, data is important, especially data that has concern with auth information.. and store them securely is a serious task (and much of headache). Passcodes try to eliminate this headache. by provide you a simple, sweet and initiative ui that help you store your password in local storage. (and to extend also in cloud). `which means, you have full control of data you share with passcodes app`.

## Goals

- To make password management process much more intuitive, enjoying, customizable & secure. By give you full (or utter more) control over your auth data. (that is shared or stored in passcodes app).
- To simplify password management, yet give extensive control to end users.
- To serve as guide, reference & extensible tool, for all people (nerds) who are interested in making there password management workflow, much more safe, secure and customizable.

## Target Users

1. `Not So Developer, Not So Normal-End-User` First:

Which means,

- For those, who wish to optimize, there password management workflow.. but don;t how to...
- For those, who are willing to spend time learning a tool (specifically for password management) & for those how are willing to uncover (disambiguate) abstraction that app uses to make the experience of storing passwords with passcode much more simpler...
- For those, who are willing to gain control of there auth data, without that extra headache of remember data that comes with it...
- For those, who don't mind researching and squirm through our documentation for hrs, just for once in a while, to customize & optimize their password management workflow...

2. `Software Engineer` is our second target users:

Which means,

- the source code of the app, will much more likely to be clean, maintainable and extensible...
- developers can make the app, in way they need... we will also have documentation that one can follow & learn from, about how to extend passcodes app...

3. `End Users` are the least target of application:

Which means,

- that the app will made in such way, in which we will try to abstract away the complex concepts in different extensible/decoupled systems... such that end users will more like feel that they are using a simple. but, secure password managing app...
- if you fall in this category of target users, then it more like that you will either not use the app to it full potential, or more like you will became password management nerd, as app is full optimized to promote customization and optimization of your password management workflow...
- Also, it more like a way to start using/integrating passcodes app into your daily password management workflow... but if wanna continue, then we recommend you, to try learn about your specific password management workflow and make yourself prompted from just normal end user to a more, better group (as in `Not So Developer, Not So Normal-End-User` group).. which will make you, the first target of app... which also mean that you will likely use app more effectively and will (at somepoint) end up optimizing your password management workflow, to make it more secure and customized to your specific needs...

---

## Priority

### `Customization & Extensibility is our top most priority, While simplicity is just not!!`:

Which means app will be fully (or to it most) be extensible & customizable, without limited by any abstraction and simplification of app. We as developer will try to make the internals of app more abstract and decoupled and thus, customizable. meanwhile doing we might loss simplicity.. and the UI/UX might look more complex then need...

Simplicity is not priority of the passcodes app. but abstracting concepts from users (as much as possible) surely is...

## `Security is our second most priority, While performance is just not!!`

Which clearly mean that app might have a ten different redundant, in software checks for data and user input. to ensure a robust operation.. This check might add performance overhead.. but as performance is not our priority, we might ignore this performance overhead, as we focus more on security, robustness and extensibility.

Also, performance is not even a thing, we consider optimizing for, while making passcodes app. and it's done for better or for worse. as passcodes app is not use daily. and also we believe, that security concerns associated wih password management app is more important then any performance issue ever arise can, and sure in modern work we have high speed computer and three different redundant check won;t hurt. but an app crash or data corruption might, As the data app deals with is highly sensitive, consider end user might end up save all there account form different platform at one place.... And sure a user can wait for 2 or 3 minutes if app is not responding and doing some redundant checks just ensure data is valid...

But that sure doesn't mean we will not focus on performance... if it became a serious issue we will try our best to solve the performance issues... but it just that, we might end up wait until something goes seriously go wrong with performance!! (e.g. app take time, to process a simple single store password action.. for straight 1 minute...)

## Motivation

We have pretty good and decent motivation that drive us forward, there are many previous project that back passcodes app... that were made piously by me(jeeldobariya38) and fellow contributor...

### Kupass

Github REPO: [Kupass](https://github.com/kudanilll/kupass).

#### Overview

It a simple much more intuitive password management solution.. develop by fellow contributor, daniel (@kudanill). It is one of recommended solution if you want to have easy to use app.. and don't need complexity and customization that passcodes offer you. as it simple ant intuitive.. it very much more secure as it all in your local storage...

#### Why Quit?

Daniel, the official owner of project, has stop provide further update as his priority change... there was no real design issue with project... it just that project was more made for eduaitional purpose and prototyping, hobby kind of purpose.

### Smart Manager

Github REPO: [Smart Manager](https://github.com/JeelDobariya38/Smart-Manager)

#### Overview

It was my first project in world of password manager and also in world of software engineering... it mostly a project, where i have made a lots of design mistakes... and try to make the code scalable and extensible and try implementing various stuff, that just don't fit together.. it perfect example, of use everything someone say is a community standard, without ever questioning why am i using it or wether is it worth adding to project.... it like if someone said use dependency injection make code better... then let just use it in our project....

#### Why Quit?

The project suffer from major design issue that, I realized very later, in project timeline. it happens to reach to the point where the code was literally just mess and it just don;t have core features... so i thing to dump the app, and idea as whole... never really thought that i might come back to same idea a year after and use it to build a app in android...
7 changes: 4 additions & 3 deletions docs/release-workflow.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,9 @@ In this file, you will find documented process about, how we release, new versio
5. Draft a new release with all apk files uploaded (signed apks).

6. Discuss on community and check & test release app on various parameters and
- We run unit tests.
- We run android tests.
- And ofcourse, we internally as developers also test it (manually).

- We run unit tests.
- We run android tests.
- And ofcourse, we internally as developers also test it (manually).

7. Then release it.
12 changes: 6 additions & 6 deletions docs/security_guide.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Security Guide

Here, In this file, You can find the information about security concern that arise with saveing your password with passcodes app.
Here, In this file, You can find the information about security concern that arise with saving your password with passcodes app.

> [!warning]
> Firstly, The passcodes is open source project and is currently under active development. So, one is soley responsible for share there information with passcodes application.
Expand All @@ -11,15 +11,15 @@ We as developers, recommended you to wait, for its stable release. before full t

While, save your password with passcodes application. you should consider or should have knowledge of following things.

- Project is license under MIT License. which means that application is given `as it is, without any warranty or guarantee` and is openly/freely available to redistribution or modify. (but you need to have a copy of original license in it)
- With passcodes, your password are as safe as you write it down on pieces of paper or in a txt file digitally. which means that, `your information is not specially protected.`
- Project is license under MIT License. which means that application is given `as it is, without any warranty or guarantee` and is openly/freely available to redistribution or modify. (but you need to have a copy of original license in it)
- With passcodes, your password are as safe as you write it down on pieces of paper or in a txt file digitally. which means that, `your information is not specially protected.`

## Recommendation

Here, are the thing we recommend.

- lock passcodes app, using your phone's settings app. it will make it hard for attackers to see your passwords.
- lock passcodes app, using your phone's settings app. it will make it hard for attackers to see your passwords.

- if you lock the app, then use a different password, then the one you have on your lock screen. it make it even more safe.
- if you lock the app, then use a different password, then the one you have on your lock screen. it make it even more safe.

- also, if you don't use the app often, itrecommended, to hide the app using your phone settings. (it is bit inconvenient but at the end of day it pays off as safety)
- also, if you don't use the app often, itrecommended, to hide the app using your phone settings. (it is bit inconvenient but at the end of day it pays off as safety)