Coder Social home page Coder Social logo

symbiod / symbiod Goto Github PK

View Code? Open in Web Editor NEW
25.0 16.0 8.0 1.52 MB

:factory: A place where non-profits and developers meet together

Home Page: https://symbiod.org/

License: MIT License

Ruby 87.49% JavaScript 0.20% CSS 0.79% HTML 0.85% Shell 1.75% Dockerfile 0.17% SCSS 0.29% Haml 8.43% Procfile 0.03%
learn-to-code crowdsourcing non-profit proof-of-concept mvp mentorship leadership

symbiod's Introduction

Symbiod platform

Build Status Open Source Helpers Maintainability Test Coverage Inline docs

image

We want to build a place, where anyone can take part in development of opensource projects, that will help non-profits to bring value to the people.

The approach is that we connect individuals, that have an idea of some useful non-profit project(or event profitable, but tolerant to having the code open to everyone) and developers who wants to participate in those projects.

As a result the author gets the MVP of his project, and developers get experience in real projects(which is very important for beginners). Experienced developers will be able to practice in leading teams, managing the project or event hiring our members for their companies.

Documentation

Feel free to explore our docs, that describe our process and technical details.

Contributing

We have an enormous amount of work and appreciate any kind of help, that can be offered.

If you want to take part in the project as developer then this document is for you!

If you want to take part as designer of manager don't hesitate to drop us an email.

And don't forget to sign up at www.symbiod.org ;)

symbiod's People

Contributors

ahiskali avatar denver411 avatar doms avatar evgeniykrokhin avatar gidpoiiohika avatar hunk13 avatar khusnetdinov avatar lhydra avatar mehonoshin avatar puzinok avatar qwerty2323 avatar reabiliti avatar svishniakov avatar swember avatar trddddd 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

Watchers

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

symbiod's Issues

Setup email notifications

  • Notify staff about the completed screening process
  • Notify candidate about started onboarding process
  • Notify candidate about rejected application. The email should also contain rejection feedback.

Test task submission

After sign up provide a form where a candidate can read the test task and submit links to his solution.

Social network buttons

Facebook
Twitter
Linkedin
Add link to github instead of Fork me link in the corner

Add ability to share with audience developer website

Developer join

At the developer's scope provide ability to sign up through the github.
After signup fetch email from github and persist to the DB.

For roles lets find some suitable gem, make sure that we use the same gem as with #9 issue.

Dashboard for approving suitable candidates

  • Display the list of pending candidates
  • On candidates page display the links to results of the test task
  • Provide Approve/Decline buttons to make a decision regarding this particular candidate
  • Allow access only to stuff role

Fix adding to github existing member

