GithubHelp home page GithubHelp logo

abpframework / eventhub Goto Github PK

View Code? Open in Web Editor NEW
190.0 190.0 82.0 14.74 MB

Open-source event organizing web application and a reference DDD solution.

Home Page: https://openeventhub.com

License: GNU Affero General Public License v3.0

C# 67.96% HTML 20.85% CSS 2.11% JavaScript 3.40% Smarty 5.00% PowerShell 0.61% Dockerfile 0.08%
aspnet-core csharp dotnet dotnet-core sample

eventhub's People

Contributors

armgnunlu avatar berkansasmaz avatar braim23 avatar denizdemirkan avatar engincanv avatar enisn avatar gerryge avatar gizemmutukurt avatar gterdem avatar halimekarayay avatar hikalkan avatar maliming avatar nicksoftware avatar onurpicakci avatar skoc10 avatar yekalkan avatar yusufkaratoprak 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

eventhub's Issues

EventHub Admin: Manage organizations

  • Show a list of organization in a standard datatable. Show event organization name, display name, member count. Can be able to short by any column. Should be able to filter by min/max membre count and search by the organization name and display name.
  • Editing an organization in a modal with two tabs (organization info, profile image). We will have a single save button here.
  • Show the list of members in another page. We currently don't want to add/remove members, just list and filter (search) by username.

Event location/language/capacity features

  • Implement Max capacity logic on registration.
  • A link of the event (optional) if that’s an online event - visible only if registered.
  • Location (country & city) - visible if not IsOnline (optional). Country can be selected from a list (create a database table/entity and a seed code. you can find a list on the web), but city will be a string property on the event entity (for now).
  • Language (optional).

Frequency control system

Certain events should have rate limits. For example, you can not create more than 5 events in a day.

