Coder Social home page Coder Social logo

reimplementation-back-end's Introduction

Expertiza

Build Status Coverage Status Maintainability

Peer review system

Expertiza is a web application where students can submit and peer-review learning objects (articles, code, web sites, etc). It is used in select courses at NC State and by professors at several other colleges and universities.

Setup

NCSU VCL image

The expertiza environment is already set up in NC State's VCL image "[CSC517, S18] Ruby on Rails / Expertiza".

Using the VCL is the quickest way to get started, but you may find it awkward developing on a remote machine with network lag and having to reinstall gems every time you connect. Installing locally can be a pain though too. Life is full of tradeoffs. :-) The good news is that you can start on one environment, push your work to git, and switch to another environment if you don't like the one you started with.

Steps after getting a VCL reservation

  • Clone the code
  • Run bash setup.sh
  • Run sudo gem install bundler -v 1.16.6
  • Run bundle install
  • Open config/database.yml and add the password as expertiza
  • Run rails db:migrate
  • Run rails s

Installing locally

See the Google doc on setting up the Expertiza development environment.

Depreciation warning: See the Expertiza wiki for setup instructions. Please update the wiki with corrections or additional helpful information. (http://wiki.expertiza.ncsu.edu/index.php/Development:Setup:OSX, http://wiki.expertiza.ncsu.edu/index.php/Development:Setup:Linux:RHEL, http://wiki.expertiza.ncsu.edu/index.php/Creating_a_Linux_Development_Environment_for_Expertiza_-_Installation_Guide)

Contributing

  • Fork the expertiza project
  • Create a new branch for your contribution with a descriptive name
  • Commit and push until you are happy with your contribution - follow the style guidelines below
  • Make sure to add tests for it; the tests should fail before your contribution/fix and pass afterward
  • Send a pull request to have your code reviewed for merging back into Expertiza

Style Guidelines

We've had many contributors in the past who have used a wide variety of ruby coding styles. It's a mess, and we're trying to unify it.

All new files/contributions should:

  • Use unix line endings (Windows users: configure git to use autocrlf)
  • Indent with 2 spaces (no tabs; configure your editor) both in ruby and erb
  • Follow the Ruby Style Guide style for syntax, formatting, and naming
  • Follow the design guidelines for the views.

When editing existing files:

  • Keep the existing tabbing (use tabs instead of spaces in files that already use tabs everywhere; otherwise use spaces)
  • Keep the existing line ending style (dos/unix)
  • Follow the Ruby style Guide on code you add or edit, as above

Please do no go crazy changing old code to match these guidelines; it will just create lots of potential merge conflicts. Applying style guidelines to code you add and modify is good enough. :-)

Instructions to get production database ssh into a computer running Expertiza, e.g., an NCSU VCL node. ssh into expertiza.csc.ncsu.edu On production server, run mysqldump -uroot -p --databases expertiza_production > dump.sql #exports database from production On VCL, run sudo iptables -I INPUT -p TCP -s <IP_OF_PRODUCTION> -j ACCEPT #allows SCP requests Run SCP to your VCL scp dump.sql <unity_id>@<VCL_IP>:/home/<unity_id> mysql -uroot -p expertiza_development < dump.sql #loads database into production

reimplementation-back-end's People

Stargazers

 avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

reimplementation-back-end's Issues

Reimplement Assignment module

The Assignment module in the previous version of Expertiza is not in a very good shape with respect to design and modularity and violates the single responsibility principle, making it challenging to comprehend and upkeep. Therefore, we must re-implement the assignment functionality and related modules in a more organized manner that is both manageable and coherent.

Points to consider:

  • We first need to come up with a design or class diagram for the assignment functionality
  • As per the new design, we need to have a new database schema.
  • We need to keep in mind that we are following Backend for Frontend design pattern
  • Backend eventually provide data for the frontend to render.

FEATURE: implement Invitations

Implement Invitation model and InvitationsController. The Invitation model and InvitationsController are responsible for managing invitations between users in a team-based assignment system. The system allows a student to invite another student to their team by creating a new Invitation record, which is associated with the inviting and invited students and the assignment they are working on. The invited user can accept, decline, or cancel the invitation, which updates the corresponding Invitation record and may trigger actions such as adding or removing users from teams. The InvitationsController includes methods for creating, accepting, declining, and canceling invitations, as well as checking the status of the user and team before sending or accepting invitations. The system also sends email notifications to invited users when a new invitation is sent. Overall, the Invitation model and InvitationsController are crucial for managing team membership and collaboration in a team-based assignment system.

Reference: invitation_controller.rb

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.