GithubHelp home page GithubHelp logo

playasoft / grants Goto Github PK

View Code? Open in Web Editor NEW
3.0 7.0 3.0 674 KB

An online question and answer system for receiving grant funding from non-profits

License: GNU Affero General Public License v3.0

PHP 63.32% JavaScript 6.20% SCSS 0.75% Blade 29.73%

grants's Introduction

weightlifter

A laravel app to create weighted questionaire systems

Dependencies

  1. A webserver that supports PHP (nginx and php-fpm recommended)
  2. mysql
  3. node.js and npm installed on your system
  4. gulp installed globally (npm install -g gulp) or locally if you know what you're doing
  5. composer, the PHP package manager

Installing

  1. Git clone this repo
  2. Set laravel/public/ as your webserver's document root
  3. Run composer update --no-scripts within the laravel folder
  4. Run composer install within the laravel folder
  5. Run npm install within the laravel folder
  6. Run php artisan migrate within the laravel folder
  7. Run php artisan key:generate within the laravel folder

Setup / Configuration

  1. In the laravel folder, copy .env.example and rename it to .env
  2. Configure your database settings in the .env file
  3. Run gulp within the laravel folder

Great! Now the project is all set up. In the future, we may want to include compiled scripts and styles when we're ready for a release. This would remove the need for installing node.js, npm, and gulp.

grants's People

Contributors

itsrachelfish avatar kelsh avatar marcj303 avatar meleeman01 avatar michaelmseymour avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

grants's Issues

Only allow admins to approve / deny

Currently the approve / deny options appear for all judges when the applications have been reviewed by at least half of all the judges. This should be changed to only appear for admins and the permissions will need to be updated as well.

Issue when saving datetime

It seems like there is an issue when dates are saved (on the production server at least). The created date is being saved in MST but the modified date is being saved in UTC. This might be because the MySQL server is configured to use MST but laravel is configured to use UTC. The created_at column is updated by using a default value in the database where updated_at is actually generated by Laravel.

This might be a common / known issue in Laravel, I think it would be worth looking in the documentation or Laravel support forums.

Question ordering

Admins should be able to reorder questions from the questions list page, and maybe be able to edit a number from the edit question page?

Relicense project

@marcj303 I have been considering changing the license of the this project from MIT to AGPL. The AGPL license would ensure anyone who uses this software on their own website has to share their changes back to the burner community. As a contributor to this project, how do you feel about that?

Pagination

I'm not sure what the best way to do pagination is in Laravel, but I'm sure it's easy. We'll need pagination for the list of users and list of applications pages especially.

Clarify file upload interface

It seems that some users have problems with the file uploads. Something about the interface isn't clear. I had two applicants email me their files because they couldn't do it. The description was nebulous, but this has happened to a few people.

Sorting columns

Most of the data in the application is provided in tables, the table columns should be sortable.

A score is not saved if the user accepts the default

If the user doesn't click in each criteria scoring form, a score is never recorded for that criteria. This is common that the user accepts the default value displayed.

A default score should be created for each criteria if the ajax doesn't save/create it.

Set up HTTPS

The official apogaea install should use LetsEncrypt for free HTTPS

Add budget to applications table

In the first application creation screen there should be an option to specify the budget. This option should be validated based against the minimum / maximum round options.

User profiles

Users should be able to view and edit their own profiles where they can add additional information about themselves. Real name, contact information, etc.

We'll need to figure out what information is most useful?

budget check error doesn't work in application screen

If the user updates the budget amount on the application screen the error isn't shown if it is out of range.

In the ApplicationController, updateApplication() checks the amount and should return the error, but the ajax doesn't seem to catch it.

The original value is not updated. This confused an applicant as they thought they couldn't update the budget amount. Their update was out of range, but they didn't get a message.

Add list input type

Would be useful for the budget question to force the user to enter an itemized list

Add numeric type field

A new question type should be added for numeric answers. These answers would need server-side validation and maybe some client-side stuff to automatically format the number nicely?

User list

Right now the user list page is just placeholder text. This page should be a list of users in a table, same as the questions page.

Checkboxes and dropdowns lose their values

