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
To setup the project locally read these wiki pages and follow the instructions:
The project runs on Python 3.
Create a virtual environment:
virtualenv venv --python=python3
Activate the virtual environment: For Git Bash Users:
source ./venv/Scripts/activate
For Windows Command Line Users:
venv\Scripts\activate
Install all the dependencies in requirements.txt
file:
pip install -r requirements.txt
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>
Run the app:
python run.py
Navigate to http://localhost:5000 in your browser
When you are done using the app, deactivate the virtual environment:
deactivate
The project runs on Python 3.
Create a virtual enviorntment:
virtualenv venv
Activate the virtual environment:
source venv/bin/activate
Install all the dependencies in requirements.txt
file:
pip3 install -r requirements.txt
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.
Run the app with python run.py
or:
export FLASK_APP=run.py
flask run
Navigate to http://localhost:5000 or the current server in which you are running(will be shown when app is running) in your browser.
When you are done using the app, deactivate the virtual environment:
deactivate
or use:
source deactivate
Make sure you exported the following environment variables to .env
file
Build docker image
docker build -t mentorship-backend:latest .
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
To run the unitests run the following command in the terminal (while the virtual environment is activated):
python -m unittest discover tests
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 .
We use isort to sort imports alphabetically, and automatically separated into sections and by type. To install isort:
pip install isort
To run isort:
isort . --profile=black
We use pre-commit to check formatting before every commit message. To install pre-commit:
pip install pre-commit
To set up the git hook scripts:
pre-commit install
Documentation for the project is hosted here. We use Docusaurus for maintaining the documentation of the project.
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.
Please read our Contributing guidelines, Code of Conduct and Reporting Guidelines
Please follow our Commit Message Style Guide and Coding Standards while sending PRs.
Thanks goes to these people (emoji key):
Isabel Costa 🚧 |
Vaishnavi Joshi 🚧 🎨 |
Aditya Kurkure 💻 🚧 ⚠️ |
Kapil Bansal 💻 🚧 ⚠️ |
Gauri V. Nair 💻 🚧 |
This project follows the all-contributors specification. Contributions of any kind welcome!
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.
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!
Mentorship System is licensed under the GNU General Public License v3.0. Learn more about it in the LICENSE file.