Skip to content

An interactive web app for secure messaging: choose an encryption algorithm, encrypt messages, and get an encrypted string with a QR code. Scan the QR code to decrypt or use the website directly

License

Notifications You must be signed in to change notification settings

Skizzy-create/my-encryption-app

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

68 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

My Encryption App

TypeScript Node.js Express Mongoose Frontend

Overview

My Encryption App is a web application designed to provide users with a secure and user-friendly way to encrypt and decrypt messages. Users can select an encryption algorithm, enter a message, and receive an encrypted string. The app also offers the ability to generate a QR code containing the encrypted data and the algorithm used, which can be decrypted by scanning through the website.

Features

  • User Authentication: Secure login and registration with JWT-based authentication.
  • Message Encryption: Choose from various algorithms to encrypt messages.
  • QR Code Generation: Generate a QR code with encrypted data and algorithm details.
  • Message Decryption: Decrypt messages using the selected algorithm or by scanning the QR code.
  • File Encryption (Upcoming in v1.1): Encrypt and decrypt files securely.

Getting Started

Backend

The backend of this application is built using Node.js, Express, and Mongoose, and is written in TypeScript. It handles user authentication, encryption/decryption logic, and database interactions.

How to Run the Backend

  1. Navigate to the Backend Directory:
    cd backend
  2. Compile TypeScript:
    tsc -b
  3. Run the Server:
    cd dist
    node server.js

For detailed technical documentation on the backend, visit the Backend Documentation.

Frontend

The frontend is built with Vue.js and is responsible for the user interface, including the input forms, displaying encrypted messages, and scanning QR codes.

How to Run the Frontend

  1. Navigate to the Frontend Directory:
    cd frontend
  2. Start the Development Server:
    npm run dev

For detailed technical documentation on the frontend, visit the Frontend Documentation.

CODE FLOW

%%{init: {
  'theme': 'dark',
  'themeVariables': {
    'fontFamily': 'monospace',
    'primaryColor': '#fff',
    'primaryTextColor': '#fff',
    'primaryBorderColor': '#fff',
    'lineColor': '#fff',
    'secondaryColor': '#252525',
    'tertiaryColor': '#252525'
  }
}}%%

graph TD
    A[Frontend] --> B[Home Page]
    B --> C{User Action}
    
    %% Authentication Flow
    C -->|Get Started| D[Login/Signup Window]
    D -->|Skip| E[Continue as Guest]
    D -->|Login| F[Authentication]
    D -->|Signup| G[Registration]
    
    F -->|Validate| H[User Schema Validator]
    G -->|Validate| H
    H -->|Valid| I[Backend Auth Service]
    I -->|Hash Password| J[Password Service]
    I -->|Generate Token| K[JWT Service]
    I -->|Store User| L[(MongoDB)]
    
    %% Main Application Flow
    E --> M[Main Interface]
    K --> M
    
    M -->|Encrypt Message| N[Encryption Route]
    M -->|Decrypt Message| O[Decryption Route]
    M -->|Generate QR| P[QR Code Route]
    
    %% Message Processing
    N --> Q[Message Schema Validator]
    O --> Q
    P --> Q
    
    Q -->|Valid| R[Encryption Service]
    Q -->|Valid| S[Decryption Service]
    Q -->|Valid| T[QR Code Service]
    
    %% Database Operations
    R --> U[Store Encrypted Message]
    S --> V[Store Decrypted Message]
    T --> W[Store QR Code]
    
    U --> L
    V --> L
    W --> L
    
    %% User History
    M -->|View History| X[History Route]
    X --> Y[Extract User ID]
    Y --> Z[Fetch User History]
    Z --> L
Loading

Project Structure

my-encryption-app/
│
├── backend/
│   ├── dist/
│   ├── src/
│   ├── package.json
│   ├── tsconfig.json
│   └── README.md
│
├── frontend/
│   ├── src/
│   ├── public/
│   ├── package.json
│   ├── tsconfig.json
│   └── README.md
│
├── .gitignore
└── README.md (this file)

License

This project is licensed under the Skizzy License.

About

An interactive web app for secure messaging: choose an encryption algorithm, encrypt messages, and get an encrypted string with a QR code. Scan the QR code to decrypt or use the website directly

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published