GithubHelp home page GithubHelp logo

alfio-event / alf.io Goto Github PK

View Code? Open in Web Editor NEW
1.4K 55.0 341.0 45.91 MB

alf.io - The open source ticket reservation system for conferences, trade shows, workshops, meetups

Home Page: https://alf.io

License: GNU General Public License v3.0

Java 72.80% HTML 10.18% CSS 0.60% JavaScript 8.77% MAXScript 1.12% Shell 0.03% PLpgSQL 1.14% SCSS 0.25% Procfile 0.01% TypeScript 5.11%
alfio java event reservation ticketing ticket workshops conferences meetups

alf.io's People

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  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

alf.io's Issues

TicketRepository.freeFromReservation does not clear up special_price_id_fk column

TicketRepository.freeFromReservation does not clear up special_price_id_fk column.

This is an issue as we cannot reuse a code

See current query

@Query("update ticket set status = 'FREE', tickets_reservation_id = null where status = 'PENDING' "
+ " and tickets_reservation_id in (:reservationIds)")
int freeFromReservation(@Bind("reservationIds") List<String> reservationIds);

Edit: actually I'm not sure that it's the only place that we need to change/check.

What we are seeing is this error (how we were able to create is an open issue)

Caused by: org.postgresql.util.PSQLException: ERROR: duplicate key value violate
unique constraint "unique_special_price"

promo codes

Support the definition (through admin area) of a set of "generic" discount codes, which should apply on a limited timeslot, should be linked to the event and should affect only visible categories.

The BUC is:

a user inserts the promo code "HEY-HEY-PICK-ME" in the main page. If the given code matches exactly (case-insensitive comparison) a promo code defined for the current event, then the discount will be applied; otherwise we'll search for special price codes, as today

Create "catch all" categories

A member of jug Milano, during our presentation, pointed out that it could make sense to have a "catch all" category in the event, and that category should be the one at "full price".
After a little bit of analysis, we really like the original idea, but we would rather implement it as following:

  1. add a "behaviour selection" during category creation. Possible behaviours are: ["bounded", "unbounded"].
    • Bounded categories behave exactly like now: they have a maximum number of tickets, a validity period and they can be public or restricted
    • Unbounded categories don't have constraints about minimum/maximum number of tickets (they catch all the "not allocated" tickets) but can't be restricted
  2. Add the possibility to define a default unbounded category during event creation/modification. However, an event organizer should be free to decide whether it is worth to insert unbounded/bounded categories or not. Additionally, we should add an help page in order to explain what's the difference.
  3. When an expired, bounded category contains orphan tickets, the organizer should be able to allocate them to another bounded category or to "free" them and thus to sell them through an unbounded category
  4. At the same time, people should be able to "free" their ticket (please be aware that the refund process, if any, should be managed manually through stripe admin)

This would simplify a lot the implementation of #39, since the waiting queue could be a special unbounded queue.

please feel free to share your thoughts

reminder e-mail before event

1 month before the event we should be able to send an email to all participants to review the information they provided and eventually edit them (unique link per participant)

check-in application

Build an Android application that allows the receptionists to scan tickets at check-in

Support asynchronous payment flows

For supporting other payment flow (where the ACK from the gateway can be hours or days later), we will need to an additional state for the TicketReservation I would guess.

Currently, as defined in the enum TicketReservationStatus we have the following states:

PENDING, IN_PAYMENT, COMPLETE, STUCK

The transition is, PENDING -> IN_PAYMENT -> COMPLETE | STUCK

The PENDING state is when the user has reserved a ticket but not paid, if the user has not completed the transaction in the configured timeout, the reservation will be removed.

