Giter Site home page Giter Site logo

tighten / symposium Goto Github PK

View Code? Open in Web Editor NEW
171.0 22.0 61.0 13.21 MB

Management of proposals, bios, photos, etc. for conference speakers.

Home Page: https://symposiumapp.com/

License: MIT License

PHP 76.89% JavaScript 1.01% CSS 0.26% Vue 5.76% Blade 16.07%
laravel php conference-speakers symposium conference hacktoberfest

symposium's Introduction

Symposium_banner

Symposium

Actions Status

A web app for conference speakers to track talks, bios, and conferences. Free, available online at Symposiumapp.com.

A fun side project by some lovely folks at Tighten Co..

Additional resources

Requirements

Installation

  1. (Optionally) Fork this repository
  2. Clone the repository locally
  3. Install dependencies with composer install
  4. Copy .env.example to .env and modify its contents to reflect your local environment.
  5. Place your Algolia keys in the .env file. This is also required for running PHPUnit tests.
ALGOLIA_APP_ID=your-app-id-key
ALGOLIA_SECRET=your-secret-key
  1. Generate an application key
php artisan key:generate
  1. Run database migrations. If you want to include seed data, add a --seed flag.
php artisan migrate --env=local
  1. (Optionally) Enable the API. This will output two client ID/secrets that you can use for testing
php artisan passport:install
  1. Install frontend dependencies with npm install
  2. Build CSS with npm run dev
  3. Configure a web server, such as the built-in PHP web server, to use the public directory as the document root.
php -S localhost:8080 -t public
  1. Run tests with composer test.

Upgrading

composer update tighten/symposium

Testing

php artisan test

Contributing

Please see CONTRIBUTING for details.

Security

If you discover any security related issues, please email [email protected] instead of using the issue tracker.

Credits

License

The MIT License (MIT). Please see License File for more information.

Screenshots

screenshot of dashboard page

screenshot of talks page

screenshot of conference page

screenshot of calendar page

symposium's People

Contributors

adamwathan avatar andrewmile avatar assertchris avatar besologic avatar bmitch avatar cookieguru avatar damiani avatar darkboywonder avatar driftingly avatar elazar avatar faissaloux avatar faxblaster avatar greydnls avatar imjohnbon avatar introwit avatar jonathantorres avatar josecanhelp avatar jwalton512 avatar laravel-shift avatar m1guelpf avatar mattstauffer avatar michaelrtm avatar mrmercan avatar myleshyson avatar peter279k avatar rdohms avatar sureemo avatar tomdiggle avatar vmitchell85 avatar xethron 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

symposium's Issues

Add option for no CFP.

Some conferences do personal invites or don't run a standard call for papers (SOLIDay is one). It would be great to have an option for no CFP.

Add time zones

It would be helpful to know the time zone for a CFP closing. That way we could differentiate between "CLOSING NOW" and "ACTUALLY IT CLOSED THREE HOURS AGO" based on time zone issues.

Do all users need to be able to create conferences?

Right now on the conferences page, we have an "Add Conference" button. I don't think there's any danger or anything in letting people add conferences, but let's make sure this solves a real problem for a speaker, just because it competes for attention in the interface.

Right now we're breaking things up in a very Route::resource sorta way, with a conferences index, talks index, etc. but I can imagine down the road improving this and reducing how much navigation people need to do to keep track of this stuff. Maybe the conference list is always in the sidebar for example so you're always reminded of what conferences are closing soon, or maybe we have a unified dashboard that has a call to action for adding a new talk, but also lists information about the conferences you're interested in.

Once you start to combine that information into something that gives a speaker the information they need in a really efficient way, it becomes much more important to trim any fat that's competing for attention in the interface.

Maybe a subtle "Are we missing a conference?" link in small text at the top right of the table that pops open the user's email client with a prefilled subject is a better solution than a whole conference CRUD interface for end users for example.

Add bios

Different sizes, and versions, of bios are necessary for conference submissions

