Coder Social home page Coder Social logo

anitab-org / bridge-in-tech-backend Goto Github PK

View Code? Open in Web Editor NEW
24.0 5.0 80.0 2.17 MB

BridgeInTech (BIT) is an application that allows organizations, mentors and mentees to actively collaborate through mentoring programs. This is the backend client of BridgeInTech.

Home Page: https://bridgeintech-bit-heroku-psql.herokuapp.com/

License: GNU General Public License v3.0

Python 100.00%
flask-restx python sqlalchemy postgresql hacktoberfest

bridge-in-tech-backend's People

Contributors

0xnilesh avatar 17sushmita avatar aaishpra avatar allcontributors[bot] avatar anishghimire603 avatar anmollenka avatar aryamanz29 avatar dcs-soni avatar debanitrkl avatar dependabot[bot] avatar devkapilbansal avatar ganatra-v avatar harsh1868-zz avatar heroichitesh avatar isabelcosta avatar khushishikhu avatar mahakbansal2019 avatar mayburgos avatar meganbader avatar menina763 avatar mtreacy002 avatar naveen8801 avatar nenadpantelic avatar rahulm2310 avatar sahil9001 avatar sanika1999 avatar shades-7 avatar vj-codes avatar volatianayuliana avatar y-martinez 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

Watchers

 avatar  avatar  avatar  avatar  avatar

bridge-in-tech-backend's Issues

Development: Create/Update a profile on BIT

Is your feature request related to a problem? Please describe.
As a student, I need to have the ability to create a profile on BIT. For this the API on the backend should be available.

Describe the solution you'd like
Create an API for profile creation/updation for the BIT backend. The API would take profile detail combinations as input and return a response code based on the validity of the data in the profile information. Majorly, 2 outcomes are possible: Successful (200 OK), or Unsuccessful (40x) (x represents one of the error codes like 400, 403, etc.), Not found (404), 500 (internal server error)

Development: Delete user profile | CROSS-PROJECT ISSUE

Is your feature request related to a problem? Please describe.
I need to have the ability to delete a profile on BIT. For this, the API on the backend should be available.

Describe the solution you'd like
Create an API for user profile deletion for the BIT backend. The API would take user id or information as input and delete the profile information with the appropriate response.. Majorly, 2 outcomes are possible: Successful (200 OK), or Unsuccessful (40x) (x represents one of the error codes like 400, 403, etc.), Not found (404), 500 (internal server error)

The response should be the user id that was deleted or a failure message with why the user was not deleted.

Project Overview

This epic is to track the following discussions of BridgeInTech Project:

  1. Tech stack

  2. App architecture

  3. Minimum Viable Product (MVP)

  4. App Flow

  5. Project Requirements

Development: Create Login API

Description
As a student, I need to have the ability to login to BIT. For this the API on the backend should be available.
Mocks
NA

Acceptance Criteria
Create an API for user login for the BIT backend. The API would take a username/password combination as input and return a response code based on the validity of the data in the database. Majorly, 2 outcomes are possible: Successful (200 OK), or Unsuccessful (40x) (x represents one of the error codes like 400, 403, etc.)

Alternatives for testing the API: CuRL/Python requests

Update [Required]
Flask POST request for user login
Takes user attributes as a json (eventually this will be sent through the UI)
Response handling: 200 (Successful Process), 401 (unauthorized), 403 (forbidden), 400 (bad request), 500 (internal server error)
Test the API using Postman (or any alternative)
Enhancement to Update [Optional]
Definition of Done
All of the required items are completed.
Approval by 2 mentors.

Doc: Add Dev Env Set-up instructions .md inside .github folder

Description

As a GSoC student,
I need two place setup instruction inside .github folder,
so that I can make sure contributors can have a way to contribute to Development Setup Instructions on wiki pages by working on the .md file.

Mocks

NA

Acceptance Criteria

Update [Required]

  • .md file of Backend Development Setup instructions

Enhancement to Update [Optional]

NA

Definition of Done

  • All of the required items are completed.
  • Approval by 1 mentor.

