Code Monkey home page Code Monkey logo

presentator's Introduction

Presentator - open source design feedback and collaboration platform

build Latest releases Go package documentation

Presentator is free and open source design feedback and presentation platform.

It can be used directly via the free hosted service at app.presentator.io or self host it on your own server via a single executable.

Local setup

  1. Download the prebuilt executable for your platform from the Releases page.

  2. Start the executable from the terminal:

    # run `./presentator --help` for all available commands and options
    ./presentator serve
    
  3. Navigate to http://127.0.0.1:8090/_/ to access the super admin dashboard (PocketBase).

    The first time when you access /_/ it will prompt you to create a super-admin account in order to configure various application settings like SMTP, files storage, OAuth2, etc. (see Configurations).

And that's it. By default your settings and db data will be stored in the pb_data directory next to the executable.

Once done with the configurations, you can create a new user from the PocketBase dashboard or navigate to http://127.0.0.1:8090/ to register as regular user.

Configurations

SMTP

In order to send emails you'll have to use either a local SMTP server or an external mail service like Mailjet, MailerSend, Brevo, SendGrid, AWS SES, etc.

Once you've decided on a mail service, you could enable the SMTP settings from your PocketBase Admin UI > Settings > Mail settings page (http://localhost:8090/_/#/settings/mail).

Make sure to update also the "Application URL" field located in Settings > Application.

S3 files storage

