Credyman is a personal vault for passwords, login details, and notes. Organize saved items into groups and categories, search your entries, and generate passwords when adding an item.
Your browser encrypts vault contents before sending them to the server. Sign in with an account password or a passkey. For extra protection, enable Account Secret and unlock with both your password and a separate secret. The security guide explains encryption, recovery, and their limits.
Requirements: Git, Docker, and a modern browser. Start Docker before setup. The first start needs internet access. Compose and Buildx are supplied through an official Docker tools container when the host plugins are missing or too old.
On Linux or macOS, run:
git clone https://github.com/sofyanox12/credyman.git
cd credyman
./credyman startOn Windows, run these commands inside WSL2 with Docker integration enabled. Keep the checkout in the Linux filesystem, such as ~/credyman.
The launcher creates private environment files, prepares images, starts PostgreSQL, applies migrations, and waits for the API and web app to become healthy. The launcher builds the checkout automatically. The first source build can take several minutes.
Open the printed URL, usually http://localhost:3000. Register an account and save the recovery kit to finish setup. New vaults start with Personal, Work, and Family categories, which you can rename or delete.
Use these commands from the checkout:
./credyman stop
./credyman start
./credyman restart
./credyman status
./credyman logsstop shuts down and removes all project containers and networks, including the test database if it is running. Saved data, configuration, and cached images remain available for the next start. logs follows output until you press Ctrl+C. Docker itself and other projects stay running.
To delete all Credyman accounts, items, database volumes, and local environment files:
./credyman reset --confirm credyman-resetThen run ./credyman start to begin again. The reset keeps source files and cached images. ./scripts/setup.sh and ./scripts/stop.sh are aliases for start and stop.
Startup failures keep saved configuration and data. Prerequisite errors explain what to fix; application startup errors point to status and logs. Compose's readiness wait is limited to 180 seconds; image preparation and dependency startup can take longer. See deployment for hosting with HTTPS and backups.
Requirements: Node.js 22.12+ (containers use Node.js 24), pnpm 10.26.2, Docker Compose, and a modern browser. Local development uses localhost; production requires HTTPS.
If the Docker app is running, stop its API and web services before using hot reload on the same ports: ./credyman stop.
corepack enable
corepack prepare pnpm@10.26.2 --activate
pnpm install --frozen-lockfile
pnpm env:init
pnpm prepare:app
docker compose up -d --wait db
pnpm db:migrate
pnpm devOpen APP_ORIGIN from .env, usually http://localhost:3000.
pnpm env:init adds missing settings and generates separate application and test database passwords. It preserves saved values and restricts .env and .env.test to the file owner (0600). See configuration.
For daily development, start the database and run pnpm dev. It builds both shared packages and generates the Prisma client before starting the shared-package, API, and Nuxt watchers. Restart pnpm dev after schema changes to regenerate the client; apply database migrations separately with pnpm db:migrate. See local reset to rebuild a local database.
Credyman uses NestJS for the API, Nuxt 3 for the web app, and PostgreSQL 18 with Prisma 7 for storage.
| Area | Responsibility |
|---|---|
| contracts | Shared data definitions and request validation |
| crypto | Key derivation, encryption, and key changes |
| API | Sign-in, sessions, access control, and database operations |
| web | Vault unlocking, item management, and the interface |
| scripts | Environment setup and local database reset |
pnpm format:check
pnpm lint
pnpm typecheck
pnpm test
pnpm buildIntegration tests modify the separate database in .env.test. Enable them with ZK_TEST_DATABASE=1:
docker compose --profile test up -d --wait db-test
pnpm db:test:migrate
pnpm test:integrationFor browser tests, keep the app running at APP_ORIGIN, then run:
pnpm exec playwright install chromium
pnpm test:browserBrowser tests create application data. See dependency checks for security review and unused-code checks.
For launcher changes, also run sh tests/tooling/setup.test.sh and sh -n credyman scripts/*.sh.
- API: endpoints, requests, and responses.
- Configuration: environment variables and setup.
- Deployment: hosting, database resets, and backups.
- Security: sign-in, encryption, recovery, and limitations.
- Item workspace: saved items, groups, categories, and Trash.
- Error handling: how the API reports failures.
- Service icons: logo selection and attribution.