Estimation

0.5 hour

Setup: Add basic setup and Test cases

Description

As a student,
I need to have the basic setup for the project,
so that I can start develop the project from there.

Mocks

NA

Acceptance Criteria

Update [Required]

  • config.py
  • .env.tempate
  • .gitignore
  • requirements.txt
  • run.py
  • test cases
  • .travis.yml

Enhancement to Update [Optional]

Definition of Done

  • All of the required items are completed.
  • Approval by 1 mentor.

Estimation

1 hour

Second Coding Phase

This epic is to track discussions/issues/PRs during Second Phase Coding within the BridgeInTech project.

Planning: BridgeInTech Project Requirements

As per proposal:

Applicable to registered or non-registered users. No login required

  • [Required] All Users can see a list of Mentoring Programs posted by Companies. A Program would contain the followings:

    • [Required] information on Program ID, Program Title, Start and End Dates, Program Location and Timezone, Program Description, minimum Requirements to be a Mentor and Mentee, Company/Mentor/mentee Responsibilities, Target Skill sets expected to be gained through the program, Payment Type (such as stipend for mentor and mentee, or none), Contact Type (boolean value for each of Face-to-face/Remote/Open to Global community), Resources Provided by the Company, Contact Person, Contact Number, Program Tags, Program Status (Open/In Progress/Closed). A Program with status In Progress or Closed will have a Mentor’s and Mentee’s name attached to them (that links to their MS User Profile) (IMS).

    • [Required] A Company Portfolio that would contain information on Company Name, About Us (brief description), Website link, Location and Timezone, Contact Number, Email, information on:

      • [Future] (Data Analysis) Company’s demographic graph that shows the current proportion of employees based on the Employee Background (see term reference).
    • [Required] Target Candidate that allows the Company to specifically target people who are within the Marginalised Groups (see term reference) in the program they are offering. If the Program does not have any specific target, Target Candidate value will be None.

    • [Required] An IRC Channel space (like Zulip) where a Company, Mentor and Mentee who are in a relationship within the Program can communicate by posting questions, feedback, or anything related to the Program.

    • [Nice to have] Ratings - received from Company/Mentor/Mentee on overall user’s experience throughout the Program (on the Program that is already Closed only).

    • [Nice to have] Company/Mentor/Mentee that are related to a program can give Feedback to each other on their performance (on the Program that is already Closed only).

    • [Future] All Users can post a comment inside the Comment box and view all comments.

  • [Future] All Users can see blogs activity between users. A Blog would contain information on:

    • [Required] Blog Title, Blog Date, User Name, User Type (Company, Mentor, or Mentee), Blog Content, Blog tags, number of Likes, Comments.
  • [Nice to have] All Users can see overview of lists of upcoming Community Events held by Companies. An Event would contain information on:

    • [Required] Event ID, Event Name, Event Start and End Dates, Event Time and Timezone, Event Location, Event Description.
  • [Nice to have] All Users can see Highlights in the form of the feedback received by a Program with Average Ratings 5/5 from its related Users.

  • [Future] (Data Analysis) All Users can see a graph of the Tech Industry employees demographic which highlighted the proportion of the Marginalised Groups. This will be taken from the employment data of the Tech Industry in the country they live in.

  • [Future] All Users can see a list of Top 10 Companies who at the time of viewing have the highest number of people in marginalised groups category listed as mentees in their mentoring programs.

