GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - rapnuss/cipher-notes: A local-first note-taking app with end-to-end encryption for your private thoughts and data.

BranchesTags
Open more actions menu

Latest commit

 

History

462 Commits
462 Commits

Folders and files

NameName
Last commit message
Last commit date
.vscode
.vscode
 
 
backend
backend
 
 
dockerimage
dockerimage
 
 
fastlane/metadata/android/en-US
fastlane/metadata/android/en-US
 
 
frontend
frontend
 
 
twa
twa
 
 
.gitignore
.gitignore
 
 
.prettierrc
.prettierrc
 
 
LICENSE
LICENSE
 
 
README.md
README.md
 
 
codebook.toml
codebook.toml
 
 
docker-compose.yml
docker-compose.yml
 
 

Repository files navigation

ciphernotes

The project is live on https://ciphernotes.com

F-Droid Version: https://f-droid.org/en/packages/com.ciphernotes.twa/

Disclaimer

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.

Self-hosting

You can self-host the project using Docker Compose. See the dockerimage/README.md for more details.

Development Setup

Prerequisites

  • nvm (node version manager)
  • Docker (for development database)
  • Bun (for backend)
  • Yarn (for frontend)
  • mkcert (for generating development certificates)

Local s3 setup

docker compose up minio-setup

Database Setup

  1. Start the PostgreSQL database:
    docker-compose up -d postgres
    This will start the PostgreSQL database on port 5432.

Backend Setup

  1. Navigate to the backend directory:
    cd backend
  2. Copy the environment file:
    cp .env.example .env
  3. Install dependencies:
    bun install
  4. generate jwt key
openssl genpkey -algorithm RSA -out jwt-private.pem -pkeyopt rsa_keygen_bits:2048
openssl rsa -pubout -in jwt-private.pem -out ../frontend/jwt-public.pub
  1. Initialize the database schema:
    bun db:migrate    # Apply schema changes
  2. Start the backend:
    bun dev

SSL Certificate Setup

  1. 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
  2. Install local CA:

    mkcert -install
  3. Navigate to the frontend directory:

    cd frontend
  4. 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

Frontend Setup

  1. Navigate to the frontend directory (if not already there):
    cd frontend
  2. Install node
    nvm install
    nvm use
  3. Install dependencies:
    yarn install
  4. Start the frontend development server:
    yarn dev

Development URLs

  • Frontend: https://localhost:5173
  • Backend API: http://localhost:5100
  • PostgreSQL: localhost:5432
  • MinIO: localhost:9000
  • MinIO Console: localhost:9001

Tech Stack

  • Frontend: React + TypeScript + Vite
  • Backend: Bun + TypeScript
  • Server: express-zod-api
  • Database: PostgreSQL 16
  • ORM: Drizzle

Mobile Device Access

  1. Find your computer's local IP address:
    ipconfig # Windows
    ifconfig | grep 'inet ' | grep -v 127.0.0.1 # macOS/Linux
  2. Generate new certificates including your IP:
    mkcert -key-file key.pem -cert-file cert.pem localhost 127.0.0.1 ::1 <your-ip>
  3. Start the frontend:
    yarn dev
  4. Find and install the root CA certificate on your mobile device:
    mkcert -CAROOT
    This shows the folder containing rootCA.pem
  5. Access https://<your-ip>:5173 on your mobile device

Android App (used to be a TWA)

Generate keystore

~\.bubblewrap\jdk\jdk-17.0.11+9\bin\keytool.exe -genkeypair -alias com.ciphernotes.twa -keyalg RSA \
 -keysize 2048 -validity 10000 -keystore android.keystore

Generate SHA256 fingerprint

~\.bubblewrap\jdk\jdk-17.0.11+9\bin\keytool.exe -printcert -jarfile ".\app-release-signed.apk"

Bundle the frontend into the App

From the frontend/ directory you can run yarn build:twa to compile the web app and copy the generated assets into twa/app/src/main/assets/www.

Licensing

The source in this repository (frontend, backend, infrastructure, and Android App) is released under the terms of the AGPL-3.0-only license; see LICENSE for the full text. Third-party components remain under their respective licenses. Review individual package documentation for complete notices when redistributing.

About

A local-first note-taking app with end-to-end encryption for your private thoughts and data.

ciphernotes.com

Topics

encrypted-noteslocal-first

Resources

Readme
AGPL-3.0 license
Activity

Stars

12 stars

Watchers

1 watching

Forks

3 forks
Report repository

Releases

Packages

Used by

Contributors

Languages

You are visitor 01402520 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.