Create and edit AI-generated content through code or visual tools—no coding required.
Plurist is an AI-first workspace for building social and marketing content: an HTML/CSS canvas with chat-assisted generation, optional Monaco editing, workspace-scoped AI providers, and design-bank workflows. Use the visual surface, the chat, or code—whichever fits your workflow.
- Canvas-first editing — tldraw-based compose experience with HTML shapes and live preview
- AI chat — stream-assisted edits and generation against configurable providers (OpenAI, Anthropic, Gemini, OpenRouter, Ollama, etc.)
- Code panel — Monaco-based editing when you want direct control over markup and styles
- Workspace & roles — accounts, invites, and scoped resources
- Design bank & rendering — asset ingestion and render pipeline integration (see API and
docs/)
| Requirement | Notes |
|---|---|
| Docker & Docker Compose | Used for Postgres, Redis, MinIO, Mailpit, backend, Celery, and frontend |
| GNU Make | Makefile wraps compose commands |
| uv (optional) | Python toolchain for running backend tools locally outside Docker |
| pnpm (optional) | For frontend scripts on the host |
git clone git@github.com:facundopadilla/plurist.git
cd plurist
cp .env.example .envEdit .env as needed. For local development, defaults in .env.example match the Docker Compose Postgres and MinIO users (plurist / plurist). Set provider API keys (OPENAI_API_KEY, ANTHROPIC_API_KEY, etc.) when you want live LLM calls.
Start the full stack (builds images, waits for health checks, seeds test accounts):
make up| Service | URL |
|---|---|
| Frontend (Vite) | http://localhost:5173 |
| Backend API | http://localhost:8000 |
| MinIO console | http://localhost:9001 |
| Mailpit (email dev) | http://localhost:8025 |
Shut down (add -v in the Makefile / compose if you need to drop volumes):
make downQuality gates run in Docker (same as CI):
make lint # Ruff (backend) + tsc + ESLint (frontend)
make test-backend # pytest
make test-frontend # VitestEnd-to-end tests (Playwright) need the stack running first:
make up
make test-e2eFrom the repo root, after pnpm install:
pnpm hooks:precommit # pre-commit on staged files
pnpm hooks:prepush # broader checks (bandit, mypy, full eslint/tsc/ruff)- Backend:
uv run --project backend --extra dev pytest/ruff check backend - Frontend:
cd frontend && pnpm install && pnpm run test/pnpm run typecheck/pnpm run lint
CI still validates via Docker images; match versions (Python 3.12, Node 22, pnpm 9) for consistent results.
backend/ # Django app, Celery, API (Ninja)
frontend/ # React + Vite + tldraw
docs/ # Specs, proposals, verification notes
docker-utils/ # Optional static-analysis compose (SonarQube, Semgrep)
scripts/ # CI / helper scripts
- Static analysis (SonarQube / Semgrep):
docs/static-analysis.md - Design and product notes:
docs/
This project is licensed under the MIT License. Third-party and library-specific notices (e.g. canvas components) are documented under docs/licenses/.