Applicable only to Login User

  • [Required] All Users can see the progress of the program which is shown by Tasks completion bar (IMS).

  • [Required] All Users can see the Portfolio of any Company/Mentor/Mentee with the CRUD functionalities accessible only to the User whose the Portfolio belongs to (IMS).

  • [Required] A Company can send Request to Mentor or Mentee to work on their Program (IMS).

  • [Required] A Company can accept Request from Mentor or Mentee who wants to work on their Program(IMS).

  • [Required] A Mentor/Mentee can send Request to Company to work on a Program (IMS).

  • [Required] A Mentor/Mentee can accept Request from Company to work on a Program.

  • [Required] All Users can see the list of programs a Mentor or a Mentee has applied to/are currently working on/have completed (IMS).

  • [Required] A Mentor/Mentee must give details on their User Background in their Profile (IMS). This User Background would have:

    • [Required] range of selections on Education level, Work Experience (time), Gender, Age, Sexual Orientation, Race, Physical (dis)Ability, Income level, Religion. (An option to select ‘Prefer not to say’ is in one of the selections).

    • [Required] an option to be disclosed publicly (Unhide) or kept as private (Hide).

  • [Required] A Mentor/Mentee can access the Mentorship System UI without having to login again (IMS).

  • [Nice to have] A Company can give Ratings on the Mentor and the Mentee who have completed their program (IMS).

  • [Nice to have] A Mentee who has completed a program can give Ratings to the Program and the Mentor (IMS).

  • [Nice to have] A Mentor who has completed a program can give Ratings to the Program and the Mentee (IMS).

Application Feature Constraints

  • [Required] One Program can only be in one relationship with a Mentor and a Mentee.

    • [Future] 1> A Program can have more than one Mentor but can only have one Mentee (IMS).

    • [Future] 2> A Program can have more than one Mentor and more than one Mentee (IMS).

docs: Initialize README.md file.

Description

As a contributor,
I need to learn about the project,
so that I can collaborate with others on its development.

Mocks

# bridge-in-tech-android


## Contributing

**This project is under active development**

