The project is live on https://ciphernotes.com
The notes are encrypted before being sent to the server, but the encryption key is stored in the browser's local storage. This way no password is needed to access the notes and they key can easily be shared between devices. You can share the key via a QR code directly from app to app.
- nvm (node version manager)
- Docker (for development database)
- Bun (for backend)
- Yarn (for frontend)
- mkcert (for generating development certificates)
- Start the PostgreSQL database:
This will start the PostgreSQL database on port 5432.
docker-compose up -d postgres
- Initialize the database schema:
cd backend bun db:migrate # Apply schema changes
- Navigate to the backend directory:
cd backend - Copy the environment file:
cp .env.example .env
- Install dependencies:
bun install
- Start the backend:
bun dev
-
Install mkcert (if not already installed):
- Windows (with chocolatey):
choco install mkcert - macOS (with homebrew):
brew install mkcert - Linux: Check your package manager or visit https://github.com/FiloSottile/mkcert
- Windows (with chocolatey):
-
Install local CA:
mkcert -install
-
Navigate to the frontend directory:
cd frontend -
Generate certificates for localhost:
mkcert -key-file key.pem -cert-file cert.pem localhost 127.0.0.1 ::1
This will create two files:
cert.pem: SSL certificate (trusted by your system)key.pem: Private key
- Navigate to the frontend directory (if not already there):
cd frontend - Install node
nvm install nvm use
- Install dependencies:
yarn install
- Start the frontend development server:
yarn dev
- Frontend: https://localhost:5173
- Backend API: http://localhost:5100
- PostgreSQL: localhost:5432
- Frontend: React + TypeScript + Vite
- Backend: Bun + TypeScript
- Server: express-zod-api
- Database: PostgreSQL 16
- ORM: Drizzle
- Find your computer's local IP address:
ipconfig # Windows ifconfig | grep 'inet ' | grep -v 127.0.0.1 # macOS/Linux
- Generate new certificates including your IP:
mkcert -key-file key.pem -cert-file cert.pem localhost 127.0.0.1 ::1 <your-ip>
- Start the frontend:
yarn dev
- Find and install the root CA certificate on your mobile device:
This shows the folder containing
mkcert -CAROOT
rootCA.pem - Access
https://<your-ip>:5173on your mobile device
~\.bubblewrap\jdk\jdk-17.0.11+9\bin\keytool.exe -genkeypair -alias com.ciphernotes.twa -keyalg RSA \
-keysize 2048 -validity 10000 -keystore android.keystore~\.bubblewrap\jdk\jdk-17.0.11+9\bin\keytool.exe -printcert -jarfile ".\app-release-signed.apk"