Octokit::Forbidden: PUT https://api.github.com/orgs/howtohireme/memberships/Mehonoshin: 403 - You cannot demote yourself. Admins must be demoted by another admin. // See: https://developer.github.com/v3/orgs/members/#add-or-update-organization-membership
  File "/app/vendor/bundle/ruby/2.5.0/gems/octokit-4.8.0/lib/octokit/response/raise_error.rb", line 16, in on_complete
  File "/app/vendor/bundle/ruby/2.5.0/gems/faraday-0.12.2/lib/faraday/response.rb", line 9, in block in call
  File "/app/vendor/bundle/ruby/2.5.0/gems/faraday-0.12.2/lib/faraday/response.rb", line 61, in on_complete
  File "/app/vendor/bundle/ruby/2.5.0/gems/faraday-0.12.2/lib/faraday/response.rb", line 8, in call
  File "/app/vendor/bundle/ruby/2.5.0/gems/octokit-4.8.0/lib/octokit/middleware/follow_redirects.rb", line 73, in perform_with_redirection
  File "/app/vendor/bundle/ruby/2.5.0/gems/octokit-4.8.0/lib/octokit/middleware/follow_redirects.rb", line 61, in call
  File "/app/vendor/bundle/ruby/2.5.0/gems/faraday-0.12.2/lib/faraday/rack_builder.rb", line 141, in build_response
  File "/app/vendor/bundle/ruby/2.5.0/gems/faraday-0.12.2/lib/faraday/connection.rb", line 386, in run_request
  File "/app/vendor/bundle/ruby/2.5.0/gems/faraday-0.12.2/lib/faraday/connection.rb", line 186, in put
  File "/app/vendor/bundle/ruby/2.5.0/gems/sawyer-0.8.1/lib/sawyer/agent.rb", line 94, in call
  File "/app/vendor/bundle/ruby/2.5.0/gems/octokit-4.8.0/lib/octokit/connection.rb", line 156, in request
  File "/app/vendor/bundle/ruby/2.5.0/gems/octokit-4.8.0/lib/octokit/connection.rb", line 37, in put
  File "/app/vendor/bundle/ruby/2.5.0/gems/octokit-4.8.0/lib/octokit/client/organizations.rb", line 686, in update_organization_membership
  File "/app/app/services/github_service.rb", line 18, in invite_member
  File "/app/app/operations/ops/developer/invite_to_github.rb", line 14, in add_to_github!
  File "/app/vendor/bundle/ruby/2.5.0/gems/trailblazer-context-0.1.2/lib/trailblazer/option.rb", line 74, in call
  File "/app/vendor/bundle/ruby/2.5.0/gems/trailblazer-context-0.1.2/lib/trailblazer/option.rb", line 74, in call!
  File "/app/vendor/bundle/ruby/2.5.0/gems/trailblazer-context-0.1.2/lib/trailblazer/option.rb", line 37, in evaluate_method
  File "/app/vendor/bundle/ruby/2.5.0/gems/trailblazer-context-0.1.2/lib/trailblazer/option.rb", line 14, in block in build
  File "/app/vendor/bundle/ruby/2.5.0/gems/trailblazer-activity-0.5.2/lib/trailblazer/activity/task_builder.rb", line 27, in call
  File "/app/vendor/bundle/ruby/2.5.0/gems/trailblazer-activity-0.5.2/lib/trailblazer/activity/task_wrap/call_task.rb", line 11, in call_task
  File "/app/vendor/bundle/ruby/2.5.0/gems/trailblazer-activity-0.5.2/lib/trailblazer/circuit.rb", line 26, in call
  File "/app/vendor/bundle/ruby/2.5.0/gems/trailblazer-activity-0.5.2/lib/trailblazer/circuit.rb", line 26, in block in <class:Circuit>
  File "/app/vendor/bundle/ruby/2.5.0/gems/trailblazer-activity-0.5.2/lib/trailblazer/circuit.rb", line 43, in block in call
  File "/app/vendor/bundle/ruby/2.5.0/gems/trailblazer-activity-0.5.2/lib/trailblazer/circuit.rb", line 42, in loop
  File "/app/vendor/bundle/ruby/2.5.0/gems/trailblazer-activity-0.5.2/lib/trailblazer/circuit.rb", line 42, in call
  File "/app/vendor/bundle/ruby/2.5.0/gems/trailblazer-activity-0.5.2/lib/trailblazer/activity.rb", line 87, in call
  File "/app/vendor/bundle/ruby/2.5.0/gems/trailblazer-activity-0.5.2/lib/trailblazer/activity/task_wrap/runner.rb", line 22, in call
  File "/app/vendor/bundle/ruby/2.5.0/gems/trailblazer-activity-0.5.2/lib/trailblazer/circuit.rb", line 43, in block in call
  File "/app/vendor/bundle/ruby/2.5.0/gems/trailblazer-activity-0.5.2/lib/trailblazer/circuit.rb", line 42, in loop
  File "/app/vendor/bundle/ruby/2.5.0/gems/trailblazer-activity-0.5.2/lib/trailblazer/circuit.rb", line 42, in call
  File "/app/vendor/bundle/ruby/2.5.0/gems/trailblazer-activity-0.5.2/lib/trailblazer/activity.rb", line 87, in call
  File "/app/vendor/bundle/ruby/2.5.0/gems/trailblazer-operation-0.2.5/lib/trailblazer/operation.rb", line 64, in __call__
  File "/app/vendor/bundle/ruby/2.5.0/gems/trailblazer-operation-0.2.5/lib/trailblazer/operation/public_call.rb", line 20, in call
  File "/app/app/jobs/developer/onboarding/github_job.rb", line 16, in perform
  File "/app/vendor/bundle/ruby/2.5.0/gems/activejob-5.2.0.rc2/lib/active_job/execution.rb", line 39, in block in perform_now
  File "/app/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.0.rc2/lib/active_support/callbacks.rb", line 109, in block in run_callbacks
  File "/app/vendor/bundle/ruby/2.5.0/gems/newrelic_rpm-5.1.0.344/lib/new_relic/agent/instrumentation/active_job.rb", line 50, in perform
  File "/app/vendor/bundle/ruby/2.5.0/gems/newrelic_rpm-5.1.0.344/lib/new_relic/agent/instrumentation/active_job.rb", line 22, in block (3 levels) in <top (required)>
  File "/app/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.0.rc2/lib/active_support/callbacks.rb", line 118, in instance_exec
  File "/app/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.0.rc2/lib/active_support/callbacks.rb", line 118, in block in run_callbacks
  File "/app/vendor/bundle/ruby/2.5.0/gems/i18n-1.0.0/lib/i18n.rb", line 268, in with_locale
  File "/app/vendor/bundle/ruby/2.5.0/gems/activejob-5.2.0.rc2/lib/active_job/translation.rb", line 9, in block (2 levels) in <module:Translation>
  File "/app/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.0.rc2/lib/active_support/callbacks.rb", line 118, in instance_exec
  File "/app/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.0.rc2/lib/active_support/callbacks.rb", line 118, in block in run_callbacks
  File "/app/vendor/bundle/ruby/2.5.0/gems/activejob-5.2.0.rc2/lib/active_job/logging.rb", line 26, in block (4 levels) in <module:Logging>
  File "/app/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.0.rc2/lib/active_support/notifications.rb", line 168, in block in instrument
  File "/app/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.0.rc2/lib/active_support/notifications/instrumenter.rb", line 23, in instrument
  File "/app/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.0.rc2/lib/active_support/notifications.rb", line 168, in instrument
  File "/app/vendor/bundle/ruby/2.5.0/gems/activejob-5.2.0.rc2/lib/active_job/logging.rb", line 25, in block (3 levels) in <module:Logging>
  File "/app/vendor/bundle/ruby/2.5.0/gems/activejob-5.2.0.rc2/lib/active_job/logging.rb", line 46, in block in tag_logger
  File "/app/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.0.rc2/lib/active_support/tagged_logging.rb", line 71, in block in tagged
  File "/app/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.0.rc2/lib/active_support/tagged_logging.rb", line 28, in tagged
  File "/app/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.0.rc2/lib/active_support/tagged_logging.rb", line 71, in tagged
  File "/app/vendor/bundle/ruby/2.5.0/gems/activejob-5.2.0.rc2/lib/active_job/logging.rb", line 46, in tag_logger
  File "/app/vendor/bundle/ruby/2.5.0/gems/activejob-5.2.0.rc2/lib/active_job/logging.rb", line 22, in block (2 levels) in <module:Logging>
  File "/app/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.0.rc2/lib/active_support/callbacks.rb", line 118, in instance_exec
  File "/app/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.0.rc2/lib/active_support/callbacks.rb", line 118, in block in run_callbacks
  File "/app/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.0.rc2/lib/active_support/callbacks.rb", line 136, in run_callbacks
  File "/app/vendor/bundle/ruby/2.5.0/gems/activejob-5.2.0.rc2/lib/active_job/execution.rb", line 35, in perform_now
  File "/app/vendor/bundle/ruby/2.5.0/gems/activejob-5.2.0.rc2/lib/active_job/execution.rb", line 24, in block in execute
  File "/app/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.0.rc2/lib/active_support/callbacks.rb", line 109, in block in run_callbacks
  File "/app/vendor/bundle/ruby/2.5.0/gems/activejob-5.2.0.rc2/lib/active_job/railtie.rb", line 28, in block (4 levels) in <class:Railtie>
  File "/app/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.0.rc2/lib/active_support/execution_wrapper.rb", line 87, in wrap
  File "/app/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.0.rc2/lib/active_support/reloader.rb", line 73, in block in wrap
  File "/app/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.0.rc2/lib/active_support/execution_wrapper.rb", line 83, in wrap
  File "/app/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.0.rc2/lib/active_support/reloader.rb", line 72, in wrap
  File "/app/vendor/bundle/ruby/2.5.0/gems/activejob-5.2.0.rc2/lib/active_job/railtie.rb", line 27, in block (3 levels) in <class:Railtie>
  File "/app/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.0.rc2/lib/active_support/callbacks.rb", line 118, in instance_exec
  File "/app/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.0.rc2/lib/active_support/callbacks.rb", line 118, in block in run_callbacks
  File "/app/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.0.rc2/lib/active_support/callbacks.rb", line 136, in run_callbacks
  File "/app/vendor/bundle/ruby/2.5.0/gems/activejob-5.2.0.rc2/lib/active_job/execution.rb", line 22, in execute
  File "/app/vendor/bundle/ruby/2.5.0/gems/activejob-5.2.0.rc2/lib/active_job/queue_adapters/sidekiq_adapter.rb", line 42, in perform
  File "/app/vendor/bundle/ruby/2.5.0/gems/sidekiq-5.1.3/lib/sidekiq/processor.rb", line 187, in execute_job
  File "/app/vendor/bundle/ruby/2.5.0/gems/sidekiq-5.1.3/lib/sidekiq/processor.rb", line 169, in block (2 levels) in process
  File "/app/vendor/bundle/ruby/2.5.0/gems/sidekiq-5.1.3/lib/sidekiq/middleware/chain.rb", line 128, in block in invoke
  File "/app/vendor/bundle/ruby/2.5.0/gems/rollbar-2.15.6/lib/rollbar/plugins/sidekiq/plugin.rb", line 11, in call
  File "/app/vendor/bundle/ruby/2.5.0/gems/sidekiq-5.1.3/lib/sidekiq/middleware/chain.rb", line 130, in block in invoke
  File "/app/vendor/bundle/ruby/2.5.0/gems/newrelic_rpm-5.1.0.344/lib/new_relic/agent/instrumentation/sidekiq.rb", line 33, in block in call
  File "/app/vendor/bundle/ruby/2.5.0/gems/newrelic_rpm-5.1.0.344/lib/new_relic/agent/instrumentation/controller_instrumentation.rb", line 369, in perform_action_with_newrelic_trace
  File "/app/vendor/bundle/ruby/2.5.0/gems/newrelic_rpm-5.1.0.344/lib/new_relic/agent/instrumentation/sidekiq.rb", line 29, in call
  File "/app/vendor/bundle/ruby/2.5.0/gems/sidekiq-5.1.3/lib/sidekiq/middleware/chain.rb", line 130, in block in invoke
  File "/app/vendor/bundle/ruby/2.5.0/gems/sidekiq-5.1.3/lib/sidekiq/middleware/chain.rb", line 133, in invoke
  File "/app/vendor/bundle/ruby/2.5.0/gems/sidekiq-5.1.3/lib/sidekiq/processor.rb", line 168, in block in process
  File "/app/vendor/bundle/ruby/2.5.0/gems/sidekiq-5.1.3/lib/sidekiq/processor.rb", line 139, in block (6 levels) in dispatch
  File "/app/vendor/bundle/ruby/2.5.0/gems/sidekiq-5.1.3/lib/sidekiq/job_retry.rb", line 98, in local
  File "/app/vendor/bundle/ruby/2.5.0/gems/sidekiq-5.1.3/lib/sidekiq/processor.rb", line 138, in block (5 levels) in dispatch
  File "/app/vendor/bundle/ruby/2.5.0/gems/sidekiq-5.1.3/lib/sidekiq/rails.rb", line 42, in block in call
  File "/app/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.0.rc2/lib/active_support/execution_wrapper.rb", line 87, in wrap
  File "/app/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.0.rc2/lib/active_support/reloader.rb", line 73, in block in wrap
  File "/app/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.0.rc2/lib/active_support/execution_wrapper.rb", line 87, in wrap
  File "/app/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.0.rc2/lib/active_support/reloader.rb", line 72, in wrap
  File "/app/vendor/bundle/ruby/2.5.0/gems/sidekiq-5.1.3/lib/sidekiq/rails.rb", line 41, in call
  File "/app/vendor/bundle/ruby/2.5.0/gems/sidekiq-5.1.3/lib/sidekiq/processor.rb", line 134, in block (4 levels) in dispatch
  File "/app/vendor/bundle/ruby/2.5.0/gems/sidekiq-5.1.3/lib/sidekiq/processor.rb", line 199, in stats
  File "/app/vendor/bundle/ruby/2.5.0/gems/sidekiq-5.1.3/lib/sidekiq/processor.rb", line 129, in block (3 levels) in dispatch
  File "/app/vendor/bundle/ruby/2.5.0/gems/sidekiq-5.1.3/lib/sidekiq/job_logger.rb", line 8, in call
  File "/app/vendor/bundle/ruby/2.5.0/gems/sidekiq-5.1.3/lib/sidekiq/processor.rb", line 128, in block (2 levels) in dispatch
  File "/app/vendor/bundle/ruby/2.5.0/gems/sidekiq-5.1.3/lib/sidekiq/job_retry.rb", line 73, in global
  File "/app/vendor/bundle/ruby/2.5.0/gems/sidekiq-5.1.3/lib/sidekiq/processor.rb", line 127, in block in dispatch
  File "/app/vendor/bundle/ruby/2.5.0/gems/sidekiq-5.1.3/lib/sidekiq/logging.rb", line 48, in with_context
  File "/app/vendor/bundle/ruby/2.5.0/gems/sidekiq-5.1.3/lib/sidekiq/logging.rb", line 42, in with_job_hash_context
  File "/app/vendor/bundle/ruby/2.5.0/gems/sidekiq-5.1.3/lib/sidekiq/processor.rb", line 126, in dispatch
  File "/app/vendor/bundle/ruby/2.5.0/gems/sidekiq-5.1.3/lib/sidekiq/processor.rb", line 167, in process
  File "/app/vendor/bundle/ruby/2.5.0/gems/sidekiq-5.1.3/lib/sidekiq/processor.rb", line 85, in process_one
  File "/app/vendor/bundle/ruby/2.5.0/gems/sidekiq-5.1.3/lib/sidekiq/processor.rb", line 73, in run
  File "/app/vendor/bundle/ruby/2.5.0/gems/sidekiq-5.1.3/lib/sidekiq/util.rb", line 16, in watchdog
  File "/app/vendor/bundle/ruby/2.5.0/gems/sidekiq-5.1.3/lib/sidekiq/util.rb", line 25, in block in safe_thread

