Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

39 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DevFlare

Developer tools, reimagined. A suite of browser-first developer utilities — no uploads, no accounts, no server round-trips.

CI Deploy License: MIT Angular AnalogJS Cloudflare Workers

Live app · Volt UI · Agent docs · Deployment

DevFlare dashboard — navbar with Deployment and DevTools sections, contextual sidebar, and the tool grid DevFlare dashboard — navbar with Deployment and DevTools sections, contextual sidebar, and the tool grid

What this is

DevFlare is a developer-tools platform where every tool runs entirely in your browser. Image compression, QR generation, background removal and colour extraction never leave the tab — there is no upload step and no processing server to trust.

Around those tools sits a small platform layer: authentication, projects and deployments, backed by a standalone auth microservice. The whole thing runs on Cloudflare Workers.

Tools

All client-side. Open one and it works offline after first load.

Tool What it does
Image Compressor Optimize PNG, JPEG and WEBP locally with Web Workers
QR Code Studio Customizable QR codes for URLs, text and Wi-Fi networks
SVG Optimizer Minify and clean up SVG markup
SEO Simulator Preview how pages appear on Google, Twitter and Facebook
Data Converter Convert between JSON and CSV
Screen Recorder Record your screen from the browser, no plugins
Social Card Designer Generate Open Graph images for social posts
Cinematic Palette Extract dominant colours and build palettes
Background Remover AI background removal, fully client-side
URL Shortener Short links with custom aliases

QR Code Studio: live preview, styling controls and PNG export, with the DevTools sidebar listing every tool

Architecture

Browser ──► devflare (Analog/Nitro Worker)
              │  /api/auth/*  ── proxy ──────────► dev-auth (Hono Worker)
              │  /api/v1/*    ── h3 handlers ───► D1  devflare-db
              │
              └─ session: server calls dev-auth /get-session with the request cookies

dev-auth ──► D1  dev-auth-db-prod   (users, sessions — Drizzle schema)
         ──► KV                     (rate limiting)

Two databases on purpose: auth data lives in the auth service, app data lives in the app. They share nothing but a userId string.

Environment App Auth
Production devflare.andersseen.dev auth-devflare.andersseen.dev
Local localhost:4200 localhost:8787

Tech stack

Layer Technology
Meta-framework AnalogJS 2.4 (Vite + Nitro, SSR)
UI Angular 21 — standalone, zoneless, signals
Components Volt UI (@voltui/components)
Styling Tailwind CSS 4
Monorepo Nx 22 + pnpm
Auth better-auth on Hono
Data Cloudflare D1 via db0
Hosting Cloudflare Workers + Static Assets
Testing Vitest + Playwright
Monitoring Sentry

Quick start

Requirements: Node.js 22+, pnpm 9+.

pnpm install
cp .env.sample .env       # fill in your values
pnpm db:migrate:local     # set up the local D1 databases
pnpm dev:all              # app on :4200, auth on :8787
pnpm seed:user            # in another terminal

Open http://localhost:4200 and sign in with test@devflare.com / TestPass123.

Local data lives in wrangler's miniflare state under apps/*/.wrangler/ — both databases are real D1, just running locally, so there is no separate dev database engine to keep in sync.

Other ways to start the dev servers
./scripts/dev-macos.sh    # macOS: separate Terminal windows
pnpm dev:auth             # just the auth service  → :8787
pnpm dev:app              # just the app           → :4200
Hitting the auth service directly
curl -X POST http://localhost:8787/api/auth/sign-in/email \
  -H "Content-Type: application/json" \
  -H "Origin: http://localhost:8787" \
  -d '{"email":"test@devflare.com","password":"TestPass123"}' \
  -c cookies.txt

curl http://localhost:8787/api/auth/get-session -b cookies.txt

Scripts

Everything runs from the repo root — the Cloudflare scripts wrap wrangler --cwd, so there is never a cd.

Script Description
pnpm dev:all App + auth service together
pnpm check format → lint → typecheck → test → build
pnpm db:migrate:local Apply D1 migrations locally
pnpm db:migrate Apply D1 migrations to production
pnpm deploy:dry Build and validate both Workers, ship nothing
pnpm deploy:all Deploy auth, then app
pnpm cf:tail:app Live production logs
pnpm cf:app <args> Escape hatch → wrangler --cwd apps/devflare

Run pnpm check before opening a PR — CI runs exactly that, plus E2E.

Repository layout

devflare/
├── apps/
│   ├── devflare/           # Analog app + Nitro server routes → Cloudflare Worker
│   │   ├── src/app/
│   │   │   ├── pages/      # Route components (*.page.ts, default export)
│   │   │   └── components/ # Shell: navbar, sidebar, shell-navigation, tool-grid
│   │   ├── src/server/     # h3 API routes, D1 access, migrations
│   │   └── wrangler.toml
│   ├── dev-auth/           # Auth microservice: Hono + better-auth + D1
│   │   ├── src/pages/      # Auth UI, compiled from .flow templates
│   │   └── wrangler.toml
│   └── devflare-e2e/       # Playwright E2E
├── libs/shared/
│   ├── core/               # @org/core — all business logic lives here
│   ├── auth/               # @org/auth — auth client + guards
│   └── ui/                 # @org/ui
└── docs/ai/                # Architecture, conventions, workflows, state

Conventions

  • Standalone Angular only — no NgModules. Pages use export default class.
  • Signals over RxJS for component state; inject() over constructor injection.
  • Business logic lives in @org/core — page components stay thin.
  • Tools run in the browser. A tool never gets a server route.
  • Server routes use h3 defineEventHandler, with db.sql tagged templates — never string-concatenated SQL.

Full detail in AGENTS.md and docs/ai/CONVENTIONS.md.

Deployment

Push to main deploys both Workers via GitHub Actions. Manual:

pnpm deploy:dry     # validate first
pnpm deploy:all

Full setup — resources, secrets, domains, verification — in DEPLOY.md.

Contributing

Issues and PRs welcome. Branch from main as feature/*, use feat: / fix: commit prefixes, and make sure pnpm check passes.

License

MIT © andersseen

About

Browser-first developer tools — image compression, QR codes, background removal, palettes and more, all running client-side. Angular 21 + AnalogJS on Cloudflare Workers.

Topics

Resources

Contributing

Stars

Watchers

Forks

Contributors

Languages