A web application for encrypting and decrypting text files.
Built with React and powered by Vite for fast development and optimized builds.
Includes a lightweight Express backend for encryption/decryption APIs.
- React 19 — UI
- Vite 7 — dev server & bundler
- Express 5 — backend API server
- Vitest 3 + Testing Library — unit/component tests
- Vitest + Supertest — backend API tests
- WebdriverIO 9 (DevTools) + Mocha — smoke tests
- ESLint + Prettier — linting & formatting
- GitHub Actions — CI for smoke + server tests
- Node 24, pnpm 10 — runtime & package manager
This repo pins tool versions via asdf in .tool-versions:
nodejs 24.7.0
pnpm 10.16.0If you use asdf, simply run:
asdf install- Node.js
>=24 <25 - pnpm
>=10 <11
Install dependencies:
pnpm installStart the dev server (default: http://localhost:5173):
pnpm devStart the backend server (default: http://localhost:3000):
pnpm dev:serverBuild for production:
pnpm buildPreview the production build locally (default: http://localhost:4173):
pnpm preview- Location:
src/**/*.test.{js,jsx}or undersrc/**/tests/ - JSDOM environment with
@testing-library/jest-dommatchers.
Run once in CI mode:
pnpm test:unit- Location:
server/**/*.test.js - Runs the Express server in-memory for integration tests.
Run once in CI mode:
pnpm test:serverRun in watch mode:
pnpm test:server:watch- Specs live under:
test/specs/ - Page Objects under:
test/page-objects/ - Config at:
test/wdio.conf.js
The WDIO config auto-picks a baseUrl:
http://localhost:4173if apnpm previewserver is already up, elsehttp://localhost:5173for the dev server.
You can also override via env:
WDIO_BASEURL=http://localhost:4173 pnpm test:smokeTypical local flows:
# 1) Run against the dev server (in another terminal)
pnpm dev
pnpm dev:server
pnpm test:smoke
# 2) Run against a preview server
pnpm build
pnpm preview &
pnpm dev:server &
pnpm test:smoke