All Projects → anitab-org → Mentorship Backend

anitab-org / Mentorship Backend

Licence: gpl-3.0
Mentorship System is an application that matches women in tech to mentor each other, on career development, through 1:1 relations during a certain period of time. This is the backend of this system.

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Mentorship Backend

Apispec
A pluggable API specification generator. Currently supports the OpenAPI Specification (f.k.a. the Swagger specification)..
Stars: ✭ 831 (+529.55%)
Mutual labels:  swagger, openapi, hacktoberfest, flask
Loopback Next
LoopBack makes it easy to build modern API applications that require complex integrations.
Stars: ✭ 3,972 (+2909.09%)
Mutual labels:  swagger, openapi, hacktoberfest
Swagger Combine
Combines multiple Swagger schemas into one dereferenced schema.
Stars: ✭ 102 (-22.73%)
Mutual labels:  swagger, openapi, hacktoberfest
Swagger Ui
Swagger UI is a collection of HTML, JavaScript, and CSS assets that dynamically generate beautiful documentation from a Swagger-compliant API.
Stars: ✭ 21,279 (+16020.45%)
Mutual labels:  swagger, openapi, hacktoberfest
Full Stack Fastapi Couchbase
Full stack, modern web application generator. Using FastAPI, Couchbase as database, Docker, automatic HTTPS and more.
Stars: ✭ 243 (+84.09%)
Mutual labels:  swagger, openapi, backend
Safrs
SqlAlchemy Flask-Restful Swagger Json:API OpenAPI
Stars: ✭ 255 (+93.18%)
Mutual labels:  swagger, openapi, flask
Netcoreblockly
.NET Core API to Blockly - generate from WebAPI, Swagger, OData, GraphQL =>
Stars: ✭ 121 (-8.33%)
Mutual labels:  swagger, openapi, hacktoberfest
Redoc
📘 OpenAPI/Swagger-generated API Reference Documentation
Stars: ✭ 15,935 (+11971.97%)
Mutual labels:  swagger, openapi, hacktoberfest
Molten Boilerplate
A boilerplate for the molten framework by Bogdanp https://github.com/Bogdanp/molten
Stars: ✭ 50 (-62.12%)
Mutual labels:  swagger, openapi, backend
Schemathesis
A modern API testing tool for web applications built with Open API and GraphQL specifications.
Stars: ✭ 768 (+481.82%)
Mutual labels:  swagger, openapi, hacktoberfest
Mockoon
Mockoon is the easiest and quickest way to run mock APIs locally. No remote deployment, no account required, open source.
Stars: ✭ 3,448 (+2512.12%)
Mutual labels:  swagger, openapi, hacktoberfest
Express Jsdoc Swagger
Swagger OpenAPI 3.x generator
Stars: ✭ 69 (-47.73%)
Mutual labels:  swagger, openapi, hacktoberfest
Flasgger
Easy OpenAPI specs and Swagger UI for your Flask API
Stars: ✭ 2,825 (+2040.15%)
Mutual labels:  swagger, openapi, flask
Pode
Pode is a Cross-Platform PowerShell web framework for creating REST APIs, Web Sites, and TCP/SMTP servers
Stars: ✭ 329 (+149.24%)
Mutual labels:  swagger, openapi, hacktoberfest
Openapi Backend
Build, Validate, Route, Authenticate and Mock using OpenAPI
Stars: ✭ 216 (+63.64%)
Mutual labels:  swagger, openapi, hacktoberfest
Goa
Design-based APIs and microservices in Go
Stars: ✭ 4,493 (+3303.79%)
Mutual labels:  swagger, hacktoberfest, openapi
Openapi Client Axios
JavaScript client library for consuming OpenAPI-enabled APIs with axios
Stars: ✭ 168 (+27.27%)
Mutual labels:  swagger, openapi, hacktoberfest
Openapi Cli
⚒️ OpenAPI 3 CLI toolbox with rich validation and bundling features.
Stars: ✭ 169 (+28.03%)
Mutual labels:  swagger, openapi, hacktoberfest
Full Stack Fastapi Postgresql
Full stack, modern web application generator. Using FastAPI, PostgreSQL as database, Docker, automatic HTTPS and more.
Stars: ✭ 7,635 (+5684.09%)
Mutual labels:  swagger, openapi, backend
Openapi Spring Webflux Validator
🌱 A friendly kotlin library to validate API endpoints using an OpenApi 3.0 and Swagger 2.0 specification
Stars: ✭ 67 (-49.24%)
Mutual labels:  swagger, openapi, hacktoberfest

Mentorship System (Backend)

Build Status codecov project chat Python 3.x

Mentorship System is an application that allows women in tech to mentor each other, on career development topics, through 1:1 relations for a certain period. This is the Backend REST API for the Mentorship System.

This API is being used by 3 frontend projects currently being developed:

Table of Contents

Setup and run

To setup the project locally read these wiki pages and follow the instructions:

