Hexlode turns image processing into reusable visual recipes. Connect operations on a node canvas, run images through the workflow, compare the results, and save the recipe for later.
The project is in early development. The application foundation is configured; the first real browser-local processing pipeline is the next milestone.
Files -> Inspect -> Resize -> WebP -> Compare -> Download
The first release will accept JPEG and PNG files, process them in a Web Worker, produce WebP output, show before-and-after details, and download the result without requiring an account.
- Process on the user's device by default.
- Keep the core workflow available without an account.
- Make the canvas represent real computation, progress, and errors.
- Never send image bytes, filenames, thumbnails, or metadata to analytics.
- Use cloud processing only after an explicit user choice.
- Keep one application and add infrastructure only when a real need appears.
Requirements: Node.js 24, pnpm 11, and PostgreSQL.
git clone [email protected]:pixelactstudio/hexlode.git
cd hexlode
nvm use
pnpm install
cp .env.example .env.local
createdb hexlode
pnpm db:push
pnpm devBefore starting the application, update DATABASE_URL in .env.local for your local PostgreSQL
user and replace the Better Auth placeholder. Generate a secret with:
pnpm dlx @better-auth/cli secretGoogle sign-in uses GOOGLE_CLIENT_ID and GOOGLE_CLIENT_SECRET. For local development, configure
Google's authorized redirect URI as http://localhost:3000/api/auth/callback/google.
A standard PostgreSQL URL uses postgresql://user:password@localhost:5432/hexlode. Linux systems
using PostgreSQL peer authentication can instead use the local socket URL
postgresql://github.com/hexlode?host=/run/postgresql, which needs no username or password in the URL.
The development server runs at http://localhost:3000. PostHog and Sentry remain disabled when their keys are empty.
| Command | Purpose |
|---|---|
pnpm dev |
Start the local development server. |
pnpm build |
Create a production build. |
pnpm preview |
Preview the production build. |
pnpm start |
Run the built Nitro Node server. |
pnpm validate |
Run Biome checks, TypeScript, and a production build. |
pnpm format |
Format the repository with Biome. |
pnpm lint |
Run Biome lint rules. |
pnpm lint:fix |
Fix safe Biome lint violations. |
pnpm typecheck |
Check TypeScript without emitting files. |
pnpm db:generate |
Generate Drizzle migrations from the schema. |
pnpm db:migrate |
Apply generated database migrations. |
pnpm db:push |
Push the current schema to a development database. |
pnpm db:studio |
Open Drizzle Studio. |
Hexlode is a single TanStack Start application organized as feature-first vertical slices. Routes compose features; processing and workflow logic remain plain TypeScript outside React components. Shared packages, an SDK, a CLI, and cloud infrastructure are intentionally deferred until a real second consumer or measured workload requires them.
- TanStack Start, React 19, TypeScript, and Vite
- React Flow, Astryx, and Tailwind CSS
- PostgreSQL and Drizzle ORM
- Better Auth, PostHog, and Sentry
- Biome, Husky, lint-staged, and Commitlint
pnpm install configures Husky. Staged files are checked with Biome, and commit messages must use
Conventional Commits:
feat: add image input validation
fix: release worker buffers after cancellation
chore: update dependencies
Hexlode is open-source software licensed under the Apache License 2.0.
An open-source project by Pixelact Studio.