
Research
/Security News
Miasma Mini Shai-Hulud Hits ImmobiliareLabs npm Packages
Miasma Mini Shai-Hulud hits @immobiliarelabs Backstage plugins, targeting GitLab and LDAP auth packages on npm.
@shaneholloman/vark
Advanced tools
Real-time markdown editor with voice transcription and URL-encoded content storage
varkReal-time markdown editor with voice transcription and URL-encoded content storage ➜ check it out

bun add @shaneholloman/vark
Or with npm:
npm install @shaneholloman/vark
This project uses bun for package management.
bun install
bun run dev # Start development server
bun run build # Build for production
bun run preview # Preview production build
bun run test # Run tests in watch mode
bun run test:run # Run tests once
Vark works locally for development and testing, but it's best deployed as a public web application. Since the content is stored entirely in the URL hash, there's no backend required - just static file hosting.
GitHub Pages is an easy and free way to deploy Vark. Fork the repository, enable GitHub Pages, and you'll have your own instance running in minutes.
If you encounter a blank white page when deploying to GitHub Pages, ensure your Pages source is configured correctly:
gh-pages branch and / (root) folderAlternatively, use the GitHub CLI:
gh api --method PUT repos/username/repo-name/pages --input - <<< '{"source":{"branch":"gh-pages","path":"/"}}'
This ensures GitHub Pages serves the built files from the gh-pages branch (where the deployment workflow publishes them) rather than the source files from the main branch.
This project uses Vitest with React Testing Library for a fast, modern testing experience.
Important: This test suite is NOT for validating that code works correctly. It serves as guardrails to prevent regressions when modifying existing features or adding new ones. The tests ensure that critical functionality like compression, storage, and provider interfaces don't break during refactoring or updates.
src/
├── components/
│ ├── editor.tsx # Main markdown editor with URL storage, live preview, and virtual keyboard handling
│ ├── recorder.tsx # Voice recording component with multi-provider transcription support
│ ├── icon.tsx # SVG app icon (file-volume symbol)
│ └── ui/ # UI components (Base UI)
│ ├── input.tsx # Form input component
│ ├── label.tsx # Form label component
│ └── select.tsx # Dropdown selection component
├── providers/ # Speech-to-text provider abstraction layer
│ ├── index.ts # Provider factory and registry system
│ ├── types.ts # Common interfaces for transcription providers
│ ├── openai.ts # OpenAI Whisper provider implementation
│ └── google.ts # Google Speech-to-Text provider implementation
├── shared/ # Cross-platform utilities and core logic
│ ├── compression.ts # URL-based content storage with gzip compression
│ ├── storage.ts # Universal storage layer (browser localStorage + planned CLI file storage)
│ └── types.ts # Shared TypeScript definitions
├── lib/ # Utility libraries
│ └── utils.ts # Tailwind CSS class merging utility
├── test/ # Test suite
│ ├── setup.ts # Minimal test setup
│ ├── compression.test.ts # Real compression tests using Node.js zlib
│ ├── providers.test.ts # Provider factory and interface tests
│ ├── storage.test.ts # Storage logic tests
│ └── utils.test.ts # Utility function tests
├── main.tsx # React application entry point
├── index.css # Tailwind CSS directives and base styles
├── style.css # Custom CSS overrides for markdown editor
└── vite-env.d.ts # TypeScript definitions for Vite environment
FAQs
Real-time markdown editor with voice transcription and URL-encoded content storage
We found that @shaneholloman/vark demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Research
/Security News
Miasma Mini Shai-Hulud hits @immobiliarelabs Backstage plugins, targeting GitLab and LDAP auth packages on npm.

Security News
Rolldown paused Rust React Compiler integration after a 5MB binary size increase raised concerns about shipping React-specific code to all Vite users.

Security News
/Research
Mini Shai-Hulud expands into the Go ecosystem after hitting LeoPlatform npm packages and targeting GitHub Actions workflows.