Run app in Windows

The project runs on Python 3.

  1. Create a virtual environment:
virtualenv venv --python=python3
  1. Activate the virtual environment: For Git Bash Users:
source ./venv/Scripts/activate

For Windows Command Line Users:

venv\Scripts\activate
  1. Install all the dependencies in requirements.txt file:
pip install -r requirements.txt
  1. Make sure you create .env using .env.template and update the values of corresponding environment variables or make sure you exported the following environment variables:
export FLASK_ENVIRONMENT_CONFIG=<local-or-dev-or-test-or-prod-or-stag>
export SECRET_KEY=<your-secret-key>
export SECURITY_PASSWORD_SALT=<your-security-password-salt>
export MAIL_DEFAULT_SENDER=<mail-default-sender>
export MAIL_SERVER=<mail-server>
export APP_MAIL_USERNAME=<app-mail-username>
export APP_MAIL_PASSWORD=<app-mail-password>
export MOCK_EMAIL=<True-or-False>

If you're testing any environment other than "local", then you have to also set these other variables:

export DB_TYPE=<database_type>
export DB_USERNAME=<database_username>
export DB_PASSWORD=<database_password>
export DB_ENDPOINT=<database_endpoint>
export DB_NAME=<database_name>
  1. Run the app:
python run.py
  1. Navigate to http://localhost:5000 in your browser

  2. When you are done using the app, deactivate the virtual environment:

deactivate

Run app in Linux

The project runs on Python 3.

  1. Create a virtual enviorntment:
virtualenv venv
  1. Activate the virtual environment:
source venv/bin/activate
  1. Install all the dependencies in requirements.txt file:
pip3 install -r requirements.txt
  1. Make sure you create .env using .env.template and update the values of corresponding environment variables. Make sure you exported the following environment variables if you didn't adapt .env.template in the .env file:
export FLASK_ENVIRONMENT_CONFIG=<local-or-dev-or-test-or-prod-or-stag>
export SECRET_KEY=<your-secret-key>
export SECURITY_PASSWORD_SALT=<your-security-password-salt>
export MAIL_DEFAULT_SENDER=<mail-default-sender>
export MAIL_SERVER=<mail-server>
export APP_MAIL_USERNAME=<app-mail-username>
export APP_MAIL_PASSWORD=<app-mail-password>
export MOCK_EMAIL=<True-or-False>

If you're testing any environment other than "local", then you have to also set these other variables in the .env file.

export DB_TYPE=<database_type>
export DB_USERNAME=<database_username>
export DB_PASSWORD=<database_password>
export DB_ENDPOINT=<database_endpoint>
export DB_NAME=<database_name>

Use: printenv to print the environment variables and check all configurations.

  1. Run the app with python run.py or:
 export FLASK_APP=run.py
 flask run
  1. Navigate to http://localhost:5000 or the current server in which you are running(will be shown when app is running) in your browser.

  2. When you are done using the app, deactivate the virtual environment:

deactivate

or use:

source deactivate

Run with docker

  1. Make sure you exported the following environment variables to .env file

  2. Build docker image

docker build -t mentorship-backend:latest .
  1. Deploy Docker container ports must be mapped to the host machine port using '--publish' so they're visible.
docker run --env "FLASK_APP=run.py" --publish 5000:5000 mentorship-backend:latest

Run tests

To run the unitests run the following command in the terminal (while the virtual environment is activated):

python -m unittest discover tests

Auto-formatting with black

We use Black to format code automatically so that we don't have to worry about clean and readable code. To install Black:

pip install black

To run black:

black .

Documentation

You can learn more about this project through the documentation in the docs folder and on our Wiki.

Here are some links to documentation for this project:

Understand more about our technical decisions made along with this project development in Technical Decisions Wiki page.

Contributing

Please read our Contributing guidelines, Code of Conduct and Reporting Guidelines

Please follow our Commit Message Style Guide and Coding Standards while sending PRs.

Branches

The repository has the following permanent branches:

  • master This contains the code which has been released.

  • develop This contains the latest code. All the contributing PRs must be sent to this branch. When we want to release the next version of the app, this branch is merged into the master branch. This is the branch that is used in the deployed version of the app on Heroku.

  • bit This branch is for MS-backend version specific to BridgeInTech project. All the contributing PRs related to BIT-MS integration issue must be sent to this branch.
    IMPORTANT!! If this is your first time setting up the BridgeInTech project, please DO NOT RUN the MS backend server from this branch BEFORE you run the BIT backend server. Failing to do this will mess up the postgres db schemas used in BIT project. More instruction on setting up the BridgeInTech project can be found here.

Contact

You can reach the maintainers and our community on AnitaB.org Open Source Zulip. If you are interested in contributing to the mentorship system, we have a dedicated stream for this project #mentorship-system, where you can ask questions and interact with the community, join with us!

License

Mentorship System is licensed under the GNU General Public License v3.0. Learn more about it in the LICENSE file.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].