- JavaScript 35.4%
- CSS 22.2%
- TypeScript 19.8%
- Svelte 17.1%
- HTML 5.4%
| .github/workflows | ||
| .vscode | ||
| docs | ||
| meta | ||
| scripts | ||
| src | ||
| static | ||
| tests/integration | ||
| .gitignore | ||
| .npmrc | ||
| AGENTS.md | ||
| DEVLOG.md | ||
| mise.toml | ||
| package.json | ||
| playwright.config.ts | ||
| playwright.integration.config.ts | ||
| pnpm-lock.yaml | ||
| pnpm-workspace.yaml | ||
| README.md | ||
| svelte.config.js | ||
| tsconfig.json | ||
| vite.config.ts | ||
PleromaNet
PleromaNet is a new frontend for Pleroma focused on a reduced, refined interface. The visual design source file is now represented by the implementation plan in meta/issues.md.
Status
This repository contains a SvelteKit TypeScript SPA/static frontend without SSR, backed by the real Pleroma API.
Real App Surface
/is the signed-out landing with the OAuth sign-in and create-account flows./app/...is the authenticated app: home/local/federated timelines with streaming and pagination, thread detail with inline replies, profiles with follow/unfollow, search (header dropdown and full page), notifications with streaming and badge counts, and profile settings backed byupdate_credentials.- The composer supports media uploads (browse, drag-and-drop, paste), content warnings, polls, mention and custom emoji autocomplete, and the full emoji picker. Posts render emoji reaction rows with reaction toggling.
/app/profiles/...is also viewable signed out againstPUBLIC_PLEROMA_INSTANCE_URL, with sign-in prompts on authenticated actions./publicshows anonymous local/federated public timelines.
Design Reference Surfaces
/design-systemis the component/design showcase with mocked content, ported section by section from the canonical handoff inmeta/design/claude-handoff/.
Development Principles
- TDD first: red, green, refactor.
pnpmis the package manager, with tool versions managed by mise.- TypeScript is the application language.
- SvelteKit is the application framework, configured as an SPA/static frontend without SSR.
- Svelte 5 only, using current patterns and no legacy usage.
- Functional TypeScript style: arrow functions, no application classes.
- Small, topical commits. Large features are split into smaller commits.
- Detailed contributor and agent rules live in
AGENTS.md.
Developing
Install dependencies:
pnpm install
Start a development server:
pnpm dev
# or start the server and open the app in a new browser tab
pnpm dev -- --open
Testing
Default tests are Playwright headless browser tests with mocked/local data only. They do not require Docker or a live Pleroma instance.
pnpm test
Run type checks:
pnpm check
Equivalent mise tasks are available:
mise run test
mise run check
mise run build
Dockerized integration tests are opt-in:
mise run test:integration
See docs/integration.md for backend version, debugging, and cleanup details.
Building
To create a production version of your app:
pnpm build
Preview the production build:
pnpm preview
API Reference
PleromaNet targets Pleroma directly and can rely on Pleroma-specific features being present. Pleroma API documentation is available at https://api.pleroma.social/.