Just fix code to ignore such exception.

Setup project

After initial commit and required gems installation:

  1. Three nested scopes to the web scope at the routes developer, idea, dashboard
    Add contraint class, that detects required namespace by subdomain, like:
    developer.poc.org -> renders root path developer of scope
    the same approach for other scopes

Track developer onboarding progress

Gather from slack and github API if user has accepted the invitation to these resources.
Probably that should be done by some scheduled background job.
And persist all changes in the onboarding model.

Idea submission

Idea contains just a text, where the author writes a pitch of his proposal.
Let's limit it by 500 symbols, for example.

Any author with an active state is able to fill the form, and offer his idea in the dashboard.
So, first of all, we need to grant active author ability to visit the dashboard.
He should not be able to see test tasks, user management, and other staff.

After submission, send a slack message to the #ideas channel with an URL of the idea.

This should be implemented as a separate Ops::Ideas::Submit operation, that creates a model a sends a notification to Slack.

Also add another controller action, located at idea.givemepoc.org/propose. It should do the same, the only difference is that it will be used also by pending authors, as a part of their screening.

After the submission we should redirect the author to the dashboard page, which displays the state of an idea.

Add field private(discuss with @Mehonoshin @khusnetdinov )
Add skip_bootstrapping

Setup acceptance testing

