Git Product home page Git Product logo

epicenter's Introduction

Coverage status Code climate

Epicenter

This app handles a few different things for Epicodus students, staff, and partner internship companies, including:

  • Tuition
  • Enrollment
  • Attendance
  • Code Reviews
  • Internships

It's designed to be flexible enough that other schools can adopt it with minimal changes.

Contributions from students, alumni, and other schools are welcome! If you'd like to add a feature, please open a GitHub issue to discuss it with the project's maintainers first.

Configuration

  1. git clone https://github.com/epicodus/epicenter.git
  2. cd epicenter
  3. cp .env.example .env
  4. Update the example values in .env as needed
  5. bundle
  6. rails db:create && rails db:schema:load && rails db:seed
  7. rails s and visit localhost:3000
  8. to sign in as an admin, use: [email protected] and password
  9. to sign in as a student, use: [email protected] and password

License

GPL2

epicenter's People

Contributors

beeham avatar dependabot-support avatar dustinbrownman avatar hewhoshallnotbementioned avatar jakekaad avatar jenmccarthy avatar karvari avatar kellywerks avatar macmm avatar maureendugan avatar mgoren avatar michaelrkn avatar moofmayeda avatar tomatics avatar

Stargazers

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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

epicenter's Issues

Catch bank account verification exceptions

If one user has added a bank account and has not yet verified it, and another user tries to add the bank account, Balanced raises an exception when we try to create the test deposits:

Balanced::PaymentRequired(402)::Payment Required:: POST
https://api.balancedpayments.com/bank_accounts/BA7GwdoWxHBMg7GIRH3Zf7pB/verifications:
bank-account-credit-declined: 440t: There is already a verification
pending for this bank account Your request id is
OHMfdb46652b63411e4adbd02b12035401b. -- There is already a
verification pending for this bank account

We should catch this exception and display a nice error to the user.

Submission view for students

Students should be able to view their submission in order to see the feedback they got from the teacher's review. Here's a wireframe of the basic look:
assessment__submission_show_student
The path for this view should be /assessments/:id/submission (note the singular submission) and will route to submissions#show. This route already exists, it's just an important thing to keep in mind.

For now, do not worry about being able to add a code block to the notes. Later we will add the ability to parse the notes from markdown to HTML.

'FROM_EMAIL_REVIEW'

I think this ENV variable is the reason why tests are failing on my end. What can I set this to to get my tests to pass?
I don't have these set:

FROM_EMAIL_PAYMENT

FROM_EMAIL_REVIEW

Handle bank account verification updates

Currently, we don't do anything when a bank account verification succeeds or fails. We should:

  • see if we get notified by a Balanced callback;
  • assuming there is one, update the status of the account or destroy it;
  • notify the user by email.

Upgrade Heroku database

The database HEROKU_POSTGRESQL_AMBER_URL on Heroku app epicodus-payments is approaching its allocated storage capacity.

The database contains 7,676 rows. The Hobby-dev plan allows a maximum of 10,000 rows. If the databases exceeds 10,000 rows then INSERT privileges will be revoked, preventing more data from being written. INSERT privileges are automatically reinstated if rows are removed and the database once again complies with the plan limit.

To avoid a disruption to your service, migrate the database to a Basic ($9/month) or higher plan:

https://devcenter.heroku.com/articles/upgrade-heroku-postgres-with-pgbackups

Sync Epicenter to Close.io

Specifically, when a student signs their docs and pays, update their Close.io status using the Close.io API.

Flagging submissions as needing review

When submission are first created, they need to be flagged as needing review. After they have been reviewed, that flag should be removed. If the student resubmits, it should be flagged again as needing review.

Probably one of the more simple ways to handle this is by using callback in the submission model (after_create and after_update).

Feature request: Include notes with grades report

It would literally save me hours if we could view the notes included with assessment reviews for each student in the grades report view. This would allow me to do quite a few things:

  • When I have done a good job of explaining an error for one student, and then later another student makes the same mistake, I could go to the grades report and copy / paste the explanation.
  • I could see at a glance what a student needs to work on and what I should check in with them about. For example, there's some people where I feel like I've explained to them why a detailed commit history is really important a couple times. So if I have an easy way of checking to see if I have already explained something fully or not, then I can either check on them in person during class or change the way I'm phrasing my explanation in the feedback to be a bit more direct: "As per last week's feedback, you still need to work on making more commits. If you need more information about that, come and talk to me." Instead of sounding like a broken record and reiterating an entire paragraph about how it's easier to track down bugs if everything isn't all squished into one commit.

Styling needs to be finalized for assessment show page