EventHub Minor problems & enhancements

  • URL format should be kebab-case of the event title. Currently, it is the event title without spacing.
  • On page opening, the content is shown on top, then shifting to the right place.
  • Icons and some styling don't work on production: https://www.openeventhub.com/
  • The placeholder has problem in Description field of the event edit form. (wait for bootstrap 5.0)
  • Footer should always be at the bottom (see https://www.openeventhub.com/events)
  • Remove slider from the home page. Redirect users to login page (if they are not logged in) or "create new event" page if they are already logged in.
  • On "new event" form, auto-select the organization if there is only one organization. Also change the placeholder as "Pick an organization", instead of "Organization".
  • Header: Convert "Create an Event" to "Create", then open a dropdown to select "New event" or "New organization".
  • Try to create an event that has a long description without spaces. The visual appearance is broken.
  • Validate city/country selection for in-person events (they are actually required) on the UI
  • Footer slides up on the page that opens after logout

EventHub seed data (for demo purpose)

Requirements

  • Create a data seed contributor.
  • Seed the code only #if DEBUG.
  • All data should be in English.
  • You can find meeting data from
  • We don't want a random data. Do it hard-coded. Always produces the same data (except event dates)

The Data

  • 25 fake users
  • 6 sample organizations;
  1. Volosoft / volosoft
  2. ABP / abp
  3. Angular Coders / ng-coders
  4. Dotnet World / dotnet-world
  5. Developer Days / developer-days
  6. C# Lovers / csharp-lovers
  • 10 past events & 15 future events (distributed to the organizations and some users are registered)

Profile Picture for an organization

Based on #4

  • Install BLOB storing database module (using the abp add-module Volo.Abp.BlobStoring.Database command). We will store profile picture to the BLOB storing system.
  • Convert the organization edit page to a tabbed view with two tabs: Profile Info (current) and Profile Picture.
  • In the profile picture tab, allow user to upload a profile picture. Max size: 1MB. No resolution control for now.
  • Show the profile picture on the organization page.
  • Show the profile picture on the organizations list.

Profile show & edit for an organization

  • Create an page (not modal) to edit an organization profile (displayname, website, medium... etc.). Name is not editable for now (because it is a part of the URL and if we allow edit, some pages disappear from the website). After editing, return to the organization page.
  • Add a Edit link to the organization page (that is only visible to the organization owner) to go to the edit page.
  • Show website and social media icons on the organization page if they are filled.

Note: Cover image will be a separate issue.

Eventhub organization membership

  • Join this organization & Leave this organization buttons in the organization page (Just like register/cancel/login buttons in the event page)
  • List of members of the organization (just like attendees of an event page) - show last 10 joined members for now

Create Invoices page

If a user owns one or more premium organizations, create a page where they can download invoices for their payments.

EventHub Admin: Managing events

  • Show a list of events in a standard datatable. Show event Title, organization display name, attendee count, start time. Can be able to short by any column. Should be able to filter by a date range for start time, min/max attendee count and search by title & organization display name.
  • Allow to edit event details. We can create a modal with three tabs (event info, timing, cover image). We will have a single save button here.
  • Show attendees in a new page (add an action to the actions list to redirect), add and remove users to the event in this new page. While adding, we can be able to search from a user list in a modal. Make this modal as a reusable "user pick" component.

Note: We don't want to create/delete events here.

Basic Emailings for the EventHub

  • Sending an email when the user registers to the event. Add email sending to background job (see doc).
  • Create a background worker & send reminding emails to all attendees 30 minutes before the event starts. Add a IsRemindingEmailSent to the Event entity to know if it was sent before. Send emails in a simple loop with try-catch (we ignore errors in first implementation).
  • Send emails to members of the organization when a new event is created. Send emails in a background worker. Add a IsEmailSentToMembers to the Event entity to know if it was sent before. Send emails in a simple loop with try-catch (we ignore errors in first implementation).

Create 3 very simple email template for now.

Track, Session and Speaker system

The new Event aggregate

image

image

Example

image

Notes

  • Create/edit forms will be converted to a wizard (with multiple steps)
  • Add IsDraft to event, so we don't publish the event without finishing it.
  • "Create event" link opens a page that user can continue to a draft event or create a new one. If no draft available, directly go to the new event page.
  • Save all changes to database, so we don't loose anything.

Revision for EventTimingChangeWorker/EventTimingChangeNotifier

I see that we've added IsTimingChangeEmailSent property to EventRegistration. That makes the code complicated and requires more database operations to perform.

We should move the IsTimingChangeEmailSent property to the Event entity. We've already done it like that in EventReminderWorker and NewEventWorker. So, use the same pattern here.

Editing eventHub event details and timing

  • Create an page (not modal) to edit the event properties. After editing, return to the event page.
  • Create a tabbed view: Event Information & Event Timing. Every tab has its own save button (independently saved to 2 different endpoint in the server).
  • Event Information tab: Title, Description, IsOnline, Capacity, Location, Language, OnlineLink properties can be freely edited.
  • Capacity can not be lower than the currently registered people count. Throw a business exception in this case. Also check on the UI for a better user experience.
  • Event Timing tab: StartTime and EndTime is edited and saved. Write a note: "If you change the event times, an informational email will be sent to all attendees". When user saves, show a last confirmation and also write the same note again here. Send emails in background worker (you can add a new event property for it).
  • A business rule: Can not change the event timing more than two times. Write this as a note and throw a business exception if trying to change 3rd time. You can add TimingChangeCount property to the event. This is an application rule (admin application will able to change it without any limitation), not domain rule.

EventHub Payment module integration

  • Introduce "Premium" organizations: Add IsPremium and PremiumEndDate to the Organization entity.
  • Show badge near to premium organizations. Currently, premium organizations have no extra features. We think on that later.
  • Use Payment module to pay $29 (for 1 year) to upgrade Free organization to Premium organization. Only the organization owner can do that. We can allow the user to pay for an organization under his profile page / organizations tab.
  • In addition to free -> premium upgrade, also allow to extend the premium organization in the last 3 month of the premium end date. Essentially, we get the same amount of money ($29) and update PremiumEndDate once the payment success.
  • Create a background worker that checks PremiumEndDates of premium organizations and send email to remind to renew in last 1 month of PremiumEndDate. We can create a field on the organizations table to indicate if the email sent, just as like other emails.

branch: https://github.com/volosoft/eventhub/tree/payment-module

Event cover image

Continuation of #7 and similar to #5

  • Add a 3rd tab to the event editing page to upload the cover image. Max size: 1MB. No resolution control for now.
  • Add an optional cover image upload field to the event creation page with same rules.
  • Show the profile picture on the event detail page.
  • Show the profile picture on the event list.

Make background workers testable

Currently, background workers and related notifiers are not well testable and actually they are not tested. We should refactor to make them testable.

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.