Setup basic tests:

  • for sign_in/screening process.
  • dashboard access for active developer
  • dashboard access for staff

Run dockerized build on Travis, on every PR and master merge.

For app PR:

  • build a local image for app branch
  • implement later checkout features repo and build a local image of the corresponding branch
  • ATM use master image for features

use the master image if the branch is not available

For app master:

  • build master image for the app
  • use the master image for features
  • push master image if features were successful

Persist GitHub profile during sign up

ATM we save only github uid at the moment of sign up.
But @user_hash variable also contains username and some other useful information.
Let's persist github username aswell.

Display onboarding progress at developer profile

Display all users at User Management.

At developer page in User Management add a section Onboarding progress.

Display there a table with:

  • if user has completed 1st test task
  • if user has completed 2nd test task
  • if user is invited to slack
  • if user is invited to github

Also look for some fancy JS lib, that can draw a tiny graph, that should display the progress.
Display this graph at UsersManagement#index page at the row of the corresponding user

e.g.
image.png

Fix simple-form warning

[Simple Form] Simple Form is not configured in the application and will use the default values. Use `rails generate simple_form:install` to generate the Simple Form configuration.

Users management

Create a page at the dashboard, where we can see all active/disabled members.

For staff provide an ability to change state to disabled/active through separate Operation.
Also makes sense to notify the member of state change via email.
In addition provide an ability to add/remove roles for member(also via Operation), keep in mind that you should not be able to remove the last role of the user.

