Skip to content

Latest commit

Β 

History

2,047 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Umamin

An open-source platform for anonymous communication. πŸ”

actions releases stars

Overview

This monorepo hosts two open-source apps for anonymous communication:

  • Umamin β€” www.umamin.link β€” the main social platform: a profile-based inbox for sending and receiving encrypted anonymous messages. Built with TanStack Start and Hono on Cloudflare Workers, with Drizzle ORM and Turso/libSQL.
  • Umamin Chat β€” chat.umamin.link β€” ephemeral, anonymous 1:1 chat: get matched with a stranger who shares your interests. No sign-up, no history, nothing saved. Built with Vite, React, and Convex.

Contributing

If you like this project, please consider giving it a star! ✨ If you wish to suggest or work on a new feature, please open an issue to discuss with the community and the project maintainers. We appreciate your interest and look forward to collaborating with you! Please review our Code of Conduct before contributing.

Monorepo Structure

Apps

App Description
apps/web Umamin β€” anonymous messaging platform & landing page (TanStack Start + Hono, Cloudflare Workers)
apps/chat Umamin Chat β€” ephemeral, anonymous stranger chat (Vite + React + Convex)

apps/web is the app that serves www.umamin.link. It replaced the original Next.js build in v7.0.0, which has since been removed β€” see the legacy/www-final tag for its final state.

Packages

Package Description
@umamin/db Database schema & migrations using Drizzle ORM + Turso/libSQL
@umamin/encryption AES-GCM encryption/decryption utilities (uses AES_256_GCM_KEY)
@umamin/ui Shared UI components and styling (used by every app)

Prerequisites

  • Turso CLI β€” local libSQL server for web
  • Node.js >= 24 or nvm
  • pnpm >= 10

Umamin (web) runs on Cloudflare Workers via wrangler, which is already a dev dependency β€” no global install and no Cloudflare account are needed for local development. Workers KV and the rate-limit bindings are emulated locally by Miniflare.

Umamin Chat uses Convex as its backend. pnpm dev:chat starts a local Convex deployment automatically (no account or extra install needed), and the chat falls back to an in-memory mock when VITE_CONVEX_URL is unset β€” so you can work on its UI without a backend.

Install Dependencies

If you're using nvm, you can easily switch to the required Node.js version.

$ nvm use 24 # ignore if you're already on Node.js >= 24
$ pnpm install

Environment Variables

apps/web splits configuration on one axis: public config is committed, one file per environment; secrets are never in a .env.* file.

  • apps/web/.env.development / .env.staging / .env.production β€” public VITE_* values, in git. Vite embeds them in the browser bundle, so none is a secret, and Workers Builds builds from a clean clone β€” the committed file is what the deploy ships.
  • apps/web/.dev.vars β€” Worker secrets for local dev, gitignored. Copy .dev.vars.example.
  • apps/web/.secrets.staging / .secrets.production β€” gitignored mirrors of what Cloudflare should hold. Push with pnpm --filter=web secrets:<env>.
# apps/web/.dev.vars β€” Worker-side (secret)
TURSO_CONNECTION_URL=http://127.0.0.1:8080
TURSO_AUTH_TOKEN= # can be empty for local
AES_256_GCM_KEY=REPLACE_WITH_BASE64_KEY

# Google OAuth (optional)
GOOGLE_CLIENT_ID=YOUR_CLIENT_ID
GOOGLE_CLIENT_SECRET=YOUR_CLIENT_SECRET
GOOGLE_REDIRECT_URI=http://localhost:5173/auth/google/callback
# packages/db/.env (for the drizzle-kit CLI)
TURSO_CONNECTION_URL=http://127.0.0.1:8080
TURSO_AUTH_TOKEN= # can be empty for local

Non-secret Worker vars and the KV / rate-limit / cron bindings live in apps/web/wrangler.jsonc, split per environment. Full map, including the build-only source-map credentials and how to audit what a deploy holds: apps/web/ENVIRONMENT.md.

Code of Conduct

We are committed to fostering a welcoming, respectful community. Please read and follow our Code of Conduct when participating in this project.

Security

If you believe you have found a security vulnerability in Umamin, please do not open a public issue on this repository. Opening a public issue could expose sensitive information before it's addressed. Please read our Security Policy for details on how to report a vulnerability.

License

Umamin is licensed under GPL-3.0.

About

πŸ” The platform for encrypted anonymous messages.

Topics

Resources

Code of conduct

Security policy

Stars

92 stars

Watchers

4 watching

Forks

Releases

Used by

Contributors

Languages