Files
dewemoji/community-plan.md
2026-02-12 00:52:40 +07:00

125 lines
3.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Dewemoji Community Plan (PrivateFirst → Public Consensus)
This plan matches the core purpose: **help people find emojis with their own words, in any language**, and let the community optionally promote keywords into global search.
## Core principles
- **Private first:** users can store any keyword for their own use.
- **Public by choice:** users can propose a keyword to the public pool.
- **Consensusbased:** public keywords only become searchable after votes.
- **Languagefriendly:** keywords can be in any language/script (not only Latin).
- **Safetyaware:** moderation applies only to public proposals (not private).
## Current language reality
- Today the dataset only includes **EN + ID** keywords for all emojis.
- Community should be designed to add **other languages** over time.
## Twolayer keyword model
### 1) Private keywords (personal)
- Stored per user (or device if not logged in).
- Any term is allowed, even if not “correct.”
- Used only for that users search + recall.
- No moderation needed.
- Created and managed in the **user dashboard** (not on emoji detail pages).
- Must be **used locally first** before being eligible for public proposal.
### 2) Public keywords (community)
- Users can propose **one of their own private keywords** to be public **from the dashboard**.
- Emoji detail pages only **display and vote** on public proposals; no direct proposal UI there.
- Once the proposal passes the threshold, it becomes globally searchable.
## Public keyword lifecycle
```
private → public_pending → public
```
Suggested rules:
- **public_pending** shown publicly with vote controls.
- **public** if it reaches **≥ 5 upvotes** (your rule).
- Optional future: autoreject with heavy downvotes or time decay.
## Voting model
- 1 vote per user per keyword.
- Score = upvotes downvotes.
- Promotion rule: **>= 5 upvotes** (simple and clear).
- Optional future: trustweighted votes.
## Moderation model
- Moderation applies only to **public proposals**.
- Private keywords are always allowed.
- Blocking rules:
- disallowed words
- mismatched emoji meaning
- language mismatch (optional)
## UX flow (simple)
1) User adds private keyword.
2) User uses it locally (personal search/recall).
3) User clicks “Make Public” from the dashboard.
4) Keyword appears on emoji detail page as pending.
4) Community votes.
5) Reaches 5 upvotes → becomes public search term.
## API endpoints (clean, minimal set)
Auth:
- `POST /v1/contrib/auth/request`
- `POST /v1/contrib/auth/verify`
Keyword actions:
- `POST /v1/contrib/suggest`
- `POST /v1/contrib/make-public`
- `POST /v1/contrib/vote`
- `GET /v1/contrib/list?emoji=...`
- `GET /v1/contrib/search?q=...`
Moderation:
- `GET /v1/keywords/pending` (admin/moderation)
## Data model (minimum)
- `emoji_keywords` (keyword, lang, status, visibility, owner_user_id)
- `keyword_votes` (keyword_id, user_id, vote)
- `moderation_events`
- `users` / `magic_links`
## Optional recommendations (futuresafe)
### A) Multilingual expansion
- Encourage new languages by highlighting “empty language slots.”
- Allow region variants (e.g., `en-US` vs `en-GB`).
### B) Personal dictionary export
- Export private keywords per user.
### C) Trust tiers
- Contributors with good history can fasttrack proposals.
### D) Admin review console
- Moderators can approve/reject quickly.
### E) Abuse prevention
- Rate limit public proposals + voting.
- Use Turnstile only for public actions.
### F) Search blending
- Private keywords weighted highest for the owner.
- Public keywords weighted lower but global.
### G) “My Words” UI
- Show users private keywords in the **dashboard**.
- Onetap “Make Public” in the dashboard (not on detail page).
## Recommended rollout
1) Private keywords (local only).
2) Public proposals + votes (no AI).
3) Basic moderation + rate limits.
4) AI guard + trust tiers.