Linteum is a collaborative pixel canvas project built with Blazor, ASP.NET Core, SignalR, and PostgreSQL. You can open a canvas, place pixels, watch updates show up live, and even let bots join in.
Live site: linteum.ash-twin.com
- Live pixel updates across connected clients through SignalR.
- Multiple canvases, including public, private, and password-protected ones.
- Three canvas modes:
Normal,FreeDraw, andEconomy. - Smoother freehand drawing with interpolated strokes.
- Canvas creation from either a blank board or a JPG starting image.
- Batch drawing support, plus bulk delete and queued text drawing on
FreeDrawcanvases. - Lobby chat so people can talk before jumping into a canvas.
- Local accounts plus optional Google login.
- Canvas image export.
- Bot support for cleaning, painting, and image-based drawing.
Normal- the standard shared canvas mode. It keeps a daily pixel quota per user for each canvas (100 by default).FreeDraw- meant for faster editing. It supports batch pixel updates, batch delete, and queued text drawing.Economy- pixels have prices, balances matter, and subscribed users can earn hourly income based on what they own on that canvas.
By default, the app seeds a small starter set of canvases: home, home_FreeDraw, and home_Economy.
Linteum is split into a few focused projects:
- Frontend: Blazor in interactive server mode.
- Backend: ASP.NET Core Web API.
- Realtime updates: SignalR.
- Database: PostgreSQL with Entity Framework Core.
- Containers: Docker and Docker Compose.
Linteum.Api- API endpoints, realtime hubs, and background services.Linteum.BlazorApp- the main web UI.Linteum.Bots- automated clients for cleanup, art bots, and image drawing.Linteum.Domain- entities and repository contracts.Linteum.Infrastructure- EF Core, repositories, and data access logic.Linteum.Shared- shared DTOs, enums, config, and helper utilities.
- Docker Desktop
- .NET 10 SDK if you want to run the projects locally without Docker
- PowerShell if you want to use the helper script
The simplest way to start the main services is:
docker compose up -d --buildThere is also a small helper script in the repo:
.\build-and-up.ps1If you want the bots too, start Compose with the bots profile:
docker compose --profile bots up -d --buildSet up your .env file or environment variables as described in docker-compose.yml. The main ones are:
POSTGRES_USER,POSTGRES_PASSWORD,POSTGRES_DBMASTER_PASSWORD,MASTER_USER,MASTER_EMAILGOOGLE_CLIENT_ID,GOOGLE_CLIENT_SECRETfor Google login
The repo includes a few bot clients:
CleanerBotfor clearing or tidying up a canvas.XeroxBotfor drawing an image onto a canvas.
For bot commands and Docker examples, see DockerCheatsheet.md.
This project is still evolving, so issues and pull requests are welcome. If you want to try something, fix a rough edge, or add a feature, feel free to jump in.