When a student visits the show page for an assessment, they should be able to see the title, description, and requirements for that assessment. They should also be able to submit a link for their assessment or navigate to their submission once it has been graded. Some of this is already built out, but it needs to be styled appropriately. Here is a wireframe of the basic style:
assessment_show_student
Do not worry about teacher specific elements. That should be added later.

Internship information & Ratings

Description

Rian and Luke are building an internship and ratings application in Sinatra. I am looking at what it would take to port the idea is to port it into the Epicenter.

Summary of additions

We would need to add only ( I think) 2 models. Internship & InternshipRating. Internships would belong to a cohort to keep them organized by class. InternshipRating would use a join table, belonging to a user and an internship.

2 controllers and associated routes
Internship with actions index, show, new, create, edit, update, delete
InternshipRating with actions new, create, edit, update

Views with their supported admin only features

Model specs, controller specs, integration spec

Anything else?

Is there something I didn't cover in here that I would need to make this a useful addition to epicenter?

transaction fee not being charged correctly

Current method to calculate credit card fee:

def calculate_charge(amount)
    ((amount / BigDecimal.new("0.971")) + BigDecimal.new("0.3")).to_i
 end

Since all amounts are stored in cents, we are currently adding 0.3 of a cent instead of 30 cents for the transaction fee.

New method:

def calculate_charge(amount)
    ((amount / BigDecimal.new("0.971")) + 30).to_i
 end

add scope for sorting students by their total score for an assessment

Right now the logic that handles sorting students on the assessment report is in the view. This is not ideal. We eventually need to add a scope to handle this. Unfortunately, the way we calculate student score is through a fairly hairy method Assessment#final_total_score_for(student). That method will have to be cleaned up before this can be solved.

New review form isn't populated with scores from previous review.

Ideally, when creating a new review, it'd be helpful if the grades and notes were pre-filled with values from the previous review. My first inclination is to have the form edit the review rather an creating a new one. However, this would prevent us from having a history of reviews (something I'm not even sure we want). The other option is to somehow populate the new review with values and associations of the last review. Exploring this avenue proved hairy, though I'm not totally ruling out that option. Eventually, this should be fixed.

Epicodus IP address

We were trying to figure out a way that users could log-in from their paired computer in class, rather than having the master check-in. We noticed that devise keeps track of the ip you are currently signed in on.

Could we use the Epicodus IP to validate that you are at school, on the epicodus network to make sure that you are checking in at school. Would there be a better way to verify this?

Allow students to split payments among methods

Often, a student will want to pay their tuition on a couple different cards or bank accounts. We should provide a way for students to enter the amount they'd like to be charged and what payment method they'd like to use.

Assessment status for students

When a student views a assessment (or the list of assessments) they should see different information on whether or not they have made a submission for that assessment, and if that submission has been reviewed. For now, we just need way for determining this status. We will worry about using them in the views later. Here's a couple of quick thoughts:

# A user method that can be called on current_user
class User
  def has_submission_for(assessment)
    ...
  end # returns true or false
end

Or

# An assessment method where you pass in current_user
class Assessment
  def has_been_submitted_by(user)
    ...
  end # returns true or false
end

Invalid routing number raises an exception to the user

New exception in epicodus-payments

Balanced::BadRequest · bank_accounts#create
Balanced::BadRequest(400)::Bad Request:: GET https://api.balancedpayments.com/bank_accounts/BA2jRNMs3utNfKJvRDAZz4x1: invalid-routing-number: Routing number is invalid. Your request id is OHM4d4e898e9daa11e484ce02b12035401b.

STAGE
production

SEVERITY
error

URL
https://epicenter.epicodus.com/bank_accounts

Stacktrace summary

app/models/verification.rb:8 · initialize
app/models/bank_account.rb:20 · new
app/models/bank_account.rb:20 · create_verification
app/controllers/bank_accounts_controller.rb:9 · create

Allow users to have multiple payment methods

To Do

  • Allow users to add multiple payment methods (credit cards / bank accounts)
  • Display all payment methods to user, including those that are pending
  • User can change any of their payment (non-pending) payment methods to be the primary
  • User can delete payment methods, except if it is the primary?

Done

  • The first payment method entered should default to the primary method
  • Display which payment method (payment type + last 4 numbers) was used for each payment (payments#index)

users have many grades?

This looks like leftover code that needs to be removed. I believe it's from before we had the review model, which should belong to a teacher (admin).

Viewing all submissions for an assessment.

We need a view that allows teachers to see all the submissions for an assessment. The url should look like /assessments/:slug/submissions (notice the plural submissions) and map tosubmissions#index`.

The list of submissions should be scoped to those flagged as needing review and ordered by date submitted (ASC).

Each list item should expand to show a form for creating a review for that submission. This can be done with AJAX or just jQuery.

Here's a basic wireframe:
assessment__submissions_index_teacher

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.