Coder Social home page Coder Social logo

geoff-maddock / events-tracker Goto Github PK

View Code? Open in Web Editor NEW
14.0 14.0 5.0 25.76 MB

CRM and calendar to track events, weekly and monthly series, promoters, artists, producers, djs, venues and other entities.

Home Page: https://arcane.city

License: MIT License

PHP 78.45% Shell 0.01% Vue 0.10% SCSS 0.09% Blade 21.36%
calendar cms events laravel

events-tracker's People

Contributors

dependabot[bot] avatar geoff-maddock avatar redhat-developers-launcher avatar

Stargazers

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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

events-tracker's Issues

User Settings

Story
As a user I would like to be able to manage what notifications I receive from the events tracker.

Potential Solutions

  • Add settings flags to user profile
  • Weekly update
  • Daily update
  • Instant update
  • Default each of this to ON
  • Update the mailer/notifications to check the user permission before creating a notification / email

Other

  • Add settings
  • Add user_settings
  • Add user settings module

Some settings:

  • notifications - email
  • notifications - sms
  • notifications - in app
  • profile visibility?

Home Page feature / design

As a user of events tracker I would like the most useful events data displayed on the home page.

Possible Solutions
Review what is displayed on the home page now and implement some different features.

Generic

  • Add "tabs" for different kinds of events or views of events

Dynamic

  • Add section for "recommended" events based on the user's keywords - either in general or by date
  • Add section for "recently added" events
  • Add popular events or "trending" - have been followed most recently

Consider if you want to even go that way...

Series - Add "Inactive Until"

Allow a series to be set to inactive until a date is reached.
Ex: Weather Permitting is off during the winter

Add a method that re-enables a series when the date is passed.
Might need to add a daily operational task that does this and other things.

Latest comments / posts widget

Add a partial/widget for latest comments.
Use for putting audio and video links on the front page or events.
Only allow admin level users to add script tags

Convert soundcloud links into widgets

Look at the API that can be used to convert a URL into a widget

  • identify a profile and turn into a playlist
  • turn single track links into a player

permissions on folder structure

more of an admin task - make sure i have a script that will reset permissions on the project folder so that it can be served if they get messed up

Add list filter - generic

Need to implement some sort of filter box method.
There really isn't a good one implemented anywhere currently.

  • Save filters to the session based on the page.
  • Load filters from the session when the list page is loaded
  • Add results per page

Add validators or mutators as necesary

This is a general issue. There will be some sanitization needed when saving different fields to the db.

Prevent html or weird characters in event, entity, etc. titles.
Should I prevent scripts from bodies? In some cases I will want to allow, say, soundcloud tags, maybe youtube?

Look at using validation for some fields - to let the user know what they shouldn't enter.
In some cases use mutators to clean the entered values.

Frontend - Inactive Entities / Series

Revisit the style of inactive entities. Currently greyed out, but that doesn't look right.

  • Remove from list, or add filter
  • Change color to give better indication

Add Event/Entity "Share" buttons for social networks

To make it easy to share an event or entity to a social media site by adding share buttons to each event page.

See if there's a generic way to add lots of social buttons?
At minimum try to add Facebook, Instagram, Twitter, What's App

Display urls and emails as links

//show URLs as links
$part = preg_replace('/(?:https?:\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/i', "<a href='$0'>$0</a>", $part);

//show email addresses as links
$part = preg_replace("/[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*/i", "<a href='mailto:$0'>$0</a>", $part);

Events: Visibility: Proposals - Change

Alter how proposals show up.

  • Should only be visible to the creator and to any users tagged
  • Should have some indicator in the view that they are proposals - text and/or color/icon

User > Show improve fail

When there is no profile object, show action fails poorly.
Add automatic profile generation then show

Timeline view

Let users scroll forwards and backwards (up-down or left-right) along a timeline to see when events happened.

This sort of is the way the dash works now.

  • Create a separate route just for the timeline view
  • Add "last week"/"next week" buttons
  • Add as a separate link for timeline view
  • Add event with date search as the default event view?
  • Load more offscreen after initial load and use non-db query to display?

Primary Photo set

When setting the primary photo, unset that flag from any other photo on the object

Facebook event integration

I'd like to be able to pull in event data from Facebook (or other event sources).

  • Add library to connect to the FB API
  • Add capacity to scrape FB events based on a URL and populate an event form, or possibly create a whole event
  • Add capacity to scrape FB page based on a URL and turn into an entity
  • Add button to event or post process to import the event photo as the default photo using graph api

Add useful activity logging

Add activity logging to track

  • user logins
  • any object additions

