cat-dev-null/meep
1
2
Fork
You've already forked meep
0
asocial personal microblogging (Rust, 2025-active) https://meep.social
  • Rust 85.3%
  • CSS 8.8%
  • HTML 2.8%
  • JavaScript 2.4%
  • Shell 0.7%
2026年05月28日 23:45:49 -06:00
.forgejo Revert "ci: timeout increase" 2026年04月22日 21:18:24 -06:00
.zed Fixed issues reported by cargo clippy 2026年03月07日 19:33:30 -07:00
docs docs: Markdown files moved to docs directory 2026年03月22日 19:29:07 -06:00
install chore: systemd service and install script 2026年04月22日 15:52:05 -06:00
posts docs: Add new markdown query param for RSS endpoint to "differences from mb" post 2026年03月24日 08:57:42 -06:00
public/theme feat: check and display if user is logged out 2026年05月28日 23:45:49 -06:00
src feat: check and display if user is logged out 2026年05月28日 23:45:49 -06:00
templates feat: check and display if user is logged out 2026年05月28日 23:45:49 -06:00
.gitignore build: checkin Cargo.lock 2026年04月22日 14:14:05 -06:00
.rusty-hook.toml style: satisfying Clippy, and added it as git hook 2026年04月22日 13:44:36 -06:00
.user_preferences chore: bump to 0.7.8 2026年03月24日 08:36:09 -06:00
Cargo.lock build: depend on openssl for musl 2026年04月22日 15:46:17 -06:00
Cargo.toml build: depend on openssl for musl 2026年04月22日 15:46:17 -06:00
config.toml.example feat: trying to make rss dependent on the canonical config URL being present 2026年04月03日 22:57:56 -06:00
deploy.fish Fixed deploy script I hope 2026年03月07日 19:33:33 -07:00
LICENSE Honestly too many changes but it's all good stuff! 2026年03月07日 01:29:12 -07:00
README.md docs: Markdown files moved to docs directory 2026年03月22日 19:29:07 -06:00
screeny.png screeny 2026年03月07日 01:29:09 -07:00
TODO.md fix: Textarea cleared when posting in pinned tab 2026年03月24日 08:19:50 -06:00

meep!

meep is designed to be a personal (asocial) microblogging "platform"

another way to think of it is a way to store one's own personal thoughts as they occur to them throughout their day

the difference between this and existing microblogging (twitter or even mastodon or other fediverse platforms) is that instead of posting to followers, one posts to onesself

however, it might evolve to be more social

it is a fork of mb, which stores posts in redb instead of markdown

meep v0.1.0 screenshot

design goals

  • markdown, no database: not a use case where a relational database is necessary
    • furthermore, for the moment the idea is to create/add to a mkdocs-compatible system utilizing frontmatter for metadata such as datetime
  • local with git optional: being asocial means not having to worry about how it is made accessible
    • but being able to "sync" it with a git repo is highly desirable; might add support for generic hooks
  • app-less: for the moment, simple enough to not need a native app
    • but it can be "installed" to a system as a pwa
  • single executable: by utilizing a compiled language, no need to have whatever scripting language installed
    • (default) themes and static assets will be bundled with the binary and extracted if needed
    • rust chosen because i want to learn it more and because it was either that or go or v
  • simple web: bare minimum javascript, simple standard html <form>
    • because why overcomplicate it?
    • see docs/JAVASCRIPT.md for all usages and explanations of javascript usage

customization

when meep is first run, it extracts files that can then be modified to customize the look and feel of your meep instance

you can create your own icon to replace public/theme/favicon.svg and modify the styles in public/theme/default.css to suite your fancy

the templates\*.tera files are extracted primarily as a reference for customizing the css, but they can also be customized for even further personalization - but it's on you if you break stuff

also be sure to take a look at all the possible config values for further customization (e.g. title, description, page_size)

changes from mb

meep is a fork of mb with significant changes:

  • filesystem storage instead of redb database - posts are individual markdown files
  • session-based authentication with login form, plus http basic auth for api access and optional read-only credentials
  • full markdown rendering with commonmark (tables, strikethrough, footnotes, etc.)
  • git integration - optional auto-commit and push on post changes
  • comprehensive security - rate limiting, ip lockout, argon2 password hashing, encrypted session cookies, scanner detection
  • enhanced ui - dark/light theme toggle, mobile responsive, pwa support
  • admin interfaces - /about for system info, /logs for web-based log viewer
  • embedded assets - templates and static files bundled in binary
  • daily log rotation - new log file each day with colorized web viewer
  • cli commands - gen-config, hash-password, version

for a detailed comparison of all changes, see the example post

security

almost immediately upon hosting meep in a digitalocean droplet, it started to receive strange requests from bots, looking for vulnerabilities

therefore, meep includes comprehensive security features including:

  • session-based authentication - encrypted cookies, login forms, proper logout
  • rate limiting - per-IP limits on authentication, posting, and API endpoints
  • ip-based lockout - temporary bans after repeated failed login attempts
  • argon2 password hashing - memory-hard algorithm resistant to gpu/asic attacks
  • scanner detection - identifies and logs automated vulnerability scanners
  • security headers - hsts, frame-deny, and other protective headers

note: session cookies use auto-generated keys and do not persist across server restarts. for a personal microblog with 1-2 users, this simplicity trade-off is intentional.

see docs/SECURITY.md for complete security documentation