When a submitted form is prevented by form validation (for example on the question create page), checkboxes and dropdowns have their values reset.

Checkboxes that are checked should remain checked, and dropdowns should have their old value selected.

Email notifications

Email notifications should be sent for the following events:

  • To user when account is registered
  • To user when application is accepted or rejected
  • To user when feedback is requested (queued)
  • To judges when feedback is answered (queued)

It might also be helpful to add an option to only send emails at specific times? Like when an application is accepted / denied, instead of sending an email to a user immediately as approve is clocked.

Search feature

It would be nice to be able to search for users by name or applications by title / content.

AJAX autosave should detect errors

Currently the AJAX autosave always says "Saved!" even if there was an error (the user is logged out, etc)

The autosave code should make sure that the request was actually successful.

Password reset

There is currently no way to recover a forgotten password. This is especially bad because there are currently no confirmation emails sent when accounts are registered, so it's easy for people to forget what username or email they used when registering.

Notification when logged out for inactivity

When a user is logged out for inactivity, there is no indication of this until they refresh the page. This can be especially confusing when a user tries to update their application (which fails, but no error message is displayed) and all of their answers are lost when they go to review.

Add Grant round controls

Add controls for different grant rounds.
Admin should be able to create a grant round, set dates for users to apply and for judges to judge (prevent changes pre/post dates), set the grant round amount etc.

Landing page could automatically show current or upcoming grant round information and statistics.

Users/judges dashboard should show the current grant round applications.

Unhelpful error pages when logged out

If you're on a protected page (for example, editing your own application) you will see a 404 page if your session times out. If you try to save an answer, upload a new document, or refresh the page when logged out, you'll see this 404 page:

Whoops, looks like something went wrong.
1/1 MethodNotAllowedHttpException in RouteCollection.php line 219

You should be redirected to the login page instead

General uploads

In addition to being able to upload files in response to specific questions, it might be necessary that users can also upload supporting files for their application. For example, if a user needs to upload a signed contract.

Is the 'status' option for questions necessary?

The original idea was that questions could belong to specific statuses and only appear to users / judges when an application was in that specific status. However, this would make the code for displaying questions and updating applications much more complicated. I'm wondering if this feature would actually be useful in the future or should be removed.

Add export feature

Add an export for the application and scores views to be imported to a spreadsheet. This is helpful for scoring meetings as well as individual notes etc.

Better handling for large files

Right now there's an obscure error message when an uploaded file is too large. We should mention somewhere on the page what the maximum upload size is and figure out how to tell users a more helpful message when their file goes over the limit.

Add ability for a user to retract/withdraw an application

Some users applied before the deadline and submitted their application and then could not edit it prior to the deadline. A feature to retract an application would be useful, so we don't get multiple submissions for the same project to judge. A user may wish to withdraw during the scoring period (they can't do the project or have any other issue that requires them to withdraw). That would be important to know before final judging and project acceptance.

I think that the following would work:

  1. retract button available to user once they submit
  2. retract put the application back in the new state, removes any scores, ( not certain feedback should be kept or not.)
  3. user resubmits application after making changes (if submissions are allowed).

Countdown timer on the last day

During the last 24 hours or some period before the end of applications being submitted there should be a visible indicator of when submissions will be closed.

Judges general feedback is broken

regarding_type isn't set and blows up when submitting the feedback. Later the feedback-form also throws errors on regarding->exitst.

Refactor ownersip / authorization

There's some boilerplate I've noticed in controllers that should be refactored. Many controllers need to determine if the current user is the creator of a model object or has permission to view / edit it. This logic could probably be handled by a custom middleware with a couple parameters.

// Did the current user create this application?
if($application->user->id != Auth::user()->id)
{
    $request->session()->flash('error', 'Only the person who created an application may change it.');
    return redirect('/login');
}

Hide old applications by default

Applications older than the most recent round should be hidden by default. There should be a button / check box on the applications list to toggle viewing old applications.

Add funds field to application variables

Add requested funds as an application field. This will make it easier to sort and find the funds for an application instead of trying to find it in the questions fields. We can also validate the funds requested are below the limits for that round (once round data is added).

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.