ACTIVITY table
id
user_id // ex geoff's id
created_at // timestamp
object_table // event
object_id // event.id 1000
object_name // string version of object - LAZERCRUNK with GREAT HEADLINER
child_object_table // comment - related to event
child_object_id // comment.id 656
message // Commented on event LAZERCRUNK
action_id // action.id - created
changes // prob out of the scope of my log needs, but would show the changed fields

User Permissions + Access Roles

Build everything necessary for user permission/access.

  • build schema including groups, permissions, group_permission, group_user
  • build schema for access, access_type, object_type
  • Create an admin interface for adding permissions
  • Create an admin interface for adding groups
  • Make sure the above are only accessable to users with edit permission, edit group
  • Create interface for adding permissons to groups (requires edit group)
  • Create interface for adding/removing groups from users
  • Create seeds that add the groups and permissions i created on events.cutupsmethod.com

Add notifications

  • Add weekly notification summary
  • Add daily notification for events you are attending
  • Add notifications for events for entities you follow
  • Add subscribe to entities
  • Add subscribe to events
  • Allow Email notifications, possibly also facebook email notificaitons?

Events > Add Social Link

Events currently have two links:

  • Primary Link
  • Ticket Link

Add "social link" to capture the primary social networking link?
Add detection to the URL to categorize the link?

Event > Daily followup task for responses

Create a daily task the checks all events, users that marked attending and creates a followup object
When the user logs in, they will be prompted to respond to each event followup

  • What objects are flagged for responses?
  • What is the interface for how the user is prompted for responses? All one page?
  • Send email with links that will accept a response

Add a section to the weekly email that asks the user to follow up and confirm if they attended events and to post about them.
Send that message between 1 and 7 days after the event?

Auto-set slugs

When an object doesn't have a slug, either require it on the form or auto-set it.

I added auto set to something, look into what.

Users > Add user or profile status

Need to be able to change the status of a user

  • Add user_status_id to user
  • Add user_status table
  • Add confirm process that emails the admin with all the info about the user, with urls in the email to either confirm or delete and ban the user (email and/or IP) when a new user is added

Reference:

  • statuses
    • pending (requires admin approval to become active)
    • active (able to use the site)
    • suspended (unable to use the site, but nothing removed)
    • banned (unable to use the site or sign back up with the same email, content redacted but not deleted)
    • deleted (unable to use site, but can sign back up with the same email)

Build API - for external event queries

I'd like to be able to query this app to get a list of events filtered by different criteria to use in other web apps.

  • Add API users / auth
  • Add REST responses
  • Return JSON
  • Add options for number of results, pagination

Add Entity Relationship Types

Define the list of entity relationship types.
I have a list of these somewhere...

  • Member (user is member of group?)
  • Owner
  • Alias
  • Related (just generally related)
    ..

Relates to #2

Relate entities to other entities

Add a method to relate entities to other entities.

  • Include an entity relation type
  • Add linking table (entity_relation_entity)?
  • Specify subject -> relation -> object?

Add notifications for users following objects

When any new object is created, call a "following notification" method.
That will cycle through all the objects related to the entity or event,
and will send a notification to each user who is following that.

  • Entities
  • Tags

[Spike] Frontend Framework

Look at using a framework like VUE JS or React to handle the front end?

  • Consider adding just one component that works with this first.
  • Revisit the code I have - I did enable it via bootstrap.js, but I disabled
  • Ran into an issue where my jquery code broke
  • May want to finish updates to laravel and bootstrap before working on this more.

Database improvement / cache?

Look at improving the database setup to improve speed.
Some of the queries seem to be running pretty slow, especially on pages with many tags.

  • Look at a tool that can analyse the slowest queries running (log?)
  • Verify all the necessary indexes are in place

Document how to benchmark this effectively.
Consider if there is a use to upgrading MySQL?
Look at a list of MySQL optimization tips / checklist

Events - test form

Do more tests with the form - it's erroring out in some case.
Still not clear where. It may have to do with being logged out.

Happens on some saves...may be a date format conversion issue when saving:

FatalErrorException in Connection.php line 457:
Method App\Event::__toString() must not throw an exception, caught InvalidArgumentException: Unexpected data found.
Trailing data

User Event Reviews

Add capacity for users to add event reviews. Schema already exists, but need to build form and response.
Reviews include indicating if the user attended the event and if the event owner confirmed that attendance.

  • Add button on each event that links to the logged in user's event_review, or creates one

  • Open a form that handles the review

  • Add an admin event_reviews module so that admin can browse and monitor

  • Display review attendance on event

  • Confirm attendance (attended - 0 or 1, confirmed 0 or 1 by admin)

  • Review, numeric / qualitative - 1-10?

  • Review, text

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.