presentator / presentator

Design feedback and presentation platform

Home Page:https://presentator.io

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Presentator v3 Roadmap discussion

ganigeorgiev opened this issue · comments

Hi everyone,

I'd like to share with the community my plans for the next major version of Presentator and where the project is headed in general.

Without further ado, here is a short list of some of the currently planned changes and features for Presentator v3:

  1. Rewrite in Go and distribute as a single executable file (embedding the frontend, api and database) for easier self-hosted installation (breaking - no more shared-hosting support!)
  2. Redesign the frontend for more modern and cleaner UI
  3. Actual real-time collaboration support without relying on external services
  4. Better invite/share flow
  5. Prototype screens sections/grouping (eg. #146)
  6. Draw and annotate over the shared designs (eg. #87, #142)
  7. Finer controls over the received user notifications (eg. #83)
  8. Better incorporate the "Guidelines" feature in to the project prototypes
  9. Improve thumbs generation and memory consumption
  10. Super admin dashboard with some basic api metrics (eg. #144)
  11. (*) Allow users to have a public portfolio page to showcase their designs (like in Behance or Dribbble but without the pesky ads and tracking; depending on my schedule, this feature may not be included in the first v3 release)

The most breaking and time consuming change will be rewriting and redesigning the platform using Go.

Why the switch from PHP to Go?

Presentator has grown quite a lot since its first release in ~2016/2017. Not only the public free service (app.presentator.io) has already 12000+ registered users with more than 140GB+ uploaded files but there are also a lot of people self-hosting the platform. Which has led to numerous issues and support requests related to difficulties installing and properly configuring Presentator. In addition, the PHP API limits our options for real-time collaboration and you either have to further complicate the setup using something like Swoole or rely on 3rd party services like Pusher or Firebase.

This is why at the end of 2021 I decided to start working on a new general purpose backend written in Go - for now I've named it PocketBase. It will be a separate project but all its features will be aligned with what we'll need for Presentator.
It is inspired by Nhost and Supabase but rather relying on several different microservices, PocketBase will have everything included in itself - authentication, SQLite database with real-time subscriptions, files handling and super admin dashboard. The end result would be a Go library that will allow us to build quickly single executable platforms by just doing something like:

package main

import pb "pocketbase"

func main() {
  pb.New().
    AddListener("BeforeUserApiCreate", func (e *pb.Event) {
      // some Presentator specific logic...
    }).
    Start()
}

If you are curious, this is how PocketBase dashboard currently looks like:
PocketBase screenshot
(it is still a very early MVP but you could also explore some of the other screenshots here - https://app.presentator.io/#/6mote1hf)


Release schedule:

  • finalize the unit tests and documentation for PocketBase and release it by the end of Q2/Q3 this year (the project repo(s) will be located here https://github.com/pocketbase)
  • somewhere around Q4 (or Q1/Q2 the next year) release Presentator v3, including:
    • migration script to automate the upgrade from v2 to v3
    • new AdobeXD and Figma plugins to work with the new v3 api
    • new landing site and api documentation

Please share your thoughts and what else you would like to see in Presentator v3 :)

One big step towards Presentator v3 has been completed - PocketBase, the new to be backend for Presentator v3, has been just published 🎉.

You could check https://github.com/pocketbase/pocketbase and share some feedback.

I recently found this project and it's really amazingly polished. Like really great job.
I think feature that could greatly increase the possible audience of Presentator is commenting on public urls. It is probably tricky feature - mainly because websites are already inter linked, they can render in any resolution so its hard to keep the comment position and also the urls can change in meantime. But everything else is same like with images so it's done.

There is one product https://www.markup.io/ that has ux workflow extremely similar to Presenter and supports both images and urls. I know they are becoming very popular because of the urls support.

I am mentioning this mainly because most of the features on roadmap are more like quality of life upgrades. The urls could suddenly expand your project to web developers.

Just a thought - thanks for making this.

@iskrisis Thanks for the suggestion. As far as I know, there are usually 3 approaches for this:

v1. Create a "screenshot" of the website on server-side and upload it to Presentator like a regular image

  • require complicated and resource heavy server setup
  • may not always work, especially on websites with loading animations and a lot of js to execute

v2. Load the external url in an iframe and leave comment on a layer on top of it.

  • this is the easiest way
  • unfortunately, sometimes this is considered a vulnerability and most websites have CSP/iframe policies that allow iframes only for the same domain (if at all)
  • because of the responsive of the website, comments may not be positioned correctly on all resolutions

v3. Create a browser extension and "inject" the comments in the html

  • this is the best and most reliable way to implement this, because it allows us to interact with the actual html page, so we can make it work even on responsive
  • Requires both ends to have the browser extension installed in order to be used

I haven't used https://www.markup.io but I'll investigate it in the future to see how they do it.

@ganigeorgiev They are indeed using Iframes. But they have a bit of magic there somewhere because the comments seem to somewhate correctly keep up with the reflows.

CleanShot 2022-07-15 at 15 51 56
I am not sure how they do this because i thought you can't really touch iframe.

The other thing they do is have 3 responsive "views" mobile/tablet/desktop which also group the comments. So they treat url basically as 3 "images" - very sensible ux wise. They also have switch between browsing/commenting so you can go to different urls.

I wouldn't worry about the CSP/iframe policies since the devs can change them if they want to present. AFAIK it's allowed as default on nginx/apache so mostly nobody cares tbh.

Possible path that requires least coding i can think of:

  • Treat one url as one image. User would add url for each webpage they want to discuss just like images. This means no need for "browsing" mode and it might be even better for users (comment on these 3 main finished views, instead of unfinished pages).
  • Use iframes but in fixed predefined widths that would overflow (or be transform - scaled) if they didn't fit in the users viewport (similar like responsive view browser devtools do it). Pretty crude approach but the position of comment then is just x,y coordinate just like with images. This means no need for magic to keep comment in right position.

I think that approach might have some limitations but they are minor. Most of usefulness of markup in my experience is that nobody has to create and edit screenshots and it's obvious where the comments are.

Hi @ganigeorgiev I just want to tell you, I really love what you do. I love your UI design.

Presentator v3 with Pocketbase.. It will be awesome.. Hope to see it soon..

I would love to contribute with this roadmap and also enhance my knowledge in Go.