Umamin
🔏 The platform for encrypted anonymous messages.
Install / Use
/learn @omsimos/UmaminREADME
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 Setup
| Core Packages | Description |
| -------------------- | ---------------------------------------------------------------- |
| www | Umamin Q&A & landing page (Next.js) |
| @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 |
Prerequisites
Install Dependencies
If you're using nvm, you can easily switch to the required Node.js version.
$ nvm use 20 # ignore if you're already on Node.js >= 20
$ pnpm install
Environment Variables
# apps/www/.env
# Database (used via @umamin/db)
TURSO_CONNECTION_URL=http://127.0.0.1:8080
TURSO_AUTH_TOKEN= # can be empty for local
# Encryption
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:3000/auth/google/callback
# packages/db/.env (for drizzle-kit CLI)
TURSO_CONNECTION_URL=http://127.0.0.1:8080
TURSO_AUTH_TOKEN= # can be empty for local
Generate an AES-256-GCM key using the helper script:
$ pnpm aes:generate
# copy the printed key into AES_256_GCM_KEY
If you need to use Google OAuth, you must set up your own OAuth client. Setting up OAuth 2.0 →
Development Server
Run the development servers with Turborepo:
$ pnpm dev # runs app(s) and local db dev (if configured)
Run a specific app only:
$ pnpm dev --filter=www
Setup Database
Start a local libSQL server and run migrations.
# optional: start local libSQL (turso dev) alongside type-checker
$ pnpm --filter=@umamin/db dev
# generate migrations from schema changes
$ pnpm db:generate
# apply migrations
$ pnpm db:migrate
# open drizzle studio
$ pnpm db:studio
# optional: reset & seed the database with demo data
$ pnpm db:seed
# seeded test account
# username: testuser
# password: 12345
Running Build
After making changes, build the project (runs lint and type checks via tasks).
$ pnpm build # build all
# or
$ pnpm build --filter=www
Once ready, you can submit a pull request for review.
Contributor List
<a href="https://github.com/omsimos/umamin/graphs/contributors"> <img src="https://contrib.rocks/image?repo=omsimos/umamin" /> </a>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.
Related Skills
node-connect
335.2kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
82.5kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
Writing Hookify Rules
82.5kThis skill should be used when the user asks to "create a hookify rule", "write a hook rule", "configure hookify", "add a hookify rule", or needs guidance on hookify rule syntax and patterns.
openai-whisper-api
335.2kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