[Proposal] - API

I've had a (as-yet-private) conversation with a party interested in consuming a REST API from Symposium.

MVP, to me, would be read-only REST-style endpoints for talks, with oAuth2 authentication.

Thoughts? I'll probably spec something out but don't want to go too far into it until we have more conversations.

Code cleanup inspired by @adamwathan's code review

Global changes that could be made based on code review on #55 (and other noticing of how old this code base is)

  • Change all Redirect::to to Redirect::route
  • use the FQCN for Façades, not the façade... e.g. don't use Auth.
  • Find if any other types (other than Bio) use $bio = Bio::where('id', $id)->firstOrFail(); when they should use `
  • Allow show to just 404 instead of catching all find or fail exceptions, etc.
  • Use relationships to skip ownership checks in controllers like we did in bio (e.g. $bio = Auth::user->bios()->findOrFail($id);)
  • Move from using the separate file UUID system to a baseUuidModelThingy system
  • Drop all php 5.3 arrays
  • Drop guarded, rely on fillable
  • stop relying on <br> in forms for spacing
  • Extract %index-list to a manually--applied base class
  • Replace all manual links to other pages on the site to be named routes

Add GitHub login

UPDATE: See bottom of the thread for our final decision that now needs to be implemented: #56 (comment)


The Gravatar PR got me thinking. If we are targeting tech conferences (which I think we should, it's a huge market on it's own but still focused enough that we can really provide an optimized experience), maybe GitHub login would be a good idea?

Gravatar sort of annoys me because the only way you have one is if you created a free Wordpress.com blog or manually created a Gravatar account. With GitHub login, we turn the sign up process into a single click (I seriously love logging in with GitHub for tech sites), and we have a way higher chance of getting a good default avatar. Should still allow people to override it with a new photo for their bios, but still. Could even see down the road how it might be cool to like "Export your Symposium data to a GitHub repo" through the GitHub API.

If you think it's a good idea, I would suggest making it the primary sign up option, maybe even only sign up option, and providing a link for users with legacy accounts to still login with email/password and then get prompted to link their GitHub account.

What do you think?

Adding day of week name to date output

Can you add the day of the week name or abbreviation to your date outputs, especially on the conference listing pages. Will help people with planning and keep them from having to constantly bounce back and forth to other calendar apps.

Thanks

[Proposal] - Peer Review Process

** I hit submit too early... **

This is a fairly large set of features but could be really interesting for Symposium IMO and would be really useful and would replace Gists for my proposals (which I see as a bad alternative due to not really being able to lock things down).

First the User Stories:

  • User can invite reviewer by email (maybe add a note?)
  • Reviewer receives email to review proposal with link (logic tree here)
    • If email address is already registered then link to review screen
    • If email is not registered then link to subscribe screen
  • Reviewer can view current and existing versions
  • Reviewer can comment on proposal (not sure if this should be a stream that exists across all versions)
  • Proposal creator can mark comment as addressed?

Like I said, it's alot and a rather big change.
I have been working on a lot of stuff with Lock for Access Controll using Conditions to do advanced permissions without resorting to database based permissions (which get out of sync too easily IMO).
One advantage on my recent projects has been that it has been that they were JS rendered so some of the super stateful UI things required by ACL things like this are really well suited and I haven't tackled these more stateful views on the server side.

Or if it's under a reviews uri then you don't have to worry quite as much, but you loose the sharability having the same URL between everyone.

Create an actual design/UI

This is just an acknowledgment that, right now, this app is 100% Bootstrap simple ugliness, and UI & design will be a priority--later.

Slugs shouldn't matter

Slugs are used, and constrained as unique, because it's copied from Markedstyle, but this shouldn't matter in an app like this.

Build CFP Dashboard

See #62 for the conversation that led to this.

This does not include removing the current all conferences page. We will remove that once we've also replicated its functionality that isn't captured here (e.g. "ability to find a list of conferences I've submitted to that haven't happened yet")

Create a "submit to conference" button

Connected to #12, not only allowing users to mark a specific talk as "sent to" a particular conference, but actually using the Symposium UI to directly submit it to any conference that's allowing us to send talks in automatically.

Many, many precursors to this one. First step is probably working with OpenCFP to get this feature enable-able for their conferences

Other considerations: Callback URL for acceptance/rejection? Which fields are sent? Do we need to add fields that are specifically about the sending-in (e.g. if a conference asks people to prioritize their talks or something else)

Replace favoriting with dismissing

See #62 for the conversation.

Drop favorite, but have a similar mechanism that means "dismiss this conference as uninteresting," which removes it from the CFP pages.

Notes:

Adam

What do you think makes more sense, being able to favorite conferences and then enable the filter that removes non-favorited conferences, or doing the opposite, and having something like a "Not interested" action that keeps track of ignored conferences, and doesn't show them unless you click a filter that says something like "Include ignored conferences"?

Matt

Some stuff about liking the positivity of favoriting instead of the negativity of dismissing.

Adam

Favorite vs. Dismiss

I think I agree that it's more natural to say "ooo yeah this looks like a good fit for me", the only reason I pitched the other one is because it removes the step of manually switching to the "show me my favorites" view, and you can't add new favorites when you are already in that view (since you're only seeing things you've already favorited), so you have to keep toggling back and forth, and you can't show the favorited view by default because people would miss seeing new conferences they haven't favorited yet.

With a "dismiss" workflow, you could always default to the "not dismissed" view, which would show new conferences as they are added, but always hide things you've opted out of. I think it's a much simpler workflow with a lot of benefits, although again I do agree that favoriting feels more natural than dismissing in some ways.

That might work in our favor though, because I think what you're saying and I agree, is that with dismiss vs. favorite, you would end up with different sets of CFPs. Like I'm not going to dismiss everything that I wouldn't have favorited, and I'm not going to favorite everything that I wouldn't have dismissed. My hunch is that favoriting would lead to a smaller list than "not dismissed", because people would only dismiss CFPs that they really know they aren't interested in.

I dunno, I think I really like the simpler workflow that it creates, but I'm open to discussion. Maybe prototyping both would be the best way to figure out which solution feels like a better experience.

Add universal conference concept

Visible to all, creatable by users, hopefully synced with OpenCFP, allow users to favorite conferences and attach specific revisions of talks to one or many conferences

Integration with OpenCFP

OpenCFP is currently working on getting an API together to support use-cases like this system. I would consider the current status of development on that to be pre-draft (still fleshing ideas out).

However, I'd like to drop an issue here to see if there is interest in adding a "submit talks to conference" feature here whereby a prospective speaker could (minimally) push talks to a particular OpenCFP instance OR (ideally) complete the entire registration process in addition to submitting talks; achieving ultimate convenience for a speaker by reducing submission to pretty much a "one-click process".

I'm helping out over there because it's an awesome project and so is this and am interested in getting your thoughts here and helping with an implementation.

In order to reduce the amount of work required to visit each conference site and submit talks
As a prospective conference speaker
I want to be able to submit selected talks to a conference

Background:
  Given I have authenticated to SaveMyProposals
    And I have a version of a talk in SaveMyProposals I want to submit to conference CFPs

Scenario: Conference site has an mechanism to allow talks to be added externally
  Given I am reviewing conferences that have a CFP and the CFP has not ended
  When I choose to submit my talk(s) to the conference
  Then the talks are submitted using the appropriate appropriate mechanism for submission

Scenario: Conference site does not have a mechanism for adding talks from an external service
  Given I am reviewing conferences that have a CFP and the CFP has not ended
  When I choose to submit my talk(s) to the conference
  Then I am informed that the remote conference site does not support an external talk publishing option
    And I am directed to the CFP landing page for that conference

...

There are more scenarios to add to this, but I hope this is enough to start a conversation! Thanks @mattstauffer!

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.