尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证Inkwell — A federated social journaling platform. LiveJournal meets MySpace, reimagined for 2026 with ActivityPub federation. No algorithms, no ads, user-owned spaces. Self-hostable.
翻译准备中
取自仓库 README
正在加载完整 README。
查看完整 README ↗A federated social journaling platform — LiveJournal meets MySpace, reimagined for 2026 with ActivityPub federation. No algorithms, no ads, user-owned spaces.
Live instance: inkwell.social
@[email protected]Article objects (FEP-b2b8)/roadmapink_-prefixed API keysgen_smtp or Resend API (transactional + newsletters)inkwell/
apps/
api/ # Elixir/Phoenix backend (mix project)
web/ # Next.js frontend (npm workspace member)
services/
federation/ # Unused — federation is native in Phoenix
packages/
types/ # Shared TypeScript types (npm workspace member)
npm workspaces monorepo. Lock file lives at root, not in individual apps.
brew install elixir on macOS)# 1. Start Docker services (Postgres + Meilisearch)
docker compose up -d
# 2. Install JS dependencies
npm install
# 3. Install Elixir deps, create DB, run migrations
cd apps/api && mix setup
# 4. Start Phoenix API (Terminal 1)
mix phx.server
# Wait for: Running InkwellWeb.Endpoint at 0.0.0.0:4000
# 5. Start Next.js frontend (Terminal 2, from project root)
npm run dev:web
# Wait for: Ready in ...ms
| Service | URL |
|---|---|
| Frontend | http://localhost:3000 |
| Phoenix API | http://localhost:4000 |
| API Health Check | http://localhost:4000/health |
| Meilisearch | http://localhost:7700 |
No email service is needed for local development. The API runs in "dev mode" — after entering any email on the login/signup page, a clickable magic link appears on screen instead of being emailed.
mix compile FailsOn first compile with Elixir 1.19, you may hit a one-time ordering issue:
mix deps.compile oban --force
mix compile
Inkwell runs on any x86-64 server with Docker Compose, on one domain of your own, with every feature on for everyone and no billing. Three settings to start (DOMAIN, ADMIN_EMAIL, SECRET_KEY_BASE); Caddy handles HTTPS; members are followable as @name@yourdomain.
See SELF_HOSTING.md for the guide: install, email, your own Terms and Privacy Policy, backups, upgrades and troubleshooting.
Images are published to GitHub Container Registry on every push to main, tagged with the commit. :latest moves only after that commit's images have booted the self-hosted setup and passed scripts/selfhost-smoke.sh:
ghcr.io/stantondev/inkwell-api:latestghcr.io/stantondev/inkwell-web:latestThe hosted instance runs on Fly.io. Deploy commands:
# API (runs migrations automatically)
fly deploy --config fly.api.toml --wait-timeout 600
# Frontend
fly deploy --config fly.web.toml --wait-timeout 600
# Meilisearch
fly deploy --config fly.search.toml --wait-timeout 600
CI/CD via GitHub Actions (.github/workflows/docker-publish.yml) builds Docker images on every push to main, runs the self-hosting smoke test against them, then tags them latest.