By default Presentator uses the local filesystem to store uploaded files. If you have limited disk space and plan to store a lot of files, you can use an external S3 compatible storage. This could be done from your PocketBase Admin UI > Settings > Files storage page (http://127.0.0.1:8090/_/#/settings/storage).

OAuth2 authentication

Presentator supports various OAuth2 providers - Google, Microsoft, Facebook, GitHub, Gitlab, etc. OAuth2 providers can be enabled from your PocketBase Admin UI > Settings > Auth providers page (http://127.0.0.1:8090/_/#/settings/auth-providers).

For OAuth2 redirect url/callback you must use https://yourdomain.com/api/oauth2-redirect.

Note

By default Presentator users are required to have an email so providers that don't return an email will fail to authenticate.

Increase allowed screens upload size

By default uploaded screen images are limited to ~7MB max. The default should be sufficient for most users but if you need to upload larger screens you can increase the limit from your PocketBase Admin UI:

  1. Temporary enable the Collections create/edit controls from PocketBase Admin UI > Settings > Application > "Hide collection create and edit controls" toggle (http://127.0.0.1:8090/_/#/settings).
  2. Navigate to PocketBase Admin UI > Collections > screens > "Edit collection" cogwheel and click on the file field options to update the "Max file size" input.
  3. Enable back the "Hide collection create and edit controls" toggle from 1) to prevent accidental schema changes.

Custom terms page url

To specify a "Terms and Conditions" url, that is referenced during the users registration, you can use the --termsUrl flag when starting the prebuilt executable:

./presentator serve --termsUrl='https://example.com/terms-and-conditions'

Custom footer links

To specify footer links (ex. privacy policies, contacts, etc.), you can use the --footerLinks flag when starting the prebuilt executable:

# comma separated footer links in the format 'title1|url1, title2|url2, ...'
# (use --help for more details)
./presentator serve --footerLinks='Contacts|https://example.com/contacts'

Note

Support for changing the primary colors, logo, etc. of the Presentator UI will be added in the future once custom PocketBase Admin UI settings are implemented.

Going to production

Deploying your configured local Presentator to a production environment is the same as deploying a PocketBase application.

For simplicity here is one minimal example how to deploy to a Linux server:

  1. Consider the following app directory structure:

    presentatordir/
        pb_data/
        presentator
    
  2. Upload the Presentator executable (make sure that it is suitable for your server architecture) and the pb_data directory to your remote server, for example using rsync:

    rsync -avz -e ssh /local/path/to/presentatordir/ root@YOUR_SERVER_IP:/root/pr
  3. Start a SSH session with your server:

    ssh root@YOUR_SERVER_IP
  4. Start the executable and specify a domain name so that the application can automatically issue a Let's encrypt certificate (it will bind to 80 and 443 ports):

    [root@dev ~]$ /root/pr/presentator serve yourdomain.com
  5. (Optional) You can skip step 3 and create a Systemd service to allow your application to start/restart on its own. Here is an example service file (usually created in /lib/systemd/system/presentator.service):

    [Unit]
    Description = presentator
    
    [Service]
    Type           = simple
    User           = root
    Group          = root
    LimitNOFILE    = 4096
    Restart        = always
    RestartSec     = 5s
    StandardOutput = append:/root/pr/errors.log
    StandardError  = append:/root/pr/errors.log
    ExecStart      = /root/pr/presentator serve yourdomain.com
    
    [Install]
    WantedBy = multi-user.target
    

    After that we just have to enable it and start the service using systemctl:

    [root@dev ~]$ systemctl enable presentator.service
    [root@dev ~]$ systemctl start presentator

If you want to deploy Presentator behind a reverse proxy (nginx, apache, caddy, etc.), please refer to the PocketBase - Going to production docs.

Updating

To update the prebuilt Presentator v3 executable it is enough to run ./presentator update. The command will create automatically a snapshot/backup of your pb_data (you can disable this with the --backup=0 flag).

If you use Presentator v2 and want to upgrade to v3, please follow the instructions in presentator/v2tov3migrate.

Extending

Because Presentator is based on PocketBase, it can be extended in a similar manner using Go or JS.

Warning

Keep in mind that PocketBase in still in active development and there is no backward guarantee before reaching v1.

Extend with JS

To extend with JS, it is enough to create pb_hooks/*.pb.js file(s) next to your executable and restart the application.

For example, here is a pb_hooks/main.pb.js hook that will print in the console the comment message after its creation:

// pb_hooks/main.pb.js
/// <reference path="../pb_data/types.d.ts" />

onRecordAfterCreateRequest((e) => {
    console.log(e.record.get("message"))
}, "comments");

For more details about the available hooks and methods, please refer to PocketBase - Extend with JS.

Extend with Go

Presentator is also distributed as regular Go package allowing you to extend it with custom functionality using the exposed Go APIs.

  1. Install Go 1.21+

  2. Create a new project directory with myapp/main.go file inside it. Here is one minimal main.go file with a hook that will print in the console the comment message after its creation:

    package main
    
    import (
        "log"
    
        "github.com/pocketbase/pocketbase/core"
        "github.com/presentator/presentator/v3"
    )
    
    func main() {
        // see https://pkg.go.dev/github.com/presentator/presentator
        pr := presentator.New()
    
        pr.OnRecordAfterCreateRequest("comments").Add(func(e *core.RecordCreateEvent) error {
            log.Println(e.Record.GetString("message"))
            return nil
        })
    
        if err := pr.Start(); err != nil {
            log.Fatal(err)
        }
    }
  3. To init the dependencies, run go mod init myapp && go mod tidy.

  4. To start the application, run go run . serve.

  5. To build a statically linked executable, you can run CGO_ENABLED=0 go build and then start the created executable with ``./myapp serve`.

You can also use the prebuilt executable main.go file as a reference located in base/main.go.

For more details about the available hooks and methods, please refer to PocketBase - Extend with Go.

Contributing

Presentator is free and open source project licensed under the BSD 3-Clause License.

Presentator is not a business and it doesn't have any monetization plans. It is developed entirely on volunteer basis mostly by me. Therefore to avoid the project getting too complex and unwieldy, I may not always be open for expanding its scope and I may reject your suggestion if I don't think I'll have the time to develop and maintain the requested feature.

With that said, you could help by:

Security

If you discover a security vulnerability within Presentator or its services, please send an email to support at presentator.io.

All reports will be promptly addressed, and you'll be credited accordingly.

presentator's People

Contributors

decentraliser avatar ganigeorgiev avatar mdxdave avatar tcitworld avatar xf- avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

presentator's Issues

Admin panel

Is there an admin panel to see who has signed up? After installing it, I can only register as a regular user.

Hotspots 2.0

Such as from Evernote or Awesome Screenshot. Based on the user profile (being designer, reviewer or whoever else), think different possibilities to annotate will bring better experience and easy ways to collaborate.

Mobile "Fit to Screen"

For me, a "Fit to Screen" option is very useful, because i don't want to convert all screens to the correct size (412x732 px).

I modified the code and add a "fit to screen" option. It works except of some weird movement when adding comments. It seems it have something todo with the overflow attribute changed by the screen-comments.view.js file (L. 466 / 485).

Super User/Admin level

Add "Super User/Admin" level for easier projects and users management for those who host the platform on their own server.

Linking hotspots from different projects

Normally designers present their work for all devices at once and having the possibility to link one screen to another is great, but will be greater if could make a link to the corresponding version on mobile or tablet.
Currently only the screens within the specific project can be used by the hotspot links.
Of course somebody could add a mobile version of that screen to the desktop project, but then the use of different project types makes no sense.

Unable to create projects

One issue that I experienced after brand new registration was that I was unable to create projects. After clicking the create project and filling in all data the window refreshed without giving me an error or success message. I tried this several times. After logging out and again entering the user area the issue was gone and I was able to create projects. It could be a problem with new registrations only.

Designs analytics and usability testing

As @m.antonova suggested, It would be nice to:

  • Have some statistic info how users interact with the presented designs (clicks, cursor heatmap, time, etc.).
  • Implement functionality to create user tasks and usability tests.

no Bower

After a fresh installation, (everything goes fine) accessing the url cause this error :

[Thu Apr 27 12:06:36.506386 2017] [:error] [pid 16947] [client 78.194.214.172:33158] An Error occurred while handling another error:\nexception 'yii\\base\\InvalidParamException' with message 'The file or directory to be published does not exist: /home/mockup/public_html/vendor/bower/jquery/dist' in /home/mockup/pu.....

I have no bower folder in vendor... so something goes wrong during installation.

Edit Comments/Change position

It should be possible to edit comments (maybe with change history?) and to move the comments.

Both at least for the administrator of the project or the author.

Shared project autoplay, controls and all screens layout

Based on the project and the presentation itself users could want to just click a button and play automatically all screens. Something like that: http://www.jssor.com/demos/image-gallery.slider + the progress indicator for better experience http://devrama.com/static/devrama-slider/example-html-content

Other similar (presentation) tools and applications (PDF viewers, Flickr, most of JS sliders) use to have all screens or pages on a side or below with a scrolling option. This gives the user a possibility to look for another screen or page while keeping the actual one visible.

And in general, the current controls or new ones which could be added should be more visible and within a separate from the screen element. Based on the detail of the screen image and the size of the actual computer screen the current controls are almost invisible for the eye.

Can easyer change name or just presentator.io

Hi
I create Dockerfile for Presentator and I found in mail, usage condition etc... "presentator.io", "team presentator.io". So, it's possible to change presentator.io to another name with database, file or environnement ? It's just for limit break with an update :)

(Woops, sorry for my english :x )

BCMath error while registering a new account

While creating a new account in the "Register" form, I got an error saying:
The BCMath functions must be enabled to use the NTLM authenticator.

I was able to go through this by installing php56-bcmath.x86_64 as below.
sudo yum install php56-bcmath.x86_64

I don't know if this is just my case, but the library would be good to be added to "requirements.php".

Thanks!

Cannot run the application through Apache

Thanks for the great app!

Unfortunately, I cannot run your application in my machine, following the instruction described in the link below.
https://github.com/ganigeorgiev/presentator/blob/master/docs/start-installation.md#installation

I managed to install the application through the graphics installer and it seemed to work.
However, when I tried to access the home (http://my-domain/presentator in my case) I always got an 404 error from the page saying "The requested URL /presentator/en/entrance/ was not found on this server".

[/path/to/presentator/app/web] ls
assets css fonts images index.php install js robots.txt scss uploads

Looking at /app/web directory, there's no directory such called "en".
I guess the url goes to the controller and the view file "/app/views/site/entrance.php" should be rendered, but somehow it never works.

My httpd.conf looks like this.
Alias /presentator "/path/to/presentator/app/web/"

<Directory /path/to/presentator/app/web>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Require all granted

(Also, tried VirtualHost instead, but no use..)

The below is from /path/to/presentator/app/runtime/logs/
'CONTEXT_PREFIX' => '/presentator'
'CONTEXT_DOCUMENT_ROOT' => '/path/to/presentator/app/web/'
'SERVER_ADMIN' => 'root@localhost'
'SCRIPT_FILENAME' => '/path/to/presentator/app/web/index.php'
'REMOTE_PORT' => '2200'
'GATEWAY_INTERFACE' => 'CGI/1.1'
'SERVER_PROTOCOL' => 'HTTP/1.1'
'REQUEST_METHOD' => 'GET'
'QUERY_STRING' => ''
'REQUEST_URI' => '/presentator/'
'SCRIPT_NAME' => '/presentator/index.php'
'PHP_SELF' => '/presentator/index.php'
(No error message in the file)

I tested this on RHEL 6.6 (httpd 2.2) and CentOS 7.3 (httpd 2.4), but same result.
I also tried both "For Production (GUI Installer)" and "For Development (Manual)" in the guide.

Could you help me on this?

Thanks!

Information about shared project

When somebody is viewing a shared project, there is no information about it or the owner. Will be good to get some heading with something like "You are currently viewing PROJECT by OWNER".
Also in such cases, if the user is signed in currently could get additional link/button for "back to your account" as now happens that there is no way to go back to the account when viewing a shared project.

Extremely poor contrast

Text in the GUI is generally light gray on even lighter gray. There is barely any contrast and it is very hard to read.
screenshot 2017-04-24 15 23 56

Problem add admin

I want to add an admin to my project and i'm not able to...

When I go into «Managed admin» and I write an email into the text field a box open and says : No result found. And nothing happen.

Is it a bug? How can I add an admin other way?
Thanks

Styleguide for a project

It could be awesome to have a styleguide
integrated into a project with colors, typography, main images.
styleguide

Overlays are closed differently based on their type

Some of the overlays such as the ones for commenting and adding hotspots can be closed by clicking around the window or ESC, but the ones with the X on the top right corner can not be closed with the ESC key.

Correct translations and language use

Only to comment, but it is a bit difficult to know from Transifex where the translation string will be used. The translation can vary based on the context. :(

What I think is important to point is what should be the language used within the translations: formal or informal?
I've seen different usages now: Polish is using informal form while Bulgarian is formal. As you fro sure know, based on the language, the writing will be different if you use one or other variation.

Email addresses publicly available

Had some minutes free and played around trying to trick the system.
Found out that when using the option to add project admins the email address of all users within the system are searchable and returned if there is a match.
As far as I know, other services which offer such functionality are having additional option within the user profile settings page or similar, which allow them to make such information it public or not.
Think this is a serious privacy problem and this is not mentioned within the "Terms and Conditions".

No comments information

There are version and screens counters per each project within the list of projects, but anything about the comments added to a screen so users can see if there are some or even new, unseen has been added (this exists as a list on the dashboard).

Versions

Was looking around the FAQs and playing within the app, but couldn't understand the idea about the versions of a project.
From the perspective of a designer, usually a project is presented to a client and this makes annotations and based on them another version is created and so on until an agreement that everything is fine now.
But here comes a problem (and maybe something related with my previous issue):

  • in case the client agrees on X screens, for the next version the designer will have to upload them again for the next presentation. kinda pain in the but based on how many have to upload. here is missing something like copy screen to another version or even project, or create new version from another (like git repos)
  • clients always want to see how was the old screen when the new and modified one is presented with the new version. as there is no possibility to link with the hotspots or make a comparison, the client or the designer will have to open another browser or tap with the previous version in order to see it.

Marketing

Presentator is a great tool and deserves much more attention. I suggest you to setup a Twitter account and do a little marketing.

Logo svg

Do you have a vector image of the logo ?

Hotspot Templates

As a user I would like to reduce the boilerplate of adding the same hotspots in every screen for recuring elements.

Current situation

  • I have a home button on every screen, that brings me to the home page
  • I need to create the same hotspot on every screen for that button
  • I have a recuring button on half of my screens that brings me to the contact page
  • I need to create the same hotsport for every contact button on half of my screens

Ideal situation

  • I have a home button on every screen, that brings me to the home page
  • I create a hotspot template "home-button" for the home button and apply it to every screen
  • I have a recuring button on half of my screens that brings me to the contact page
  • I create another hotspot templatene "contact-button" and apply it to half of my screens

Naming versions

Think it will be much better if instead of "Version 1", "Version 2", etc... the user can change the name.

Cant upload any images (add screens)

Mac Safari Version 10.1 (12603.1.30.0.34)
Add screen, select image. Nothing happens. Tried drag and drop, again nothing happens. Tried on Chrome (on Mac) and it works!
This is a really useful piece of software, Well done guys. Awesome work.

"Collaboration"

"design collaboration and presentation platform" I know it was just released and the project is still in early stage, but right now the collaboration is a bit static.
Also know that the current technology used is not letting a real time collaboration, but will be really cool and provide with the collaboration people use to know and use.

Ex: Now when an user adds or removes a comment, hotspot or screen, others need to F5 or wait for email message (based on the case (and maybe personal settings)) in order to get to know about and see the change.

Screen size handling for projects/boards

Problem

When you share a link with someone and that person opens a link on a device that has a smaller screen size than the width of the original design (often, mobile phone, tablets, or generally smaller size netbook or laptop), it is quite painful to view the design/project.

Solution

Ability to set the width of the project/board to the width of the browser. This potentially could be an option within settings for the project/board (could be like a toggle between screen overflow / scale down to browser width). Seriously, this is widely implemented in similar services.

Future use

This would be also useful for the comments mode, as now comments also overflow on the mobile device. A lot of clients are lazy and want to approve/comment stuff on their mobile phones (and its hard to educate them to do this on larger screens)

Suggestion: Show Filename or Title

It would be awesome to show the filename of uploaded screens for better management. Even better: Allow custom screen titles.

Keep up the great work! Presentator rocks!

Hotspots and their destinations are mystery

Hotspots, in to appear there must be a user interaction (currently "click" somewhere) which is kinda guess if there is something somewhere. Different than the comment indicators which are directly loaded and shown.
And the destination of the hotspot is not present which makes it scary if you don't know where will land.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.