Idea
The idea for the first iteration is to develop an "application" for allowing users to share slides through a web browser.
Terminology
Objects:
- slides: the PDF that is to be uploaded;
- presentation: the actual session that presents a set of slides;
Actors:
- (slide) owner: the one that uploads the PDF, and that can create a new presentation based on it;
- (presentation) presenter: the one that should share the atendees link, and the one that begins / ends / controls the presentation;
- (presentation) atendee: clear;
Actions:
- (slides) upload: the owner uploads a PDF to the system;
- (presentation) creation: the owner creates a new presentation (session) based on a set of slides;
- (presentation) begin: the presnenter "starts" the presentation;
- (presentation) end: clear;
- (presentation) delete: the presenter can wipe all data related to a presentation; (like statistics, questionaire, etc.);
- (slides) delete: the owner can wipe out all the data related to the slides and the linked presentations;
Release 0.0.1
Business requirements
Let's break down the idea into more details at the business level, for reaching the same understanding of what we are actually looking to develop. Requirements:
- BR-001-01: The presenter and attendees shall be able to share PDF document pages only by using a browser.
BR-001-01: A presenter shall be allowed to upload PDF documents only on a central server through an unsecured connection.
BR-001-02: A presenter shall be allowed to delete their PDF documents from the central server.
- BR-001-02.1: The uploaded PDF documents shall be automatically deleted after a period of time.
BR-001-03: After uploading a PDF document, the presenter shall be given a way to reference the previously uploaded presentation so they can share it to other users.
- The sharing of the presentation reference (done by the presenter for the attendees) is outside the scope in the first iteration (can be done by the presenter through his favorite communication platform).
BR-001-04: Once a presentation reference is available, the presenter shall be given the possibility to start a presentation as well as end a presentation.
BR-001-05: Once a presentation is started, the attendees who joined the presentation (using the presentation reference) shall be visible to the presenter only.
BR-001-06: Once a presentation is started, the presenter shall be allowed to navigate back, navigate forward through the presentation slides, as well as to end presentation.
- The back and forward navigation is done at the PDF page level.
- The slide that the presenter is seeing shall be propagated to all the attendees.
BR-001-07: Once the presentation was ended, the attendees and the presenter shall be given a chance to complete a questionnaire. The questionnaire should be compact (short phrases, eventually only words) and short (achievable under 10s, ideally only through clicking).
Use cases
The first release will implement only the core use-case that makes this application useful.
Presentation creation (UC-001-01)
- User visits the web-site.
- User presses "Create presentation" button.
- User enters his email address and chooses the PDF to upload.
- After the upload the user is redirected to a page explaining that he must check his email.
- The user is sent an email with the owner, presenter and attendee links (including attendee invitation).
Presentation sharing (UC-001-02)
- The slides owner sends the attendees the special attendee link.
Presentation "presenting" (UC-001-03)
- (from presenter's perspective):
- The presenter presses "begin" and he is redirected to a "presentation" page.
- He moves back and forward.
- He "ends" the presentation.
- (from attendees' perspective):
- The attendee opens the link.
- When the presentation starts he sees the slides.
- He can open in a new tab an individual view of the slides.
- When the presentation ends he no longer has access to the slides.
Presentation deletion (UC-001-04)
- The presentation will be deleted when the user presses "end presentation" (or 24h after the presentation started).
Feedback collection (UC-001-05)
- The following day (after the presentation) the presenter receives an email asking him to fill a feedback form.
Architecture
Functional requirements
...
Technologies
web-frontend: Bootstrapp (CSS), JavaScript (jQuery?);
- web-gateway: Nginx;
- web-backend: NodeJS / Go / Erlang;
- PDF processor: ???; (hint: pdftk, Inkscape, ghostview;)
- persistent datastore: CouchDB (for records), Riak (for files);
- in memory datastore: Redis;
- messaging: RabitMQ, Redis, BeanstalkD;
mailer: Lamson ( http://lamsonproject.org/ );
watchdog: s6 ( http://www.skarnet.org/software/s6 ), runit ( http://smarden.org/runit/ );
issue tracker: Trac, ditz ( http://ditz.rubyforge.org/ ), Fossil ( http://www.fossil-scm.org/ );
project management: Trac, Trello ( http://trello.com/ );
- source control: Git;
- integration testing framework;
Services
...
Tasks
All:
- Low-priority:
find a "name" for the service (at most 6 characters, easily pronounceable, with an available domain, searchable in Google); (suggestion: random strings of the pattern 'cvcvcv', like pavebi.)
- investigate infrastructure deployment scenarios (cloud vs. owning) and costs;
Marius:
- investigate RabitMQ binding support for C;
investigate PDF -> SVG converter tools
- what tools are available?
- what features do they offer?
- how about PDF vs. generated SVG size?
- test with PDF containing text, images (animations and video)
- how about performance? create some bash scripts for automating it
- what is faster? how does the convertor works?
- convert PDF in a SVG document
- split PDF in slides (pages) and than transform each PDF page into an SVG document.
- split PDF in slides (pages) and than transform in parallel each PDF page in an SVG document.
- what is faster? how does the convertor works?
- send a public SSH key (RSA 2048);
Ciprian:
- provide testing VM (Ubuntu);
- provide Trac instance (on the same VM);
- provide access to private Git repositories;
Plans for future releases
The main focus should initially be on improving the "free" SlideShare service and gaining recurrent users. "premium features" should be a second goal and should be made available against a monthly fee.
Add captchas for reducing abuse & bots.
- Display the number of connected attendees.
- Display a list with all the joined attendees.
Define "premium features" and payment structure & methods.
Define marketing & sales focus.
- (PRO version?) Add transport and storage encryption.
(PRO version?) Fetch the presentation from DropBox, Google Drive, Google Mail, etc. (or even a plain URL).
- (PRO version?) Add "Convert to PDF" (invisible) service for the user, so that other types of documents can be uploaded by the user (and converted to PDF for presenting)