In specific member page display:

  • email
  • GitHub username(can be done after the corresponding task)
  • roles list
  • list of task assignments if available(ATM they should be available for all users)

Write pending specs

Pending: (Failures listed here are expected and do not affect your suite's status)

  1) Web::Dashboard::TestTaskAssignmentsController GET #show not authorized Add some tests here
     # Not yet implemented
     # ./spec/controllers/web/dashboard/test_task_assignments_controller_spec.rb:65

  2) Web::Dashboard::TestTaskAssignmentsController PUT #activate not authorized Add some tests here
     # Not yet implemented
     # ./spec/controllers/web/dashboard/test_task_assignments_controller_spec.rb:86

  3) Web::Dashboard::TestTaskAssignmentsController PUT #reject not authorized Add some tests here
     # Not yet implemented
     # ./spec/controllers/web/dashboard/test_task_assignments_controller_spec.rb:107

Developer profile

Allow user to edit his profile at dashboard

Also display all this data at user management#show action.

Slack channel generation for project

Create slack channel, and invite project upvoters, project author and someone of mentors.
This should be done automatically when we generate a project.
But encapsulate it within a separate operation.

Introduce ordering for TestTasks

Some test tasks may depend on previous.
We should display them in a proper order, to prevent mess.

  • Add position column to TestTask
  • Order tasks by position at screening page

Slack invitation

After signup use developer's email to invite him to our slack organization.
All communication with slack apis should be extracted to the isolated service objects.

  • Invite to slack via email
  • Post to channel
  • Invite to channel
  • Create a channel

Fix 404 on assets

ActionController::RoutingError: No route matches [GET] "/dist/js/bootstrap.min.js"

image.png

Project creation

When an idea has got N rating, we assume that developers are ready to work on it.
We need to create Project.

belongs_to :idea
Idea has_one :project

It should be done in a separate Ops::Projects::Kickoff.

Each time a new vote is created for an idea, we check if it is time to kickoff a project.

Also, a project should have relation with Stack model.
ATM we just relate it with rails_monolith stack.

Also project should have a relation with users, who have voted for it. We consider those people as a project team.

Author registration

Register author.
User has_many :roles

Author - is a kind of role, with a set of fields:

name
kind(company/individual)
company_name
skype
telegram
phone

We register the author through email ATM.

For roles lets find some suitable gem, maybe rolify.

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.