juanjo cuts the cloud cord so Mike runs on your own hardware

Mike no longer needs a third-party account to log a single user in - the whole stack now stands up on infrastructure you control.

infrastructuresecurity

juanjo has pulled out Supabase - the hosted service that previously handled both Mike's database and its sign-in - and replaced it with pieces that run locally: a self-hosted database, an open-source login system, and a storage layer that mimics Amazon's S3 so files live on your own box during development. The upshot is that the project starts from a cold machine with one command and no external sign-ups.

This is a from-scratch rebuild of the signup and login path, not a swap of one vendor for another. juanjo also flags the work that's deliberately left for later - notably some production security hardening around session cookies - so anyone reading the code knows exactly what's done and what still needs doing before going live.

So what Worth a look for any firm or legal-ops team that can't put client data on someone else's cloud and wants Mike running entirely on infrastructure it owns.

View this fork on GitHub →

Spotted something wrong? Or know the PR text has fresher detail than the writeup above?

Commits in this thread

7 commits from juanjo/mike, oldest first. Source extracted verbatim from the harvested git log.

SHA Subject Author Date
20ea4b25 feat(frontend): wire Auth.js + Drizzle (signup, login, session provider) Juan Vidal 2026-05-08 ↗ GitHub
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1ab63b75 fix(frontend): align signup min-length with server (6→8) Juan Vidal 2026-05-08 ↗ GitHub
2d8ee13b fix(signup): max-length cap + unique-race backstop + wire org/name to profile Juan Vidal 2026-05-08 ↗ GitHub
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
7baab523 feat: cookie-based auth bridge between Auth.js and Express Juan Vidal 2026-05-08 ↗ GitHub
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
9e99b3ac chore(backend): document salt hard-coding in auth middleware Juan Vidal 2026-05-08 ↗ GitHub
c7d112e2 feat(backend): migrate user-profile route to Drizzle (vertical slice) Juan Vidal 2026-05-08 ↗ GitHub
Adds GET /user/me; ports POST /user/profile and DELETE /user/account from
supabase-js to Drizzle. Cookie-based requireAuth still gates all three.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
d2a95f5f docs(serena): update memories for local-Postgres + Auth.js stack (Plan 1) Juan Vidal 2026-05-08 ↗ GitHub

Capture this thread into my fork

Download a single Markdown prompt that tells Claude how to port every commit above into your working tree — adapting paths and structure to match your repo. Run it via claude -p < capture-thread-181.md from inside the repo you want the changes in.

⬇ Download capture-thread-181.md