The IN_PAYMENT state is when the user is paying (this is done in a transaction, so if there are no failure on the stripe side and our side this state is not visible (at the moment there is a error page for handling the IN_PAYMENT and STUCK page, see ReservationController#showReservationPage, last branch )).

So, for supporting the async case, we will need :

  • decide where the user will select the payment method (first page or second page?)
  • add an additional state between PENDING and IN_PAYMENT .
  • add the additional gui for the payment provider + logic on the controller side (we will need to abstract this part, at the moment it's hardcoded)
  • gui for the new state (where the user can still modify the ticket assignment) in ReservationController#showReservationPage.

When the payment has been confirmed, the reservation should transition directly to COMPLETE and it should send an email to the user(s) and let them download/see the tickets.

At the moment the user cannot see/interact with the TicketController until the reservation has a COMPLETE status, so on this side we are covered.

Add event name

it should be possible to specify a descriptive name for an event, for example:

name: My Awesome Event 2015
shortName: MyAwesomeEvent2015

the shortName could also be automatically generated (checking for duplicates)

support add to calendar feature

In the ticket view, add a button for saving the event date for the following calendars:

  • google calendar
  • ical format (for outlook, & co)

How to use Alf.io

Hi, I know this is not the right place to be asking this, but I honestly cannot find information anywhere else. Alf.io looks like brilliant software and I would love to use it on my website. I'm just wondering, how do I install it? I cannot find instructions anywhere, or even information on where to get instructions or help.

Sorry again for putting this message here but it is honestly a last resort me. Thank you in advance for any help, I greatly appreciate it.

Manual payment processing

It should be possible to manually register payment that came via different channel than supported in the system. It would be great if it can be also automated. For example by uploading CSV file with registrationIDs and paid amounts and system should mark corresponding registrations as Paid.
Whenever system can't match registrationID and amount of payment, it should be reported to the admin.

Markdown support

Add support for Markdown in the description field for both event and ticket category

Add "additional info for organizer"

We need an additional field where the ticket buyer could add additional info to the organizer
In the field description we should explicitly mention to write there informations about food habits (vegan, vegetarian, allergic to milk, etc)

Optional:
1 month before the event we should also be able to send an email to all participants to review the information they provided and eventually edit them (unique link per participant)

support generic input/textarea field when assigning a ticket

Currently we support (and they are always visible) the following optional fields:

  • Job title
  • Company
  • Phone number
  • Address
  • Country
  • T-Shirt size
  • Notes

We should let the admin decide:

  • the fields (name (multilanguage!), type (simple text, checkbox, radio, select, country), optional), their order.

โš ๏ธ this task has an heavy impact on the DB schema

support waiting queue

For those that were not able to buy a ticket.

If the organizer decide to add more places and/or somebody decide to free up his place, those that are in the queue could have a chance to get them before everybody else.

Shrink active category

For some reasons the organizers could need to reduce the number of available seats of an active category. Currently this operation is allowed unless there are already confirmed reservations in the category.

Validation is not triggered on page load

When loading an event form DB for edit, if there is any field not valid, the save button is disabled but the field is not marked with the red border.

To discover the invalid field you can use command $('.ng-invalid') browser console

The error is reproducible with the current test data because the test event do not have https in the imageUrl.
Steps to reproduce it:

  1. Start the application with mvn jetty:run
  2. Go to http://localhost:8080/admin/
  3. see the console log for the admin user password
  4. edit the "eventname" event
  5. The save button is disabled

complete CSP headers

At the moment we "only" check the js.

Restrict for the others cases (css, connections, ...)

split process URLs

Define a set of process URLs in order to track the process using Google analytics

REST API for checkin app

Misc notes:

  • devices are recognized by a generated token from the admin
  • scan ticket -> confirm
  • manual confirm

export attendees' data

Add export attendees' data as CSV functionality. This can be useful for statistics purposes

https handling

In production mode we should enforce https only mode.

  1. with STS headers : http://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security (we will need to check if request.isSecure() or request.getRequestURL starts with https:// OR if we the X-Forwarded-Proto header is present, that its https

  2. force the cookies to be emitted as https only: onStartup of the Initializer ->

    servletContext.setSessionTrackingModes(Collections.singleton(SessionTrackingMode.COOKIE));
    servletContext.getSessionCookieConfig().setHttpOnly(true);

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.