symbiod / symbiod Goto Github PK
View Code? Open in Web Editor NEW:factory: A place where non-profits and developers meet together
Home Page: https://symbiod.org/
License: MIT License
:factory: A place where non-profits and developers meet together
Home Page: https://symbiod.org/
License: MIT License
Generate rails project for the repo with customized kazan version
Clarify requirements with @Mehonoshin
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.
Allow user to edit his profile at dashboard
Also display all this data at user management#show action.
After sign up provide a form where a candidate can read the test task and submit links to his solution.
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
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.
Extract their markup in separate partial at app/views/layouts/shared/_dashboard_flashes.html.haml
And use it at dashboard layout
It will also require changes of data in the DB, because we already have users with role stuff
Assigned to @AlexErling
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.
Also display title at Candidates dashboard page
Some test tasks may depend on previous.
We should display them in a proper order, to prevent mess.
position
column to TestTaskWhen 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.
developer.poc.org
[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.
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:
Setup basic tests:
Run dockerized build on Travis, on every PR and master merge.
For app PR:
use the master image if the branch is not available
For app master:
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.
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
Display all users at User Management.
At developer page in User Management add a section Onboarding progress
.
Display there a table with:
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
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.
Facebook
Twitter
Linkedin
Add link to github instead of Fork me link in the corner
Add ability to share with audience developer website
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.
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
.
After initial commit and required gems installation:
web
scope at the routes developer
, idea
, dashboard
developer.poc.org
-> renders root path developer
of scopehttps://rollbar.com/howtohireme/givemepoc.org/items/8/?item_page=0&#instances
Lets fix it to prevent exceptions
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.