GithubHelp home page GithubHelp logo

pupy-python / mentorship-app Goto Github PK

View Code? Open in Web Editor NEW
9.0 9.0 19.0 4.64 MB

PuPPy Mentorship Application

License: MIT License

Python 45.04% Makefile 0.55% HTML 8.55% CSS 0.51% JavaScript 44.75% Dockerfile 0.60%

mentorship-app's People

Contributors

andriiglukhyi avatar carolynkollstedt avatar ccallahaniv avatar dsnowb avatar fugu13 avatar jem1031 avatar jesseklein406 avatar johnnyodonnell avatar robobyn avatar shannontully avatar tpeek avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

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

mentorship-app's Issues

Mentee Profile Model: Update

When a Mentee signs up on our platform, let's capture these additional data points:

  • areas of guidance (select many)
    • Portfolio / Code Reviews
    • Job Search and Interviews
    • Industry Trends, Skills, Technologies
    • Leadership, Management
    • Business, Entrepreneurship
    • Career Growth
  • goals (text field)

Implementation: Mentee Profile Class

References Mentee:Signup Issue

Public Profile Page: View

As a Mentee, I want to be able to view a public profile page of any Mentor.

As an Approved Mentor, I want to be able to view a public profile page of any Mentee.

Acceptance Criteria

  • url for any public profile page should be /:username
  • A user can only view a Mentor's page if they are a Mentee
  • A user can only view a Mentee's page if they are a Mentor
  • If a user is both a Mentor and a Mentee, they are able to see both types
  • Page should include public profile information:
    • username
    • first and last name (if available)
    • bio
    • Areas of interest (if page is Mentee's)
    • Areas of expertise (if page is Mentor's)
  • Page should have a link to 'Request a Pairing'
    • If I am viewing a Mentor's page as a Mentee, it should request them as a Mentor.
    • If I am viewing a Mentee's page as a Mentor, it should request them as a Mentee.

Pairing: Request

As a mentor, I want to be able to request a pairing with a mentee.

As a mentee, I want to be able to request a pairing with a mentor.

As the requestor, I would like to be able to enter a "Request Message" so I have a chance to briefly introduce myself and why I would like to pair with the requestee.

Acceptance Criteria

  • url for pairing request is /pairing/request/:mentor_id/:mentee_id
    • This was the URL for the prototype - does it need to be this? Would be nice if it were just /pairing/request
  • A mentor or mentee can only request a pairing if:
    • the mentor is "Approved"
    • the mentor is "currently accepting mentees"
    • the mentor has not reached their max mentee capacity
    • the mentee is not currently paired
  • Page should include:
    • Message such as, "Request to pair with: " with link to requestee's public profile
    • Form with text field (detailed below) and submit button
  • The requestor of the pairing can enter a brief introduction message (500 characters max) that will be shown to the requestee on the Pairing Respond view.
  • On submit, form should create a new Pairing instance with a "Pending" status.

Infrastructure: Easy Rollback

Currently, in order to rollback a deployment, it must be done through the Heroku dashboard or CLI. It would be best to be able to rollback deployments from the repository or a more commonly available CI/CD pipeline.

Explore possibility of using existing Travis CI pipeline to perform both deploys and rollbacks.

Acceptance Criteria:

  1. Any developer that is a Contributor to this project, should be able to roll back deploys.
  2. Rollback functionality should be easy to use and readily accessible (e.g. a button on github or Travis CI dashboard)

Mentee List View

As a mentor, I want to be able to view a list of unpaired mentees so that I can request to pair with them.

As a mentor, I can only request to pair with a mentee if I am "Available".

Acceptance Criteria

  • url for mentee list view is /mentees
  • only unpaired mentees are displayed
  • Page should display a list of unpaired mentees with:
    • First (and if available last) name
    • bio
    • link to mentee's public profile (/:username)
    • link to request to pair with them
  • A Mentor is "Available" if:
    • They are "Currently accepting Mentees"
    • They have fewer pairings than their mentee_capacity
    • Their status is "Approved"

Mentor Profile Model: Update

When signing up as a Mentor, we should also capture this additional information:

  • areas of interest (select many)
    • Portfolio / Code Reviews
    • Job Search and Interviews
    • Industry Trends, Skills, Technologies
    • Leadership, Management
    • Business, Entrepreneurship
    • Career Growth
  • mentee capacity (allowed values 1 - 5)

Implementation: Mentor Profile Class

References: Mentor:Signup Issue

*note: When a Mentor account is created, their status should be set to "pending"

Mentors and Mentees List EndPoints

Write 2 endpoints which will return lists of user objects.
/mentees returns list of unpaired mentees
/mentors returns a list of available (currently accepting mentees, approved, have not hit limit of pairings) mentors

Resolve Routes Issue

Recent route rename merge has broken the Javascript application - it will no longer load.

Acceptance Criteria

  • base url as defined in django's urls.py should load the Javascript application
    • Prefer base url to be '/', second choice would be '/app'

Infrastructure: Notifications for deployment failures

Need to relieve the bottleneck for GH notifications of deployment failures going to 1 account.
Possible solution:
Heroku builds in Travis-CI?
Heroku notifies GitHub - perhaps there is a way to get a GitHub notification.

Acceptance Criteria:

Developers are notified of

  1. Failed deploy
  2. Failed build before merge

create_user endpoint requires both mentee and mentor fields

After hooking up the frontend to the /user 'POST' endpoint, I'm noticing that both mentee and mentor profiles are required. If the json doesn't include a mentee key or mentor key, the server sends back a 500. If you send both those keys with values as empty dictionaries, the server sends back a 400, and mentions that the 'goals' field is required for mentees and 'mentee_capacity' is required for mentors.

We should update this endpoint to check for mentee/mentor keys and make the appropriate objects based on that.

How To Write a Pull Request: Add Wiki

Page should include

  • video / images
  • clear concise high level description of PR items
  • relevant issues that PR closes
  • assign someone to review
  • git rebase flow

API: Pairing Endpoint

Create API endpoint for pairing endpoint. Create CRUD operations.

Open Questions:

  1. What should the shape of the data be?

Acceptance Criteria
[ ] "mentor" and "mentee" fields return user model id

User: Login

As a User with an existing account, I would like to be able to login and out.

The purpose of this ticket is to create login/logout capabilities between React and Django Rest Framework.

Acceptance Criteria

  1. url for login page is /login
  2. url for logging out is /logout
  3. User can login with their email or username and password
  4. After logging in, User is authenticated for using the rest of the application.
  5. After logging out, User is no longer authenticated for any private part of the application (but can still see public pages).

Dupe PuPPy teams

There's a PuPPy-Python team also. Don't know if it matters. Sai Nudurupati has been putting Scientific Computing Sig presentations on PuPPy-Python.

Mentor: Signup

As potential Mentor without an account, I want to be apply to be a mentor, create a profile, and provide information about my area of expertise and how many mentees I wish to mentor.

As a Mentee with a profile, I want to be able to apply to be a Mentor without having to re-enter all of my user and profile information, but I want the option to edit my profile information.

This ticket covers the sign up process for a Mentor. When a Mentor without any account applies, they will have to create their profile from scratch and provide information about their area of expertise and how many mentees they wish to mentor. If a Mentee with an account wants to apply to be a Mentor, they should not have to fill out their User and Profile information again but should have the option to edit it, and instead just fill out their area of expertise and capacity.

Acceptance Criteria

  • url for mentee sign up is /signup/mentee
  • User form includes the following fields:
    • username (req)
    • password (req)
    • email (req)
    • first name (req)
    • last name (opt)
  • Profile form include the following fields:
    • Bio (500 char max) (opt)
    • PuPPy slack handle (opt)
    • LinkedIn URL (opt)
  • Mentor form includes the following fields:
    • areas of interest (select many)
      - Portfolio / Code Reviews
      - Job Search and Interviews
      - Industry Trends, Skills, Technologies
      - Leadership, Management
      - Business, Entrepreneurship
      - Career Growth
    • mentee capacity (allowed values 1 - 5)
  • When a Mentor account is created, their status should be set to "pending"

Bug: Failed Deploy

Failed deploy, bug report below:

Traceback (most recent call last):
File "manage.py", line 22, in
execute_from_command_line(sys.argv)
File "/app/.heroku/python/lib/python3.6/site-packages/django/core/management/init.py", line 364, in execute_from_command_line
utility.execute()
File "/app/.heroku/python/lib/python3.6/site-packages/django/core/management/init.py", line 356, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/app/.heroku/python/lib/python3.6/site-packages/django/core/management/base.py", line 283, in run_from_argv
self.execute(*args, **cmd_options)
File "/app/.heroku/python/lib/python3.6/site-packages/django/core/management/base.py", line 330, in execute
output = self.handle(*args, **options)
File "/app/.heroku/python/lib/python3.6/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 199, in handle
collected = self.collect()
File "/app/.heroku/python/lib/python3.6/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 115, in collect
for path, storage in finder.list(self.ignore_patterns):
File "/app/.heroku/python/lib/python3.6/site-packages/django/contrib/staticfiles/finders.py", line 112, in list
for path in utils.get_files(storage, ignore_patterns):
File "/app/.heroku/python/lib/python3.6/site-packages/django/contrib/staticfiles/utils.py", line 28, in get_files
directories, files = storage.listdir(location)
File "/app/.heroku/python/lib/python3.6/site-packages/django/core/files/storage.py", line 397, in listdir
for entry in os.listdir(path):
FileNotFoundError: [Errno 2] No such file or directory: '/tmp/build_adc5060b8459f19bbec11b07b9532566/build/static'
! Error while running '$ python manage.py collectstatic --noinput'.
See traceback above for details.
You may need to update application code to resolve this error.
Or, you can disable collectstatic for this application:
$ heroku config:set DISABLE_COLLECTSTATIC=1
https://devcenter.heroku.com/articles/django-assets
! Push rejected, failed to compile Python app.
! Push failed

UX: Design Mock Ups for MVP Views

We need mock ups for iteration of design and reference for developers.

Refer to list of views here.

Mock ups should demonstrate responsiveness.

Design principles for this project:

  1. Lightweight
  2. Accessible
  3. Responsive
  4. Inclusive
  5. Fun

UX: Style Guide

Need a style guide for developers to reference as views are built. Styles can be added to it as they are defined, but we need a source-controlled location for it within the project repository or documentation.

Style Guide Should Define:

  1. Style
  2. Structure
  3. Responsiveness

Private Profile Page: View and Edit

As a Mentor or Mentee, I want to be able to view all of my profile information on a private page. I want to be able to edit all of the information on this page.

Acceptance Criteria

  • url for private profile page is '/profile'
  • Page should include following fields from the user model:
    • username
    • email
    • first name
    • last name
  • Page should include all fields from the profile model.
  • If user is a Mentor, page should include all fields from the Mentor model
  • If user is a Mentee, page should include all fields from the Mentee model
  • User should be able to edit and save all above fields

Mentor List View

As a mentee, I want to be able to see a list of AVAILABLE mentors so that I can request to pair with one.

As a mentee, I should only be able to request a pairing if I am currently NOT paired with a mentor.

Acceptance Criteria

  • url for mentors is /mentors
  • Page should display a list of available mentors with:
    • First (and if available last) name
    • bio
    • link to mentor's public profile (/:username)
    • link to request to pair with them
  • A Mentor is "Available" if:
    • They are "Currently accepting Mentees"
    • They have fewer pairings than their mentee_capacity
    • Their status is "Approved"

Documentation: Open Source Documentation

http://www.writethedocs.org/guide/writing/beginners-guide-to-docs/

Ideas for Topics

  • Getting Started
  • What to install/ where to install it.
  • Introduce yourself. We'll help you pick an item from the BL or a bug to work on, etc.
  • How to merge
  • Open a PR
  • Open an issue
  • Readme - beef up
  • Common things that people run into and how to fix them, such as deployment issues.
  • Contribute and develop - both need to be polished
  • Flow: Mentee sign up, mentor sign up, pair with each other

Infrastructure: Create React App

In order to adopt a more modern architecture to enable better long-term scalability, the front end should be a SPA built with React. The application should:

  • Be in this repository
  • Be built and distributed from this repository
  • Be able to talk to a Django Rest Framework API backend running on the same host
  • Be built and deployed in the same CI/CD pipeline as the backend
  • Function concurrently with existing Django Views (which will steadily be replaced by views in the React app).

This ticket is complete when a test "Hello World"-esque React view is deployed via CI/CD and accessible on the internet.

API: User Endpoint

Create endpoint for all user information. Should allow all CRUD operations.

Mentee: Signup

As potential mentee without an account, I want to be able to sign up as a mentee, create a profile, and provide information about my interests and goals.

As a Mentor with a profile, I want to be able to sign up as as Mentee without having to re-enter all of my profile information, but I want the option to edit my profile information.

This ticket covers the sign up process for a Mentee. When a Mentee without any account signs up, they will have to create their profile from scratch and provide information about their goals and interests. If a Mentor with an account wants to sign up as a Mentee, they should not have to fill out their Profile information again but should have the option to edit it, and instead just fill out their goals and interests.

Open Questions

  1. Should a Mentor signing up as a Mentee have the option of editing their profile information while signing up? Or should they ONLY be presented with Mentee fields? YES

Acceptance Criteria

  • url for mentee sign up is /signup/mentee
  • User form includes the following fields:
    • username (req)
    • password (req)
    • email (req)
    • first name (req)
    • last name (opt)
  • Profile form include the following fields:
    • Bio (500 char max) (opt)
    • PuPPy slack handle (opt)
    • LinkedIn URL (opt)
  • Mentee form includes the following fields:
    • areas of interest (select many)
      - Portfolio / Code Reviews
      - Job Search and Interviews
      - Industry Trends, Skills, Technologies
      - Leadership, Management
      - Business, Entrepreneurship
      - Career Growth
    • goals (text field)

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.