Please read our [Contributing Guidelines](https://github.com/anitab-org/bridge-in-tech-backend/blob/develop/.github/CONTRIBUTING.md), [Code of Conduct](https://github.com/anitab-org/bridge-in-tech-backend/blob/develop/.github/CODE_OF_CONDUCT.md) and [Reporting Guidelines](https://github.com/anitab-org/bridge-in-tech-backend/blob/develop/.github/REPORTING_GUIDELINES.md) thoroughly.

## Branches

- **master**: This branches contain the deployment of the backend.
- **develop**: This contains the latest code. All the contributing PRs must be sent to this branch.

## Contact

If you have any questions or want to discuss something about this repo, feel free to join our [Zulip Community](http://anitab-org.zulipchat.com/). If you are a new contributor, head over to this project's stream [#bridge-in-tech](https://anitab-org.zulipchat.com/#narrow/stream/237630-bridge-in-tech) on Zulip to see ongoing discussions.

## License

The project is licensed under the GNU General Public License v3.0. Learn more about it in the [LICENSE](https://github.com/anitab-org/anitab-org.github.io/blob/develop/LICENSE) file.

Acceptance Criteria

Update [Required]

  • Include the minimum details that were included in the Mocks section above.

Enhancement to Update [Optional]

  • Reach out to @mtreacy002 for a description of the project!

Definition of Done

  • All of the required items are completed.
  • Approval by 1 mentor.

Estimation

0.5 hours

Development: Create registration API

Description

As a student,
I need have a basic setup, create and populate data models classes and user registration functionality
so that users able to use BIT.

Mocks

NA

Acceptance Criteria

Create basic setup and an API for user registration for the BIT backend. The API would create a new user, and link it with the relevant MS user (if one exists).

Alternatives for testing the API: CuRL/Python requests

Update [Required]

  • Must have enough pip dependencies (aka requirements.txt) at least to start the app
  • Must have Flask remote server established as well as local server
  • Able to run project and see swagger UI
  • Must have .env.template
  • Must have migration scripts for initial migration
  • Must have .gitignore, .pylintrc, and .travis.yml
  • Must have functions if user opted to create and populate UserModel, MentorshipRelationModel, TasksListModel, TaskCommentModel, UserExtensionModel, PersonalBackgroundModel, OrganizationModel, ProgramModel, MentorshipRelationExtensionModel
  • Must have basic tests setup e.g. test_config.py and other simple tests
  • Create POST request for user creation
  • Takes user attributes as a json (eventually this will be sent through the UI)
  • Response handling: 201 (Successful creation), 401 (unauthorized), 403 (forbidden), 400 (bad request), 500 (internal server error)
  • Test the API using Postman (or any alternative)

Enhancement to Update [Optional]

Definition of Done

  • All of the required items are completed.
  • Approval by 1 mentor.

Estimation

1 week

Start Backend Test Dev

Description

As a student,
I need create and populate data models classes,
so that I can move on to the next tasks specified in the First Coding Phase Week 1.

Mocks

N/A

Acceptance Criteria

Update [Required]

  • must have enough pip dependencies (aka requirements.txt) at least to start the app
  • must have remote server established as well as local server
  • able to run project and see swagger UI
  • must have .env.template
  • must have migration scripts for initial migration
  • must have .gitignore, .pylintrc, and .travis.yml
  • must have functions if user opted to create and populate UserModel, MentorshipRelationModel, TasksListModel, TaskCommentModel, UserExtensionModel, PersonalBackgroundModel, OrganizationModel, ProgramModel, MentorshipRelationExtensionModel
  • must have basic tests setup e.g. test_config.py and other simple tests

Definition of Done

  • All of the required items are completed.
  • Approval by all mentors.

Estimation

2 days

UI: High-fidelity Mockup - Register

Description

As a student,
I need create high-fidelity mockup for Register,
so that I can move forward with on the planning stage.

Mocks

Initial idea (per proposal)
Figure 1.1. Register
BridgeInTech MockUp - Register

Acceptance Criteria

Update [Required]

  • must have all the fields for Mentorship System user registration:
    [ ] name
    [ ] username
    [ ] password
    [ ] confirm password
    [ ] email
    [ ] terms and conditions check box
    [ ] need mentoring check box
    [ ] available to mentor check box

  • must have Company and Mentor/Mentee check box

  • must have Signup and Login buttons

  • must have view/hide password field options

Definition of Done

  • All of the required items are completed.
  • Approval by 1 mentor.

Estimation

1 day

Setup: Wiki on BIT Environment Setup instructions

Description

As a student,
I need the project to have Set Up instructions on README.md,
so that I can help others setting up their environment to work on the project.

Mocks

NA

Acceptance Criteria

Update [Required]

Must have the instructions to:

  • fork, clone remote bridge-in-tech-backend repository (by making use of the link given here 😄 )

  • create a virtual environment

  • create a PostgreSQL main local database with the name of bit_schema
    - [ ] create a second schema inside bit_schema and name it bitschema (first one is named public schema by default - leave it). So finally you should have two schemas - public and bitschema

  • create another PostgreSQL local database for testing purpose and name it bit_schema_test
    - [ ] the bit_schema_test MUST HAVE the 3 other schemas beside its public schema: bit_schema, test_schema, and test_schema_2

  • add migration script to support any db models future changes

  • run the application

  • Must show that the required tables inside the bit_schema database are created successfully. To confirm, the tables are:
    - [ ] Under public schema:
    * users
    * mentorship_relations
    * tasks_list
    * tasks_comments
    - [ ] Under bitschema:
    * users_extension
    * personal_backgrounds
    * organizations
    * programs
    * mentorship_relations_extension

Enhancement to Update [Optional]

Definition of Done

  • All of the required items are completed.
  • Approval by 1 mentor.

Estimation

1 day

Planning: Entity Relationship Diagram

As per proposal:
ERD v1.0:

BridgeInTech - ERD.png

Relationship Constraints

  • Users can only register once. This includes a Company user which can only have one account.
  • A Program cannot exist without a Company.
  • Company is in One-to-Many relation to Program.
  • Personal_Bakground and Additional_Info cannot exist without User (MS)
  • Personal_Background and Additional_Info are in One-to-One relation to User (MS)
  • There can only be One-to-One relation between Company, Mentor and Mentee in the MR.
  • Mentor/Mentee can only have one MR active at a time.

Development: Using named tuples/dictionary rather than tuple for responses

Is your feature request related to a problem? Please describe.
Technical debt is added by using unnamed tuples rather than named tuples/dictionaries for storing responses in both BIT and from MS

Describe the solution you'd like
Replace tuples with named tuples/dictionaries

Describe alternatives you've considered
Please analyze between dictionaries vs named tuples
Please consider using decorators (https://www.python.org/dev/peps/pep-0318/)

Additional context
Add any other context or screenshots about the feature request here.

task: flask-cors dependency is needed to allow cross-origin requests

Describe the task
To allow multiple servers to run locally when testing Bridge in tech functionalities such as register and login, 3 servers (BIT and MS backend and BIT React frontend) need to run on local machine and sending/receiving requests from each other.

Screen Shot 2020-06-10 at 8 28 12 pm

Acceptance Criteria

  • It should not have the error message above. Instead, BIT should be able to send API call successfully

Additional context

  • Need this to be approve for Register functionality on BIT-UI PR#18 can be tested.

Doc: Add link to Bridge In Tech Setup Instructions

@mtreacy002 commented on Sun Jun 14 2020

Description

As a contributor,
I need to see a link on the README file to where I can read setup instruction for development environment of Bridge In Tech backend,
so that I can contribute to the project.

Mocks

NA

Acceptance Criteria

Update [Required]

  • Add a link with necessary description on README.md to go to BridgeInTech Development Environment Setup Instructions which can be found on bridge-in-tech-backend wiki repository.

Enhancement to Update [Optional]

Definition of Done

  • All of the required items are completed.
  • Approval by 1 mentor.

Estimation

< 1 hour


@mahakbansal2019 commented on Mon Jun 15 2020

Hey @mtreacy002!
Can I work on this ?
Thanks :)


@mtreacy002 commented on Mon Jun 15 2020

Sure, go ahead, @mahakbansal2019 . Let me know if you need any help. Also, I'll move this issue to backend. I put it on frontend by accident. So, please add the link to the bridge-in-tech-backend repository README.md, not frontend 😉

Frontend Overview

This epic is to track discussions on BridgeInTech Frontend related matter:

  1. Structure
  2. (reusable) Components
  3. Assets
  4. Colors
  5. Interactions
  6. Path
  7. GUI Prototype

First Coding Phase

This Epic is to track discussions/issues/PRs during First Phase Coding within the BridgeInTech project.

Test: Write test cases for Register User API

@mtreacy002 commented on Sun Jun 14 2020

Description

As a student,
I need write test cases for Register user calls to API,
so that I can make sure the code I wrote work as expected.

Mocks

NA

Acceptance Criteria

Update [Required]

  • test to see if the API call is made to MS API
  • test to see if the correct responses being returned on the followings events:
    • when user is successfully created
    • when password is invalid
    • when username already exist
    • when email already exist
    • when there is an internal server error

Enhancement to Update [Optional]

Definition of Done

  • All of the required items are completed.
  • Approval by 1 mentor.

Estimation

1 day

Final Coding Phase

This Epic is to track discussions/issues/PRs during Final Phase Coding within the BridgeInTech project.

Backend Overview

This Epic is to track discussions on BridgeInTech Backend related to:

  1. Entity Relationship Diagram

  2. Entity Association Model

  3. Use Cases

  4. REST API endpoints + CRUD functions

Test: write test cases for Login user API

Description

As a student,
I need test login user functionality,
so that I can make sure the functionality works as expected.

Mocks

NA

Acceptance Criteria

Update [Required]

  • test by mocking API when user successfully login (success response 200)
  • test by mocking API when wrong password or username is given (error code 401)
  • test by mocking API when internal server error is returned (error code 500)

Enhancement to Update [Optional]

NA

Definition of Done

  • All of the required items are completed.
  • Approval by 1 mentor.

Estimation

1 day

Planning: BridgeInTech Minimum Viable Product (MVP)

MVP as per project proposal:

On General Features

  • Homepage
  • Register and login
  • Company/Mentor/Mentee Portfolio
  • See list of all Companies
  • See list of all Programs
  • See list of all Mentors
  • See list of all Mentees
  • See Program Details page

On Specific Features

  • Company can create a Company Profile and do other CRUD operations on it.
  • Mentor/Mentee can create Mentor/Mentee Profile and do other CRUD operations on it.
  • Company can create a Program and do CRUD operations on Program Details
  • Company can send/accept request to/from Mentor/Mentee to work on a Program
  • Mentor/Mentee can send/accept request to/from Company to work on a Program
    *Mentor/Mentee relationship will be managed in MS
    *Users can see Mentorship Progress Summary (link to tasks completion in MS)

As a user, I want to register on BIT

Description

As a user,
I want to register on BIT,
So that I can sign up as mentor/mentee for programs I like.

Definition of Done

  • All of the required items are completed.
  • Approval by 1 mentor.

Estimation

2 days

Setup Travis CI to run tests for BIT backend

Description

As a developer,
I need run tests on every PR on CI,
so that I can immediately get feedback on a build

Out of Scope

Deploying to a higher environment when the push is on the develop branch

Acceptance Criteria

  • Build gets triggered on push
  • Tests run for build

Definition of Done

  • All of the required items are completed.
  • Approval by 2 mentor.

Estimation

1-2 hours

Planning: BridgeInTech App Architecture

This issue is to discuss BridgeInTech App Architecture which needed to be finalised to get a solid idea of how to move forward with the project.

Below is the initial idea of app architecture as per proposal:

As per proposal:

Backend:
(Option3) The middle ground is to use the current MS REST API but with 2 Frontend: MS and BIT. In short 2FE + 1BE.

Pros:

  • Reduce overhead compared to option 2 (to use the current MS as REST API and have separate Backend and Frontend specific to BIT (2FE + 2BE)).
  • No need for MS Android FE to be changed to accommodate BIT UI
  • Being MS FE exclusive to Mentor/Mentee, their interaction throughout the program can be focused on the task at hand.
  • Minimise company interference on the specific details within the process of mentoring between mentor and mentee. Company involvement is limited to collaborating with mentor/mentee in designing tasks at the beginning prior to actual program starts. However, companies can still interact with the mentor and mentee through the IRC channel throughout the duration of the program.

Cons:

  • Reducing company involvement on the tasks specific could be seen as unfavourable to some companies.

Frontend:

  • Android: MVVM
  • React: ??

Deploy Mentorship Backend on Heroku with ElephantSQL instance

Description

It would really help @mtreacy002 having a separate instance of Heroku server with mentorship backend so we have a sandbox environment, not interfering with mentorship backend already existing data.

Acceptance Criteria

Update [Required]

  • Deploy to Heroku Mentorship Backend
  • Create an ElephantSQL instance for Maya, or have her creating and giving me the credentials 🤷‍♀️
  • Provide credentials to Maya

Definition of Done

  • All of the required items are completed.
  • Approval by 1 mentor.

Estimation

who know how many hours

Doc: Add missing images to BIT setup instructions Create main database section

Description

As a contributor,
I need to be able to see visual examples on how to setup my environment,
so that I can setup BridgeInTech backend development successfully.

Mocks

The image below shows the missing images on BIT Development Environment Setup Instructions wiki page.
Screen Shot 2020-06-14 at 10 38 02 pm

Acceptance Criteria

Update [Required]

  • provide the images described in the TO DO on the places shown on the image above. The changes is to be placed in the ENV_SETUP_INSTRUCTION.md inside .github folder (the first one below line 27 and the other below line 31 of the .md file).

Enhancement to Update [Optional]

NA

Definition of Done

  • All of the required items are completed.
  • Approval by 1 mentor.

Estimation

1 hour

Planning: BridgeInTech Tech Stack

This issue is to discuss BridgeInTech Tech Stack which needed to be finalised to get a solid idea of how to move forward with the project.

Below is the initial idea of tech stack as per proposal:

Option1

For Backend:

  • RESTful API with Python and Flask
  • Relational database either using mysql or postgresql
  • Remote development server hosted on Heroku

For Frontend:

  • Android app with Kotlin

Option 2

For Backend: As above
For Frontend: ReactJs

Option 3

For Backend: As above
For Frontend: Flutter/React Native

Development: Get User profile

Is your feature request related to a problem? Please describe.
I need to have the ability to retrieve a profile on BIT. For this, the API on the backend should be available.

Describe the solution you'd like
Create an API for user profile retrieval for the BIT backend. The API would take user id or information as input and return the profile information with the appropriate respnse.. Majorly, 2 outcomes are possible: Successful (200 OK), or Unsuccessful (40x) (x represents one of the error codes like 400, 403, etc.), Not found (404), 500 (internal server error)

The response should be a LIST, which will return all users if no filtering condition is provided, and a subset of users (even 1) as a list if a condition is supplied.

The GET request should take a parameter (for ex: user id, or username) that will be used to decide which users should be returned.

Planning: Higher level API endpoints and CRUD functions

As per proposal:

Higher Level API (CRUD operations)

Screen Shot 2020-05-11 at 3.06.53 pm.png
Screen Shot 2020-05-11 at 3.07.30 pm.png
Screen Shot 2020-05-11 at 3.08.12 pm.png
Screen Shot 2020-05-11 at 3.08.45 pm.png
Screen Shot 2020-05-11 at 3.10.46 pm.png
Screen Shot 2020-05-11 at 3.11.13 pm.png

REST API endpoints examples

POST /user/personal_background
=> this will add personal background information to the user profile.
GET, PUT, DELETE /user/personal_background/{user_id}
=> this will get/update/delete personal background information of the user which id is specified.
GET /users/find_by_physical_ability/{physical_ability}
=> this will get a list of all users which have the physical ability match the type specified in the ‘physical_ability’ passed as parameter.
GET /users/find_by_criteria/{criteria}
=> this will get a list of users that met the specific search criteria set in ‘criteria’ parameter which is a map of key-value (or dictionary). This way we don’t need to write an extensive list of GETs to filter users by each of their attributes (such as GET /users/find_by_physical_ability).
POST /company
=> this will create a company.
GET, PUT, DELETE /company/{company_id}
=> this will get/update/delete the details of the company which id is specified.
GET /companies
=> this will get the list of all companies.
GET /companies/{company_id}
=> this will get the company which id is specified.
GET /companies/find_by_country/{country}
=> this will get a list of companies in the specified country.
GET /companies/find_by_criteria/{criteria}
=> this will get a list of companies that met the specific search criteria set in ‘criteria’ parameter which is a map of key-value (or dictionary).
POST /program
=> this will create a program.
GET/PUT/DELETE /program/{program_id}
=> this will get/update/delete the details of the program with the specified id.
GET /programs
=> this will get the list of all programs.
GET /programs/{program_id}
=> this will get the program which id is specified.
GET /programs/find_by_contact_type/{contact_type}
=> this will get a list of programs that have contact_type specified by the parameter.
GET /programs/find_by_criteria/{criteria}
=> this will get a list of programs that met the specific search criteria set in ‘criteria’ parameter which is a map of key-value (~ dictionary).
POST /mentorship_relation/send_request
=> this will create a mentoring relation request as well as send email notification to recipient about MR request
GET, DELETE /mentorship_relation/{mentorship_relation_id}
=> this will get/delete the mentorship_relation with the specified id.
GET /mentorship_relations
=> this will get the list of all MRs.
PUT /mentorship_relations/{mentorship_relation_id}
/accept
=> this will allow the Company/Mentor/Mentee to accept an MR request.
PUT /mentorship_relations/{mentorship_relation_id}
/reject
=> this will allow the Company/Mentor/Mentee to reject an MR request.
PUT /mentorship_relations/{mentorship_relation_id}
/cancel
=> this will allow the Company/Mentor/Mentee to cancel an MR request.
GET / mentorship_relations/current
=> this will get the list of current MR regardless of their ‘state’ for the logged in user.
GET / mentorship_relations/find_by_criteria/{criteria}
=> this will get the list of MRs based on the ‘criteria’ passed on as the parameter.

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.