All Projects → liquidev → netcanv

liquidev / netcanv

Licence: Apache-2.0 license
A lightweight app for real-time online collaborative painting.

Programming Languages

rust
11053 projects
Fluent
28 projects
Handlebars
879 projects

Projects that are alternatives of or similar to netcanv

powerpaint
Kreative PowerPaint - Library and Application for Bitmap and Vector Image Editing
Stars: ✭ 27 (+17.39%)
Mutual labels:  paint, image-editor
Tui.image Editor
🍞🎨 Full-featured photo image editor using canvas. It is really easy, and it comes with great filters.
Stars: ✭ 4,761 (+20600%)
Mutual labels:  paint, image-editor
Photodemon
A free portable photo editor focused on pro-grade features, high performance, and maximum usability.
Stars: ✭ 356 (+1447.83%)
Mutual labels:  paint, image-editor
Jspaint
🎨 Classic MS Paint, REVIVED + ✨Extras
Stars: ✭ 5,972 (+25865.22%)
Mutual labels:  paint, image-editor
vscode-luna-paint
A raster image editor extension for VS Code
Stars: ✭ 235 (+921.74%)
Mutual labels:  paint, image-editor
Mopaint
🎨💪 Modern, modular paint and more! (pre-alpha, not much done yet)
Stars: ✭ 50 (+117.39%)
Mutual labels:  paint, image-editor
GoGoCarto
This repo has been moved to https://gitlab.adullact.net/pixelhumain/GoGoCarto since 17/12/2018
Stars: ✭ 43 (+86.96%)
Mutual labels:  collaborative
toast-ui.react-image-editor
TOAST UI ImageEditor wrapper for React.js
Stars: ✭ 118 (+413.04%)
Mutual labels:  image-editor
sublime
Repository for the Tandem Sublime Plugin
Stars: ✭ 22 (-4.35%)
Mutual labels:  collaborative
Sketch
Sketch have a lot of basic functions to develop a drawing app for iPhone. Anyone can easily create drawing iOS Application.
Stars: ✭ 229 (+895.65%)
Mutual labels:  paint
bLUe PYSIDE
bLUe - A simple and comprehensive image editor featuring automatic contrast enhancement, color correction, 3D LUT creation, raw postprocessing, exposure fusion and noise reduction
Stars: ✭ 41 (+78.26%)
Mutual labels:  image-editor
mobtime
A real-time, collaborative mob programming timer. Made with technology from the future, today!
Stars: ✭ 53 (+130.43%)
Mutual labels:  collaborative
FunFilter
Freely painted area, the software will automatically add filter on its.
Stars: ✭ 15 (-34.78%)
Mutual labels:  paint
PSImageEditors
一个简而至美的图片编辑器 (仿钉钉与微信的图片编辑组件)
Stars: ✭ 32 (+39.13%)
Mutual labels:  image-editor
TF2-Item-Plugins
Manage your cosmetic and weapons freely! Set Unusual Effects, Australiums, Festives, War Paints (w/ Wear), Spells and Paints at will!
Stars: ✭ 22 (-4.35%)
Mutual labels:  paint
captain-fact
📚 Documentation, wiki and community discussions
Stars: ✭ 59 (+156.52%)
Mutual labels:  collaborative
Lazpaint
🎨 Cross-platform image editor with raster and vector layers similar to Paint.Net written in Lazarus (Free Pascal)
Stars: ✭ 236 (+926.09%)
Mutual labels:  paint
paint
Open source, Web Components-based remake of MS Paint using modern web capabilities. 🎨🖌
Stars: ✭ 94 (+308.7%)
Mutual labels:  paint
tableaunoir
An online blackboard 🖉 with fridge magnets 🌈🧲 for teaching, and making animations 🏃 and presentations ⎚.
Stars: ✭ 149 (+547.83%)
Mutual labels:  collaborative
Photo-Editor
A single page web application which enables users to edit their images.
Stars: ✭ 102 (+343.48%)
Mutual labels:  image-editor

NetCanv

A lightweight app for painting with other people over the Internet, in real time.

screenshot

A screenshot of my imaginary friend and I painting things together using NetCanv.

  • Lightweight. The whole app fits in about 10 MB, and unlike web apps, you only ever have to download a specific version once.
  • Fast. NetCanv uses a fully hardware-accelerated canvas to deliver you the smoothest drawing experience possible. Additionally, the network protocol is really simple, which makes NetCanv run well even on the slowest connections.
  • Decentralized. Even if one server goes down, you could find another one, or set one up on your own.
  • Free. NetCanv is and will always be free to use, by anyone, for any purpose. It's licensed under the GNU General Public License 3, which means that all of NetCanv's derivatives must remain free, as well.
  • Open source. You can be a part of NetCanv's development! If you have a feature you'd like to see added, or you think you've found a bug, head over to the Issues tab. If you know how to code, feel free to send in Pull Requests!
  • Made with 💙 by a high school student with too much time on his hands.

Compiling

Should be as simple as:

$ cargo build --release
# or, if you just want to run the app:
$ cargo run --release

NOTE: The "Open source licenses" icon will not show up in the lobby screen unless you have cargo-about installed. To install it, use:

$ cargo install cargo-about

Features

Alternate rendering backends can be chosen by passing in features via the --features flag.

  • renderer-opengl (default) – The OpenGL rendering backend. May be incomplete or buggy in some places on certain drivers, please file issue reports if you find bugs!

Right now this is the only backend available. Do note that PRs implementing alternate backends will not be merged, because the rendering API is still in flux and may change at any time. More backends may be added after 1.0 is released.

Skia backend

There used to be a Skia backend, but it was removed because it was an unsupported, unnecessary maintenance burden. The last tag to feature this backend is 0.5.0.

Relay

NetCanv will connect to the official relay, hosted at https://netcanv.org, by default. However, if you want to host your own relay for whatever reason, it's quite simple to do.

To run the relay server, simply do:

$ cargo run -p netcanv-relay

This will allow you to host and join new rooms locally.

NetCanv's CI also provides builds of the relay for x86_64 and aarch64, so that you can set it up on a VPS, a Raspberry Pi, or a regular ol' computer. The relay is very lightweight and doesn't require much compute power, so your main limit is Internet bandwidth.

Nginx

If you have nginx running on your server, you can create a reverse proxy to the relay by adding this to your server {} block:

location /relay {
   proxy_pass http://localhost:62137;
   proxy_http_version 1.1;
   proxy_set_header Upgrade $http_upgrade;
   proxy_set_header Connection "upgrade";
}

It's also highly recommended to use a tool like certbot to enable support for encryption. NetCanv assumes that servers support encryption by default, by prepending wss:// to the URL in the relay server text field if another scheme isn't already present.

"Tutorial"

NetCanv was originally made as part of a YouTube "tutorial" series.

The series is in Polish (!) and can be found on YouTube.

Individual episodes:

  1. Introduction
  2. Drawing and GUI
  3. Refactoring and ∞
  4. Networking – coming soon (never)

Again, note that the tutorials are in Polish.

Purpose

The main purpose of this tutorial series is to show how to build a desktop app using Rust and Skia, together with peer-to-peer communication for realtime collaboration.

I generally don't like explaining every small detail in my videos. I'd rather showcase the cool and interesting parts about the development process. So don't consider this as a general Rust application development tutorial – treat it more like a devlog with some educational, comedic, and artistic value sprinkled over it.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].