DEV Community

Stanton Melvin
Stanton Melvin

Posted on

Building Inkwell: A Federated Social Journaling Platform for the Fediverse

This is a submission for the DEV Weekend Challenge: Community

The Community

I came to the fediverse as a newcomer, and what struck me right away was the culture around it.

People actually care.

They care about ownership, open standards, portability, and building platforms that treat users like people instead of engagement targets. That mattered to me because the whole reason I started building Inkwell was simple: I missed what the internet used to feel like.

We lost something when social platforms stopped being social. Long-form writing got pushed aside. Personal spaces disappeared. Everything became feeds, performance, outrage, and endless optimization for attention. The early internet was not perfect, but it had something real. You could actually get to know people there.

That is the feeling I wanted to build around.

Inkwell started as an idea for a federated social journaling platform, but the fediverse community helped sharpen it into something stronger. When I showed up with questions, people answered them. When I got things wrong, they told me. When I asked for feedback, they gave it honestly. No gatekeeping. No posturing. Just people who wanted the ecosystem to improve.

That is the kind of community worth building for.

What I Built

Inkwell is a federated social journaling platform. Think LiveJournal and early MySpace, rebuilt for 2026 on ActivityPub.

It is live now at inkwell.social.

The idea behind it is straightforward: your words should belong to you. Your space should feel like yours. The platform should help people connect, not manipulate them into scrolling longer.

Inkwell is ad-free, algorithm-free, and built on open standards. Users can write long-form journal entries, customize their profile, follow people across the fediverse, and build real connection through writing instead of chasing engagement.

This weekend, my focus has been implementing FEP-b2b8: Long-form Text, a Fediverse Enhancement Proposal that defines best practices for representing long-form content in ActivityPub.

That work came directly from community feedback.

Earlier this week, I posted in r/Fediverse asking for feedback on Inkwell. Then I posted in r/Mastodon and got more specific guidance pointing me toward FEP-b2b8. That is exactly the kind of loop I want to build inside this project: listen, learn, improve, implement.

This standard matters because long-form writing should travel well across the fediverse. If someone follows an Inkwell user from Mastodon, Threads, or another compatible platform, the post should not show up broken, flattened, or stripped of meaning. It should render like an article, because that is what it is.

If Inkwell is going to be part of this ecosystem, it should respect the ecosystem and meet it where it is.

Here is what Inkwell already includes:

  • Full ActivityPub federation including WebFinger, actor endpoints, inbox/outbox, and HTTP signatures, so users are followable at @username@inkwell.social
  • A rich TipTap-based editor with formatting, tables, task lists, and a distraction-free writing experience
  • Deep profile customization with themes, custom colors, backgrounds, fonts, layouts, and profile music so your page actually feels personal
  • Stamps instead of likes, with reactions like “felt,” “holding space,” and “beautifully said,” because writing deserves more thoughtful responses than a generic heart
  • Newsletter email delivery with double opt-in for writers who want a direct relationship with readers
  • A public roadmap where users can submit feedback and help shape what gets built next
  • Inkwell Plus for $5/month, which is the only monetization model and keeps incentives aligned with users instead of advertisers

Demo

Try it here: inkwell.social

The best way to understand Inkwell is to write something. The product is built around the feeling of actually sitting down to write, not firing off another disposable post.

Inkwell landing page hero with the tagline “Your journal. Your pen pals. Your space.” plus a short description and buttons to start writing or read the feed

Inkwell landing page preview section showing recent community writing cards and an “Explore more entries” button

Inkwell explore feed showing journal entries in a multi-column layout with category filters, navigation sidebar, and community posts

Code

Inkwell

A federated social journaling platform — your journal, your friends, your space.

Inkwell combines the rich blogging of LiveJournal with the profile customization of MySpace, reimagined for 2026 with modern tech and open standards. No algorithms. No ads. You own your corner of the internet.

Architecture

  • Backend: Elixir + Phoenix 1.8 (real-time, fault-tolerant)
  • Frontend: Next.js 16 + React (SSR, Tiptap editor)
  • Federation: Fedify (ActivityPub, interoperable with Mastodon)
  • Database: PostgreSQL 16+
  • Search: Meilisearch
  • Cache: Redis

Project Structure

inkwell/
  apps/
    api/          # Elixir/Phoenix backend
    web/          # Next.js frontend
  services/
    federation/   # Fedify ActivityPub sidecar (Node.js)
  packages/
    types/        # Shared TypeScript types

Getting Started

Prerequisites

  • Node.js 20+
  • Elixir 1.17+ / Erlang 27+
  • Docker (for PostgreSQL, Redis, Meilisearch)

Setup

# Start infrastructure
docker compose up -d
# Install JS dependencies
npm install

# Start Phoenix backend
cd apps/api && mix setup && mix phx.server

# Start Next.js
Enter fullscreen mode Exit fullscreen mode

How I Built It

Inkwell runs on Elixir/Phoenix on the backend and Next.js on the frontend, deployed on Fly.io. ActivityPub is implemented natively in Phoenix. It uses PostgreSQL for data, Stripe for subscriptions, and Resend for email.

I will be direct about something else too: I built most of this with Claude Code.

I am a product manager by day, not a full-time software engineer. Without AI-assisted development, I would not have been able to move this quickly as a solo builder. That is just the truth.

What matters to me is not pretending otherwise. What matters is whether the product is useful, whether the code is public, whether the values are clear, and whether the platform is being built in good faith.

That is what I am trying to do.

I have published the code publicly. I have published a mission statement that commits Inkwell to never sell user data and never introduce algorithmic feeds. I chose a subscription model because I want the business to succeed only if users feel the product is worth paying for.

The fediverse reminded me that software can still be built with integrity.

Inkwell is my attempt to contribute something worthy of that.

Top comments (0)